mirror of
https://github.com/rvtr/TwlToolsRED.git
synced 2025-10-31 06:41:18 -04:00
改竄結果出力を見易く修正、
アクセスログのうち、ファイルに該当しない部分も領域内の改竄有無を出力するように変更。 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlToolsRED@571 7061adef-622a-194b-ae81-725974e89856
This commit is contained in:
parent
67f4b5ba8a
commit
7ee77b384b
@ -439,3 +439,27 @@ void GetDigestResult( CARDRomHashContext *context, u32 start_adr, u32 end_adr, u
|
||||
}
|
||||
}
|
||||
|
||||
/* アドレスの範囲に該当するダイジェストテーブルの改竄有無を表示する */
|
||||
void IsDigestModified( CARDRomHashContext *context, u32 start_adr, u32 end_adr, u8* d1, u8* d2)
|
||||
{
|
||||
u32 offset;
|
||||
u32 digest1_index, digest2_index;
|
||||
*d1 = 1;
|
||||
*d2 = 1;
|
||||
|
||||
for( offset = start_adr; offset < end_adr; offset+=context->bytes_per_sector)
|
||||
{
|
||||
digest1_index = CARDi_GetHashSectorIndex( context, offset);
|
||||
if( !context->hash_original[digest1_index])
|
||||
{
|
||||
*d1 = 0;
|
||||
}
|
||||
|
||||
digest2_index = (digest1_index / context->sectors_per_block);
|
||||
if( !context->master_hash_original[digest2_index])
|
||||
{
|
||||
*d2 = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -98,6 +98,8 @@ void CARD_CheckHash(CARDRomHashContext *context, RomHeader* header, FILE* fp);
|
||||
void CARD_CheckFileDigest(CARDRomHashContext *context, MyFileEntry* file_entry, u8* ret_digest1, u8* ret_digest2);
|
||||
/* アドレスの範囲に該当するダイジェスト検証の合否を表示する */
|
||||
void GetDigestResult( CARDRomHashContext *context, u32 start_adr, u32 end_adr, u8* d1, u8* d2);
|
||||
/* アドレスの範囲に該当するダイジェストテーブルの改竄有無を表示する */
|
||||
void IsDigestModified( CARDRomHashContext *context, u32 start_adr, u32 end_adr, u8* d1, u8* d2);
|
||||
|
||||
|
||||
#endif //CARD_HASH_H_
|
||||
|
||||
@ -55,7 +55,8 @@ bool Checker::Diff( u32 g_offset, u32 g_size, u32 m_offset, u32 m_size, bool isD
|
||||
if( g_offset == m_offset)
|
||||
{
|
||||
if( (print_enable)&&(print_enable < PRINT_LEVEL_2)) {
|
||||
printf( " offset:0x%lx(改竄されていない)\n", g_offset);
|
||||
printf( " offset:0x%lx\n", g_offset);
|
||||
// printf( " offset:0x%lx(改竄されていない)\n", g_offset);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -69,7 +70,8 @@ bool Checker::Diff( u32 g_offset, u32 g_size, u32 m_offset, u32 m_size, bool isD
|
||||
if( g_size == m_size)
|
||||
{
|
||||
if( (print_enable)&&(print_enable < PRINT_LEVEL_2)) {
|
||||
printf( " size:0x%lx(改竄されていない)\n", g_size);
|
||||
printf( " size:0x%lx\n", g_size);
|
||||
// printf( " size:0x%lx(改竄されていない)\n", g_size);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -144,7 +146,8 @@ bool Checker::Diff( u32 g_offset, u32 g_size, u32 m_offset, u32 m_size, bool isD
|
||||
if( totalResult == 0)
|
||||
{
|
||||
if( (print_enable)&&(print_enable < PRINT_LEVEL_2)) {
|
||||
printf( " data:(改竄されていない)\n");
|
||||
printf( " data:\n");
|
||||
// printf( " data:(改竄されていない)\n");
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -953,7 +956,7 @@ char logBuf[0x46];
|
||||
void Checker::FindAccessLogFile( RomHeader* gHeaderBuf, Entry* entry, FILE* lfp, CARDRomHashContext *context)
|
||||
{
|
||||
int i = 0;
|
||||
u8 d1, d2;
|
||||
u8 d1, d2, dm1, dm2;
|
||||
u32 log_start_adr, log_end_adr;
|
||||
|
||||
while( fread( logBuf, 6, 1, lfp))
|
||||
@ -986,19 +989,48 @@ void Checker::FindAccessLogFile( RomHeader* gHeaderBuf, Entry* entry, FILE* lfp,
|
||||
log_start_adr, (log_end_adr - log_start_adr),
|
||||
true, PRINT_LEVEL_0))
|
||||
{
|
||||
printf( "[data:OK]");
|
||||
printf( "[data]");
|
||||
}else{
|
||||
printf( "[data:NG]");
|
||||
printf( "[data(*)]");
|
||||
}
|
||||
|
||||
if( gHeaderBuf->platform_code & 0x03)
|
||||
{
|
||||
GetDigestResult( context, log_start_adr, log_end_adr, &d1, &d2);
|
||||
if( d1) { printf( "[d1:OK]");} else { printf( "[d1:NG]");};
|
||||
if( d2) { printf( "[d2:OK]");} else { printf( "[d2:NG]");};
|
||||
IsDigestModified( context, log_start_adr, log_end_adr, &dm1, &dm2);
|
||||
if( dm1)
|
||||
{
|
||||
if( d1) { printf( "[d1:OK]");} else { printf( "[d1:NG]");};
|
||||
}
|
||||
else
|
||||
{
|
||||
if( d1) { printf( "[d1(*):OK]");} else { printf( "[d1(*):NG]");};
|
||||
}
|
||||
if( dm2)
|
||||
{
|
||||
if( d2) { printf( "[d2:OK]");} else { printf( "[d2:NG]");};
|
||||
}
|
||||
else
|
||||
{
|
||||
if( d2) { printf( "[d2(*):OK]");} else { printf( "[d2(*):NG]");};
|
||||
}
|
||||
}
|
||||
// 領域名も表示
|
||||
entry->FindAreaLocation( log_start_adr, log_end_adr);
|
||||
}
|
||||
else
|
||||
{ // ファイルが該当しなかったら領域名の表示と内容比較
|
||||
entry->FindAreaLocation( log_start_adr, log_end_adr);
|
||||
// TODO:genuine側の対応アドレスはgenuineファイルエントリの先頭から計算し直す
|
||||
if( Diff( log_start_adr, (log_end_adr - log_start_adr),
|
||||
log_start_adr, (log_end_adr - log_start_adr),
|
||||
true, PRINT_LEVEL_0))
|
||||
{
|
||||
printf( "[data]");
|
||||
}else{
|
||||
printf( "[data(*)]");
|
||||
}
|
||||
}
|
||||
entry->FindAreaLocation( log_start_adr, log_end_adr);
|
||||
printf( "\n");
|
||||
}
|
||||
else
|
||||
|
||||
Loading…
Reference in New Issue
Block a user