ctr_test_tools/TwlBkpCheck/Windows/FalsifyTwlBackup/Category1xx.cs
n2460 feaf55c5d1 FalsifyTwlBackup:カテゴリ処理におけるマジックナンバーの排除、マルチコンテンツ対応
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_test_tools@30 6b0af911-cb57-b745-895f-eec5701120e1
2011-10-22 07:47:10 +00:00

140 lines
6.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TwlBackupBlock;
namespace FalsifyTwlBackup
{
partial class Program
{
static void FalsifyingDataCategory1xx(int improperNo, Properties prop, byte[] improperData)
{
Blocks blocksForFalsifying = (Blocks)prop.decryptedBlocks.Clone();
HeaderBody header;
header = (HeaderBody)blocksForFalsifying.header.body;
SignatureBody signature;
signature = (SignatureBody)blocksForFalsifying.signature.body;
byte[] outData;
//[1xx] 不正なデータ挿入
//------------------------------------
//[テンプレート]
//case (番号):
// (差し替えの場合)ReplaceImproperData(blocksForFalsifying[(差替え場所のindex)].body, improperData);
// outData = MergeEncryptBody(blocksForFalsifying, prop.keyData, prop.macKeyData, improperData, (不正データ挿入箇所), NC_MAC_AND_HASHSET);
// OutputFalsifyingData(improperNo, prop.outFolderPath, outData);
// break;
switch (improperNo)
{
case 100:
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, FRONT_BANNER, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 101:
ReplaceImproperData(blocksForFalsifying[SECTION_BANNER].body, improperData);
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, NONE, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 102:
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, REAR_BANNER, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 103:
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, FRONT_HEADER, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 104:
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, REAR_HEADER, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 105:
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, FRONT_SIGNATURE, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 106:
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, REAR_SIGNATURE, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 107:
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, FRONT_TMD, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 108:
ReplaceImproperData(blocksForFalsifying[SECTION_TMD].body, improperData);
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, NONE, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 109:
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, REAR_TMD, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 110:
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, FRONT_CONTENT, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 111:
ReplaceImproperData(blocksForFalsifying[SECTION_CONTENT].body, improperData);
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, NONE, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 112:
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, REAR_CONTENT, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 113:
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, FRONT_PUBLIC_SAVE, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 114:
ReplaceImproperData(blocksForFalsifying[SECTION_PUBLIC_SAVE].body, improperData);
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, NONE, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 115:
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, REAR_PUBLIC_SAVE, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 116:
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, FRONT_SUB_BANNER, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 117:
ReplaceImproperData(blocksForFalsifying[SECTION_SUB_BANNER].body, improperData);
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, NONE, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 118:
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, REAR_SUB_BANNER, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
// ありえない
default:
throw new InvalidOperationException();
}
}
}
}