mirror of
https://github.com/rvtr/ctr_test_tools.git
synced 2025-10-31 13:41:24 -04:00
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_test_tools@30 6b0af911-cb57-b745-895f-eec5701120e1
139 lines
5.8 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|
|
}
|