⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 metadata.c

📁 WiiFuse is a FUSE filesystem module for Linux and Mac OS X. It will let you mount a Wii disc ISO an
💻 C
字号:
/* *  Copyright (C) 2008 dhewg, #wiidev efnet * *  this file is part of wiifuse *  http://wiibrew.org/index.php?title=Wiifuse * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */#include <stdio.h>#include "metadata.h"void meta_add_part (struct tree *part_node, struct partition *part, u32 i) {        struct tree *node;        if (part->header.is_gc)                tree_add_filler (i, part_node, "gc_image");        if (part->header.is_wii)                tree_add_filler (i, part_node, "wii_image");        if (part->appldr_size > 0)                tree_add_file (i, part_node, "appldr.bin",                               0x2440, part->appldr_size);        if (part->header.dol_offset > 0 && part->header.dol_size > 0)                tree_add_file (i, part_node, "main.dol",                               part->header.dol_offset, part->header.dol_size);        if (part->header.fst_offset > 0 && part->header.fst_size > 0)                tree_add_file (i, part_node, "fst.bin",                               part->header.fst_offset, part->header.fst_size);        node = tree_add_dir (i, part_node, "header");        tree_add_char (i, node, "console_id", part->header.console);        tree_add_string (i, node, "gamecode", part->header.gamecode, 2);        tree_add_char (i, node, "region", part->header.region);        tree_add_string (i, node, "publisher", part->header.publisher, 2);        tree_add_string (i, node, "name", part->header.name, 0x60);        if (!part->header.has_magic)                tree_add_filler (i, node, "invalid_magic");        if (part->is_encrypted) {                node = tree_add_dir (i, part_node, "crypto");                tree_add_string (i, node, "key", part->key_c, 32);                tree_add_string (i, node, "issuer", part->tmd->issuer, 64);                tree_add_hex_uint8 (i, node, "version", part->tmd->version);                tree_add_hex_uint8 (i, node, "ca_crl_version",                                    part->tmd->ca_crl_version);                tree_add_hex_uint8 (i, node, "signer_crl_version",                                    part->tmd->signer_crl_version);                tree_add_hex_uint64 (i, node, "sys_version",                                     part->tmd->sys_version);                tree_add_hex_uint64 (i, node, "title_id", part->tmd->title_id);                tree_add_hex_uint32 (i, node, "title_type",                                     part->tmd->title_type);                tree_add_hex_uint16 (i, node, "group_id", part->tmd->group_id);                tree_add_hex_uint32 (i, node, "access_rights",                                     part->tmd->access_rights);                tree_add_hex_uint16 (i, node, "title_version",                                     part->tmd->title_version);                tree_add_uint (i, node, "num_contents",                               part->tmd->num_contents);                tree_add_uint (i, node, "boot_index", part->tmd->boot_index);        }        node = tree_add_dir (i, part_node, ".internals");        tree_add_uint (i, node, "partition_offset", part->offset);        tree_add_uint (i, node, "appldr_offset", 0x2440);        tree_add_uint (i, node, "appldr_size", part->appldr_size);        tree_add_uint (i, node, "dol_offset", part->header.dol_offset);        tree_add_uint (i, node, "dol_size", part->header.dol_size);        tree_add_uint (i, node, "fst_offset", part->header.fst_offset);        tree_add_uint (i, node, "fst_size", part->header.fst_size);        if (part->is_encrypted) {                tree_add_raw_file (i, node, "certs",                                   part->certs_offset, part->certs_size);                tree_add_raw_file (i, node, "tmd",                                   part->tmd_offset, part->tmd_size);                tree_add_raw_file (i, node, "ticket",                                   part->ticket_offset, part->ticket_size);                tree_add_uint (i, node, "data_offset", part->data_offset);                tree_add_uint (i, node, "data_size", part->data_size);                tree_add_file (i, node, "decrypted.raw",                               0, part->data_size);                // tree_add_uint copies an integer, we want the live data                tree_add_mem (i, node, "cached_block", &part->cached_block, 4);                tree_add_mem (i, node, "cache", part->cache, 0x7c00);        }}void meta_add_image (struct tree *node, struct image_file *image) {        u8 i;        char str[64];        for (i = 0; i < image->nparts; ++i) {                sprintf (str, "partition%02u", i);                switch (image->parts[i].type) {                case PART_UNKNOWN:                        break;                case PART_DATA:                        tree_add_symlink (i, node, "data", str);                        break;                case PART_UPDATE:                        tree_add_symlink (i, node, "update", str);                        break;                case PART_INSTALLER:                        tree_add_symlink (i, node, "installer", str);                        break;                case PART_VC:                        tree_add_symlink (i, node, image->parts[i].chan_id,                                          str);                        break;                }                if (image->parts[i].is_encrypted)                        tree_add_symlink (i, node, image->parts[i].title_id_str,                                          str);        }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -