Service Access Control bugfixes
This commit is contained in:
parent
4a803c7b08
commit
3fc0aad7a1
10 changed files with 47 additions and 18 deletions
|
@ -4,7 +4,7 @@ import javafx.fxml.FXML;
|
|||
import javafx.fxml.Initializable;
|
||||
import javafx.scene.control.Label;
|
||||
import javafx.scene.control.TextField;
|
||||
import konogonka.Tools.NPDM.FSAccessControlProvider;
|
||||
import konogonka.Tools.NPDM.ACID.FSAccessControlProvider;
|
||||
|
||||
import java.net.URL;
|
||||
import java.util.ResourceBundle;
|
||||
|
|
|
@ -7,7 +7,7 @@ import javafx.scene.control.TextField;
|
|||
import konogonka.Controllers.ITabController;
|
||||
import konogonka.Tools.ISuperProvider;
|
||||
import konogonka.Tools.NPDM.ACI0Provider;
|
||||
import konogonka.Tools.NPDM.ACIDProvider;
|
||||
import konogonka.Tools.NPDM.ACID.ACIDProvider;
|
||||
import konogonka.Tools.NPDM.NPDMProvider;
|
||||
import konogonka.Workers.Analyzer;
|
||||
|
||||
|
|
|
@ -6,11 +6,10 @@ import javafx.geometry.Insets;
|
|||
import javafx.scene.control.Label;
|
||||
import javafx.scene.layout.HBox;
|
||||
import javafx.scene.layout.VBox;
|
||||
import konogonka.LoperConverter;
|
||||
import konogonka.Tools.NPDM.LCollectionEntry;
|
||||
|
||||
import java.net.URL;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.LinkedList;
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
public class ServiceAccessControlController implements Initializable {
|
||||
|
@ -26,11 +25,10 @@ public class ServiceAccessControlController implements Initializable {
|
|||
SACPane.getChildren().clear();
|
||||
}
|
||||
|
||||
public void populateFields(LinkedHashMap<Byte, String> collection){
|
||||
public void populateFields(LinkedList<LCollectionEntry> collection){
|
||||
resetTab();
|
||||
|
||||
for (Object object : collection.entrySet()) {
|
||||
Map.Entry<Byte, String> entry = (Map.Entry) object;
|
||||
for (LCollectionEntry entry : collection) {
|
||||
|
||||
Label control = new Label(String.format("0x%02x", entry.getKey()));
|
||||
Label serviceName = new Label(entry.getValue());
|
||||
|
|
|
@ -2,6 +2,7 @@ package konogonka.Tools.NPDM;
|
|||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Arrays;
|
||||
import java.util.LinkedList;
|
||||
|
||||
import static konogonka.LoperConverter.getLEint;
|
||||
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
package konogonka.Tools.NPDM;
|
||||
package konogonka.Tools.NPDM.ACID;
|
||||
|
||||
import konogonka.Tools.NPDM.ACI0Provider;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Arrays;
|
||||
|
@ -28,6 +30,7 @@ public class ACIDProvider {
|
|||
|
||||
private FSAccessControlProvider fsAccessControlProvider;
|
||||
private ServiceAccessControlProvider serviceAccessControlProvider;
|
||||
private KernelAccessControlProvider kernelAccessControlProvider;
|
||||
|
||||
public ACIDProvider(byte[] acidBytes) throws Exception{
|
||||
if (acidBytes.length < 0x240)
|
||||
|
@ -54,6 +57,7 @@ public class ACIDProvider {
|
|||
throw new Exception("ACIDProvider -> blocks inside the ACID are not sorted in ascending order. Only ascending order supported.");
|
||||
fsAccessControlProvider = new FSAccessControlProvider(Arrays.copyOfRange(acidBytes, fsAccessControlOffset, fsAccessControlOffset+fsAccessControlSize));
|
||||
serviceAccessControlProvider = new ServiceAccessControlProvider(Arrays.copyOfRange(acidBytes, serviceAccessControlOffset, serviceAccessControlOffset+serviceAccessControlSize));
|
||||
kernelAccessControlProvider = new KernelAccessControlProvider(Arrays.copyOfRange(acidBytes, kernelAccessControlOffset, kernelAccessControlOffset+kernelAccessControlSize));
|
||||
}
|
||||
|
||||
public byte[] getRsa2048signature() { return rsa2048signature; }
|
||||
|
@ -77,4 +81,5 @@ public class ACIDProvider {
|
|||
|
||||
public FSAccessControlProvider getFsAccessControlProvider() { return fsAccessControlProvider; }
|
||||
public ServiceAccessControlProvider getServiceAccessControlProvider() { return serviceAccessControlProvider; }
|
||||
public KernelAccessControlProvider getKernelAccessControlProvider() { return kernelAccessControlProvider; }
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package konogonka.Tools.NPDM;
|
||||
package konogonka.Tools.NPDM.ACID;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
package konogonka.Tools.NPDM.ACID;
|
||||
|
||||
public class KernelAccessControlProvider {
|
||||
|
||||
KernelAccessControlProvider(byte[] bytes){
|
||||
|
||||
}
|
||||
}
|
|
@ -1,14 +1,16 @@
|
|||
package konogonka.Tools.NPDM;
|
||||
package konogonka.Tools.NPDM.ACID;
|
||||
|
||||
import konogonka.Tools.NPDM.LCollectionEntry;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedList;
|
||||
|
||||
public class ServiceAccessControlProvider {
|
||||
|
||||
private LinkedHashMap<Byte, String> collection;
|
||||
private LinkedList<LCollectionEntry> collection;
|
||||
|
||||
public ServiceAccessControlProvider(byte[] bytes){
|
||||
collection = new LinkedHashMap<>();
|
||||
collection = new LinkedList<>();
|
||||
byte key;
|
||||
String value;
|
||||
|
||||
|
@ -17,14 +19,14 @@ public class ServiceAccessControlProvider {
|
|||
while (i < bytes.length){
|
||||
key = bytes[i];
|
||||
value = new String(bytes, i+1, getSize(key), StandardCharsets.UTF_8);
|
||||
collection.put(key, value);
|
||||
collection.add(new LCollectionEntry(key, value));
|
||||
i += getSize(key)+1;
|
||||
}
|
||||
}
|
||||
|
||||
private int getSize(byte control) {
|
||||
return ((byte) 0x7 & control) + 1;
|
||||
return ((byte) 0x7 & control) + (byte) 0x01;
|
||||
}
|
||||
|
||||
public LinkedHashMap<Byte, String> getCollection() { return collection; }
|
||||
public LinkedList<LCollectionEntry> getCollection() { return collection; }
|
||||
}
|
15
src/main/java/konogonka/Tools/NPDM/LCollectionEntry.java
Normal file
15
src/main/java/konogonka/Tools/NPDM/LCollectionEntry.java
Normal file
|
@ -0,0 +1,15 @@
|
|||
package konogonka.Tools.NPDM;
|
||||
|
||||
public class LCollectionEntry {
|
||||
private byte key;
|
||||
private String value;
|
||||
|
||||
public LCollectionEntry(byte key, String value){
|
||||
this.key = key;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public byte getKey() { return key; }
|
||||
|
||||
public String getValue() { return value; }
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
package konogonka.Tools.NPDM;
|
||||
|
||||
import konogonka.RainbowHexDump;
|
||||
import konogonka.Tools.ASuperInFileProvider;
|
||||
import konogonka.Tools.NPDM.ACID.ACIDProvider;
|
||||
|
||||
import java.io.*;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
|
Loading…
Reference in a new issue