Correct application to be in line with libKonogonka
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
f7d3317bf5
commit
8f5481ab3e
11 changed files with 105 additions and 105 deletions
|
@ -34,7 +34,7 @@ import java.net.URL;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
import static libKonogonka.Converter.byteArrToHexString;
|
import static libKonogonka.Converter.byteArrToHexStringAsLE;
|
||||||
|
|
||||||
public class NCAController implements ITabController {
|
public class NCAController implements ITabController {
|
||||||
|
|
||||||
|
@ -182,37 +182,37 @@ public class NCAController implements ITabController {
|
||||||
private void populateFields(NCAProvider ncaProvider) {
|
private void populateFields(NCAProvider ncaProvider) {
|
||||||
if (ncaProvider == null)
|
if (ncaProvider == null)
|
||||||
return;
|
return;
|
||||||
rsa2048oneTF.setText(byteArrToHexString(ncaProvider.getRsa2048one()));
|
rsa2048oneTF.setText(byteArrToHexStringAsLE(ncaProvider.getRsa2048one()));
|
||||||
rsa2048twoTF.setText(byteArrToHexString(ncaProvider.getRsa2048two()));
|
rsa2048twoTF.setText(byteArrToHexStringAsLE(ncaProvider.getRsa2048two()));
|
||||||
magicnumLbl.setText(ncaProvider.getMagicnum());
|
magicnumLbl.setText(ncaProvider.getMagicnum());
|
||||||
systemOrGcIndLbl.setText(Byte.toString(ncaProvider.getSystemOrGcIndicator()));
|
systemOrGcIndLbl.setText(Byte.toString(ncaProvider.getSystemOrGcIndicator()));
|
||||||
contentTypeLbl.setText(Byte.toString(ncaProvider.getContentType()));
|
contentTypeLbl.setText(Byte.toString(ncaProvider.getContentType()));
|
||||||
cryptoType1Lbl.setText(Byte.toString(ncaProvider.getCryptoType1()));
|
cryptoType1Lbl.setText(Byte.toString(ncaProvider.getCryptoType1()));
|
||||||
keyIndexLbl.setText(Byte.toString(ncaProvider.getKeyIndex()));
|
keyIndexLbl.setText(Byte.toString(ncaProvider.getKeyIndex()));
|
||||||
ncaSizeLbl.setText(Long.toString(ncaProvider.getNcaSize()));
|
ncaSizeLbl.setText(Long.toString(ncaProvider.getNcaSize()));
|
||||||
titleIdLbl.setText(byteArrToHexString(ncaProvider.getTitleId()));
|
titleIdLbl.setText(byteArrToHexStringAsLE(ncaProvider.getTitleId()));
|
||||||
contentIndexLbl.setText(byteArrToHexString(ncaProvider.getContentIndx())); //
|
contentIndexLbl.setText(byteArrToHexStringAsLE(ncaProvider.getContentIndx())); //
|
||||||
sdkVersionLbl.setText(ncaProvider.getSdkVersion()[3]
|
sdkVersionLbl.setText(ncaProvider.getSdkVersion()[3]
|
||||||
+"."+ncaProvider.getSdkVersion()[2]
|
+"."+ncaProvider.getSdkVersion()[2]
|
||||||
+"."+ncaProvider.getSdkVersion()[1]
|
+"."+ncaProvider.getSdkVersion()[1]
|
||||||
+"."+ncaProvider.getSdkVersion()[0]);
|
+"."+ncaProvider.getSdkVersion()[0]);
|
||||||
cryptoType2Lbl.setText(Byte.toString(ncaProvider.getCryptoType2()));
|
cryptoType2Lbl.setText(Byte.toString(ncaProvider.getCryptoType2()));
|
||||||
header1SignatureKeyGenerationLbl.setText(Byte.toString(ncaProvider.getHeader1SignatureKeyGeneration()));
|
header1SignatureKeyGenerationLbl.setText(Byte.toString(ncaProvider.getHeader1SignatureKeyGeneration()));
|
||||||
keyGenerationReservedLbl.setText(byteArrToHexString(ncaProvider.getKeyGenerationReserved()));
|
keyGenerationReservedLbl.setText(byteArrToHexStringAsLE(ncaProvider.getKeyGenerationReserved()));
|
||||||
ticketLbl.setText(byteArrToHexString(ncaProvider.getRightsId()));
|
ticketLbl.setText(byteArrToHexStringAsLE(ncaProvider.getRightsId()));
|
||||||
sha256section1TF.setText(byteArrToHexString(ncaProvider.getSha256hash0()));
|
sha256section1TF.setText(byteArrToHexStringAsLE(ncaProvider.getSha256hash0()));
|
||||||
sha256section2TF.setText(byteArrToHexString(ncaProvider.getSha256hash1()));
|
sha256section2TF.setText(byteArrToHexStringAsLE(ncaProvider.getSha256hash1()));
|
||||||
sha256section3TF.setText(byteArrToHexString(ncaProvider.getSha256hash2()));
|
sha256section3TF.setText(byteArrToHexStringAsLE(ncaProvider.getSha256hash2()));
|
||||||
sha256section4TF.setText(byteArrToHexString(ncaProvider.getSha256hash3()));
|
sha256section4TF.setText(byteArrToHexStringAsLE(ncaProvider.getSha256hash3()));
|
||||||
keyAreaEnKey0TF.setText(byteArrToHexString(ncaProvider.getEncryptedKey0()));
|
keyAreaEnKey0TF.setText(byteArrToHexStringAsLE(ncaProvider.getEncryptedKey0()));
|
||||||
keyAreaEnKey1TF.setText(byteArrToHexString(ncaProvider.getEncryptedKey1()));
|
keyAreaEnKey1TF.setText(byteArrToHexStringAsLE(ncaProvider.getEncryptedKey1()));
|
||||||
keyAreaEnKey2TF.setText(byteArrToHexString(ncaProvider.getEncryptedKey2()));
|
keyAreaEnKey2TF.setText(byteArrToHexStringAsLE(ncaProvider.getEncryptedKey2()));
|
||||||
keyAreaEnKey3TF.setText(byteArrToHexString(ncaProvider.getEncryptedKey3()));
|
keyAreaEnKey3TF.setText(byteArrToHexStringAsLE(ncaProvider.getEncryptedKey3()));
|
||||||
|
|
||||||
keyAreaDecKey0TF.setText(byteArrToHexString(ncaProvider.getDecryptedKey0()));
|
keyAreaDecKey0TF.setText(byteArrToHexStringAsLE(ncaProvider.getDecryptedKey0()));
|
||||||
keyAreaDecKey1TF.setText(byteArrToHexString(ncaProvider.getDecryptedKey1()));
|
keyAreaDecKey1TF.setText(byteArrToHexStringAsLE(ncaProvider.getDecryptedKey1()));
|
||||||
keyAreaDecKey2TF.setText(byteArrToHexString(ncaProvider.getDecryptedKey2()));
|
keyAreaDecKey2TF.setText(byteArrToHexStringAsLE(ncaProvider.getDecryptedKey2()));
|
||||||
keyAreaDecKey3TF.setText(byteArrToHexString(ncaProvider.getDecryptedKey3()));
|
keyAreaDecKey3TF.setText(byteArrToHexStringAsLE(ncaProvider.getDecryptedKey3()));
|
||||||
// Tables
|
// Tables
|
||||||
NCATable1Controller.populateTab(ncaProvider.getTableEntry0());
|
NCATable1Controller.populateTab(ncaProvider.getTableEntry0());
|
||||||
NCATable2Controller.populateTab(ncaProvider.getTableEntry1());
|
NCATable2Controller.populateTab(ncaProvider.getTableEntry1());
|
||||||
|
|
|
@ -27,7 +27,7 @@ import libKonogonka.Tools.NCA.NCASectionTableBlock.MetaDataHashDataInfo;
|
||||||
import libKonogonka.Tools.NCA.NCASectionTableBlock.NcaFsHeader;
|
import libKonogonka.Tools.NCA.NCASectionTableBlock.NcaFsHeader;
|
||||||
import libKonogonka.Tools.NCA.NCASectionTableBlock.SparseInfo;
|
import libKonogonka.Tools.NCA.NCASectionTableBlock.SparseInfo;
|
||||||
|
|
||||||
import static libKonogonka.Converter.byteArrToHexString;
|
import static libKonogonka.Converter.byteArrToHexStringAsLE;
|
||||||
|
|
||||||
public class NCAFsHeaderController {
|
public class NCAFsHeaderController {
|
||||||
@FXML
|
@FXML
|
||||||
|
@ -234,7 +234,7 @@ public class NCAFsHeaderController {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void populateTab(NcaFsHeader ncaFsHeader){
|
public void populateTab(NcaFsHeader ncaFsHeader){
|
||||||
versionLbl.setText(byteArrToHexString(ncaFsHeader.getVersion()));
|
versionLbl.setText(byteArrToHexStringAsLE(ncaFsHeader.getVersion()));
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append(String.format("0x%02x ", ncaFsHeader.getFsType()));
|
sb.append(String.format("0x%02x ", ncaFsHeader.getFsType()));
|
||||||
if (ncaFsHeader.getFsType() == 0)
|
if (ncaFsHeader.getFsType() == 0)
|
||||||
|
@ -277,7 +277,7 @@ public class NCAFsHeaderController {
|
||||||
metaDataHashTypeLbl.setText(String.format("%d", ncaFsHeader.getMetaDataHashType()));
|
metaDataHashTypeLbl.setText(String.format("%d", ncaFsHeader.getMetaDataHashType()));
|
||||||
}
|
}
|
||||||
|
|
||||||
paddingLbl.setText(byteArrToHexString(ncaFsHeader.getPadding()));
|
paddingLbl.setText(byteArrToHexStringAsLE(ncaFsHeader.getPadding()));
|
||||||
if ((ncaFsHeader.getFsType() == 0) && (ncaFsHeader.getHashType() == 0x3)){
|
if ((ncaFsHeader.getFsType() == 0) && (ncaFsHeader.getHashType() == 0x3)){
|
||||||
romFsMagicLbl.setText(ncaFsHeader.getSuperBlockIVFC().getMagic());
|
romFsMagicLbl.setText(ncaFsHeader.getSuperBlockIVFC().getMagic());
|
||||||
romFsMagicNumberLbl.setText(ncaFsHeader.getSuperBlockIVFC().getMagic()
|
romFsMagicNumberLbl.setText(ncaFsHeader.getSuperBlockIVFC().getMagic()
|
||||||
|
@ -287,48 +287,48 @@ public class NCAFsHeaderController {
|
||||||
romFsLvl1OffsetLbl.setText(getCuteDecHexRepresentation(ncaFsHeader.getSuperBlockIVFC().getLvl1Offset()));
|
romFsLvl1OffsetLbl.setText(getCuteDecHexRepresentation(ncaFsHeader.getSuperBlockIVFC().getLvl1Offset()));
|
||||||
romFsLvl1SizeLbl.setText(getCuteDecHexRepresentation(ncaFsHeader.getSuperBlockIVFC().getLvl1Size()));
|
romFsLvl1SizeLbl.setText(getCuteDecHexRepresentation(ncaFsHeader.getSuperBlockIVFC().getLvl1Size()));
|
||||||
romFsLvl1SBlockSizeLbl.setText(Integer.toString(ncaFsHeader.getSuperBlockIVFC().getLvl1SBlockSize()));
|
romFsLvl1SBlockSizeLbl.setText(Integer.toString(ncaFsHeader.getSuperBlockIVFC().getLvl1SBlockSize()));
|
||||||
romFsReserved1Lbl.setText(byteArrToHexString(ncaFsHeader.getSuperBlockIVFC().getReserved1()));
|
romFsReserved1Lbl.setText(byteArrToHexStringAsLE(ncaFsHeader.getSuperBlockIVFC().getReserved1()));
|
||||||
|
|
||||||
romFsLvl2OffsetLbl.setText(getCuteDecHexRepresentation(ncaFsHeader.getSuperBlockIVFC().getLvl2Offset()));
|
romFsLvl2OffsetLbl.setText(getCuteDecHexRepresentation(ncaFsHeader.getSuperBlockIVFC().getLvl2Offset()));
|
||||||
romFsLvl2SizeLbl.setText(getCuteDecHexRepresentation(ncaFsHeader.getSuperBlockIVFC().getLvl2Size()));
|
romFsLvl2SizeLbl.setText(getCuteDecHexRepresentation(ncaFsHeader.getSuperBlockIVFC().getLvl2Size()));
|
||||||
romFsLvl2SBlockSizeLbl.setText(Integer.toString(ncaFsHeader.getSuperBlockIVFC().getLvl2SBlockSize()));
|
romFsLvl2SBlockSizeLbl.setText(Integer.toString(ncaFsHeader.getSuperBlockIVFC().getLvl2SBlockSize()));
|
||||||
romFsReserved2Lbl.setText(byteArrToHexString(ncaFsHeader.getSuperBlockIVFC().getReserved2()));
|
romFsReserved2Lbl.setText(byteArrToHexStringAsLE(ncaFsHeader.getSuperBlockIVFC().getReserved2()));
|
||||||
|
|
||||||
romFsLvl3OffsetLbl.setText(getCuteDecHexRepresentation(ncaFsHeader.getSuperBlockIVFC().getLvl3Offset()));
|
romFsLvl3OffsetLbl.setText(getCuteDecHexRepresentation(ncaFsHeader.getSuperBlockIVFC().getLvl3Offset()));
|
||||||
romFsLvl3SizeLbl.setText(getCuteDecHexRepresentation(ncaFsHeader.getSuperBlockIVFC().getLvl3Size()));
|
romFsLvl3SizeLbl.setText(getCuteDecHexRepresentation(ncaFsHeader.getSuperBlockIVFC().getLvl3Size()));
|
||||||
romFsLvl3SBlockSizeLbl.setText(Integer.toString(ncaFsHeader.getSuperBlockIVFC().getLvl3SBlockSize()));
|
romFsLvl3SBlockSizeLbl.setText(Integer.toString(ncaFsHeader.getSuperBlockIVFC().getLvl3SBlockSize()));
|
||||||
romFsReserved3Lbl.setText(byteArrToHexString(ncaFsHeader.getSuperBlockIVFC().getReserved3()));
|
romFsReserved3Lbl.setText(byteArrToHexStringAsLE(ncaFsHeader.getSuperBlockIVFC().getReserved3()));
|
||||||
|
|
||||||
romFsLvl4OffsetLbl.setText(getCuteDecHexRepresentation(ncaFsHeader.getSuperBlockIVFC().getLvl4Offset()));
|
romFsLvl4OffsetLbl.setText(getCuteDecHexRepresentation(ncaFsHeader.getSuperBlockIVFC().getLvl4Offset()));
|
||||||
romFsLvl4SizeLbl.setText(getCuteDecHexRepresentation(ncaFsHeader.getSuperBlockIVFC().getLvl4Size()));
|
romFsLvl4SizeLbl.setText(getCuteDecHexRepresentation(ncaFsHeader.getSuperBlockIVFC().getLvl4Size()));
|
||||||
romFsLvl4SBlockSizeLbl.setText(Integer.toString(ncaFsHeader.getSuperBlockIVFC().getLvl4SBlockSize()));
|
romFsLvl4SBlockSizeLbl.setText(Integer.toString(ncaFsHeader.getSuperBlockIVFC().getLvl4SBlockSize()));
|
||||||
romFsReserved4Lbl.setText(byteArrToHexString(ncaFsHeader.getSuperBlockIVFC().getReserved4()));
|
romFsReserved4Lbl.setText(byteArrToHexStringAsLE(ncaFsHeader.getSuperBlockIVFC().getReserved4()));
|
||||||
|
|
||||||
romFsLvl5OffsetLbl.setText(getCuteDecHexRepresentation(ncaFsHeader.getSuperBlockIVFC().getLvl5Offset()));
|
romFsLvl5OffsetLbl.setText(getCuteDecHexRepresentation(ncaFsHeader.getSuperBlockIVFC().getLvl5Offset()));
|
||||||
romFsLvl5SizeLbl.setText(getCuteDecHexRepresentation(ncaFsHeader.getSuperBlockIVFC().getLvl5Size()));
|
romFsLvl5SizeLbl.setText(getCuteDecHexRepresentation(ncaFsHeader.getSuperBlockIVFC().getLvl5Size()));
|
||||||
romFsLvl5SBlockSizeLbl.setText(Integer.toString(ncaFsHeader.getSuperBlockIVFC().getLvl5SBlockSize()));
|
romFsLvl5SBlockSizeLbl.setText(Integer.toString(ncaFsHeader.getSuperBlockIVFC().getLvl5SBlockSize()));
|
||||||
romFsReserved5Lbl.setText(byteArrToHexString(ncaFsHeader.getSuperBlockIVFC().getReserved5()));
|
romFsReserved5Lbl.setText(byteArrToHexStringAsLE(ncaFsHeader.getSuperBlockIVFC().getReserved5()));
|
||||||
|
|
||||||
romFsLvl6OffsetLbl.setText(getCuteDecHexRepresentation(ncaFsHeader.getSuperBlockIVFC().getLvl6Offset()));
|
romFsLvl6OffsetLbl.setText(getCuteDecHexRepresentation(ncaFsHeader.getSuperBlockIVFC().getLvl6Offset()));
|
||||||
romFsLvl6SizeLbl.setText(getCuteDecHexRepresentation(ncaFsHeader.getSuperBlockIVFC().getLvl6Size()));
|
romFsLvl6SizeLbl.setText(getCuteDecHexRepresentation(ncaFsHeader.getSuperBlockIVFC().getLvl6Size()));
|
||||||
romFsLvl6SBlockSizeLbl.setText(Integer.toString(ncaFsHeader.getSuperBlockIVFC().getLvl6SBlockSize()));
|
romFsLvl6SBlockSizeLbl.setText(Integer.toString(ncaFsHeader.getSuperBlockIVFC().getLvl6SBlockSize()));
|
||||||
romFsReserved6Lbl.setText(byteArrToHexString(ncaFsHeader.getSuperBlockIVFC().getReserved6()));
|
romFsReserved6Lbl.setText(byteArrToHexStringAsLE(ncaFsHeader.getSuperBlockIVFC().getReserved6()));
|
||||||
|
|
||||||
signatureSaltTf.setText(byteArrToHexString(ncaFsHeader.getSuperBlockIVFC().getSignatureSalt()));
|
signatureSaltTf.setText(byteArrToHexStringAsLE(ncaFsHeader.getSuperBlockIVFC().getSignatureSalt()));
|
||||||
romFsMasterHashTf.setText(byteArrToHexString(ncaFsHeader.getSuperBlockIVFC().getMasterHash()));
|
romFsMasterHashTf.setText(byteArrToHexStringAsLE(ncaFsHeader.getSuperBlockIVFC().getMasterHash()));
|
||||||
romFsReservedTailLbl.setText(byteArrToHexString(ncaFsHeader.getSuperBlockIVFC().getReservedTail()));
|
romFsReservedTailLbl.setText(byteArrToHexStringAsLE(ncaFsHeader.getSuperBlockIVFC().getReservedTail()));
|
||||||
|
|
||||||
pfs0TitlePanel.setDisable(true);
|
pfs0TitlePanel.setDisable(true);
|
||||||
}
|
}
|
||||||
else if ((ncaFsHeader.getFsType() == 0x1) && (ncaFsHeader.getHashType() == 0x2)){
|
else if ((ncaFsHeader.getFsType() == 0x1) && (ncaFsHeader.getHashType() == 0x2)){
|
||||||
pfs0SHA256hashTf.setText(byteArrToHexString(ncaFsHeader.getSuperBlockPFS0().getSHA256hash()));
|
pfs0SHA256hashTf.setText(byteArrToHexStringAsLE(ncaFsHeader.getSuperBlockPFS0().getSHA256hash()));
|
||||||
pfs0blockSizeLbl.setText(Integer.toString(ncaFsHeader.getSuperBlockPFS0().getBlockSize()));
|
pfs0blockSizeLbl.setText(Integer.toString(ncaFsHeader.getSuperBlockPFS0().getBlockSize()));
|
||||||
pfs0LayerCountLbl.setText(Integer.toString(ncaFsHeader.getSuperBlockPFS0().getLayerCount()));
|
pfs0LayerCountLbl.setText(Integer.toString(ncaFsHeader.getSuperBlockPFS0().getLayerCount()));
|
||||||
pfs0hashTableOffsetLbl.setText(Long.toString(ncaFsHeader.getSuperBlockPFS0().getHashTableOffset()));
|
pfs0hashTableOffsetLbl.setText(Long.toString(ncaFsHeader.getSuperBlockPFS0().getHashTableOffset()));
|
||||||
pfs0hashTableSizeLbl.setText(Long.toString(ncaFsHeader.getSuperBlockPFS0().getHashTableSize()));
|
pfs0hashTableSizeLbl.setText(Long.toString(ncaFsHeader.getSuperBlockPFS0().getHashTableSize()));
|
||||||
pfs0relativeToSectionStartOffsetLbl.setText(Long.toString(ncaFsHeader.getSuperBlockPFS0().getPfs0offset()));
|
pfs0relativeToSectionStartOffsetLbl.setText(Long.toString(ncaFsHeader.getSuperBlockPFS0().getPfs0offset()));
|
||||||
pfs0sizePfs0Lbl.setText(Long.toString(ncaFsHeader.getSuperBlockPFS0().getPfs0size()));
|
pfs0sizePfs0Lbl.setText(Long.toString(ncaFsHeader.getSuperBlockPFS0().getPfs0size()));
|
||||||
pfs0zeroesTf.setText(byteArrToHexString(ncaFsHeader.getSuperBlockPFS0().getZeroes()));
|
pfs0zeroesTf.setText(byteArrToHexStringAsLE(ncaFsHeader.getSuperBlockPFS0().getZeroes()));
|
||||||
romFsTitlePanel.setDisable(true);
|
romFsTitlePanel.setDisable(true);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -341,15 +341,15 @@ public class NCAFsHeaderController {
|
||||||
indirectInfoMagicLbl.setText(ncaFsHeader.getPatchInfoMagicSection1());
|
indirectInfoMagicLbl.setText(ncaFsHeader.getPatchInfoMagicSection1());
|
||||||
indirectInfoVersionLbl.setText(Long.toString(ncaFsHeader.getPatchInfoSizeSection1()));
|
indirectInfoVersionLbl.setText(Long.toString(ncaFsHeader.getPatchInfoSizeSection1()));
|
||||||
indirectInfoEntryCountLbl.setText(Integer.toString(ncaFsHeader.getEntryCountSection1()));
|
indirectInfoEntryCountLbl.setText(Integer.toString(ncaFsHeader.getEntryCountSection1()));
|
||||||
indirectInfoUnknownLbl.setText(byteArrToHexString(ncaFsHeader.getPatchInfoUnknownSection1()));
|
indirectInfoUnknownLbl.setText(byteArrToHexStringAsLE(ncaFsHeader.getPatchInfoUnknownSection1()));
|
||||||
aesCtrExOffsetLbl.setText(Long.toString(ncaFsHeader.getPatchInfoOffsetSection2()));
|
aesCtrExOffsetLbl.setText(Long.toString(ncaFsHeader.getPatchInfoOffsetSection2()));
|
||||||
aesCtrExSizeLbl.setText(Long.toString(ncaFsHeader.getPatchInfoSizeSection2()));
|
aesCtrExSizeLbl.setText(Long.toString(ncaFsHeader.getPatchInfoSizeSection2()));
|
||||||
aesCtrExMagicLbl.setText(ncaFsHeader.getPatchInfoMagicSection2());
|
aesCtrExMagicLbl.setText(ncaFsHeader.getPatchInfoMagicSection2());
|
||||||
aesCtrExVersionLbl.setText(Integer.toString(ncaFsHeader.getPatchInfoVersionSection2()));
|
aesCtrExVersionLbl.setText(Integer.toString(ncaFsHeader.getPatchInfoVersionSection2()));
|
||||||
aesCtrExEntryCountLbl.setText(Integer.toString(ncaFsHeader.getEntryCountSection2()));
|
aesCtrExEntryCountLbl.setText(Integer.toString(ncaFsHeader.getEntryCountSection2()));
|
||||||
aesCtrExUnknownLbl.setText(byteArrToHexString(ncaFsHeader.getPatchInfoUnknownSection2()));
|
aesCtrExUnknownLbl.setText(byteArrToHexStringAsLE(ncaFsHeader.getPatchInfoUnknownSection2()));
|
||||||
sectionCTRLbl.setText(byteArrToHexString(ncaFsHeader.getSectionCTR()));
|
sectionCTRLbl.setText(byteArrToHexStringAsLE(ncaFsHeader.getSectionCTR()));
|
||||||
generationLbl.setText(byteArrToHexString(ncaFsHeader.getGeneration()));
|
generationLbl.setText(byteArrToHexStringAsLE(ncaFsHeader.getGeneration()));
|
||||||
|
|
||||||
SparseInfo sparseInfo = ncaFsHeader.getSparseInfo();
|
SparseInfo sparseInfo = ncaFsHeader.getSparseInfo();
|
||||||
sparseInfoTableOffsetLbl.setText(Long.toString(sparseInfo.getOffset()));
|
sparseInfoTableOffsetLbl.setText(Long.toString(sparseInfo.getOffset()));
|
||||||
|
@ -357,10 +357,10 @@ public class NCAFsHeaderController {
|
||||||
sparseInfoMagicLbl.setText(sparseInfo.getBktrMagic());
|
sparseInfoMagicLbl.setText(sparseInfo.getBktrMagic());
|
||||||
sparseInfoVersionLbl.setText(Long.toString(sparseInfo.getBktrVersion()));
|
sparseInfoVersionLbl.setText(Long.toString(sparseInfo.getBktrVersion()));
|
||||||
sparseInfoEntryCountLbl.setText(Integer.toString(sparseInfo.getBktrEntryCount()));
|
sparseInfoEntryCountLbl.setText(Integer.toString(sparseInfo.getBktrEntryCount()));
|
||||||
sparseInfoUnknownLbl.setText(byteArrToHexString(sparseInfo.getBktrUnknown()));
|
sparseInfoUnknownLbl.setText(byteArrToHexStringAsLE(sparseInfo.getBktrUnknown()));
|
||||||
sparseInfoPhysicalOffsetLbl.setText(Long.toString(sparseInfo.getPhysicalOffset()));
|
sparseInfoPhysicalOffsetLbl.setText(Long.toString(sparseInfo.getPhysicalOffset()));
|
||||||
sparseInfoGenerationLbl.setText(byteArrToHexString(sparseInfo.getGeneration()));
|
sparseInfoGenerationLbl.setText(byteArrToHexStringAsLE(sparseInfo.getGeneration()));
|
||||||
sparseInfoReseredLbl.setText(byteArrToHexString(sparseInfo.getUnknown()));
|
sparseInfoReseredLbl.setText(byteArrToHexStringAsLE(sparseInfo.getUnknown()));
|
||||||
|
|
||||||
CompressionInfo compressionInfo = ncaFsHeader.getCompressionInfo();
|
CompressionInfo compressionInfo = ncaFsHeader.getCompressionInfo();
|
||||||
compressionInfoTableOffsetLbl.setText(Long.toString(compressionInfo.getOffset()));
|
compressionInfoTableOffsetLbl.setText(Long.toString(compressionInfo.getOffset()));
|
||||||
|
@ -368,15 +368,15 @@ public class NCAFsHeaderController {
|
||||||
compressionMagicLbl.setText(compressionInfo.getBktrMagic());
|
compressionMagicLbl.setText(compressionInfo.getBktrMagic());
|
||||||
compressionInfoVersionLbl.setText(Long.toString(compressionInfo.getBktrVersion()));
|
compressionInfoVersionLbl.setText(Long.toString(compressionInfo.getBktrVersion()));
|
||||||
compressionInfoEntryCountLbl.setText(Integer.toString(compressionInfo.getBktrEntryCount()));
|
compressionInfoEntryCountLbl.setText(Integer.toString(compressionInfo.getBktrEntryCount()));
|
||||||
compressionInfoUnknownLbl.setText(byteArrToHexString(compressionInfo.getBktrUnknown()));
|
compressionInfoUnknownLbl.setText(byteArrToHexStringAsLE(compressionInfo.getBktrUnknown()));
|
||||||
compressionInfoReservedLbl.setText(byteArrToHexString(compressionInfo.getUnknown()));
|
compressionInfoReservedLbl.setText(byteArrToHexStringAsLE(compressionInfo.getUnknown()));
|
||||||
|
|
||||||
MetaDataHashDataInfo metaDataHashDataInfo = ncaFsHeader.getMetaDataHashDataInfo();
|
MetaDataHashDataInfo metaDataHashDataInfo = ncaFsHeader.getMetaDataHashDataInfo();
|
||||||
metaDataHashDataTableOffsetLbl.setText(Long.toString(metaDataHashDataInfo.getOffset()));
|
metaDataHashDataTableOffsetLbl.setText(Long.toString(metaDataHashDataInfo.getOffset()));
|
||||||
metaDataHashDataTableSizeLbl.setText(Long.toString(metaDataHashDataInfo.getSize()));
|
metaDataHashDataTableSizeLbl.setText(Long.toString(metaDataHashDataInfo.getSize()));
|
||||||
metaDataHashDataTableHashLbl.setText(byteArrToHexString(metaDataHashDataInfo.getTableHash()));
|
metaDataHashDataTableHashLbl.setText(byteArrToHexStringAsLE(metaDataHashDataInfo.getTableHash()));
|
||||||
|
|
||||||
unknwnEndPaddingTF.setText(byteArrToHexString(ncaFsHeader.getUnknownEndPadding()));
|
unknwnEndPaddingTF.setText(byteArrToHexStringAsLE(ncaFsHeader.getUnknownEndPadding()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getCuteDecHexRepresentation(long value){
|
private String getCuteDecHexRepresentation(long value){
|
||||||
|
|
|
@ -99,7 +99,7 @@ public class NCASectionContentController implements Initializable {
|
||||||
for (int i = 0; i < sha256hashList.size(); i++){
|
for (int i = 0; i < sha256hashList.size(); i++){
|
||||||
Label numberLblTmp = new Label(String.format("%10d", i));
|
Label numberLblTmp = new Label(String.format("%10d", i));
|
||||||
numberLblTmp.setPadding(new Insets(5.0, 5.0, 5.0, 5.0));
|
numberLblTmp.setPadding(new Insets(5.0, 5.0, 5.0, 5.0));
|
||||||
Label sha256LblTmp = new Label(Converter.byteArrToHexString(sha256hashList.get(i)));
|
Label sha256LblTmp = new Label(Converter.byteArrToHexStringAsLE(sha256hashList.get(i)));
|
||||||
sha256LblTmp.setPadding(new Insets(5.0, 5.0, 5.0, 5.0));
|
sha256LblTmp.setPadding(new Insets(5.0, 5.0, 5.0, 5.0));
|
||||||
|
|
||||||
sha256pane.getChildren().add(new HBox(numberLblTmp, sha256LblTmp));
|
sha256pane.getChildren().add(new HBox(numberLblTmp, sha256LblTmp));
|
||||||
|
|
|
@ -22,7 +22,7 @@ import javafx.fxml.FXML;
|
||||||
import javafx.scene.control.Label;
|
import javafx.scene.control.Label;
|
||||||
import libKonogonka.Tools.NCA.NCAHeaderTableEntry;
|
import libKonogonka.Tools.NCA.NCAHeaderTableEntry;
|
||||||
|
|
||||||
import static libKonogonka.Converter.byteArrToHexString;
|
import static libKonogonka.Converter.byteArrToHexStringAsLE;
|
||||||
|
|
||||||
public class NCATableController {
|
public class NCATableController {
|
||||||
@FXML
|
@FXML
|
||||||
|
@ -42,7 +42,7 @@ public class NCATableController {
|
||||||
public void populateTab(NCAHeaderTableEntry ncaHeaderTableEntry){
|
public void populateTab(NCAHeaderTableEntry ncaHeaderTableEntry){
|
||||||
mediaStartOffsetLbl.setText(Long.toString(ncaHeaderTableEntry.getMediaStartOffset()));
|
mediaStartOffsetLbl.setText(Long.toString(ncaHeaderTableEntry.getMediaStartOffset()));
|
||||||
mediaEndOffsetLbl.setText(Long.toString(ncaHeaderTableEntry.getMediaEndOffset()));
|
mediaEndOffsetLbl.setText(Long.toString(ncaHeaderTableEntry.getMediaEndOffset()));
|
||||||
unknwn1Lbl.setText(byteArrToHexString(ncaHeaderTableEntry.getUnknwn1()));
|
unknwn1Lbl.setText(byteArrToHexStringAsLE(ncaHeaderTableEntry.getUnknwn1()));
|
||||||
unknwn2Lbl.setText(byteArrToHexString(ncaHeaderTableEntry.getUnknwn2()));
|
unknwn2Lbl.setText(byteArrToHexStringAsLE(ncaHeaderTableEntry.getUnknwn2()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ import libKonogonka.Tools.NPDM.ACID.FSAccessControlProvider;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
import static libKonogonka.Converter.byteArrToHexString;
|
import static libKonogonka.Converter.byteArrToHexStringAsLE;
|
||||||
import static libKonogonka.Converter.longToOctString;
|
import static libKonogonka.Converter.longToOctString;
|
||||||
|
|
||||||
public class FSAccessControlController implements Initializable {
|
public class FSAccessControlController implements Initializable {
|
||||||
|
@ -186,12 +186,12 @@ public class FSAccessControlController implements Initializable {
|
||||||
|
|
||||||
public void populateFields(FSAccessControlProvider provider){
|
public void populateFields(FSAccessControlProvider provider){
|
||||||
ACID_FSAcccessControlVersionLbl.setText(String.format("0x%02x", provider.getVersion()));
|
ACID_FSAcccessControlVersionLbl.setText(String.format("0x%02x", provider.getVersion()));
|
||||||
ACID_FSAcccessControlPaddingLbl.setText(byteArrToHexString(provider.getPadding()));
|
ACID_FSAcccessControlPaddingLbl.setText(byteArrToHexStringAsLE(provider.getPadding()));
|
||||||
StringBuilder sb = new StringBuilder(longToOctString(provider.getPermissionsBitmask()));
|
StringBuilder sb = new StringBuilder(longToOctString(provider.getPermissionsBitmask()));
|
||||||
sb.reverse();
|
sb.reverse();
|
||||||
String mask = sb.toString();
|
String mask = sb.toString();
|
||||||
ACID_FSAcccessControlBitbaskLbl.setText(mask);
|
ACID_FSAcccessControlBitbaskLbl.setText(mask);
|
||||||
ACID_FSAcccessControlReservedTf.setText(byteArrToHexString(provider.getReserved()));
|
ACID_FSAcccessControlReservedTf.setText(byteArrToHexStringAsLE(provider.getReserved()));
|
||||||
|
|
||||||
for (int i = 0; i < 64; i++)
|
for (int i = 0; i < 64; i++)
|
||||||
masksArr[i].setText(mask.substring(i, i+1));
|
masksArr[i].setText(mask.substring(i, i+1));
|
||||||
|
|
|
@ -27,7 +27,7 @@ import libKonogonka.Tools.NPDM.ACI0.FSAccessHeaderProvider;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
import static libKonogonka.Converter.byteArrToHexString;
|
import static libKonogonka.Converter.byteArrToHexStringAsLE;
|
||||||
import static libKonogonka.Converter.longToOctString;
|
import static libKonogonka.Converter.longToOctString;
|
||||||
|
|
||||||
public class FSAccessHeaderController implements Initializable {
|
public class FSAccessHeaderController implements Initializable {
|
||||||
|
@ -192,7 +192,7 @@ public class FSAccessHeaderController implements Initializable {
|
||||||
|
|
||||||
public void populateFields(FSAccessHeaderProvider provider){
|
public void populateFields(FSAccessHeaderProvider provider){
|
||||||
versionLbl.setText(Integer.toString(provider.getVersion()));
|
versionLbl.setText(Integer.toString(provider.getVersion()));
|
||||||
paddingLbl.setText(byteArrToHexString(provider.getPadding()));
|
paddingLbl.setText(byteArrToHexStringAsLE(provider.getPadding()));
|
||||||
StringBuilder sb = new StringBuilder(longToOctString(provider.getPermissionsBitmask()));
|
StringBuilder sb = new StringBuilder(longToOctString(provider.getPermissionsBitmask()));
|
||||||
sb.reverse();
|
sb.reverse();
|
||||||
String mask = sb.toString();
|
String mask = sb.toString();
|
||||||
|
@ -201,7 +201,7 @@ public class FSAccessHeaderController implements Initializable {
|
||||||
sizeContOwnIdLbl.setText(Integer.toString(provider.getContentOwnIdSectionSize()));
|
sizeContOwnIdLbl.setText(Integer.toString(provider.getContentOwnIdSectionSize()));
|
||||||
dataSizePlusContOwnSizeLbl.setText(Integer.toString(provider.getDataNownerSizes()));
|
dataSizePlusContOwnSizeLbl.setText(Integer.toString(provider.getDataNownerSizes()));
|
||||||
sizeOfSaveDataOwnSecLbl.setText(Integer.toString(provider.getSaveDataOwnSectionSize()));
|
sizeOfSaveDataOwnSecLbl.setText(Integer.toString(provider.getSaveDataOwnSectionSize()));
|
||||||
unknownTf.setText(byteArrToHexString(provider.getUnknownData()));
|
unknownTf.setText(byteArrToHexStringAsLE(provider.getUnknownData()));
|
||||||
|
|
||||||
for (int i = 0; i < 64; i++)
|
for (int i = 0; i < 64; i++)
|
||||||
masksArr[i].setText(mask.substring(i, i+1));
|
masksArr[i].setText(mask.substring(i, i+1));
|
||||||
|
|
|
@ -33,7 +33,7 @@ import java.io.File;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
import static libKonogonka.Converter.byteArrToHexString;
|
import static libKonogonka.Converter.byteArrToHexStringAsLE;
|
||||||
|
|
||||||
public class NPDMController implements ITabController {
|
public class NPDMController implements ITabController {
|
||||||
|
|
||||||
|
@ -209,18 +209,18 @@ public class NPDMController implements ITabController {
|
||||||
npdmFileSize.setText("skipping calculation for in-file ticket");
|
npdmFileSize.setText("skipping calculation for in-file ticket");
|
||||||
|
|
||||||
magicNumLbl.setText(npdmProvider.getMagicNum());
|
magicNumLbl.setText(npdmProvider.getMagicNum());
|
||||||
reserved1Lbl.setText(byteArrToHexString(npdmProvider.getReserved1()));
|
reserved1Lbl.setText(byteArrToHexStringAsLE(npdmProvider.getReserved1()));
|
||||||
MMUFlagsLbl.setText(npdmProvider.getMMUFlags()+" (0b"+String.format("%8s", Integer.toBinaryString(npdmProvider.getMMUFlags() & 0xFF)).replace(' ', '0')+")");
|
MMUFlagsLbl.setText(npdmProvider.getMMUFlags()+" (0b"+String.format("%8s", Integer.toBinaryString(npdmProvider.getMMUFlags() & 0xFF)).replace(' ', '0')+")");
|
||||||
reserved2Lbl.setText(String.format("0x%02x", npdmProvider.getReserved2()));
|
reserved2Lbl.setText(String.format("0x%02x", npdmProvider.getReserved2()));
|
||||||
mainThreadPrioLbl.setText(Byte.toString(npdmProvider.getMainThreadPrio()));
|
mainThreadPrioLbl.setText(Byte.toString(npdmProvider.getMainThreadPrio()));
|
||||||
mainThreadCoreNumLbl.setText(Byte.toString(npdmProvider.getMainThreadCoreNum()));
|
mainThreadCoreNumLbl.setText(Byte.toString(npdmProvider.getMainThreadCoreNum()));
|
||||||
reserved3Lbl.setText(byteArrToHexString(npdmProvider.getReserved3()));
|
reserved3Lbl.setText(byteArrToHexStringAsLE(npdmProvider.getReserved3()));
|
||||||
personalMmHeapSizeLbl.setText(Integer.toString(npdmProvider.getPersonalMmHeapSize()));
|
personalMmHeapSizeLbl.setText(Integer.toString(npdmProvider.getPersonalMmHeapSize()));
|
||||||
versionLbl.setText(Integer.toString(npdmProvider.getVersion()));
|
versionLbl.setText(Integer.toString(npdmProvider.getVersion()));
|
||||||
mainThreadStackSizeLbl.setText(Long.toString(npdmProvider.getMainThreadStackSize()));
|
mainThreadStackSizeLbl.setText(Long.toString(npdmProvider.getMainThreadStackSize()));
|
||||||
titleNameTf.setText(npdmProvider.getTitleName());
|
titleNameTf.setText(npdmProvider.getTitleName());
|
||||||
productCodeTf.setText(byteArrToHexString(npdmProvider.getProductCode()));
|
productCodeTf.setText(byteArrToHexStringAsLE(npdmProvider.getProductCode()));
|
||||||
reserved4Tf.setText(byteArrToHexString(npdmProvider.getReserved4()));
|
reserved4Tf.setText(byteArrToHexStringAsLE(npdmProvider.getReserved4()));
|
||||||
aci0offsetLbl.setText(Integer.toString(npdmProvider.getAci0offset()));
|
aci0offsetLbl.setText(Integer.toString(npdmProvider.getAci0offset()));
|
||||||
aci0sizeLbl.setText(Integer.toString(npdmProvider.getAci0size()));
|
aci0sizeLbl.setText(Integer.toString(npdmProvider.getAci0size()));
|
||||||
acidOffsetLbl.setText(Integer.toString(npdmProvider.getAcidOffset()));
|
acidOffsetLbl.setText(Integer.toString(npdmProvider.getAcidOffset()));
|
||||||
|
@ -228,27 +228,27 @@ public class NPDMController implements ITabController {
|
||||||
// ACI0
|
// ACI0
|
||||||
ACI0Provider aci0 = npdmProvider.getAci0();
|
ACI0Provider aci0 = npdmProvider.getAci0();
|
||||||
aci0MagicNumLbl.setText(aci0.getMagicNum());
|
aci0MagicNumLbl.setText(aci0.getMagicNum());
|
||||||
aci0Reserved1Lbl.setText(byteArrToHexString(aci0.getReserved1()));
|
aci0Reserved1Lbl.setText(byteArrToHexStringAsLE(aci0.getReserved1()));
|
||||||
aci0TitleIDLbl.setText(byteArrToHexString(aci0.getTitleID()));
|
aci0TitleIDLbl.setText(byteArrToHexStringAsLE(aci0.getTitleID()));
|
||||||
aci0Reserved2Lbl.setText(byteArrToHexString(aci0.getReserved2()));
|
aci0Reserved2Lbl.setText(byteArrToHexStringAsLE(aci0.getReserved2()));
|
||||||
aci0FsAccessHeaderOffsetLbl.setText(Integer.toString(aci0.getFsAccessHeaderOffset()));
|
aci0FsAccessHeaderOffsetLbl.setText(Integer.toString(aci0.getFsAccessHeaderOffset()));
|
||||||
aci0FsAccessHeaderSizeLbl.setText(Integer.toString(aci0.getFsAccessHeaderSize()));
|
aci0FsAccessHeaderSizeLbl.setText(Integer.toString(aci0.getFsAccessHeaderSize()));
|
||||||
aci0ServiceAccessControlOffsetLbl.setText(Integer.toString(aci0.getServiceAccessControlOffset()));
|
aci0ServiceAccessControlOffsetLbl.setText(Integer.toString(aci0.getServiceAccessControlOffset()));
|
||||||
aci0ServiceAccessControlSizeLbl.setText(Integer.toString(aci0.getServiceAccessControlSize()));
|
aci0ServiceAccessControlSizeLbl.setText(Integer.toString(aci0.getServiceAccessControlSize()));
|
||||||
aci0KernelAccessControlOffsetLbl.setText(Integer.toString(aci0.getKernelAccessControlOffset()));
|
aci0KernelAccessControlOffsetLbl.setText(Integer.toString(aci0.getKernelAccessControlOffset()));
|
||||||
aci0KernelAccessControlSizeLbl.setText(Integer.toString(aci0.getKernelAccessControlSize()));
|
aci0KernelAccessControlSizeLbl.setText(Integer.toString(aci0.getKernelAccessControlSize()));
|
||||||
aci0Reserved3Lbl.setText(byteArrToHexString(aci0.getReserved3()));
|
aci0Reserved3Lbl.setText(byteArrToHexStringAsLE(aci0.getReserved3()));
|
||||||
|
|
||||||
ACI0FSAccessHeaderTableController.populateFields(aci0.getFsAccessHeaderProvider());
|
ACI0FSAccessHeaderTableController.populateFields(aci0.getFsAccessHeaderProvider());
|
||||||
ACI0ServiceAccessControlTableController.populateFields(aci0.getServiceAccessControlProvider().getCollection());
|
ACI0ServiceAccessControlTableController.populateFields(aci0.getServiceAccessControlProvider().getCollection());
|
||||||
ACI0KernelAccessControlTableController.populateFields(aci0.getKernelAccessControlProvider());
|
ACI0KernelAccessControlTableController.populateFields(aci0.getKernelAccessControlProvider());
|
||||||
// ACID
|
// ACID
|
||||||
ACIDProvider acid = npdmProvider.getAcid();
|
ACIDProvider acid = npdmProvider.getAcid();
|
||||||
acidRsa2048signatureTf.setText(byteArrToHexString(acid.getRsa2048signature()));
|
acidRsa2048signatureTf.setText(byteArrToHexStringAsLE(acid.getRsa2048signature()));
|
||||||
acidRsa2048publicKeyTf.setText(byteArrToHexString(acid.getRsa2048publicKey()));
|
acidRsa2048publicKeyTf.setText(byteArrToHexStringAsLE(acid.getRsa2048publicKey()));
|
||||||
acidMagicNumLbl.setText(acid.getMagicNum());
|
acidMagicNumLbl.setText(acid.getMagicNum());
|
||||||
acidDataSizeLbl.setText(Integer.toString(acid.getDataSize()));
|
acidDataSizeLbl.setText(Integer.toString(acid.getDataSize()));
|
||||||
acidReserved1Lbl.setText(byteArrToHexString(acid.getReserved1()));
|
acidReserved1Lbl.setText(byteArrToHexStringAsLE(acid.getReserved1()));
|
||||||
acidFlag1Lbl.setText(String.format("0x%02x", acid.getFlag1()));
|
acidFlag1Lbl.setText(String.format("0x%02x", acid.getFlag1()));
|
||||||
acidFlag2Lbl.setText(String.format("0x%02x", acid.getFlag2()));
|
acidFlag2Lbl.setText(String.format("0x%02x", acid.getFlag2()));
|
||||||
acidFlag3Lbl.setText(String.format("0x%02x", acid.getFlag3()));
|
acidFlag3Lbl.setText(String.format("0x%02x", acid.getFlag3()));
|
||||||
|
@ -261,7 +261,7 @@ public class NPDMController implements ITabController {
|
||||||
acidServiceAccessControlSizeLbl.setText(Integer.toString(acid.getServiceAccessControlSize()));
|
acidServiceAccessControlSizeLbl.setText(Integer.toString(acid.getServiceAccessControlSize()));
|
||||||
acidKernelAccessControlOffsetLbl.setText(Integer.toString(acid.getKernelAccessControlOffset()));
|
acidKernelAccessControlOffsetLbl.setText(Integer.toString(acid.getKernelAccessControlOffset()));
|
||||||
acidKernelAccessControlSizeLbl.setText(Integer.toString(acid.getKernelAccessControlSize()));
|
acidKernelAccessControlSizeLbl.setText(Integer.toString(acid.getKernelAccessControlSize()));
|
||||||
acidReserved2Lbl.setText(byteArrToHexString(acid.getReserved2()));
|
acidReserved2Lbl.setText(byteArrToHexStringAsLE(acid.getReserved2()));
|
||||||
|
|
||||||
ACIDFSAccessControlTableController.populateFields(acid.getFsAccessControlProvider());
|
ACIDFSAccessControlTableController.populateFields(acid.getFsAccessControlProvider());
|
||||||
ACIDServiceAccessControlTableController.populateFields(acid.getServiceAccessControlProvider().getCollection());
|
ACIDServiceAccessControlTableController.populateFields(acid.getServiceAccessControlProvider().getCollection());
|
||||||
|
|
|
@ -36,7 +36,7 @@ import java.net.URL;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
import static libKonogonka.Converter.byteArrToHexString;
|
import static libKonogonka.Converter.byteArrToHexStringAsLE;
|
||||||
|
|
||||||
public class NSPController implements ITabController {
|
public class NSPController implements ITabController {
|
||||||
|
|
||||||
|
@ -148,7 +148,7 @@ public class NSPController implements ITabController {
|
||||||
extractBtn.setDisable(false);
|
extractBtn.setDisable(false);
|
||||||
magicLbl.setText(pfs0.getHeader().getMagic());
|
magicLbl.setText(pfs0.getHeader().getMagic());
|
||||||
stringTableSizeLbl.setText(Integer.toString(pfs0.getHeader().getStringTableSize()));
|
stringTableSizeLbl.setText(Integer.toString(pfs0.getHeader().getStringTableSize()));
|
||||||
paddingLbl.setText(byteArrToHexString(pfs0.getHeader().getPadding()));
|
paddingLbl.setText(byteArrToHexStringAsLE(pfs0.getHeader().getPadding()));
|
||||||
|
|
||||||
fileEntryTableSizeLbl.setText(String.format("0x%02x", 0x18* pfs0.getHeader().getFilesCount()));
|
fileEntryTableSizeLbl.setText(String.format("0x%02x", 0x18* pfs0.getHeader().getFilesCount()));
|
||||||
stringsTableSizeLbl.setText(String.format("0x%02x", pfs0.getHeader().getStringTableSize()));
|
stringsTableSizeLbl.setText(String.format("0x%02x", pfs0.getHeader().getStringTableSize()));
|
||||||
|
|
|
@ -33,7 +33,7 @@ import java.io.File;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
import static libKonogonka.Converter.byteArrToHexString;
|
import static libKonogonka.Converter.byteArrToHexStringAsLE;
|
||||||
|
|
||||||
public class TIKController implements ITabController {
|
public class TIKController implements ITabController {
|
||||||
@FXML
|
@FXML
|
||||||
|
@ -109,7 +109,7 @@ public class TIKController implements ITabController {
|
||||||
else
|
else
|
||||||
tikSizeLbl.setText("skipping calculation for in-file ticket");
|
tikSizeLbl.setText("skipping calculation for in-file ticket");
|
||||||
|
|
||||||
sigTypeLbl.setText(byteArrToHexString(tikProvider.getSigType()));
|
sigTypeLbl.setText(byteArrToHexStringAsLE(tikProvider.getSigType()));
|
||||||
switch (sigTypeLbl.getText()){
|
switch (sigTypeLbl.getText()){
|
||||||
case "00000100":
|
case "00000100":
|
||||||
sigTypeStrLbl.setText("RSA_4096 SHA1");
|
sigTypeStrLbl.setText("RSA_4096 SHA1");
|
||||||
|
@ -154,21 +154,21 @@ public class TIKController implements ITabController {
|
||||||
pSizeLbl.setText("???");
|
pSizeLbl.setText("???");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
signatureTF.setText(byteArrToHexString(tikProvider.getSignature()));
|
signatureTF.setText(byteArrToHexStringAsLE(tikProvider.getSignature()));
|
||||||
|
|
||||||
issuerTf.setText(tikProvider.getIssuer());
|
issuerTf.setText(tikProvider.getIssuer());
|
||||||
titleKeyBlockStartTf.setText(byteArrToHexString(tikProvider.getTitleKeyBlockStartingBytes()));
|
titleKeyBlockStartTf.setText(byteArrToHexStringAsLE(tikProvider.getTitleKeyBlockStartingBytes()));
|
||||||
titleKeyBlockEndTf.setText(byteArrToHexString(tikProvider.getTitleKeyBlockEndingBytes()));
|
titleKeyBlockEndTf.setText(byteArrToHexStringAsLE(tikProvider.getTitleKeyBlockEndingBytes()));
|
||||||
unknown1Lbl.setText(String.format("0x%02x", tikProvider.getUnknown1()));
|
unknown1Lbl.setText(String.format("0x%02x", tikProvider.getUnknown1()));
|
||||||
titleKeyTypeLbl.setText(String.format("0x%02x", tikProvider.getTitleKeyType()));
|
titleKeyTypeLbl.setText(String.format("0x%02x", tikProvider.getTitleKeyType()));
|
||||||
unknown2Lbl.setText(byteArrToHexString(tikProvider.getUnknown2()));
|
unknown2Lbl.setText(byteArrToHexStringAsLE(tikProvider.getUnknown2()));
|
||||||
masterKeyRevisionLbl.setText(String.format("0x%02x", tikProvider.getMasterKeyRevision()));
|
masterKeyRevisionLbl.setText(String.format("0x%02x", tikProvider.getMasterKeyRevision()));
|
||||||
unknown3Lbl.setText(byteArrToHexString(tikProvider.getUnknown3()));
|
unknown3Lbl.setText(byteArrToHexStringAsLE(tikProvider.getUnknown3()));
|
||||||
ticketIdLbl.setText(byteArrToHexString(tikProvider.getTicketId()));
|
ticketIdLbl.setText(byteArrToHexStringAsLE(tikProvider.getTicketId()));
|
||||||
deviceIdLbl.setText(byteArrToHexString(tikProvider.getDeviceId()));
|
deviceIdLbl.setText(byteArrToHexStringAsLE(tikProvider.getDeviceId()));
|
||||||
rightsIdTf.setText(byteArrToHexString(tikProvider.getRightsId()));
|
rightsIdTf.setText(byteArrToHexStringAsLE(tikProvider.getRightsId()));
|
||||||
accountIdLbl.setText(byteArrToHexString(tikProvider.getAccountId()));
|
accountIdLbl.setText(byteArrToHexStringAsLE(tikProvider.getAccountId()));
|
||||||
unknown4Lbl.setText(byteArrToHexString(tikProvider.getUnknown4()));
|
unknown4Lbl.setText(byteArrToHexStringAsLE(tikProvider.getUnknown4()));
|
||||||
btnImport.setDisable(false);
|
btnImport.setDisable(false);
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -35,7 +35,7 @@ import java.net.URL;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
import static libKonogonka.Converter.byteArrToHexString;
|
import static libKonogonka.Converter.byteArrToHexStringAsLE;
|
||||||
|
|
||||||
public class HFSBlockController implements Initializable {
|
public class HFSBlockController implements Initializable {
|
||||||
@FXML
|
@FXML
|
||||||
|
@ -96,7 +96,7 @@ public class HFSBlockController implements Initializable {
|
||||||
hfs0mainMagicNumLbl.setText(hfs0Provider.getMagic());
|
hfs0mainMagicNumLbl.setText(hfs0Provider.getMagic());
|
||||||
hfs0mainFileCntLbl.setText(Integer.toString(hfs0Provider.getFilesCount()));
|
hfs0mainFileCntLbl.setText(Integer.toString(hfs0Provider.getFilesCount()));
|
||||||
hfs0mainStrTblSizeLbl.setText(Integer.toString(hfs0Provider.getStringTableSize()));
|
hfs0mainStrTblSizeLbl.setText(Integer.toString(hfs0Provider.getStringTableSize()));
|
||||||
hfs0mainPaddingLbl.setText(byteArrToHexString(hfs0Provider.getPadding()));
|
hfs0mainPaddingLbl.setText(byteArrToHexStringAsLE(hfs0Provider.getPadding()));
|
||||||
hfs0mainRawFileDataStartLbl.setText(Long.toString(hfs0Provider.getRawFileDataStart()));
|
hfs0mainRawFileDataStartLbl.setText(Long.toString(hfs0Provider.getRawFileDataStart()));
|
||||||
hfs0tableFilesListMainController.setContentToTable(hfs0Provider);
|
hfs0tableFilesListMainController.setContentToTable(hfs0Provider);
|
||||||
if (hfs0Provider.getFilesCount() > 0)
|
if (hfs0Provider.getFilesCount() > 0)
|
||||||
|
|
|
@ -32,7 +32,7 @@ import java.io.File;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
import static libKonogonka.Converter.byteArrToHexString;
|
import static libKonogonka.Converter.byteArrToHexStringAsLE;
|
||||||
|
|
||||||
public class XCIController implements ITabController {
|
public class XCIController implements ITabController {
|
||||||
|
|
||||||
|
@ -189,11 +189,11 @@ public class XCIController implements ITabController {
|
||||||
private void populateFields(XCIProvider xci){
|
private void populateFields(XCIProvider xci){
|
||||||
if (xci != null){
|
if (xci != null){
|
||||||
/* Header */
|
/* Header */
|
||||||
rsa2048pkcs1TF.setText(byteArrToHexString(xci.getGCHeader().getRsa2048PKCS1sig()));
|
rsa2048pkcs1TF.setText(byteArrToHexStringAsLE(xci.getGCHeader().getRsa2048PKCS1sig()));
|
||||||
//RainbowHexDump.hexDumpUTF8(xci.getGCHeader().getRsa2048PKCS1sig());
|
//RainbowHexDump.hexDumpUTF8(xci.getGCHeader().getRsa2048PKCS1sig());
|
||||||
headLbl.setText(Boolean.toString(xci.getGCHeader().isMagicHeadOk()));
|
headLbl.setText(Boolean.toString(xci.getGCHeader().isMagicHeadOk()));
|
||||||
//System.out.println(xci.getGCHeader().isMagicHeadOk());
|
//System.out.println(xci.getGCHeader().isMagicHeadOk());
|
||||||
secureAreaStartAddrTF.setText(byteArrToHexString(xci.getGCHeader().getSecureAreaStartAddr()));
|
secureAreaStartAddrTF.setText(byteArrToHexStringAsLE(xci.getGCHeader().getSecureAreaStartAddr()));
|
||||||
//System.out.println(xci.getGCHeader().isSecureAreaStartAddrOk());
|
//System.out.println(xci.getGCHeader().isSecureAreaStartAddrOk());
|
||||||
bkupAreaStartAddrLbl.setText(Boolean.toString(xci.getGCHeader().isBkupAreaStartAddrOk()));
|
bkupAreaStartAddrLbl.setText(Boolean.toString(xci.getGCHeader().isBkupAreaStartAddrOk()));
|
||||||
//System.out.println(xci.getGCHeader().isBkupAreaStartAddrOk());
|
//System.out.println(xci.getGCHeader().isBkupAreaStartAddrOk());
|
||||||
|
@ -231,19 +231,19 @@ public class XCIController implements ITabController {
|
||||||
//System.out.println(String.format("%02x", xci.getGCHeader().getGcVersion()));
|
//System.out.println(String.format("%02x", xci.getGCHeader().getGcVersion()));
|
||||||
gcFlags.setText(String.format("%02x", xci.getGCHeader().getGcFlags()));
|
gcFlags.setText(String.format("%02x", xci.getGCHeader().getGcFlags()));
|
||||||
//System.out.println(String.format("%02x", xci.getGCHeader().getGcFlags()));
|
//System.out.println(String.format("%02x", xci.getGCHeader().getGcFlags()));
|
||||||
pkgIdTF.setText(byteArrToHexString(xci.getGCHeader().getPkgID()));
|
pkgIdTF.setText(byteArrToHexStringAsLE(xci.getGCHeader().getPkgID()));
|
||||||
//RainbowHexDump.hexDumpUTF8(xci.getGCHeader().getPkgID());
|
//RainbowHexDump.hexDumpUTF8(xci.getGCHeader().getPkgID());
|
||||||
vDataEndAddrLbl.setText(Long.toString(xci.getGCHeader().getValDataEndAddr()));
|
vDataEndAddrLbl.setText(Long.toString(xci.getGCHeader().getValDataEndAddr()));
|
||||||
//System.out.println(xci.getGCHeader().getValDataEndAddr());
|
//System.out.println(xci.getGCHeader().getValDataEndAddr());
|
||||||
gcInfoIVTF.setText(byteArrToHexString(xci.getGCHeader().getGcInfoIV()));
|
gcInfoIVTF.setText(byteArrToHexStringAsLE(xci.getGCHeader().getGcInfoIV()));
|
||||||
//RainbowHexDump.hexDumpUTF8(xci.getGCHeader().getGcInfoIV());
|
//RainbowHexDump.hexDumpUTF8(xci.getGCHeader().getGcInfoIV());
|
||||||
hfs0partOffLbl.setText(Long.toString(xci.getGCHeader().getHfs0partOffset()));
|
hfs0partOffLbl.setText(Long.toString(xci.getGCHeader().getHfs0partOffset()));
|
||||||
//System.out.println(xci.getGCHeader().getHfs0partOffset());
|
//System.out.println(xci.getGCHeader().getHfs0partOffset());
|
||||||
hfs0hdrSizeLbl.setText(Long.toString(xci.getGCHeader().getHfs0headerSize()));
|
hfs0hdrSizeLbl.setText(Long.toString(xci.getGCHeader().getHfs0headerSize()));
|
||||||
//System.out.println(xci.getGCHeader().getHfs0headerSize());
|
//System.out.println(xci.getGCHeader().getHfs0headerSize());
|
||||||
Hfs0headerSHA256Lbl.setText(byteArrToHexString(xci.getGCHeader().getHfs0headerSHA256()));
|
Hfs0headerSHA256Lbl.setText(byteArrToHexStringAsLE(xci.getGCHeader().getHfs0headerSHA256()));
|
||||||
//RainbowHexDump.hexDumpUTF8(xci.getGCHeader().getHfs0headerSHA256());
|
//RainbowHexDump.hexDumpUTF8(xci.getGCHeader().getHfs0headerSHA256());
|
||||||
Hfs0initDataSHA256Lbl.setText(byteArrToHexString(xci.getGCHeader().getHfs0initDataSHA256()));
|
Hfs0initDataSHA256Lbl.setText(byteArrToHexStringAsLE(xci.getGCHeader().getHfs0initDataSHA256()));
|
||||||
//RainbowHexDump.hexDumpUTF8(xci.getGCHeader().getHfs0initDataSHA256() );
|
//RainbowHexDump.hexDumpUTF8(xci.getGCHeader().getHfs0initDataSHA256() );
|
||||||
secureModeFlagLbl.setText(xci.getGCHeader().isSecureModeFlagOk()+" ("+xci.getGCHeader().getSecureModeFlag()+")");
|
secureModeFlagLbl.setText(xci.getGCHeader().isSecureModeFlagOk()+" ("+xci.getGCHeader().getSecureModeFlag()+")");
|
||||||
//System.out.print(xci.getGCHeader().getSecureModeFlag());
|
//System.out.print(xci.getGCHeader().getSecureModeFlag());
|
||||||
|
@ -254,12 +254,12 @@ public class XCIController implements ITabController {
|
||||||
keyFlagLbl.setText(xci.getGCHeader().iskeyFlagOk()+" ("+xci.getGCHeader().getKeyFlag()+")");
|
keyFlagLbl.setText(xci.getGCHeader().iskeyFlagOk()+" ("+xci.getGCHeader().getKeyFlag()+")");
|
||||||
//System.out.print(xci.getGCHeader().getKeyFlag());
|
//System.out.print(xci.getGCHeader().getKeyFlag());
|
||||||
//System.out.println(xci.getGCHeader().iskeyFlagOk());
|
//System.out.println(xci.getGCHeader().iskeyFlagOk());
|
||||||
normAreaEndAddrTF.setText(byteArrToHexString(xci.getGCHeader().getNormAreaEndAddr()));
|
normAreaEndAddrTF.setText(byteArrToHexStringAsLE(xci.getGCHeader().getNormAreaEndAddr()));
|
||||||
//System.out.println(xci.getGCHeader().isNormAreaEndAddrOk());
|
//System.out.println(xci.getGCHeader().isNormAreaEndAddrOk());
|
||||||
|
|
||||||
/* GC Info */
|
/* GC Info */
|
||||||
fwVersionLbl.setText(Long.toString(xci.getGCInfo().getFwVersion()));
|
fwVersionLbl.setText(Long.toString(xci.getGCInfo().getFwVersion()));
|
||||||
String tempACF = byteArrToHexString(xci.getGCInfo().getAccessCtrlFlags());
|
String tempACF = byteArrToHexStringAsLE(xci.getGCInfo().getAccessCtrlFlags());
|
||||||
if (tempACF.equals("1100a100"))
|
if (tempACF.equals("1100a100"))
|
||||||
accessCtrlFlagsLbl.setText("25Mhz [0x1100a100]");
|
accessCtrlFlagsLbl.setText("25Mhz [0x1100a100]");
|
||||||
else if(tempACF.equals("1000a100"))
|
else if(tempACF.equals("1000a100"))
|
||||||
|
@ -270,25 +270,25 @@ public class XCIController implements ITabController {
|
||||||
readWaitTime2Lbl.setText(Long.toString(xci.getGCInfo().getReadWaitTime2()));
|
readWaitTime2Lbl.setText(Long.toString(xci.getGCInfo().getReadWaitTime2()));
|
||||||
writeWaitTime1.setText(Long.toString(xci.getGCInfo().getWriteWaitTime1()));
|
writeWaitTime1.setText(Long.toString(xci.getGCInfo().getWriteWaitTime1()));
|
||||||
writeWaitTime2.setText(Long.toString(xci.getGCInfo().getWriteWaitTime2()));
|
writeWaitTime2.setText(Long.toString(xci.getGCInfo().getWriteWaitTime2()));
|
||||||
fwModeTF.setText(byteArrToHexString(xci.getGCInfo().getFwMode()));
|
fwModeTF.setText(byteArrToHexStringAsLE(xci.getGCInfo().getFwMode()));
|
||||||
cupVersionTF.setText(byteArrToHexString(xci.getGCInfo().getCupVersion()));
|
cupVersionTF.setText(byteArrToHexStringAsLE(xci.getGCInfo().getCupVersion()));
|
||||||
emptyPadding1Lbl.setText(Boolean.toString(xci.getGCInfo().isEmptyPadding1()));
|
emptyPadding1Lbl.setText(Boolean.toString(xci.getGCInfo().isEmptyPadding1()));
|
||||||
emptyPadding1TF.setText(byteArrToHexString(xci.getGCInfo().getEmptyPadding1()));
|
emptyPadding1TF.setText(byteArrToHexStringAsLE(xci.getGCInfo().getEmptyPadding1()));
|
||||||
updPartHashTF.setText(byteArrToHexString(xci.getGCInfo().getUpdPartHash()));
|
updPartHashTF.setText(byteArrToHexStringAsLE(xci.getGCInfo().getUpdPartHash()));
|
||||||
cupIDTF.setText(byteArrToHexString(xci.getGCInfo().getCupID()));
|
cupIDTF.setText(byteArrToHexStringAsLE(xci.getGCInfo().getCupID()));
|
||||||
emptyPadding2Lbl.setText(Boolean.toString(xci.getGCInfo().isEmptyPadding2()));
|
emptyPadding2Lbl.setText(Boolean.toString(xci.getGCInfo().isEmptyPadding2()));
|
||||||
emptyPadding2TF.setText(byteArrToHexString(xci.getGCInfo().getEmptyPadding2()));
|
emptyPadding2TF.setText(byteArrToHexStringAsLE(xci.getGCInfo().getEmptyPadding2()));
|
||||||
|
|
||||||
/* Certificate */
|
/* Certificate */
|
||||||
rsa2048PKCS1sigCertTF.setText(byteArrToHexString(xci.getGCCert().getRsa2048PKCS1sig()));
|
rsa2048PKCS1sigCertTF.setText(byteArrToHexStringAsLE(xci.getGCCert().getRsa2048PKCS1sig()));
|
||||||
magicCertCertTF.setText(byteArrToHexString(xci.getGCCert().getMagicCert()));
|
magicCertCertTF.setText(byteArrToHexStringAsLE(xci.getGCCert().getMagicCert()));
|
||||||
magicCertCertOkLbl.setText(Boolean.toString(xci.getGCCert().isMagicCertOk()));
|
magicCertCertOkLbl.setText(Boolean.toString(xci.getGCCert().isMagicCertOk()));
|
||||||
unknown1CertTF.setText(byteArrToHexString(xci.getGCCert().getUnknown1()));
|
unknown1CertTF.setText(byteArrToHexStringAsLE(xci.getGCCert().getUnknown1()));
|
||||||
kekIndexCertLbl.setText(String.format("%02x", xci.getGCCert().getKekIndex()));
|
kekIndexCertLbl.setText(String.format("%02x", xci.getGCCert().getKekIndex()));
|
||||||
unknown2CertTF.setText(byteArrToHexString(xci.getGCCert().getUnknown2()));
|
unknown2CertTF.setText(byteArrToHexStringAsLE(xci.getGCCert().getUnknown2()));
|
||||||
deviceIDCertTF.setText(byteArrToHexString(xci.getGCCert().getDeviceID()));
|
deviceIDCertTF.setText(byteArrToHexStringAsLE(xci.getGCCert().getDeviceID()));
|
||||||
unknown3CertTF.setText(byteArrToHexString(xci.getGCCert().getUnknown3()));
|
unknown3CertTF.setText(byteArrToHexStringAsLE(xci.getGCCert().getUnknown3()));
|
||||||
encryptedDataCertTF.setText(byteArrToHexString(xci.getGCCert().getEncryptedData()));
|
encryptedDataCertTF.setText(byteArrToHexStringAsLE(xci.getGCCert().getEncryptedData()));
|
||||||
|
|
||||||
/* HFS0 */
|
/* HFS0 */
|
||||||
HFSBlockMainController.populateTab(xci.getHfs0ProviderMain());
|
HFSBlockMainController.populateTab(xci.getHfs0ProviderMain());
|
||||||
|
|
Loading…
Reference in a new issue