From 483f433a621ab30d16c4f5d7226d916f4135a876 Mon Sep 17 00:00:00 2001 From: nishikawa_takeshi Date: Thu, 4 Dec 2008 10:05:42 +0000 Subject: [PATCH] =?UTF-8?q?split=5Ftad=20=E7=A7=BB=E6=A4=8D=E7=89=88:?= =?UTF-8?q?=E9=96=A2=E6=95=B0=E3=82=92=E3=83=9E=E3=82=B9=E3=82=BF=E3=82=A8?= =?UTF-8?q?=E3=83=87=E3=82=A3=E3=82=BF=E3=81=AE=E3=83=95=E3=82=A9=E3=83=AB?= =?UTF-8?q?=E3=83=80=E3=81=AB=E7=A7=BB=E3=81=97=E3=81=A6=E3=80=81=E3=81=93?= =?UTF-8?q?=E3=81=A1=E3=82=89=E3=81=8B=E3=82=89=E3=81=AF=E5=8F=82=E7=85=A7?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=81=93=E3=81=A8=E3=81=AB=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlToolsRED@59 7061adef-622a-194b-ae81-725974e89856 --- .../split_tad_console/split_tad_console.ncb | Bin 6630400 -> 6654976 bytes .../split_tad_console/split_tad_console.suo | Bin 17920 -> 17920 bytes .../split_tad_console/Debug/BuildLog.htm | Bin 9996 -> 13488 bytes .../split_tad_console/split_tad.cpp | 275 ------------------ .../split_tad_console/split_tad.h | 80 ----- .../split_tad_console.vcproj | 10 +- .../split_tad_console/split_tad_util.cpp | 149 ---------- .../split_tad_console/split_tad_util.h | 80 ----- 8 files changed, 5 insertions(+), 589 deletions(-) delete mode 100644 build/tools/MasterEditor/split_tad_console/split_tad_console/split_tad.cpp delete mode 100644 build/tools/MasterEditor/split_tad_console/split_tad_console/split_tad.h delete mode 100644 build/tools/MasterEditor/split_tad_console/split_tad_console/split_tad_util.cpp delete mode 100644 build/tools/MasterEditor/split_tad_console/split_tad_console/split_tad_util.h diff --git a/build/tools/MasterEditor/split_tad_console/split_tad_console.ncb b/build/tools/MasterEditor/split_tad_console/split_tad_console.ncb index 6c46eaac389becbcbc46bd031343ad4fe2f7f05a..c498982083177da8e28c5206a7d46e8420bf88a6 100644 GIT binary patch delta 10541 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 Kb^R_@i~k2h|AHU@ delta 10992 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 diff --git a/build/tools/MasterEditor/split_tad_console/split_tad_console.suo b/build/tools/MasterEditor/split_tad_console/split_tad_console.suo index 3b0c12b7b0c24093bd7968f11d3a0aa155b5513f..83ecf125a0aec62b6fa3c03bcc4c601427b887dc 100644 GIT binary patch delta 555 zcmYLF&rcIU7@cpO8OpYlT}y+sY@00?LVGl*iIGMYLx}NUJ#sQJ>_HO_8_&Iz zckt?uyD^M^fTo=EAn3)5XRjviffIG6b<3B`WWM*l_q~^iyA*fnLz`0;KCg<#o$kqZ zJmWvaEMrWfTKCc5Ha=xIo{KHXTn$fO!g-E!ahSOn3;8ICI+) zGg@Jd6_Fk0xJLBwuyDo~k=WakOgnKomkqf=P^s5O2|TXOv#l%g*H2*<-e3K4ix%>}=$ M-cDP!*FU=d082@;E&u=k delta 772 zcmZ9}yKmD_6bE3Rn|qy?+a#ps(U62xgf5{;5D%${rBrGwBEaSgbpzodCi z2VYb!;PxV1f;qShSHOm=&_*540(zDRmSOx~ z*G^bGo+ugKSmvWRU^!>^2Z+PT(;SWE&Cyj&(>0|Lb+Z#V5w9fIbuEm`s9#@Ya988S zfe)SkN%(QL&8n^ikWBg^$2Bdfb|Pf@A+`srd^~=vm71jfzrhrOiL&FSJ`r}ZkvrPT zOwtZN@7NiOlti6)FXU#YDLA5?LomSa)5TZyoZtiDx-(YL$7C*1drhfG~p>cgXgde NE6{?rGj;Gy;x|y+&V2v? diff --git a/build/tools/MasterEditor/split_tad_console/split_tad_console/Debug/BuildLog.htm b/build/tools/MasterEditor/split_tad_console/split_tad_console/Debug/BuildLog.htm index 78a81bd8e82fc905698565f0c6d2bddecaea042b..1fb79a88a4803e9c6631d3466b2ae72e78b3a9fb 100644 GIT binary patch delta 980 zcma)5&ubH55Pb>lCTyED-DG1-Lb_QkSbuC68#M|FCaoYy)PnX>lqOAWpt>ozQuqCz?tuJ6<78WcTk7V7XUy0ETGf0tv zFm32D`k`v{RMYw^sH0AA^{fXXKGZ@JH7qgH-?}5z(UV`}s%P!vJ)9k)@g`+0v#$oX#k(PHq z<8^m&JY4RlOW|MQMQqVWop^!jnn~B1{Du_6<4mjBFCgpzH)XJRdV z)0eVw?jV9?msxg`euu_HF0&zNdx}KBIPcecd_V{)jhGi{Yt#&OHv_aenus1)7q{@W zo;v9+k32!xKkZL;#~x`#%BM=ap!~@ASNj8J-gAZwGeZqkYa2L*X^gQ+GrWTj*hB}9 zdF*@fY1ama&5?#ntBYK7pDmI*Tji*M+wOOnBMx&IJU5Gf9*cdE*Uh;nDL^9YSYb?! ztzJY^bsH6>0D7oKr*_C2T;y;OkFHB;ah-w7+;EA%yKq-z&1 C5yb8Q delta 315 zcmdmx+2gmtiA~su!IHt4!JNT}!32m67%UhJCZAL_p4`DEH(7v#Z}T2@2bReVJR*}L zc*HjAiCHmX)ln@TyLo~JALC>h6+WN>M{GuJekPg3I(dP{xyb@5Jd@uks%&;s$Y7it zp=2@ngJQzS}hL~8_sbU0(^*suAKQ67r~ vgC0W?Ln1>7gA#+% -#include -#include "split_tad.h" -#include "split_tad_util.h" - - -// ------------------------------------------------------ -// 宣言と定数 -// ------------------------------------------------------ - -// internal functions -cli::array^ readTitleKey( cli::array ^ticket ); -cli::array^ decCBC( cli::array ^ Key, cli::array ^ IV, cli::array ^cipherText ); -cli::array ^readContentsInfo( cli::array ^tmd ); - -// tad外し用の鍵 -const u8 commonKey[] = -{ - 0xA1,0x60,0x4A,0x6A,0x71,0x23,0xB5,0x29,0xAE,0x8B,0xEC,0x32,0xC8,0x16,0xFC,0xAA -}; - - -// ------------------------------------------------------ -// tad外し処理本体 -// ------------------------------------------------------ - -// -// tad ファイルから srl(0番目のコンテンツ)を抜き出す -// (split_tad_dev.pl の移植) -// -// @arg [in] 入力 tad ファイル名 -// @arg [out] 出力 srl ファイル名 -// -// @ret 成功したとき0 失敗したら負の値 -// -int splitTad( System::String ^tadpath, System::String ^srlpath ) -{ - FILE *fp = NULL; - const char *pchFilename = - (const char*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi( tadpath ).ToPointer(); - - if( fopen_s( &fp, pchFilename, "rb" ) != NULL ) - { - return -1; - } - - cli::array ^mbuf = subStr( fp, 0, 32 ); - - u32 hdrSize = reverseEndian( unpack32(mbuf, 0) ); // 基本的にビッグエンディアン - u16 tadType = reverseEndian( unpack16(mbuf, 4) ); - u16 tadVersion = reverseEndian( unpack16(mbuf, 6) ); - u32 certSize = reverseEndian( unpack32(mbuf, 8) ); - u32 crlSize = reverseEndian( unpack32(mbuf, 12) ); - u32 ticketSize = reverseEndian( unpack32(mbuf, 16) ); - u32 tmdSize = reverseEndian( unpack32(mbuf, 20) ); - u32 contentSize = reverseEndian( unpack32(mbuf, 24) ); - u32 metaSize = reverseEndian( unpack32(mbuf, 28) ); - - printf( "hdrSize %d\n", hdrSize ); - printf( "tadType %c%c\n", tadType>>8, tadType&0xFF ); - printf( "tadVersion %d\n", tadVersion ); - printf( "certSize %d\n", certSize ); - printf( "crlSize %d\n", crlSize ); - printf( "ticketSize %d\n", ticketSize ); - printf( "tmdSize %d\n", tmdSize ); - printf( "contentSize %d\n", contentSize ); - printf( "metaSize %d\n", metaSize ); - - u32 certOffset = roundUp( hdrSize, 64); - u32 crlOffset = roundUp( certOffset + certSize, 64); - u32 ticketOffset = roundUp( crlOffset + crlSize, 64); - u32 tmdOffset = roundUp( ticketOffset + ticketSize, 64); - u32 contentOffset = roundUp( tmdOffset + tmdSize, 64); - u32 metaOffset = roundUp( contentOffset + contentSize, 64); - u32 fileSize = roundUp( metaOffset + metaSize, 64); - - fseek( fp, 0, SEEK_END ); - u32 orgFileSize = ftell( fp ); - if( fileSize != orgFileSize ) - { - printf( "file size is not expected size(=%d)", fileSize ); - fclose( fp ); - return -1; - } - cli::array ^ticket = subStr( fp, ticketOffset, ticketSize ); - cli::array ^tmd = subStr( fp, tmdOffset, tmdSize ); - cli::array ^content = subStr( fp, contentOffset, contentSize ); - - //saveFile( "cert.bin", subStr( fp, certOffset, certSize ) ); - //saveFile( "crl.bin", subStr( fp, crlOffset, crlSize ) ); - //saveFile( "ticket.bin", ticket ); - //saveFile( "tmd.bin", tmd ); - //saveFile( "meta.bin", subStr( fp, metaOffset, metaSize ) ); - - cli::array ^title_key = readTitleKey( ticket ); - cli::array ^rci = readContentsInfo( tmd ); - dumpBytes( title_key ); - - // 通常は tad は srl (コンテンツ No.0) しか含まないが - // マルチコンテンツ を含む場合のために No.1 以降も別ファイルとして保存する - // srl 名が out.srl のとき out_1.bin out_2.bin ... として出力する - System::String ^srl_dir = System::IO::Path::GetDirectoryName( srlpath ); // 格納ディレクトリ名 - System::String ^srl_prefix = System::IO::Path::GetFileNameWithoutExtension( srlpath ); // 拡張子よりも前のファイル名 - System::String ^srl_ext = System::IO::Path::GetExtension( srlpath ); // 拡張子 - - int result = 0; - u32 offset = 0; - for each( rcContentsInfo ^ci in rci ) - { - u32 size = roundUp( (u32)ci->size, 16 ); - cli::array ^enc_content_x = subStr( content, offset, size ); - cli::array ^content_x_iv = resizeBytes( pack16( reverseEndian(ci->idx) ), 14 ); // ビッグエンディアンにしておく - cli::array ^dec_content_x = decCBC( title_key, content_x_iv, enc_content_x ); - cli::array ^dec_content = subStr( dec_content_x, 0, ci->size ); - System::Security::Cryptography::SHA1 ^sha1 = gcnew System::Security::Cryptography::SHA1Managed(); - cli::array ^hash = sha1->ComputeHash( dec_content ); - - dumpBytes( hash ); - pin_ptr calc = &hash[0]; // 計算で求めたハッシュ - pin_ptr extr = &ci->hash[0]; // 抽出したハッシュ - if( memcmp( calc, extr, 20 ) == 0 ) - { - printf( "hash OK\n" ); - } - else - { - printf( "hash mismatch\n" ); - result = -1; // エラーとする 中断はせず最後まで作成 - } - - //saveFile( "content_" + ci->idx.ToString() + ".encrypted.bin", enc_content_x ); - //saveFile( "content_" + ci->idx.ToString() + ".bin", dec_content ); - if( ci->idx == 0 ) - { - saveFile( srlpath, dec_content ); // コンテンツ No.0 が srl にあたる - } - else - { - System::String ^tmppath = srl_dir + "\\" + srl_prefix + "_" + ci->idx.ToString() + ".bin"; - saveFile( tmppath, dec_content ); - } - offset += roundUp( size, 64 ); - } - fclose( fp ); - return result; -} - -// ------------------------------------------------------ -// internal functions -// ------------------------------------------------------ - -// -// title_key の復号 -// -// @ret title_key のバイト列 -// -cli::array^ readTitleKey( cli::array ^ticket ) -{ - cli::array ^encTitleKey = subStr( ticket, 0x1BF, 16 ); - cli::array ^IV = resizeBytes( subStr( ticket, 0x1DC, 8 ), 8 ); // 16バイトに拡張してケツの8バイトを0で埋める - - cli::array ^comKey = gcnew cli::array(16); - pin_ptr pComKey = &comKey[0]; - memcpy( pComKey, commonKey, 16 ); - - cli::array ^plain; - try - { - plain = decCBC( comKey, IV, encTitleKey ); - } - catch (System::Exception ^ e) - { - System::Console::WriteLine("Exception in readTitleKey(): {0}", e->Message); - } - return plain; -} - -// -// tmd から各コンテンツファイルの情報を抜き出す -// -// @ret 各コンテンツファイルの情報をまとめた Array -// -cli::array ^readContentsInfo( cli::array ^tmd ) -{ - u16 nContent = reverseEndian( unpack16(tmd, 0x1DE) ); - cli::array ^ci = gcnew cli::array( nContent ); - - u16 i; - for( i=0; i < nContent; i++ ) - { - u32 offset = 0x1E4 + 36*i; - ci[i] = gcnew rcContentsInfo; - ci[i]->cid = reverseEndian( unpack32(tmd, offset) ); - ci[i]->idx = reverseEndian( unpack16(tmd, offset + 4) ); - ci[i]->type = reverseEndian( unpack16(tmd, offset + 6) ); - ci[i]->size = reverseEndian( unpack32(tmd, offset + 12) ); - ci[i]->hash = subStr( tmd, offset + 16, 20 ); - } - return ci; -} - -// -// AES復号 : System::Security::Cryptography::RijndaelManaged のヘルプのサンプルをコピペ -// -// @ret 復号後のデータ -// -cli::array^ decCBC( cli::array ^ Key, cli::array ^ IV, cli::array ^cipherText ) -{ - // Check arguments. - if (!cipherText || cipherText->Length <= 0) - throw gcnew System::ArgumentNullException("cipherText"); - if (!Key || Key->Length <= 0) - throw gcnew System::ArgumentNullException("Key"); - if (!IV || IV->Length <= 0) - throw gcnew System::ArgumentNullException("Key"); - - // TDeclare the streams used - // to decrypt to an in memory - // array of bytes. - System::IO::MemoryStream ^msDecrypt; - System::Security::Cryptography::CryptoStream ^csDecrypt; - - // Declare the RijndaelManaged object - // used to decrypt the data. - System::Security::Cryptography::RijndaelManaged ^aesAlg; - - // Declare the string used to hold - // the decrypted text. - cli::array ^plain = gcnew cli::array(cipherText->Length); - - try - { - // Create a RijndaelManaged object - // with the specified key and IV. - aesAlg = gcnew System::Security::Cryptography::RijndaelManaged(); - aesAlg->Mode = System::Security::Cryptography::CipherMode::CBC; // CBCモード - aesAlg->Key = Key; - aesAlg->IV = IV; - aesAlg->Padding = System::Security::Cryptography::PaddingMode::Zeros; - - // Create a decrytor to perform the stream transform. - System::Security::Cryptography::ICryptoTransform ^ decryptor - = aesAlg->CreateDecryptor(aesAlg->Key, aesAlg->IV); - - // Create the streams used for decryption. - msDecrypt = gcnew System::IO::MemoryStream(cipherText); - csDecrypt = gcnew System::Security::Cryptography::CryptoStream - (msDecrypt, decryptor, System::Security::Cryptography::CryptoStreamMode::Read); - csDecrypt->Read( plain, 0, cipherText->Length ); - //srDecrypt = gcnew System::IO::StreamReader(csDecrypt); - - //// Read the decrypted bytes from the decrypting stream - //// and place them in a string. - //plaintext = srDecrypt->ReadToEnd(); - } - finally - { - // Clean things up. - - // Close the streams. - if (csDecrypt) - csDecrypt->Close(); - if (msDecrypt) - msDecrypt->Close(); - - // Clear the RijndaelManaged object. - if (aesAlg) - aesAlg->Clear(); - } - return plain; -} - -// end of file diff --git a/build/tools/MasterEditor/split_tad_console/split_tad_console/split_tad.h b/build/tools/MasterEditor/split_tad_console/split_tad_console/split_tad.h deleted file mode 100644 index b08bdb0..0000000 --- a/build/tools/MasterEditor/split_tad_console/split_tad_console/split_tad.h +++ /dev/null @@ -1,80 +0,0 @@ -#pragma once - -#include "twl/types.h" -#include -#include - - -// ------------------------------------------------------ -// APIs -// ------------------------------------------------------ - -// -// tad ファイルから srl(0番目のコンテンツ)を抜き出す -// (split_tad_dev.pl の移植) -// -// @arg [in] 入力 tad ファイルのパス -// @arg [out] 出力 srl ファイルのパス -// -// @ret 成功したとき0 失敗したら負の値 -// -int splitTad( System::String ^tadpath, System::String ^srlpath ); - - -// ------------------------------------------------------ -// 内部処理用の構造体(プロトタイプ宣言できないのでヘッダに置く) -// ------------------------------------------------------ - -// コンテンツ情報の構造体 -ref class rcContentsInfo -{ -private: - System::UInt32 ^h_cid; - System::UInt16 ^h_idx; - System::UInt16 ^h_type; - System::UInt32 ^h_size; - cli::array ^h_hash; -public: - rcContentsInfo() - { - this->h_cid = gcnew System::UInt32; // 解放の必要なし - this->h_idx = gcnew System::UInt16; - this->h_type = gcnew System::UInt16; - this->h_size = gcnew System::UInt32; - this->h_hash = gcnew cli::array(20); // 固定長 - } -public: - property System::UInt32 cid - { - void set( System::UInt32 v ){ *this->h_cid = v; }; - System::UInt32 get(void){ return *this->h_cid; } - } - property System::UInt16 idx - { - void set( System::UInt16 v ){ *this->h_idx = v; }; - System::UInt16 get(void){ return *this->h_idx; } - } - property System::UInt16 type - { - void set( System::UInt16 v ){ *this->h_type = v; }; - System::UInt16 get(void){ return *this->h_type; } - } - property System::UInt32 size - { - void set( System::UInt32 v ){ *this->h_size = v; }; - System::UInt32 get(void){ return *this->h_size; } - } - property cli::array ^hash - { - void set( cli::array ^h ) - { - cli::array::Copy( h, this->h_hash, 20 ); - } - cli::array ^get(void) - { - cli::array ^cp = gcnew cli::array(20); // コピーを返す - cli::array::Copy( this->h_hash, cp, 20 ); - return cp; - } - } -}; diff --git a/build/tools/MasterEditor/split_tad_console/split_tad_console/split_tad_console.vcproj b/build/tools/MasterEditor/split_tad_console/split_tad_console/split_tad_console.vcproj index bd0b7de..d190888 100644 --- a/build/tools/MasterEditor/split_tad_console/split_tad_console/split_tad_console.vcproj +++ b/build/tools/MasterEditor/split_tad_console/split_tad_console/split_tad_console.vcproj @@ -42,7 +42,7 @@ -#include -#include "split_tad_util.h" - - -// ファイルから部分バイト列を抜き出す -cli::array^ subStr( FILE *fp, const int offset, const int size ) -{ - if( size <= 0 ) - { - return nullptr; - } - cli::array ^mbuf = gcnew cli::array(size); // メモリ解放の必要なし - pin_ptr buf = &mbuf[0]; // fread が unmanaged 配列を引数にするので変換 - - (void)fseek( fp, offset, SEEK_SET ); - if( fread( buf, 1, size, fp ) != size ) - { - return nullptr; - } - return mbuf; // managed のほうを返す -} - -// バイト列から部分バイト列を抜き出す -cli::array^ subStr( cli::array ^bytes, const int offset, const int size ) -{ - cli::array ^sub = gcnew cli::array(size); - - cli::array::Copy( bytes, offset, sub, 0, size ); - return sub; -} - -// ファイルを作成してバイト列を格納する -int saveFp( FILE *fp, cli::array ^bytes ) -{ - if( bytes == nullptr ) - { - return 0; // 空のファイルをつくりたいということなので正常終了とみなす - } - pin_ptr tmp = &bytes[0]; // array型はふつうの配列ではないのでバイト配列に変換 - int size = bytes->Length; - - if( fwrite( tmp, 1, size, fp ) != size ) - { - return -1; - } - return 0; -} - -int saveFile( System::String ^filename, cli::array ^bytes ) -{ - FILE *fp = NULL; - const char *pchFilename = - (const char*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi( filename ).ToPointer(); - - // ファイルにROMヘッダをライト - if( fopen_s( &fp, pchFilename, "wb" ) != NULL ) // 同名ファイルを削除して新規にライト・バイナリ - { - return -1; - } - fseek( fp, 0, SEEK_SET ); - int r = saveFp( fp, bytes ); - fclose( fp ); - - return r; -} - -// エンディアンを逆転させる(tadはビッグエンディアンなのであったほうが便利) -u32 reverseEndian( const u32 v ) -{ - u32 ret = (v<<24) | ((v<<8) & 0x00FF0000) | ((v>>8) & 0x0000FF00) | (v>>24); - return ret; -} - -u16 reverseEndian( const u16 v ) -{ - u16 ret = (v<<8) | (v>>8); - return ret; -} - -// 多バイト値をバイト列に変換(リトルエンディアン) *** perlのpackを意識 *** -cli::array ^pack32( u32 v ) -{ - cli::array ^bytes = gcnew cli::array(4); - bytes[0] = v & 0xFF; - bytes[1] = (v >> 8) & 0xFF; - bytes[2] = (v >> 16) & 0xFF; - bytes[3] = (v >> 24) & 0xFF; - return bytes; -} - -cli::array ^pack16( u16 v ) -{ - cli::array ^bytes = gcnew cli::array(2); - bytes[0] = v & 0xFF; - bytes[1] = v >>8; - return bytes; -} - -// バイト列の部分バイト列から多バイト値として解釈(リトルエンディアン) *** perlのunpackを意識 *** -u32 unpack32( cli::array ^bytes, const int index ) -{ - pin_ptr tmp = &bytes[0]; - u32 v = (u32)*((u32*)(tmp+index)); - return v; -} - -u16 unpack16( cli::array ^bytes, const int index ) -{ - pin_ptr tmp = &bytes[0]; - u16 v = (u16)*((u16*)(tmp+index)); - return v; -} - -// 丸める -u32 roundUp( const u32 v, const u32 align ) -{ - u32 r = ((v + align - 1) / align) * align; - return r; -} - -u16 roundUp( const u16 v, const u16 align ) -{ - u16 r = ((v + align - 1) / align) * align; - return r; -} - -// バイト列の長さを拡張して末尾を0で埋める -// (0x12345678 => 0x1234567800000000) -cli::array ^resizeBytes( cli::array ^org, const int difSize ) -{ - cli::array ^r = gcnew cli::array( org->Length + difSize ); - cli::array::Copy( org, 0, r, 0, org->Length ); - return r; -} - -// バイト列を16進で表示 -void dumpBytes( cli::array ^bytes ) -{ - for each( System::Byte b in bytes ) - { - printf( "%02x", b ); - } - printf( "\n" ); -} - -// end of file diff --git a/build/tools/MasterEditor/split_tad_console/split_tad_console/split_tad_util.h b/build/tools/MasterEditor/split_tad_console/split_tad_console/split_tad_util.h deleted file mode 100644 index 1c31f5a..0000000 --- a/build/tools/MasterEditor/split_tad_console/split_tad_console/split_tad_util.h +++ /dev/null @@ -1,80 +0,0 @@ -#pragma once - -#include "twl/types.h" -#include -#include - - -// ------------------------------------------------------ -// APIs -// ------------------------------------------------------ - -// -// ファイルから部分バイト列を抜き出す -// -// @ret 抜き出したバイト列 -// -cli::array^ subStr( FILE *fp, const int offset, const int size ); - -// -// バイト列から部分バイト列を抜き出す -// -// @ret 抜き出したバイト列 -// -cli::array^ subStr( cli::array ^bytes, const int offset, const int size ); - -// -// ファイルを作成してバイト列を格納する -// -// @ret 成功したら0 失敗したら負の値 -// -int saveFp( FILE *fp, cli::array ^bytes ); -int saveFile( System::String ^filename, cli::array ^bytes ); - -// -// エンディアンを逆転させる(tadはビッグエンディアンなのであったほうが便利) -// -// @ret エンディアン逆転後の値 -// -u32 reverseEndian( const u32 v ); -u16 reverseEndian( const u16 v ); - -// -// 多バイト値をバイト列に変換(リトルエンディアン) *** perlのpackを意識 *** -// -// @ret 変換後のバイト列 -// -cli::array ^pack32( u32 v ); -cli::array ^pack16( u16 v ); - -// -// バイト列の部分バイト列から多バイト値として解釈(リトルエンディアン) *** perlのunpackを意識 *** -// -// @arg [in] バイト列 -// @arg [in] 何バイト目からを多バイト値とみなすか -// -// @ret 解釈した後の多バイト値 -// -u32 unpack32( cli::array ^bytes, const int index ); -u16 unpack16( cli::array ^bytes, const int index ); - -// -// 丸める -// -u32 roundUp( const u32 v, const u32 align ); -u16 roundUp( const u16 v, const u16 align ); - -// -// バイト列の長さを拡張して末尾を0で埋める -// (0x12345678 => 0x1234567800000000) -// -// @arg [in] 拡張前のバイト列 -// @arg [in] 何バイト拡張するか(拡張分だけを指定 例えば4バイトを5バイトにする場合には1を指定) -// -// @ret 拡張後のバイト列(新たなバイト列を内部で生成) -// -cli::array ^resizeBytes( cli::array ^org, const int difSize ); - -// バイト列を16進で表示 -void dumpBytes( cli::array ^bytes ); -