mirror of
https://github.com/Thealexbarney/LibHac.git
synced 2024-11-14 10:49:41 +01:00
Parse calibration partition
This commit is contained in:
parent
5e678ddb06
commit
c7e822d46f
1 changed files with 194 additions and 0 deletions
194
libhac/Calibration.cs
Normal file
194
libhac/Calibration.cs
Normal file
|
@ -0,0 +1,194 @@
|
||||||
|
using System.IO;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace libhac
|
||||||
|
{
|
||||||
|
public class Calibration
|
||||||
|
{
|
||||||
|
public string Magic;
|
||||||
|
public uint Field4;
|
||||||
|
public int CalibDataSize;
|
||||||
|
public short Version;
|
||||||
|
public short Revision;
|
||||||
|
public byte[] CalibDataSha256;
|
||||||
|
public string ConfigId1;
|
||||||
|
public int WlanCountryCodesNum;
|
||||||
|
public int WlanCountryCodesLastIdx;
|
||||||
|
public string[] WlanCountryCodes;
|
||||||
|
public byte[] WlanMacAddr;
|
||||||
|
public byte[] BdAddr;
|
||||||
|
public byte[] AccelerometerOffset;
|
||||||
|
public byte[] AccelerometerScale;
|
||||||
|
public byte[] GyroscopeOffset;
|
||||||
|
public byte[] GyroscopeScale;
|
||||||
|
public string SerialNumber;
|
||||||
|
public byte[] DeviceKeyEccP256;
|
||||||
|
public byte[] DeviceCertEccP256;
|
||||||
|
public byte[] DeviceKeyEccB233;
|
||||||
|
public byte[] DeviceCertEccB233;
|
||||||
|
public byte[] EticketKeyEccP256;
|
||||||
|
public byte[] EticketCertEccP256;
|
||||||
|
public byte[] EticketKeyEccB233;
|
||||||
|
public byte[] EticketCertEccB233;
|
||||||
|
public byte[] SslKey;
|
||||||
|
public int SslCertSize;
|
||||||
|
public byte[] SslCert;
|
||||||
|
public byte[] SslCertSha256;
|
||||||
|
public byte[] RandomNumber;
|
||||||
|
public byte[] RandomNumberSha256;
|
||||||
|
public byte[] GamecardKey;
|
||||||
|
public byte[] GamecardCert;
|
||||||
|
public byte[] GamecardCertSha256;
|
||||||
|
public byte[] EticketKeyRsa;
|
||||||
|
public byte[] EticketCertRsa;
|
||||||
|
public string BatteryLot;
|
||||||
|
public byte[] SpeakerCalibValue;
|
||||||
|
public int RegionCode;
|
||||||
|
public byte[] AmiiboKey;
|
||||||
|
public byte[] AmiiboCertEcqv;
|
||||||
|
public byte[] AmiiboCertEcdsa;
|
||||||
|
public byte[] AmiiboKeyEcqvBls;
|
||||||
|
public byte[] AmiiboCertEcqvBls;
|
||||||
|
public byte[] AmiiboRootCertEcqvBls;
|
||||||
|
public int ProductModel;
|
||||||
|
public byte[] ColorVariation;
|
||||||
|
public byte[] LcdBacklightBrightnessMapping;
|
||||||
|
public byte[] DeviceExtKeyEccB233;
|
||||||
|
public byte[] EticketExtKeyEccP256;
|
||||||
|
public byte[] EticketExtKeyEccB233;
|
||||||
|
public byte[] EticketExtKeyRsa;
|
||||||
|
public byte[] SslExtKey;
|
||||||
|
public byte[] GamecardExtKey;
|
||||||
|
public int LcdVendorId;
|
||||||
|
|
||||||
|
public Calibration(Stream stream)
|
||||||
|
{
|
||||||
|
var reader = new BinaryReader(stream, Encoding.Default, true);
|
||||||
|
|
||||||
|
stream.Position = 0;
|
||||||
|
Magic = reader.ReadUtf8(4);
|
||||||
|
Field4 = reader.ReadUInt32();
|
||||||
|
CalibDataSize = reader.ReadInt32();
|
||||||
|
Version = reader.ReadInt16();
|
||||||
|
Revision = reader.ReadInt16();
|
||||||
|
|
||||||
|
stream.Position = 0x20;
|
||||||
|
CalibDataSha256 = reader.ReadBytes(0x20);
|
||||||
|
ConfigId1 = reader.ReadUtf8Z();
|
||||||
|
|
||||||
|
stream.Position = 0x80;
|
||||||
|
WlanCountryCodesNum = reader.ReadInt32();
|
||||||
|
WlanCountryCodesLastIdx = reader.ReadInt32();
|
||||||
|
WlanCountryCodes = new string[WlanCountryCodesNum];
|
||||||
|
for (int i = 0; i < WlanCountryCodesNum; i++)
|
||||||
|
{
|
||||||
|
stream.Position = 0x88 + i * 4;
|
||||||
|
WlanCountryCodes[i] = reader.ReadUtf8Z();
|
||||||
|
}
|
||||||
|
|
||||||
|
stream.Position = 0x210;
|
||||||
|
WlanMacAddr = reader.ReadBytes(6);
|
||||||
|
stream.Position = 0x220;
|
||||||
|
BdAddr = reader.ReadBytes(6);
|
||||||
|
stream.Position = 0x230;
|
||||||
|
AccelerometerOffset = reader.ReadBytes(6);
|
||||||
|
stream.Position = 0x238;
|
||||||
|
AccelerometerScale = reader.ReadBytes(6);
|
||||||
|
stream.Position = 0x240;
|
||||||
|
GyroscopeOffset = reader.ReadBytes(6);
|
||||||
|
stream.Position = 0x248;
|
||||||
|
GyroscopeScale = reader.ReadBytes(6);
|
||||||
|
|
||||||
|
stream.Position = 0x250;
|
||||||
|
SerialNumber = reader.ReadUtf8Z();
|
||||||
|
|
||||||
|
stream.Position = 0x270;
|
||||||
|
DeviceKeyEccP256 = reader.ReadBytes(0x30);
|
||||||
|
stream.Position = 0x2B0;
|
||||||
|
DeviceCertEccP256 = reader.ReadBytes(0x180);
|
||||||
|
stream.Position = 0x440;
|
||||||
|
DeviceKeyEccB233 = reader.ReadBytes(0x30);
|
||||||
|
stream.Position = 0x480;
|
||||||
|
DeviceCertEccB233 = reader.ReadBytes(0x180);
|
||||||
|
stream.Position = 0x610;
|
||||||
|
EticketKeyEccP256 = reader.ReadBytes(0x30);
|
||||||
|
stream.Position = 0x650;
|
||||||
|
EticketCertEccP256 = reader.ReadBytes(0x180);
|
||||||
|
stream.Position = 0x7E0;
|
||||||
|
EticketKeyEccB233 = reader.ReadBytes(0x30);
|
||||||
|
stream.Position = 0x820;
|
||||||
|
EticketCertEccB233 = reader.ReadBytes(0x180);
|
||||||
|
|
||||||
|
stream.Position = 0x9B0;
|
||||||
|
SslKey = reader.ReadBytes(0x110);
|
||||||
|
stream.Position = 0xAD0;
|
||||||
|
SslCertSize = reader.ReadInt32();
|
||||||
|
stream.Position = 0x0AE0;
|
||||||
|
SslCert = reader.ReadBytes(SslCertSize);
|
||||||
|
stream.Position = 0x12E0;
|
||||||
|
SslCertSha256 = reader.ReadBytes(0x20);
|
||||||
|
|
||||||
|
stream.Position = 0x1300;
|
||||||
|
RandomNumber = reader.ReadBytes(0x1000);
|
||||||
|
stream.Position = 0x2300;
|
||||||
|
RandomNumberSha256 = reader.ReadBytes(0x20);
|
||||||
|
|
||||||
|
stream.Position = 0x2320;
|
||||||
|
GamecardKey = reader.ReadBytes(0x110);
|
||||||
|
stream.Position = 0x2440;
|
||||||
|
GamecardCert = reader.ReadBytes(0x400);
|
||||||
|
stream.Position = 0x2840;
|
||||||
|
GamecardCertSha256 = reader.ReadBytes(0x20);
|
||||||
|
|
||||||
|
stream.Position = 0x2860;
|
||||||
|
EticketKeyRsa = reader.ReadBytes(0x220);
|
||||||
|
stream.Position = 0x2A90;
|
||||||
|
EticketCertRsa = reader.ReadBytes(0x240);
|
||||||
|
|
||||||
|
stream.Position = 0x2CE0;
|
||||||
|
BatteryLot = reader.ReadUtf8Z();
|
||||||
|
|
||||||
|
stream.Position = 0x2D00;
|
||||||
|
SpeakerCalibValue = reader.ReadBytes(0x800);
|
||||||
|
|
||||||
|
stream.Position = 0x3510;
|
||||||
|
RegionCode = reader.ReadInt32();
|
||||||
|
|
||||||
|
stream.Position = 0x3520;
|
||||||
|
AmiiboKey = reader.ReadBytes(0x50);
|
||||||
|
stream.Position = 0x3580;
|
||||||
|
AmiiboCertEcqv = reader.ReadBytes(0x14);
|
||||||
|
stream.Position = 0x35A0;
|
||||||
|
AmiiboCertEcdsa = reader.ReadBytes(0x70);
|
||||||
|
stream.Position = 0x3620;
|
||||||
|
AmiiboKeyEcqvBls = reader.ReadBytes(0x40);
|
||||||
|
stream.Position = 0x3670;
|
||||||
|
AmiiboCertEcqvBls = reader.ReadBytes(0x20);
|
||||||
|
stream.Position = 0x36A0;
|
||||||
|
AmiiboRootCertEcqvBls = reader.ReadBytes(0x90);
|
||||||
|
|
||||||
|
stream.Position = 0x3740;
|
||||||
|
ProductModel = reader.ReadInt32();
|
||||||
|
stream.Position = 0x3750;
|
||||||
|
ColorVariation = reader.ReadBytes(0x06);
|
||||||
|
stream.Position = 0x3760;
|
||||||
|
LcdBacklightBrightnessMapping = reader.ReadBytes(0x0C);
|
||||||
|
|
||||||
|
stream.Position = 0x3770;
|
||||||
|
DeviceExtKeyEccB233 = reader.ReadBytes(0x50);
|
||||||
|
stream.Position = 0x37D0;
|
||||||
|
EticketExtKeyEccP256 = reader.ReadBytes(0x50);
|
||||||
|
stream.Position = 0x3830;
|
||||||
|
EticketExtKeyEccB233 = reader.ReadBytes(0x50);
|
||||||
|
stream.Position = 0x3890;
|
||||||
|
EticketExtKeyRsa = reader.ReadBytes(0x240);
|
||||||
|
stream.Position = 0x3AE0;
|
||||||
|
SslExtKey = reader.ReadBytes(0x130);
|
||||||
|
stream.Position = 0x3C20;
|
||||||
|
GamecardExtKey = reader.ReadBytes(0x130);
|
||||||
|
|
||||||
|
stream.Position = 0x3D60;
|
||||||
|
LcdVendorId = reader.ReadInt32();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue