ctr_test_tools/TwlBkpCheck/Windows/FalsifyTwlBackup/Category2xx.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

139 lines
5.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TwlBackupBlock;
namespace FalsifyTwlBackup
{
partial class Program
{
static void FalsifyingDataCategory2xx(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;
//[2xx] ヘッダブロック改ざん
//------------------------------------
//[テンプレート]
//case (番号):
// header.(変更箇所)++;
// outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, NONE, NC_MAC_AND_HASHSET);
// OutputFalsifyingData(improperNo, prop.outFolderPath, outData);
// break;
switch (improperNo)
{
case 200:
header.signature++;
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, NONE, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 201:
header.companyCode++;
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, NONE, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 202:
header.version++;
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, NONE, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 203:
header.uniqueId[0]++;
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, NONE, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 204:
header.hardwareId[0]++;
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, NONE, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 205:
header.titleId++;
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, NONE, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 206:
header.requiredSize++;
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, NONE, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
// TMD の fileSize を変更
case 207:
header.fileSizes[(int)Utility.SectionIndex.TMD]++;
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, NONE, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
// コンテンツ[0] の fileSize を変更
case 208:
header.fileSizes[(int)Utility.SectionIndex.CONTENT]++;
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, NONE, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
// public save の fileSize を変更
case 209:
header.fileSizes[(int)Utility.SectionIndex.PUBLIC_SAVE]++;
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, NONE, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
// sub banner の fileSize を変更
case 210:
header.fileSizes[(int)Utility.SectionIndex.SUB_BANNER]++;
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, NONE, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 211:
for (int i = 0; i < header.contentId.Length; i++)
{
header.contentId[i]++;
}
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, NONE, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 212:
header.tmdReserved.publicSaveSize++;
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, NONE, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
case 213:
header.tmdReserved.privateSaveSize++;
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, NONE, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
// public save の fileSize, TMD Reserved の publicSaveSize を変更
case 214:
header.fileSizes[(int)Utility.SectionIndex.PUBLIC_SAVE]++;
header.tmdReserved.publicSaveSize++;
outData = MergeEncryptBody(blocksForFalsifying, prop, improperData, NONE, NC_MAC_AND_HASHSET);
OutputFalsifiedData(improperNo, prop.outFolderPath, outData);
break;
// ありえない
default:
throw new InvalidOperationException();
}
}
}
}