Переглянути джерело

another hackfix a la SD-Carte... Workaround incase a file version 404-s temporarily to allow a manual re-run
Jailbreaker fix on a small re-sign miss

LH 2 роки тому
батько
коміт
f32a390f5b

+ 1 - 0
.gitignore

@@ -118,3 +118,4 @@ fabric.properties
 IZsetup/distPackagerBase
 
 **/bin/
+.idea.x

+ 1 - 0
QuickStuff/build.gradle

@@ -1,6 +1,7 @@
 defaultTasks 'distZip'
 
 apply plugin: 'java-library'
+sourceCompatibility = 1.17
 dependencies{
     api(project(':ToolKit')) {
     }

+ 16 - 0
QuickStuff/src/main/java/QuickVerifyCrap/PWNACradleGrabber.java

@@ -0,0 +1,16 @@
+package QuickVerifyCrap;
+
+public class PWNACradleGrabber {
+    public static void main(String[] args) {
+        String sqfs = "wget -O XXX.rootfs.squashfs.sign http://firmware.sena.com/senabluetoothmanager/WiFiCradle/wifi_adapter/XXX/rootfs.squashfs.sign";
+        String krnl = "wget -O XXX.xImage.sign http://firmware.sena.com/senabluetoothmanager/WiFiCradle/wifi_adapter/XXX/xImage.sign";
+
+
+        for(int i=0;i<=12;i++)
+        {
+            String version = "v1."+i;
+            System.out.println(sqfs.replace("XXX",version));
+            System.out.println(krnl.replace("XXX",version));
+        }
+    }
+}

+ 35 - 3
SenaBitWiggler/src/main/java/de/nplusc/izc/senabitwiggler/FirmwareAutoDumper.java

@@ -21,6 +21,7 @@ import java.nio.file.StandardCopyOption;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.function.Consumer;
 
 public class FirmwareAutoDumper
 {
@@ -35,6 +36,8 @@ public class FirmwareAutoDumper
     private static final String[] hackfixsuffixes = new String[]
             {"-rc","rc","-build","build"};
 
+    private static final Map<String,List<String>> forceVersionsForCheck = new HashMap<>();
+
     private static final String[][] indexes = new String[][]
             {{
         "main","http://firmware.sena.com/senabluetoothmanager/Firmware"},{
@@ -76,6 +79,22 @@ public class FirmwareAutoDumper
                 state.setFirmwares(new LinkedHashMap<>());
             }
 
+            BufferedReader fakerfile = new BufferedReader(new FileReader(statefile.toString()+".forced"));
+            fakerfile.lines().forEach((line)->
+            {
+                String[] linesplitted = line.split("::");
+                if(linesplitted.length!=2)
+                {
+                    l.warn("Malformed Line at forcefile: "+line);
+                }
+                else
+                {
+                    forceVersionsForCheck.putIfAbsent(linesplitted[0],new ArrayList<>());
+                    List<String> fakeindex = forceVersionsForCheck.get(linesplitted[0]);
+                    fakeindex.add(linesplitted[1]);
+                }
+            });
+
             state.getFirmwares().forEach((k,v)->
             {
                 v.getVersions().entrySet().removeIf((e)->{
@@ -118,7 +137,8 @@ public class FirmwareAutoDumper
                 BufferedReader br = new BufferedReader(new FileReader(fw));
                 final HashMap<String, String> basenamelookup = new LinkedHashMap<>();
                 // filename --> real basename
-                br.lines().forEach((line) ->
+
+                Consumer<String> linehandler = (line) ->
                 {
                     String[] linesplitted = line.split(":");
 
@@ -160,7 +180,13 @@ public class FirmwareAutoDumper
                     } catch (IOException e) {
                         e.printStackTrace();
                     }
-                });
+                };
+
+                br.lines().forEach(linehandler);
+
+                //forcelist entires = index entries with index name prepended with a ::, prefix already removed at this point
+                var forceToCheck = forceVersionsForCheck.getOrDefault(index[0],new ArrayList<String>()); //empty for no forcelist entries
+                forceToCheck.forEach(linehandler);
                 br.close();
                 y.dump(state, new FileWriter(statefile));
                 if (!DUMMY_MODE) {
@@ -441,7 +467,13 @@ public class FirmwareAutoDumper
         {
             String lastSuffix = rchackfix?hackfixsuffix:".";
             String synthesizedFileName = prefix+(major)+"."+minor+lastSuffix+(patch)+suffix;
-            if(!knownVersions.containsKey(synthesizedFileName))
+            boolean nopeOutVersion = false;
+            var fwVersion = knownVersions.getOrDefault(synthesizedFileName,null);
+            if(fwVersion!=null&&fwVersion.isFiller())
+            {
+                nopeOutVersion=true;
+            }
+            if(!knownVersions.containsKey(synthesizedFileName)||nopeOutVersion)
             {
                 FirmwareVersion f = getFirmware(major,minor,patch,false,synthesizedFileName,rchackfix,hackfixsuffix,indexUsed);
                 f.setSusVersion(useForSusVersion);

+ 7 - 0
SenaBitWiggler/src/main/java/de/nplusc/izc/senabitwiggler/Jailbreaker.java

@@ -52,10 +52,17 @@ public class Jailbreaker {
         try {
             Utils.runTool(scratch,dfuunbuild,"-v","-f",dfuinput,"-o","extracted");
             Utils.runTool(scratch,dfusign,"-v", "-o","extracted0000signed.fs","-h","extracted0000.fs", "-ka",EntryPoint.APPDIR+File.separator+"jailbreak"+File.separator+"jailbreak.private.key");
+            Utils.runTool(scratch,dfusign,"-v", "-o","extracted0000signed.psr","-pa","extracted0000.psr", "-ka",EntryPoint.APPDIR+File.separator+"jailbreak"+File.separator+"jailbreak.private.key");
             File oldfs = new File(scratch,"extracted0000.fs");
             oldfs.delete();
             File newfs = new File(scratch,"extracted0000signed.fs");
             newfs.renameTo(oldfs);
+
+            oldfs = new File(scratch,"extracted0000.psr");
+            oldfs.delete();
+            newfs = new File(scratch,"extracted0000signed.psr.app.psr");
+            newfs.renameTo(oldfs);
+
             Utils.runTool(scratch,dfubuild,"-c","extracted.cl","-f",dfuout);
         } catch (IOException e) {
             e.printStackTrace();