diff --git a/README.md b/README.md index b822720..d4fa8a0 100644 --- a/README.md +++ b/README.md @@ -9,10 +9,11 @@ Once the mtk script is running, boot into brom mode by powering off device, pres vol up + power or vol down + power and connect the phone. Once detected by the tool, release the buttons. -## Unsupported chipsets -- MT678x, MT689x, MT688x, MT698x -- These chipsets use a new protocol called V6 and the bootrom is patched. There is currently NO support for these chipsets (due to the way these loaders are implemented) -- If you want support, consider donating so that I can afford one of these devices in order to start researching them +## MT678x, MT689x, MT688x, MT698x +- These chipsets use a new protocol called V6 and the bootrom is patched, thus you need a valid da via --loader option. +- On some devices, preloader is deactivated, but you still use it by running "adb reboot edl". +- This only works with UNFUSED devices currently. +- For all devices with DAA, SLA and Remote-Auth activated no public solution currently exists (for various reasons). ## Credits - kamakiri [xyzz] diff --git a/mtk b/mtk index 2c058a8..b0671ee 100755 --- a/mtk +++ b/mtk @@ -4,7 +4,7 @@ import argparse from mtkclient.Library.mtk_main import Main, metamodes -info = "MTK Flash/Exploit Client V1.6.3 (c) B.Kerler 2018-2023" +info = "MTK Flash/Exploit Client Public V2.0.0 Beta (c) B.Kerler 2018-2023" cmds = { "printgpt": "Print GPT Table information", @@ -94,49 +94,79 @@ if __name__ == '__main__': parser_da = subparsers.add_parser("da", help="Run da special commands") da_cmds = parser_da.add_subparsers(dest='subcmd', help='Commands: peek poke keys unlock memdump seccfg rpmb efuse') + da_efuse = da_cmds.add_parser("efuse", help="Read efuses") da_efuse.add_argument('--preloader', help='Set the preloader filename for dram config') - da_peek = da_cmds.add_parser("peek", help="Read memory") - da_peek.add_argument('--preloader', help='Set the preloader filename for dram config') - da_dump = da_cmds.add_parser("memdump", help="Dump whole memory areas") - da_poke = da_cmds.add_parser("poke", help="Write memory") - da_poke.add_argument('--preloader', help='Set the preloader filename for dram config') + da_efuse.add_argument('--loader', type=str, help='Use specific loader, disable autodetection') + da_keys = da_cmds.add_parser("generatekeys", help="Generate keys") da_keys.add_argument('--preloader', help='Set the preloader filename for dram config') - da_unlock = da_cmds.add_parser("seccfg", help="Unlock device / Configure seccfg") - da_unlock.add_argument('--preloader', help='Set the preloader filename for dram config') - da_rpmb = da_cmds.add_parser("rpmb", help="RPMB Tools") - da_rpmb.add_argument('--preloader', help='Set the preloader filename for dram config') + da_keys.add_argument('--loader', type=str, help='Use specific loader, disable autodetection') + da_meta = da_cmds.add_parser("meta", help="MetaMode Tools") da_meta.add_argument('--preloader', help='Set the preloader filename for dram config') - da_meta.add_argument("metamode", type=str, help="metamode to use [off,usb,uart]") + da_rpmb = da_cmds.add_parser("rpmb", help="RPMB Tools") + da_rpmb_cmds = da_rpmb.add_subparsers(dest='rpmb_subcmd', help='Commands: r w') da_rpmb_r = da_rpmb_cmds.add_parser("r", help="Read rpmb") da_rpmb_r.add_argument('--filename', type=str, help="Filename to write data into") da_rpmb_r.add_argument('--preloader', help='Set the preloader filename for dram config') + da_rpmb_r.add_argument('--loader', type=str, help='Use specific loader, disable autodetection') + da_rpmb_r.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + da_rpmb_r.add_argument('--cert', type=str, help="Use cert file") da_rpmb_w = da_rpmb_cmds.add_parser("w", help="Write rpmb") da_rpmb_w.add_argument('filename', type=str, help="Filename to write from") da_rpmb_w.add_argument('--preloader', help='Set the preloader filename for dram config') + da_rpmb_w.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + da_rpmb_w.add_argument('--cert', type=str, help="Use cert file") + da_rpmb_w.add_argument('--loader', type=str, help='Use specific loader, disable autodetection') da_rpmb_e = da_rpmb_cmds.add_parser("e", help="Erase rpmb") da_rpmb_e.add_argument('--preloader', help='Set the preloader filename for dram config') + da_rpmb_e.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + da_rpmb_e.add_argument('--cert', type=str, help="Use cert file") + da_rpmb_e.add_argument('--loader', type=str, help='Use specific loader, disable autodetection') + da_peek = da_cmds.add_parser("peek", help="Read memory") + da_peek.add_argument('--preloader', help='Set the preloader filename for dram config') da_peek.add_argument('address', type=str, help="Address to read from (hex value)") da_peek.add_argument('length', type=str, help="Length to read") + da_peek.add_argument('--loader', type=str, help='Use specific loader, disable autodetection') da_peek.add_argument('--filename', type=str, help="Filename to write data into") + da_peek.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + da_peek.add_argument('--cert', type=str, help="Use cert file") + da_dump = da_cmds.add_parser("memdump", help="Dump whole memory areas") da_dump.add_argument('directory', type=str, help="Directory to dump ram dump files") da_dump.add_argument('--preloader', help='Set the preloader filename for dram config') da_dump.add_argument('--loader', type=str, help='Use specific DA loader, disable autodetection') + da_dump.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + da_dump.add_argument('--cert', type=str, help="Use cert file") + da_dumpbrom = da_cmds.add_parser("dumpbrom", help="Dump whole memory areas") + da_dumpbrom.add_argument('--preloader', help='Set the preloader filename for dram config') + da_dumpbrom.add_argument('--loader', type=str, help='Use specific DA loader, disable autodetection') + da_dumpbrom.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + da_dumpbrom.add_argument('--cert', type=str, help="Use cert file") + + da_poke = da_cmds.add_parser("poke", help="Write memory") + da_poke.add_argument('--preloader', help='Set the preloader filename for dram config') da_poke.add_argument('address', type=str, help="Address to read from (hex value)") da_poke.add_argument('data', type=str, help="Data to write") + da_poke.add_argument('--loader', type=str, help='Use specific DA loader, disable autodetection') da_poke.add_argument('--filename', type=str, help="Filename to read data from") + da_poke.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + da_poke.add_argument('--cert', type=str, help="Use cert file") + da_unlock = da_cmds.add_parser("seccfg", help="Unlock device / Configure seccfg") + da_unlock.add_argument('--preloader', help='Set the preloader filename for dram config') da_unlock.add_argument('flag', type=str, help="Needed flag (unlock,lock)") + da_unlock.add_argument('--loader', type=str, help='Use specific DA loader, disable autodetection') + da_unlock.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + da_unlock.add_argument('--cert', type=str, help="Use cert file") parser_script.add_argument('script', help='Text script to run') parser_script.add_argument('--loader', type=str, help='Use specific DA loader, disable autodetection') @@ -161,7 +191,8 @@ if __name__ == '__main__': parser_script.add_argument('--preloader', help='Set the preloader filename for dram config') parser_script.add_argument('--crash', help='Enforce crash if device is in pl mode to enter brom mode') parser_script.add_argument('--socid', help='Read Soc ID') - + parser_script.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_script.add_argument('--cert', type=str, help="Use cert file") parser_printgpt.add_argument('--loader', type=str, help='Use specific DA loader, disable autodetection') parser_printgpt.add_argument('--vid', type=str, help='Set usb vendor id used for MTK Preloader') @@ -185,6 +216,8 @@ if __name__ == '__main__': parser_printgpt.add_argument('--preloader', help='Set the preloader filename for dram config') parser_printgpt.add_argument('--crash', help='Enforce crash if device is in pl mode to enter brom mode') parser_printgpt.add_argument('--socid', help='Read Soc ID') + parser_printgpt.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_printgpt.add_argument('--cert', type=str, help="Use cert file") parser_gpt.add_argument('directory', help='Filename to store gpt files') parser_gpt.add_argument('--loader', type=str, help='Use specific DA loader, disable autodetection') @@ -212,6 +245,8 @@ if __name__ == '__main__': '\t\tUFS: [lu0, lu1, lu2, lu0_lu1]') parser_gpt.add_argument('--crash', help='Enforce crash if device is in pl mode to enter brom mode') parser_gpt.add_argument('--socid', help='Read Soc ID') + parser_gpt.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_gpt.add_argument('--cert', type=str, help="Use cert file") parser_r.add_argument('partitionname', help='Partitions to read (separate by comma for multiple partitions)') parser_r.add_argument('filename', help='Filename to store files (separate by comma for multiple filenames)') @@ -240,6 +275,8 @@ if __name__ == '__main__': '\t\tUFS: [lu0, lu1, lu2, lu0_lu1]') parser_r.add_argument('--crash', help='Enforce crash if device is in pl mode to enter brom mode') parser_r.add_argument('--socid', help='Read Soc ID') + parser_r.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_r.add_argument('--cert', type=str, help="Use cert file") parser_rl.add_argument('directory', help='Directory to write dumped partitions into') parser_rl.add_argument('--loader', type=str, help='Use specific DA loader, disable autodetection') @@ -268,6 +305,8 @@ if __name__ == '__main__': parser_rl.add_argument('--filename', help='Optional filename') parser_rl.add_argument('--crash', help='Enforce crash if device is in pl mode to enter brom mode') parser_rl.add_argument('--socid', help='Read Soc ID') + parser_rl.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_rl.add_argument('--cert', type=str, help="Use cert file") parser_rf.add_argument('filename', help='Filename to store flash file') parser_rf.add_argument('--loader', type=str, help='Use specific DA loader, disable autodetection') @@ -299,6 +338,8 @@ if __name__ == '__main__': parser_rf.add_argument('--crash', help='Enforce crash if device is in pl mode to enter brom mode') parser_rf.add_argument('--socid', help='Read Soc ID') parser_rf.add_argument('--iot', help='Use special mode for iot MT6261/2301', action="store_true", default=False) + parser_rf.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_rf.add_argument('--cert', type=str, help="Use cert file") parser_rs.add_argument('startsector', help='Sector to start reading (int or hex)') parser_rs.add_argument('sectors', help='Sector count') @@ -331,6 +372,8 @@ if __name__ == '__main__': parser_rs.add_argument('--filename', help='Optional filename') parser_rs.add_argument('--crash', help='Enforce crash if device is in pl mode to enter brom mode') parser_rs.add_argument('--socid', help='Read Soc ID') + parser_rs.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_rs.add_argument('--cert', type=str, help="Use cert file") parser_ro.add_argument('offset', help='Offset to start reading (int or hex)') parser_ro.add_argument('length', help='Length to read (int or hex)') @@ -360,6 +403,8 @@ if __name__ == '__main__': '\t\tEMMC: [user, boot1, boot2, gp1, gp2, gp3, gp4, rpmb]' + '\t\tUFS: [lu0, lu1, lu2, lu0_lu1]') parser_ro.add_argument('--crash', help='Enforce crash if device is in pl mode to enter brom mode') + parser_ro.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_ro.add_argument('--cert', type=str, help="Use cert file") parser_w.add_argument('partitionname', help='Partition to write (separate by comma for multiple partitions)') parser_w.add_argument('filename', help='Filename for writing (separate by comma for multiple filenames)') @@ -391,6 +436,8 @@ if __name__ == '__main__': parser_w.add_argument('--filename', help='Optional filename') parser_w.add_argument('--crash', help='Enforce crash if device is in pl mode to enter brom mode') parser_w.add_argument('--socid', help='Read Soc ID') + parser_w.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_w.add_argument('--cert', type=str, help="Use cert file") parser_wf.add_argument('filename', help='Filename to write to flash') parser_wf.add_argument('--loader', type=str, help='Use specific DA loader, disable autodetection') @@ -419,6 +466,8 @@ if __name__ == '__main__': '\t\tUFS: [lu0, lu1, lu2, lu0_lu1]') parser_wf.add_argument('--crash', help='Enforce crash if device is in pl mode to enter brom mode') parser_wf.add_argument('--socid', help='Read Soc ID') + parser_wf.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_wf.add_argument('--cert', type=str, help="Use cert file") parser_wl.add_argument('directory', help='Directory with partition filenames to write to flash') parser_wl.add_argument('--loader', type=str, help='Use specific DA loader, disable autodetection') @@ -448,6 +497,8 @@ if __name__ == '__main__': parser_wl.add_argument('--filename', help='Optional filename') parser_wl.add_argument('--crash', help='Enforce crash if device is in pl mode to enter brom mode') parser_wl.add_argument('--socid', help='Read Soc ID') + parser_wl.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_wl.add_argument('--cert', type=str, help="Use cert file") parser_wo.add_argument('offset', help='Offset to start writing (int or hex)') parser_wo.add_argument('length', help='Length to write (int or hex)') @@ -479,6 +530,8 @@ if __name__ == '__main__': parser_wo.add_argument('--filename', help='Optional filename') parser_wo.add_argument('--crash', help='Enforce crash if device is in pl mode to enter brom mode') parser_wo.add_argument('--socid', help='Read Soc ID') + parser_wo.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_wo.add_argument('--cert', type=str, help="Use cert file") parser_e.add_argument('partitionname', help='Partitionname to erase from flash') parser_e.add_argument('--loader', type=str, help='Use specific DA loader, disable autodetection') @@ -508,6 +561,8 @@ if __name__ == '__main__': parser_e.add_argument('--filename', help='Optional filename') parser_e.add_argument('--crash', help='Enforce crash if device is in pl mode to enter brom mode') parser_e.add_argument('--socid', help='Read Soc ID') + parser_e.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_e.add_argument('--cert', type=str, help="Use cert file") parser_es.add_argument('partitionname', help='Partitionname to erase from flash') parser_es.add_argument('sectors', help='Sectors to erase') @@ -538,6 +593,8 @@ if __name__ == '__main__': parser_es.add_argument('--filename', help='Optional filename') parser_es.add_argument('--crash', help='Enforce crash if device is in pl mode to enter brom mode') parser_es.add_argument('--socid', help='Read Soc ID') + parser_es.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_es.add_argument('--cert', type=str, help="Use cert file") parser_ess.add_argument('startsector', help='Startsector to erase') parser_ess.add_argument('sectors', help='Sectors to erase') @@ -568,6 +625,8 @@ if __name__ == '__main__': parser_ess.add_argument('--filename', help='Optional filename') parser_ess.add_argument('--crash', help='Enforce crash if device is in pl mode to enter brom mode') parser_ess.add_argument('--socid', help='Read Soc ID') + parser_ess.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_ess.add_argument('--cert', type=str, help="Use cert file") parser_footer.add_argument('filename', help='Filename to store footer') parser_footer.add_argument('--loader', type=str, help='Use specific DA loader, disable autodetection') @@ -595,6 +654,8 @@ if __name__ == '__main__': parser_footer.add_argument('--filename', help='Optional filename') parser_footer.add_argument('--crash', help='Enforce crash if device is in pl mode to enter brom mode') parser_footer.add_argument('--socid', help='Read Soc ID') + parser_footer.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_footer.add_argument('--cert', type=str, help="Use cert file") parser_dumpbrom.add_argument('--loader', type=str, help='Use specific DA loader, disable autodetection') parser_dumpbrom.add_argument('--vid', type=str, help='Set usb vendor id used for MTK Preloader') @@ -614,7 +675,8 @@ if __name__ == '__main__': parser_dumpbrom.add_argument('--filename', help='Optional filename') parser_dumpbrom.add_argument('--crash', help='Enforce crash if device is in pl mode to enter brom mode') parser_dumpbrom.add_argument('--socid', help='Read Soc ID') - + parser_dumpbrom.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_dumpbrom.add_argument('--cert', type=str, help="Use cert file") parser_dumpsram.add_argument('--loader', type=str, help='Use specific DA loader, disable autodetection') parser_dumpsram.add_argument('--vid', type=str, help='Set usb vendor id used for MTK Preloader') @@ -634,6 +696,8 @@ if __name__ == '__main__': parser_dumpsram.add_argument('--filename', help='Optional filename') parser_dumpsram.add_argument('--crash', help='Enforce crash if device is in pl mode to enter brom mode') parser_dumpsram.add_argument('--socid', help='Read Soc ID') + parser_dumpsram.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_dumpsram.add_argument('--cert', type=str, help="Use cert file") parser_dumppreloader.add_argument('--loader', type=str, help='Use specific DA loader, disable autodetection') parser_dumppreloader.add_argument('--vid', type=str, help='Set usb vendor id used for MTK Preloader') @@ -653,6 +717,8 @@ if __name__ == '__main__': parser_dumppreloader.add_argument('--filename', help='Optional filename') parser_dumppreloader.add_argument('--crash', help='Enforce crash if device is in pl mode to enter brom mode') parser_dumppreloader.add_argument('--socid', help='Read Soc ID') + parser_dumppreloader.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_dumppreloader.add_argument('--cert', type=str, help="Use cert file") parser_payload.add_argument('--payload', type=str, help='Payload filename (optional)') parser_payload.add_argument('--metamode', type=str, default=None, help='metamode to use ' + metamodes) @@ -673,11 +739,15 @@ if __name__ == '__main__': '("amonet","kamakiri","kamakiri2","carbonara" kamakiri2/da used by default)') parser_payload.add_argument('--crash', help='Enforce crash if device is in pl mode to enter brom mode') parser_payload.add_argument('--socid', help='Read Soc ID') + parser_payload.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_payload.add_argument('--cert', type=str, help="Use cert file") parser_crash.add_argument('--vid', type=str, help='Set usb vendor id used for MTK Preloader') parser_crash.add_argument('--pid', type=str, help='Set usb product id used for MTK Preloader') parser_crash.add_argument('--debugmode', action='store_true', default=False, help='Enable verbose mode') parser_crash.add_argument('--mode', help='Set a crash mode (0=dasend1,1=dasend2,2=daread)') + parser_crash.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_crash.add_argument('--cert', type=str, help="Use cert file") parser_brute.add_argument('--loader', type=str, help='Use specific loader, disable autodetection') parser_brute.add_argument('--vid', type=str, help='Set usb vendor id used for MTK Preloader') @@ -696,20 +766,29 @@ if __name__ == '__main__': parser_brute.add_argument('--filename', help='Optional filename') parser_brute.add_argument('--crash', help='Enforce crash if device is in pl mode to enter brom mode') parser_brute.add_argument('--socid', help='Read Soc ID') + parser_brute.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_brute.add_argument('--cert', type=str, help="Use cert file") parser_logs.add_argument('--vid', type=str, help='Set usb vendor id used for MTK Preloader') parser_logs.add_argument('--pid', type=str, help='Set usb product id used for MTK Preloader') parser_logs.add_argument('--debugmode', action='store_true', default=False, help='Enable verbose mode') parser_logs.add_argument('--filename', help='Optional filename to write dumped data') + parser_logs.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_logs.add_argument('--cert', type=str, help="Use cert file") parser_meta.add_argument('--vid', type=str, help='Set usb vendor id used for MTK Preloader') parser_meta.add_argument('--pid', type=str, help='Set usb product id used for MTK Preloader') parser_meta.add_argument('--debugmode', action='store_true', default=False, help='Enable verbose mode') parser_meta.add_argument('metamode', type=str, default=None, help='metamode to use ' + metamodes) + parser_meta.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_meta.add_argument('--cert', type=str, help="Use cert file") + parser_gettargetconfig.add_argument('--vid', type=str, help='Set usb vendor id used for MTK Preloader') parser_gettargetconfig.add_argument('--pid', type=str, help='Set usb product id used for MTK Preloader') parser_gettargetconfig.add_argument('--debugmode', action='store_true', default=False, help='Enable verbose mode') parser_gettargetconfig.add_argument('--socid', help='Read Soc ID') + parser_gettargetconfig.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_gettargetconfig.add_argument('--cert', type=str, help="Use cert file") parser_peek.add_argument('address', help='Address to read from memory') parser_peek.add_argument('length', help='Bytes to read from memory') @@ -731,6 +810,8 @@ if __name__ == '__main__': parser_peek.add_argument('--crash', help='Enforce crash if device is in pl mode to enter brom mode') parser_peek.add_argument('--socid', help='Read Soc ID') parser_peek.add_argument('--preloader', help='Set the preloader filename for dram config') + parser_peek.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_peek.add_argument('--cert', type=str, help="Use cert file") parser_stage.add_argument('--payload', type=str, help='Payload filename (optional)') parser_stage.add_argument('--stage2', help='Set stage2 filename') @@ -753,6 +834,8 @@ if __name__ == '__main__': parser_stage.add_argument('--filename', help='Optional filename') parser_stage.add_argument('--crash', help='Enforce crash if device is in pl mode to enter brom mode') parser_stage.add_argument('--socid', help='Read Soc ID') + parser_stage.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_stage.add_argument('--cert', type=str, help="Use cert file") parser_plstage.add_argument('--payload', type=str, help='Payload filename (optional)') parser_plstage.add_argument('--pl', help='pl stage filename (optional)') @@ -779,6 +862,8 @@ if __name__ == '__main__': parser_plstage.add_argument('--crash', help='Enforce crash if device is in pl mode to enter brom mode') parser_plstage.add_argument('--socid', help='Read Soc ID') parser_plstage.add_argument('--startpartition', help='Option for plstage - Boot to (lk, tee1)') + parser_plstage.add_argument('--auth', type=str, help="Use auth file (auth_sv5.auth)") + parser_plstage.add_argument('--cert', type=str, help="Use cert file") parser_printgpt.add_argument('--generatekeys', action="store_true", help='Option for deriving hw keys') parser_footer.add_argument('--generatekeys', action="store_true", help='Option for deriving hw keys') @@ -846,6 +931,15 @@ if __name__ == '__main__': da_dump.add_argument('--uartloglevel', help='Set uart log level (0=Trace, 2=Normal)') da_rpmb.add_argument('--uartloglevel', help='Set uart log level (0=Trace, 2=Normal)') + parser_script.add_argument('--appid', help='Use app id (hexstring)') + parser_printgpt.add_argument('--appid', help='Use app id (hexstring)') + parser_rs.add_argument('--appid', help='Use app id (hexstring)') + parser_rf.add_argument('--appid', help='Use app id (hexstring)') + parser_rl.add_argument('--appid', help='Use app id (hexstring)') + parser_gpt.add_argument('--appid', help='Use app id (hexstring)') + parser_r.add_argument('--appid', help='Use app id (hexstring)') + da_keys.add_argument('--appid', help='Use app id (hexstring)') + args = parser.parse_args() cmd = args.cmd if cmd not in cmds: diff --git a/mtkclient/Library/DA/__init__.py b/mtkclient/Library/DA/__init__.py old mode 100644 new mode 100755 diff --git a/mtkclient/Library/DA/daconfig.py b/mtkclient/Library/DA/daconfig.py index b8b5079..47af86f 100755 --- a/mtkclient/Library/DA/daconfig.py +++ b/mtkclient/Library/DA/daconfig.py @@ -153,7 +153,7 @@ class DAconfig(metaclass=LogBase): loaders = [] for root, dirs, files in os.walk(self.pathconfig.get_loader_path(), topdown=False): for file in files: - if "MTK_AllInOne_DA" in file: + if "MTK_AllInOne_DA" in file or "MTK_DA" in file: loaders.append(os.path.join(root, file)) loaders = sorted(loaders)[::-1] for loader in loaders: @@ -217,14 +217,19 @@ class DAconfig(metaclass=LogBase): with open(loader, 'rb') as bootldr: # data = bootldr.read() # self.debug(hexlify(data).decode('utf-8')) - bootldr.seek(0x68) + hdr = bootldr.read(0x68) count_da = unpack("I", addr)) @@ -209,12 +212,22 @@ class DALegacy(metaclass=LogBase): return True return False - def recheck(self): # If Preloader is needed + def sec_usb_recheck(self): # If Preloader is needed + # toDo / sha1 hash sec_info_len = 0 cmd = self.Cmd.SECURE_USB_RECHECK_CMD + pack(">I", sec_info_len) # B4 status = unpack(">I", self.mtk.port.mtk_cmd(cmd, 1))[0] if status == 0x1799: - return False # S-USBDL disabled + self.info("S-USBDL disabled") + return True + elif status == 0x179A: + self.info("S-USBDL enabled") + buffer1=bytearray() + buffer2=bytearray() + for i in range(0x100): + buffer1.append(self.rbyte(1)) + for i in range(0x5): + buffer2.append(self.rbyte(1)) return True def set_stage2_config(self, hwcode): @@ -274,6 +287,8 @@ class DALegacy(metaclass=LogBase): self.error("Didn't receive Stage2 dram info, please check usb cable/hub and retry.") return False errorcode = int.from_bytes(buffer,'big') + if errorcode == 0x0: + return True if errorcode != 0xBC3: self.error(self.eh.status(errorcode)) return False @@ -303,7 +318,7 @@ class DALegacy(metaclass=LogBase): if len(returnval)!=4: self.error("Didn't get a response on dram read") return False - errorval = errorcode = int.from_bytes(returnval,'big') + errorval = int.from_bytes(returnval,'big') if errorval != 0xBC4: self.error(self.eh.status(errorval)) return False @@ -382,8 +397,47 @@ class DALegacy(metaclass=LogBase): return False return True + def set_speed_iot(self): + self.usbwrite(b"\x59") + ack = self.usbread(1) + self.usbwrite(b"\xF0") + ret = self.usbread(28) + self.usbwrite(self.Cmd.SPEED_CMD+b"\x01\x01") + ack = self.usbread(1) + if ack != b"\x5A": + return False + self.usbwrite(b"\x5A") + #try: + # self.mtk.port.cdc.setcontrollinestate(RTS=True,DTR=True) + #except: + # pass + try: + self.mtk.port.cdc.setLineCoding(baudrate=921600, parity=0, databits=8, stopbits=1) + except Exception as err: + print(err) + pass + + time.sleep(0.1) + for i in range(10): + self.usbwrite(b"\xC0") + ack = self.usbread(1) + if ack == b"\xC0": + break + time.sleep(0.02) + self.usbwrite(b"\x5A") + ack = self.usbread(1) + if ack == b"\x5A": + for i in range(256): + loop_val = pack(">B", i) + self.usbwrite(loop_val) + if self.usbread(1) != loop_val: + return False + else: + return False + return True + def set_speed(self): - self.usbwrite(DALegacy.Cmd.SPEED_CMD) + self.usbwrite(self.Cmd.SPEED_CMD) self.usbwrite(int.to_bytes(921600, 4, 'big')) ack = self.usbread(1) if ack != b"\x5A": @@ -485,7 +539,7 @@ class DALegacy(metaclass=LogBase): bootldr.seek(da2offset) da2 = bootldr.read(self.daconfig.da_loader.region[2].m_len) if self.mtk.config.is_brom or not self.mtk.config.target_config["sbc"]: - hashaddr, hashmode, hashlen = self.mtk.daloader.compute_hash_pos(da1, da2, da2sig_len) + hashaddr, hashmode, hashlen = self.mtk.daloader.compute_hash_pos(da1, da2, da1sig_len, da2sig_len,self.daconfig.da_loader.v6) if hashaddr is not None: da2patched = self.lft.patch_da2(da2) if da2patched != da2: @@ -602,7 +656,6 @@ class DALegacy(metaclass=LogBase): da3sig_len = self.daconfig.da_loader.region[stage1 + 2].m_sig_len bootldr.seek(da3offset) da3 = bootldr.read(da3size) - if self.mtk.preloader.send_da(da1address, da1size, da1sig_len, da1): if self.mtk.preloader.send_da(da2address, da2size, da2sig_len, da2): if self.mtk.preloader.jump_da(da1address): @@ -645,7 +698,6 @@ class DALegacy(metaclass=LogBase): i = 0 while bytestosend > 0: data = da3[i:i + 0x24] - print(data.hex()) self.usbwrite(data) i += 0x24 bytestosend -= 0x24 @@ -679,6 +731,7 @@ class DALegacy(metaclass=LogBase): self.daconfig.flashsize = self.sdc.m_sdmmc_ua_size elif self.daconfig.flashtype == "nor": self.daconfig.flashsize = self.nor.m_nor_flash_size + self.set_speed_iot() return True return False @@ -1000,7 +1053,7 @@ class DALegacy(metaclass=LogBase): self.daconfig.readsize = self.daconfig.flashsize // self.daconfig.pagesize * ( self.daconfig.pagesize + self.daconfig.sparesize) elif self.daconfig.flashtype == "nor": - packetsize = 0x400 + packetsize = 0x1000 self.usbwrite(self.Cmd.READ_CMD) # D6 if not self.config.iot: self.usbwrite(b"\x0C") # Host:Linux, 0x0B=Windows @@ -1026,24 +1079,27 @@ class DALegacy(metaclass=LogBase): worker = Thread(target=writedata, args=(filename, rq), daemon=True) worker.start() bytestoread = length + curpos = 0 while bytestoread > 0: size = bytestoread if bytestoread > packetsize: size = packetsize - rq.put(self.usbread(size)) + tmp = self.usbread(size) + rq.put(tmp[:size]) bytestoread -= size - checksum = unpack(">H", self.usbread(1) + self.usbread(1))[0] + curpos+=size + checksum = unpack(">H", self.usbread(2))[0] self.debug("Checksum: %04X" % checksum) - self.usbwrite(self.Rsp.ACK) if length > bytestoread: rpos = length - bytestoread else: rpos = 0 + self.usbwrite(self.Rsp.ACK) self.mtk.daloader.progress.show_progress("Read", rpos, length, display) self.mtk.daloader.progress.show_progress("Read", length, length, display) rq.put(None) worker.join(60) - return True + return b"" else: buffer = bytearray() bytestoread = length diff --git a/mtkclient/Library/DA/legacy/dalegacy_param.py b/mtkclient/Library/DA/legacy/dalegacy_param.py old mode 100644 new mode 100755 diff --git a/mtkclient/Library/DA/legacy/extension/__init__.py b/mtkclient/Library/DA/legacy/extension/__init__.py old mode 100644 new mode 100755 diff --git a/mtkclient/Library/DA/legacy/extension/legacy.py b/mtkclient/Library/DA/legacy/extension/legacy.py old mode 100644 new mode 100755 index 6be52cc..8011ccd --- a/mtkclient/Library/DA/legacy/extension/legacy.py +++ b/mtkclient/Library/DA/legacy/extension/legacy.py @@ -1,4 +1,5 @@ import os +import sys from struct import unpack, pack from mtkclient.Library.settings import hwparam @@ -219,6 +220,31 @@ class legacyext(metaclass=LogBase): return None def generate_keys(self): + if self.config.hwcode in [0x2601,0x6572]: + base = 0x11141000 + elif self.config.hwcode==0x6261: + base = 0x70000000 + elif self.config.hwcode in [0x8172,0x8176]: + base = 0x122000 + else: + base = 0x100000 + data = b"".join([pack(" bytes: + return self.custom_read(addr,length) \ No newline at end of file diff --git a/mtkclient/Library/DA/mtk_da_handler.py b/mtkclient/Library/DA/mtk_da_handler.py old mode 100644 new mode 100755 index 9e0bb6b..e12d5c9 --- a/mtkclient/Library/DA/mtk_da_handler.py +++ b/mtkclient/Library/DA/mtk_da_handler.py @@ -33,7 +33,7 @@ class DA_handler(metaclass=LogBase): def dump_preloader_ram(self): try: - data = b"".join([pack(" rsectors: self.error(f"Partition {partition} only has {rsectors}, you were using {sectors}. " + f"Aborting") @@ -494,7 +508,7 @@ class DA_handler(metaclass=LogBase): while sectors: sectorsize = sectors * self.mtk.daloader.daconfig.pagesize wsize = min(sectorsize, 0x200000) - if self.mtk.daloader.writeflash(addr=sector * self.mtk.daloader.daconfig.pagesize, + if self.mtk.daloader.writeflash(addr=sector * self.config.pagesize, length=wsize, filename=None, wdata=wipedata[:wsize], @@ -504,8 +518,8 @@ class DA_handler(metaclass=LogBase): f"sector count {str(sectors)}.") error = True break - sectors -= (wsize // self.mtk.daloader.daconfig.pagesize) - sector += (wsize // self.mtk.daloader.daconfig.pagesize) + sectors -= (wsize // self.config.pagesize) + sector += (wsize // self.config.pagesize) if not error: print( f"Formatted sector {str(rpartition.sector)} with " + @@ -518,7 +532,7 @@ class DA_handler(metaclass=LogBase): pos = 0 for partitionname in partitions: self.mtk.daloader.formatflash(addr=pos, - length=min(sectors * self.mtk.daloader.daconfig.pagesize, 0xF000000), + length=min(sectors * self.config.pagesize, 0xF000000), partitionname=partitionname, parttype=parttype, display=True) @@ -545,9 +559,15 @@ class DA_handler(metaclass=LogBase): efuseconfig = efuse(base, hwcode) for idx in range(len(efuseconfig.efuses)): addr = efuseconfig.efuses[idx] - data = bytearray(self.mtk.daloader.peek(addr=addr, length=4)) + if addr < 0x1000: + data = int.to_bytes(addr, 4, 'little') + else: + data = bytearray(self.mtk.daloader.peek(addr=addr, length=4)) self.info(f"EFuse Idx {hex(idx)}: {data.hex()}") + def da_brom(self, filename:str): + return self.mtk.daloader.dump_brom(filename) + def da_peek(self, addr: int, length: int, filename: str): bytestoread = length pos = 0 @@ -716,7 +736,7 @@ class DA_handler(metaclass=LogBase): elif cmd == "da": subcmd = args.subcmd if subcmd is None: - print("Available da cmds are: [peek, poke, generatekeys, seccfg, rpmb, meta, memdump, efuse]") + print("Available da cmds are: [peek, poke, generatekeys, seccfg, rpmb, meta, memdump, efuse, dumpbrom]") return if subcmd == "peek": addr = getint(args.address) @@ -760,6 +780,9 @@ class DA_handler(metaclass=LogBase): self.da_poke(addr=addr, data=data, filename=filename) elif subcmd == "generatekeys": mtk.daloader.keys() + elif subcmd == "dumpbrom": + filename = f"brom_{hex(mtk.daloader.config.hwcode)[2:]}.bin" + mtk.daloader.dump_brom(filename=filename) elif subcmd == "efuse": self.da_efuse() elif subcmd == "seccfg": diff --git a/mtkclient/Library/DA/mtk_daloader.py b/mtkclient/Library/DA/mtk_daloader.py index b8901d2..1d0f9cb 100755 --- a/mtkclient/Library/DA/mtk_daloader.py +++ b/mtkclient/Library/DA/mtk_daloader.py @@ -17,11 +17,13 @@ from mtkclient.Library.DA.xflash.xflash_lib import DAXFlash from mtkclient.config.brom_config import damodes from mtkclient.Library.DA.xflash.extension.xflash import xflashext from mtkclient.Library.DA.legacy.extension.legacy import legacyext +from mtkclient.Library.DA.xml.extension.v6 import xmlflashext from mtkclient.Library.settings import hwparam class DAloader(metaclass=LogBase): def __init__(self, mtk, loglevel=logging.INFO): + self.patch = False self.__logger = logsetup(self, self.__logger, loglevel, mtk.config.gui) self.mtk = mtk self.config = mtk.config @@ -36,7 +38,6 @@ class DAloader(metaclass=LogBase): self.rword = self.mtk.port.rword self.daconfig = DAconfig(mtk=self.mtk, loader=self.mtk.config.loader, preloader=self.mtk.config.preloader, loglevel=loglevel) - self.hwparam = hwparam(mtk.config.meid) self.progress = progress(self.daconfig.pagesize, self.mtk.config.guiprogress) self.xft = None self.lft = None @@ -58,7 +59,7 @@ class DAloader(metaclass=LogBase): config["socid"] = hexlify(self.config.socid).decode('utf-8') config["flashtype"] = self.daconfig.flashtype config["flashsize"] = self.daconfig.flashsize - if not self.mtk.config.chipconfig.damode == damodes.XFLASH: + if not self.mtk.config.chipconfig.damode == damodes.XFLASH and not self.mtk.config.chipconfig.damode == damodes.XML: config["m_emmc_ua_size"] = self.da.emmc.m_emmc_ua_size config["m_emmc_boot1_size"] = self.da.emmc.m_emmc_boot1_size config["m_emmc_boot2_size"] = self.da.emmc.m_emmc_boot2_size @@ -70,19 +71,45 @@ class DAloader(metaclass=LogBase): open(".state", "w").write(json.dumps(config)) - def compute_hash_pos(self, da1, da2, da2sig_len): + def compute_hash_pos(self, da1, da2, da1sig_len, da2sig_len, v6): hashlen = len(da2) - da2sig_len - hashmode, idx = self.calc_da_hash(da1, da2[:hashlen]) if idx == -1: hashlen = len(da2) hashmode, idx = self.calc_da_hash(da1, da2[:hashlen]) - if idx == -1: - self.error("Hash computation failed.") - return None, None, None + if idx == -1 and not v6: + hashlen = len(da2) - da2sig_len + idx, hashmode = self.find_da_hash_V5(da1) + elif idx == -1 and v6: + hashlen = len(da2) - da2sig_len + idx, hashmode = self.find_da_hash_V6(da1, da1sig_len) + if idx == -1: + self.error("Hash computation failed.") + return None, None, None return idx, hashmode, hashlen return idx, hashmode, hashlen + def find_da_hash_V6(self, da1, siglen): + pos = len(da1)-siglen-0x30 + hash = da1[pos:pos+0x30] + if hash[-4:] == b"\x00\x00\x00\x00": + return pos, 2 + return -1, -1 + + def find_da_hash_V5(self, da1): + idx1 = da1.find(b"MMU MAP: VA") + if idx1 != -1: + hashed = da1[idx1 - 0x30:idx1] + if hashed[-4:] == b"\x00\x00\x00\x00": + self.debug(f"SHA256({hashed[:0x20].hex()})") + return idx1-0x30, 2 + else: + self.debug(f"SHA1({hashed[-0x14:].hex()})") + return idx1-0x14, 1 + else: + self.debug(f"Error: No hash found") + return -1, -1 + def calc_da_hash(self, da1, da2): hashdigest = hashlib.sha1(da2).digest() hashdigest256 = hashlib.sha256(da2).digest() @@ -100,7 +127,7 @@ class DAloader(metaclass=LogBase): dahash = hashlib.sha1(da2[:hashlen]).digest() elif hashmode == 2: dahash = hashlib.sha256(da2[:hashlen]).digest() - orighash=da1[hashpos:hashpos + len(dahash)] + orighash = da1[hashpos:hashpos + len(dahash)] da1[hashpos:hashpos + len(dahash)] = dahash return da1 @@ -121,14 +148,15 @@ class DAloader(metaclass=LogBase): elif config["flashmode"] == "XML": self.mtk.config.chipconfig.damode = damodes.XML self.flashmode = damodes.XML - self.config.init_hwcode(self.config.hwcode) + if self.config.meid is not None: + self.config.hwparam = hwparam(self.config.meid.hex(), self.mtk.config.hwparam_path) if self.flashmode == damodes.XML: self.da = DAXML(self.mtk, self.daconfig, self.loglevel) self.daconfig.flashtype = config["flashtype"] self.daconfig.flashsize = config["flashsize"] self.da.reinit() - self.xmlft = None + self.xmlft = xmlflashext(self.mtk, self.da, self.loglevel) self.xft = None self.lft = None if self.flashmode == damodes.XFLASH: @@ -161,6 +189,15 @@ class DAloader(metaclass=LogBase): return True return False + def patch_da2(self, da2): + if self.flashmode == damodes.XFLASH: + return self.xft.patch_da2(da2) + elif self.flashmode == damodes.LEGACY: + return self.lft.patch_da2(da2) + elif self.flashmode == damodes.XML: + return self.xmlft.patch_da2(da2) + return False + def set_da(self): self.flashmode = damodes.LEGACY if self.mtk.config.plcap is not None: @@ -174,13 +211,16 @@ class DAloader(metaclass=LogBase): self.flashmode = damodes.XML if self.flashmode == damodes.XFLASH: self.da = DAXFlash(self.mtk, self.daconfig, self.loglevel) + self.da.patch = self.patch self.xft = xflashext(self.mtk, self.da, self.loglevel) elif self.flashmode == damodes.LEGACY: self.da = DALegacy(self.mtk, self.daconfig, self.loglevel) + self.da.patch = self.patch self.lft = legacyext(self.mtk, self.da, self.loglevel) elif self.flashmode == damodes.XML: - self.da = DAXML(self.mtk,self.daconfig,self.loglevel) - self.xmlft = None + self.da = DAXML(self.mtk, self.daconfig, self.loglevel) + self.da.patch = self.patch + self.xmlft = xmlflashext(self.mtk, self.da, self.loglevel) def setmetamode(self, porttype: str): if self.mtk.config.chipconfig.damode == damodes.XFLASH: @@ -196,31 +236,44 @@ class DAloader(metaclass=LogBase): return False def detect_partition(self, partitionname, parttype=None): - fpartitions = [] - data, guid_gpt = self.da.partition.get_gpt(self.mtk.config.gpt_settings, parttype) - if guid_gpt is None: + if self.partition_table_category() == "GPT": + fpartitions = [] + data, guid_gpt = self.da.partition.get_gpt(self.mtk.config.gpt_settings, parttype) + if guid_gpt is None: + return [False, fpartitions] + else: + for partition in guid_gpt.partentries: + fpartitions.append(partition) + if partition.name.lower() == partitionname.lower(): + return [True, partition] return [False, fpartitions] else: - for partition in guid_gpt.partentries: - fpartitions.append(partition) - if partition.name.lower() == partitionname.lower(): - return [True, partition] - return [False, fpartitions] + data, partitions = self.da.partition.read_pmt() + return [True, partitions] def get_partition_data(self, parttype=None): - fpartitions = [] - data, guid_gpt = self.da.partition.get_gpt(self.mtk.config.gpt_settings, parttype) - if guid_gpt is None: - return [False, fpartitions] + if self.partition_table_category() == "GPT": + fpartitions = [] + data, guid_gpt = self.da.partition.get_gpt(self.mtk.config.gpt_settings, parttype) + if guid_gpt is None: + return [False, fpartitions] + else: + return guid_gpt.partentries else: - return guid_gpt.partentries + data, partitions = self.da.partition.read_pmt() + return [True, partitions] def get_gpt(self, parttype=None) -> tuple: - fpartitions = [] - data, guid_gpt = self.da.partition.get_gpt(self.mtk.config.gpt_settings, parttype) - if guid_gpt is None: - return False, fpartitions - return data, guid_gpt + if self.partition_table_category() == "GPT": + fpartitions = [] + data, guid_gpt = self.da.partition.get_gpt(self.mtk.config.gpt_settings, parttype) + if guid_gpt is None: + return False, fpartitions + return data, guid_gpt + else: + data, partitions = self.da.partition.read_pmt() + return data, partitions + def upload(self): return self.da.upload_da1() @@ -239,6 +292,11 @@ class DAloader(metaclass=LogBase): self.set_da() return self.da.upload_da() + def boot_to(self, addr, data, display=True, timeout=0.5): + if self.da.boot_to(addr, data): + return True + return False + def writeflash(self, addr, length, filename, offset=0, parttype=None, wdata=None, display=True): return self.da.writeflash(addr=addr, length=length, filename=filename, offset=offset, parttype=parttype, wdata=wdata, display=display) @@ -259,26 +317,68 @@ class DAloader(metaclass=LogBase): def peek(self, addr: int, length: int): if self.flashmode == damodes.XFLASH: return self.xft.custom_read(addr=addr, length=length) - if self.flashmode == damodes.LEGACY: + elif self.flashmode == damodes.LEGACY: return self.lft.custom_read(addr=addr, length=length) + elif self.flashmode == damodes.XML: + return self.xmlft.custom_read(addr=addr, length=length) + + def peek_reg(self, addr: int, length: int): + if self.flashmode == damodes.XFLASH: + return self.xft.custom_read_reg(addr=addr, length=length) + elif self.flashmode == damodes.LEGACY: + return self.lft.custom_read_reg(addr=addr, length=length) + elif self.flashmode == damodes.XML: + return self.xmlft.custom_read_reg(addr=addr, length=length) + + def dump_brom(self, filename): + rm = None + if self.flashmode == damodes.XFLASH: + rm = self.xft.readmem + elif self.flashmode == damodes.LEGACY: + rm = self.lft.readmem + elif self.flashmode == damodes.XML: + rm = self.xmlft.readmem + + pg = progress(4) + with open(filename, "wb") as wf: + length = 0x200000 + bytesread = 0 + for addr in range(0x0, length, 0x40): + tmp = rm(addr, 0x10) + bytesread += 0x40 + pg.show_progress("Dump:", bytesread, length) + dtmp = b"".join([int.to_bytes(val, 4, 'little') for val in tmp]) + wf.write(dtmp) + pg.show_progress("Dump:", length, length) + + def partition_table_category(self): + #if self.flashmode == damodes.XFLASH: + # return self.xft.get_partition_table_category() + return "GPT" def poke(self, addr: int, data: bytes or bytearray): if self.flashmode == damodes.XFLASH: return self.xft.custom_write(addr=addr, data=data) elif self.flashmode == damodes.LEGACY: return self.lft.custom_write(addr=addr, data=data) + elif self.flashmode == damodes.XML: + return self.xmlft.custom_write(addr=addr, data=data) def keys(self): if self.flashmode == damodes.XFLASH: return self.xft.generate_keys() elif self.flashmode == damodes.LEGACY: return self.lft.generate_keys() + elif self.flashmode == damodes.XML: + return self.xmlft.generate_keys() def readfuses(self): if self.flashmode == damodes.XFLASH: - return self.xft.readfuses() + pass elif self.flashmode == damodes.LEGACY: - return self.lft.readfuses() + pass + elif self.flashmode == damodes.XML: + return self.xmlft.readfuses() def is_patched(self): return self.da.patch @@ -288,21 +388,29 @@ class DAloader(metaclass=LogBase): return self.xft.seccfg(lockflag) elif self.flashmode == damodes.LEGACY: return self.lft.seccfg(lockflag) + elif self.flashmode == damodes.XML: + return self.xmlft.seccfg(lockflag) def read_rpmb(self, filename=None): if self.flashmode == damodes.XFLASH: return self.xft.read_rpmb(filename) - self.error("Device is not in xflash mode, cannot run read rpmb cmd.") + elif self.flashmode == damodes.XML: + return self.xmlft.read_rpmb(filename) + self.error("Device is not in xflash/xml mode, cannot run read rpmb cmd.") return False def write_rpmb(self, filename=None): if self.flashmode == damodes.XFLASH: return self.xft.write_rpmb(filename) - self.error("Device is not in xflash mode, cannot run write rpmb cmd.") + elif self.flashmode == damodes.XML: + return self.xmlft.write_rpmb(filename) + self.error("Device is not in xflash/xml mode, cannot run write rpmb cmd.") return False def erase_rpmb(self): if self.flashmode == damodes.XFLASH: return self.xft.erase_rpmb() - self.error("Device is not in xflash mode, cannot run erase rpmb cmd.") + if self.flashmode == damodes.XML: + return self.xmlft.erase_rpmb() + self.error("Device is not in xflash/xml mode, cannot run erase rpmb cmd.") return False diff --git a/mtkclient/Library/DA/xflash/__init__.py b/mtkclient/Library/DA/xflash/__init__.py old mode 100644 new mode 100755 diff --git a/mtkclient/Library/DA/xflash/extension/__init__.py b/mtkclient/Library/DA/xflash/extension/__init__.py old mode 100644 new mode 100755 diff --git a/mtkclient/Library/DA/xflash/extension/xflash.py b/mtkclient/Library/DA/xflash/extension/xflash.py old mode 100644 new mode 100755 index 64295f6..076ba47 --- a/mtkclient/Library/DA/xflash/extension/xflash.py +++ b/mtkclient/Library/DA/xflash/extension/xflash.py @@ -1,4 +1,5 @@ import os +import sys from struct import unpack, pack from mtkclient.config.payloads import pathconfig @@ -67,9 +68,10 @@ class xflashext(metaclass=LogBase): daextensions = os.path.join(self.pathconfig.get_payloads_path(), "da_x.bin") if os.path.exists(daextensions): daextdata = bytearray(open(daextensions, "rb").read()) - # open("out" + hex(self.da2address) + ".da", "wb").write(da2) - register_cmd = find_binary(self.da2, b"\x38\xB5\x05\x46\x0C\x20") - # sec_enc_seccfg = find_binary(self.da2, b"\x0E\x4B\x70\xB5\x06\x46") + + register_devctrl = find_binary(self.da2, b"\x38\xB5\x05\x46\x0C\x20") + + ####################### EMMC ########################################## mmc_get_card = find_binary(self.da2, b"\x4B\x4F\xF4\x3C\x72") if mmc_get_card is not None: mmc_get_card -= 1 @@ -92,24 +94,24 @@ class xflashext(metaclass=LogBase): if mmc_rpmb_send_command is None: mmc_rpmb_send_command = find_binary(self.da2, b"\x2D\xE9\xF0\x41\x4F\xF6\xFD\x74") - register_ptr = daextdata.find(b"\x11\x11\x11\x11") - mmc_get_card_ptr = daextdata.find(b"\x22\x22\x22\x22") - mmc_set_part_config_ptr = daextdata.find(b"\x33\x33\x33\x33") - mmc_rpmb_send_command_ptr = daextdata.find(b"\x44\x44\x44\x44") - ufshcd_queuecommand_ptr = daextdata.find(b"\x55\x55\x55\x55") - ufshcd_get_free_tag_ptr = daextdata.find(b"\x66\x66\x66\x66") - ptr_g_ufs_hba_ptr = daextdata.find(b"\x77\x77\x77\x77") - + ####################### UFS ########################################## + # ptr is right after ufshcd_probe_hba and at the beginning g_ufs_hba = None ptr_g_ufs_hba = find_binary(self.da2, b"\x20\x46\x0B\xB0\xBD\xE8\xF0\x83\x00\xBF") - if ptr_g_ufs_hba is None: - ptr_g_ufs_hba = find_binary(self.da2, b"\x21\x46\x02\xF0\x02\xFB\x1B\xE6\x00\xBF") - if ptr_g_ufs_hba is not None: - g_ufs_hba = int.from_bytes(self.da2[ptr_g_ufs_hba + 10 + 0x8:ptr_g_ufs_hba + 10 + 0x8 + 4], - 'little') - else: + if ptr_g_ufs_hba is not None: g_ufs_hba = int.from_bytes(self.da2[ptr_g_ufs_hba + 10:ptr_g_ufs_hba + 10 + 4], 'little') - # open("da2_"+hex(self.da2address)+".bin","wb").write(self.da2) + else: + # 6833 -> ufshcd_probe_hba + ptr_g_ufs_hba = find_binary(self.da2, b"\x20\x46\x0D\xB0\xBD\xE8\xF0\x83") + if ptr_g_ufs_hba is not None: + g_ufs_hba = int.from_bytes(self.da2[ptr_g_ufs_hba + 8:ptr_g_ufs_hba + 8 + 4], 'little') + else: + ptr_g_ufs_hba = find_binary(self.da2, b"\x21\x46\x02\xF0\x02\xFB\x1B\xE6\x00\xBF") + if ptr_g_ufs_hba is not None: + g_ufs_hba = int.from_bytes(self.da2[ptr_g_ufs_hba + 10 + 0x8:ptr_g_ufs_hba + 10 + 0x8 + 4], + 'little') + + if ptr_g_ufs_hba is not None: ufshcd_get_free_tag = find_binary(self.da2, b"\xB5.\xB1\x90\xF8") ufshcd_queuecommand = find_binary(self.da2, b"\x2D\xE9\xF8\x43\x01\x27") @@ -118,11 +120,19 @@ class xflashext(metaclass=LogBase): ufshcd_get_free_tag = None ufshcd_queuecommand = None + register_ptr = daextdata.find(b"\x11\x11\x11\x11") + mmc_get_card_ptr = daextdata.find(b"\x22\x22\x22\x22") + mmc_set_part_config_ptr = daextdata.find(b"\x33\x33\x33\x33") + mmc_rpmb_send_command_ptr = daextdata.find(b"\x44\x44\x44\x44") + ufshcd_queuecommand_ptr = daextdata.find(b"\x55\x55\x55\x55") + ufshcd_get_free_tag_ptr = daextdata.find(b"\x66\x66\x66\x66") + ptr_g_ufs_hba_ptr = daextdata.find(b"\x77\x77\x77\x77") + if register_ptr != -1 and mmc_get_card_ptr != -1: - if register_cmd: - register_cmd = register_cmd + self.da2address | 1 + if register_devctrl: + register_devctrl = register_devctrl + self.da2address | 1 else: - register_cmd = 0 + register_devctrl = 0 if mmc_get_card: mmc_get_card = mmc_get_card + self.da2address | 1 else: @@ -150,7 +160,7 @@ class xflashext(metaclass=LogBase): g_ufs_hba = 0 # Patch the addr - daextdata[register_ptr:register_ptr + 4] = pack(" bytes: + data=bytearray() + for pos in range(addr,addr+length,4): + tmp=self.custom_readregister(pos) + if tmp==b"": + break + data.extend(tmp.to_bytes(4,'little')) + return data + def generate_keys(self): + if self.config.hwcode in [0x2601,0x6572]: + base = 0x11141000 + elif self.config.hwcode==0x6261: + base = 0x70000000 + elif self.config.hwcode in [0x8172,0x8176]: + base = 0x122000 + else: + base = 0x100000 + if self.config.meid is None: + try: + data = b"".join([pack(" tuple: - return b"", [] + return self.partition.get_pmt() def send_param(self, params): if isinstance(params, bytes): @@ -247,22 +264,22 @@ class DAXFlash(metaclass=LogBase): if self.usbwrite(data[pos:pos + 64]): pos += 64 bytestowrite -= 64 - status = self.status() + status = self.status() # 0xC0070004 if status == 0x0: return True else: self.error(f"Error on sending data: {self.eh.status(status)}") return False - def boot_to(self, at_address, da, display=True, timeout=0.5): # =0x40000000 + def boot_to(self, addr, da, display=True, timeout=0.5): # =0x40000000 if self.xsend(self.Cmd.BOOT_TO): if self.status() == 0: - param = pack(" 0: @@ -973,17 +1001,20 @@ class DAXFlash(metaclass=LogBase): da2sig_len = self.daconfig.da_loader.region[2].m_sig_len bootldr.seek(da2offset) da2 = bootldr.read(self.daconfig.da_loader.region[2].m_len) - - hashaddr, hashmode, hashlen = self.mtk.daloader.compute_hash_pos(da1, da2, da2sig_len) - if hashaddr is not None: - da1 = self.xft.patch_da1(da1) - da2 = self.xft.patch_da2(da2) - da1 = self.mtk.daloader.fix_hash(da1, da2, hashaddr, hashmode, hashlen) - self.patch = True - self.daconfig.da2 = da2[:hashlen] + if self.patch: + hashaddr, hashmode, hashlen = self.mtk.daloader.compute_hash_pos(da1, da2, da1sig_len, da2sig_len,self.daconfig.da_loader.v6) + if hashaddr is not None: + da1 = self.xft.patch_da1(da1) + da2 = self.xft.patch_da2(da2) + da1 = self.mtk.daloader.fix_hash(da1, da2, hashaddr, hashmode, hashlen) + self.patch = True + self.daconfig.da2 = da2[:hashlen] + else: + self.patch = False + self.daconfig.da2 = da2[:-da2sig_len] else: + self.patch = False self.daconfig.da2 = da2[:-da2sig_len] - if self.mtk.preloader.send_da(da1address, da1size, da1sig_len, da1): self.info("Successfully uploaded stage 1, jumping ..") if self.mtk.preloader.jump_da(da1address): @@ -993,6 +1024,8 @@ class DAXFlash(metaclass=LogBase): return False else: self.sync() + #if self.kamakiri_pl is not None: + # self.kamakiri_pl.bypass2ndDA() self.setup_env() self.setup_hw_init() res = self.xread() @@ -1008,7 +1041,6 @@ class DAXFlash(metaclass=LogBase): return False def reinit(self, display=False): - self.config.hwparam = hwparam(self.config.meid, self.config.hwparam_path) self.config.sram, self.config.dram = self.get_ram_info() self.emmc = self.get_emmc_info(display) self.nand = self.get_nand_info(display) @@ -1055,6 +1087,9 @@ class DAXFlash(metaclass=LogBase): self.config.set_gui_status(self.config.tr("Connected to stage2 with higher speed")) def upload_da(self): + if not self.mtk.daloader.patch: + if self.kamakiri_pl is not None: + self.kamakiri_pl.initbrom() if self.upload_da1(): self.get_expire_date() self.set_reset_key(0x68) @@ -1109,21 +1144,24 @@ class DAXFlash(metaclass=LogBase): self.info("Uploading stage 2...") with open(self.daconfig.loader, 'rb') as bootldr: stage = stage + 1 - loaded = self.boot_to(self.daconfig.da_loader.region[stage].m_start_addr, self.daconfig.da2) + if not self.mtk.daloader.patch: + loaded = self.boot_to(self.daconfig.da_loader.region[stage].m_start_addr, self.daconfig.da2) + else: + loaded = self.boot_to(self.daconfig.da_loader.region[stage].m_start_addr, self.daconfig.da2) if loaded: self.info("Successfully uploaded stage 2") self.reinit(True) - self.config.hwparam.writesetting("hwcode", hex(self.config.hwcode)) - daextdata = self.xft.patch() if daextdata is not None: self.daext = False - if self.boot_to(at_address=0x68000000, da=daextdata): + if self.boot_to(addr=0x68000000, da=daextdata): ret = self.send_devctrl(XCmd.CUSTOM_ACK) status = self.status() if status == 0x0 and unpack(" 0: + with open(filename, "wb") as wf: + for sector in range(sectors): + if display: + progressbar.show_progress("RPMB read", sector * 0x100, sectors * 0x100, display) + data = self.custom_rpmb_read(sector=sector, ufs=ufs) + if data == b"": + self.error("Couldn't read rpmb.") + return False + wf.write(data) + self.info("Done reading rpmb to " + filename) + return True + return False + + def write_rpmb(self, filename=None, display=True): + progressbar = progress(1, self.mtk.config.guiprogress) + if filename is None: + self.error("Filename has to be given for writing to rpmb") + return False + if not os.path.exists(filename): + self.error(f"Couldn't find {filename} for writing to rpmb.") + return False + ufs = False + sectors = 0 + if self.xflash.emmc.rpmb_size != 0: + sectors = self.xflash.emmc.rpmb_size // 0x100 + elif self.xflash.ufs.block_size != 0: + sectors = (512 * 256) + if self.custom_rpmb_init(): + if sectors > 0: + with open(filename, "rb") as rf: + for sector in range(sectors): + if display: + progressbar.show_progress("RPMB written", sector * 0x100, sectors * 0x100, display) + if not self.custom_rpmb_write(sector=sector, data=rf.read(0x100), ufs=ufs): + self.error(f"Couldn't write rpmb at sector {sector}.") + return False + self.info(f"Done reading writing {filename} to rpmb") + return True + return False + + def erase_rpmb(self, display=True): + progressbar = progress(1, self.mtk.config.guiprogress) + ufs = False + sectors = 0 + if self.xflash.emmc.rpmb_size != 0: + sectors = self.xflash.emmc.rpmb_size // 0x100 + elif self.xflash.ufs.block_size != 0: + sectors = (512 * 256) + if self.custom_rpmb_init(): + if sectors > 0: + for sector in range(sectors): + if display: + progressbar.show_progress("RPMB erased", sector * 0x100, sectors * 0x100, display) + if not self.custom_rpmb_write(sector=sector, data=b"\x00" * 0x100, ufs=ufs): + self.error(f"Couldn't erase rpmb at sector {sector}.") + return False + self.info(f"Done erasing rpmb") + return True + return False + + def custom_read(self, addr, length) -> bytes: + xmlcmd = self.xflash.Cmd.create_cmd("CUSTOMMEMR") + if self.xsend(xmlcmd): + result = self.xflash.get_response() + if result == "OK": + # DATA + self.xsend(data=addr, is64bit=True) + self.xsend(length) + data = self.xflash.get_response(raw=True) + # CMD:END + result = self.xflash.get_response() + self.xflash.ack() + # CMD:START + result = self.xflash.get_response() + self.xflash.ack() + return data + return b"" + + def custom_read_reg(self, addr: int, length: int) -> bytes: + data = bytearray() + for pos in range(addr, addr + length, 4): + tmp = self.custom_readregister(pos) + if tmp == b"": + break + data.extend(tmp.to_bytes(4, 'little')) + return data + + def custom_readregister(self, addr) -> (int, None): + xmlcmd = self.xflash.Cmd.create_cmd("CUSTOMREGR") + if self.xsend(xmlcmd): + result = self.xflash.get_response() + if result == "OK": + # DATA + self.xsend(data=addr) + data = self.xflash.get_response(raw=True) + # CMD:END + result = self.xflash.get_response() + self.xflash.ack() + # CMD:START + result = self.xflash.get_response() + self.xflash.ack() + return int.from_bytes(data, 'little') + return None + + def custom_write(self, addr, data) -> bool: + xmlcmd = self.xflash.Cmd.create_cmd("CUSTOMMEMR") + if self.xsend(xmlcmd): + result = self.xflash.get_response() + if result == "OK": + # DATA + self.xsend(data=addr, is64bit=True) + self.xsend(len(data)) + self.xsend(data) + # CMD:END + result = self.xflash.get_response() + self.xflash.ack() + # CMD:START + result = self.xflash.get_response() + self.xflash.ack() + return True + return False + + def custom_writeregister(self, addr: int, data: int): + xmlcmd = self.xflash.Cmd.create_cmd("CUSTOMREGW") + if self.xsend(xmlcmd): + result = self.xflash.get_response() + if result == "OK": + # DATA + self.xsend(addr) + self.xsend(data) + # CMD:END + result = self.xflash.get_response() + self.xflash.ack() + # CMD:START + result = self.xflash.get_response() + self.xflash.ack() + return True + return False + + def readmem(self, addr, dwords=1): + res = [] + if dwords < 0x20: + for pos in range(dwords): + val = self.custom_readregister(addr + pos * 4) + if val == b"": + return False + if dwords == 1: + self.debug(f"RX: {hex(addr + (pos * 4))} -> " + hex(val)) + return val + res.append(val) + else: + res = self.custom_read(addr, dwords * 4) + res = [unpack(" " + bytearray(b"".join(pack(" " + hex(val)) + if not self.custom_writeregister(addr + pos, val): + return False + pos += 4 + else: + dat = b"".join([pack("> 12) & 0xF) << 16 | (register << 14) | offset & 0xFFF + offset = (offset >> 16) + shift = 4 + high = (((offset & 0xFFFF) >> 12) & 0xF) << 16 | (register << 14) | offset & 0xFFF | (shift << 20) + first_op = (0xE3 << 24) + low + second_op = (0xE3 << 24) + high + return first_op, second_op + + +def op_mov_to_offset(first_op, second_op, register): + reglo = (first_op & 0xF000) >> 12 + reghi = (second_op & 0xF000) >> 12 + shiftlo = (first_op & 0xF00000) >> 20 + shifthi = (second_op & 0xF00000) >> 20 + hi = ((second_op & 0xF0000) >> 4 | second_op & 0xFFF) << shifthi * 4 + lo = ((first_op & 0xF0000) >> 4 | first_op & 0xFFF) << shiftlo * 4 + if reglo == reghi == register: + return hi | lo + return None + + +if __name__ == "__main__": + with open("/home/bjk/Projects/mtkclient_github/Research/new_loaders/MT6789_oppo_realme_10/normal/da2_40000000.bin", + "rb") as rf: + data = bytearray(rf.read()) + idx = data.find(b"\x00\x00\x94\xE5\x34\x10\x90\xE5\x01\x00\x11\xE3\x03\x00\x00\x0A") + base = 0x40000000 + if idx != -1: + instr1 = int.from_bytes(data[idx - 0x8:idx - 0x4], 'little') + instr2 = int.from_bytes(data[idx - 0x4:idx], 'little') + g_ufs_ptr = op_mov_to_offset(instr1, instr2, 4) diff --git a/mtkclient/Library/DA/xml/xml_cmd.py b/mtkclient/Library/DA/xml/xml_cmd.py old mode 100644 new mode 100755 index 789af4c..6ea3b7d --- a/mtkclient/Library/DA/xml/xml_cmd.py +++ b/mtkclient/Library/DA/xml/xml_cmd.py @@ -1,22 +1,30 @@ import datetime +import sys from mtkclient.Library.utils import LogBase +class BootModes: + fastboot = "FASTBOOT" + meta = "META" + testmode = "ANDROID-TEST-MODE" + + class XMLCmd(metaclass=LogBase): def __init__(self, mtk): self.mtk = mtk + self.MAGIC = 0xFEEEEEEF - def create_cmd(self, cmd: str, arg: str = "", adv: str = ""): - args = f"""{arg}""" - cmd = f""" - - 1.0 - CMD:{cmd} - {args} - {adv} - """ + def create_cmd(self, cmd: str, content:dict=None, version="1.0"): + cmd = f"{version}CMD:{cmd}" + if content is not None: + for item in content: + cmd+=f"<{item}>" + for subitem in content[item]: + cmd+=f"{subitem}" + cmd+=f"" + cmd +="" return cmd ################ DA1 ###################### @@ -33,10 +41,14 @@ class XMLCmd(metaclass=LogBase): """ 1.0CMD:BOOT-TO0x400000000x40000000 MEM://0x7fe83c09a04c:0x50c78 """ - arg = f"""{hex(at_addr)} - {hex(jmp_addr)} - MEM://{hex(host_offset)}:{hex(length)}""" - cmd = self.create_cmd("BOOT-TO", arg) + content = { + "arg": [ + f"{hex(at_addr)}", + f"{hex(jmp_addr)}", + f"MEM://{hex(host_offset)}:{hex(length)}" + ] + } + cmd = self.create_cmd("BOOT-TO", content) return cmd """ @@ -47,40 +59,41 @@ class XMLCmd(metaclass=LogBase): def cmd_set_runtime_parameter(self, checksum_level: str = "NONE", battery_exist: str = "AUTO-DETECT", da_log_level: str = "INFO", log_channel: str = "UART", system_os: str = "LINUX", version: str = "1.1", initialize_dram: bool = True): - b""" - - - 1.1 - CMD:SET-RUNTIME-PARAMETER - - NONE - AUTO-DETECT - INFO - UART - LINUX - - - YES - - \x00 - """ - arg = f"""{checksum_level} - {da_log_level} - {log_channel} - {battery_exist} - {system_os}""" - if version is not None: - arg += f"""{version}""" + cmd=f""" + + 1.1 + CMD:SET-RUNTIME-PARAMETER + + {checksum_level} + {battery_exist} + {da_log_level} + {log_channel} + {system_os} + + + {"YES" if initialize_dram else "NO"} + +\x00""" + if initialize_dram is not None: + dram = "YES" if initialize_dram else "NO" + else: + dram = "YES" + content = { + "arg":[ + f"{checksum_level}", + f"{battery_exist}", + f"{da_log_level}", + f"{log_channel}", + f"{system_os}"], + "adv":[ + f"{dram}" + ] + } # checksum_level (NONE,USB,STORAGE,USB-STORAGE) # da_log_level (TRACE,DEBUG,INFO,WARN,ERROR) # log_channel (USB/UART) # battery_exist (YES,NO,AUTO-DETECT) - adv = "" - if initialize_dram is not None: - adv = f"""YES""" - else: - adv = f"""NO""" - cmd = self.create_cmd("SET-RUNTIME-PARAMETER", arg, adv) + cmd = self.create_cmd("SET-RUNTIME-PARAMETER", content, version) return cmd def cmd_host_supported_commands(self, @@ -88,21 +101,33 @@ class XMLCmd(metaclass=LogBase): """ 1.0CMD:HOST-SUPPORTED-COMMANDSCMD:DOWNLOAD-FILE^1@CMD:FILE-SYS-OPERATION^1@CMD:PROGRESS-REPORT^1@CMD:UPLOAD-FILE^1@\x00 """ - arg = f"""{host_capability}""" - cmd = self.create_cmd("HOST-SUPPORTED-COMMANDS", arg) + content = { + "arg": [ + f"{host_capability}" + ] + } + cmd = self.create_cmd("HOST-SUPPORTED-COMMANDS", content) return cmd def cmd_ram_test(self, function: str = "FLIP", start_address: int = 0x4000000, length: int = 0x100000, repeat: int = 0xA): if function == "FLIP": - arg = f"""FLIP - {hex(start_address)} - {hex(length)} - {hex(repeat)}""" + content = { + "arg": [ + f"FLIP", + f"{hex(start_address)}", + f"{hex(length)}", + f"{hex(repeat)}" + ] + } else: - arg = f"""CALIBRATION - ms-appdata:///local/calib.bin""" - cmd = self.create_cmd("RAM-TEST", arg) + content = { + "arg": [ + f"CALIBRATION", + f"ms-appdata:///local/calib.bin" + ] + } + cmd = self.create_cmd("RAM-TEST", content) resp = """ 1.0CMD:UPLOAD-FILECHK_NOWriteLocalFile%s0x%x 1.0CMD:PROGRESS-REPORTRAM test. @@ -112,9 +137,13 @@ class XMLCmd(metaclass=LogBase): return cmd def cmd_dram_repair(self, mem_offset: int = 0x10000, mem_length: int = 0x1000): - arg = f"""D:/dram.info - MEM://{mem_offset}:{mem_length}""" - cmd = self.create_cmd("DRAM-REPAIR", arg) + content = { + "arg": [ + f"D:/dram.info", + f"MEM://{mem_offset}:{mem_length}" + ] + } + cmd = self.create_cmd("DRAM-REPAIR", content) # INFO Result: SUCCEEDED, NO-NEED, FAILED return cmd @@ -130,8 +159,13 @@ class XMLCmd(metaclass=LogBase): """ - arg = f"""MEM://{hex(host_mem_offset)}:{hex(length)}""" - cmd = self.create_cmd("READ-PARTITION-TABLE", arg) + content = { + "arg": [ + f"MEM://{hex(host_mem_offset)}:{hex(length)}" + ] + } + + cmd = self.create_cmd("READ-PARTITION-TABLE", content) resp = """ @@ -164,20 +198,33 @@ class XMLCmd(metaclass=LogBase): """ 1.0CMD:CAN-HIGHER-USB-SPEEDMEM://0x7fe8463ed240:0x40 """ - arg = f"MEM://{hex(host_mem_offset)}:{hex(length)}" - cmd = self.create_cmd("CAN-HIGHER-USB-SPEED", arg) + content = { + "arg": [ + f"MEM://{hex(host_mem_offset)}:{hex(length)}" + ] + } + cmd = self.create_cmd("CAN-HIGHER-USB-SPEED", content) return cmd + def cmd_write_efuse(self): - arg = f"""ms-appdata:///local/efuse.xml""" - cmd = self.create_cmd("WRITE-EFUSE", arg) + content = { + "arg": [ + f"ms-appdata:///local/efuse.xml" + ] + } + cmd = self.create_cmd("WRITE-EFUSE", content) resp = """ 1.0CMD:DOWNLOAD-FILE%s%s%s0x%x """ return cmd def cmd_read_efuse(self): - arg = f"""ms-appdata:///local/efuse.xml""" - cmd = self.create_cmd("READ-EFUSE", arg) + content = { + "arg": [ + f"ms-appdata:///local/efuse.xml" + ] + } + cmd = self.create_cmd("READ-EFUSE", content) resp = """ 1.0CMD:UPLOAD-FILE<"checksum>CHK_NO%s%s0x%x OK@0x%x (length) @@ -195,8 +242,12 @@ class XMLCmd(metaclass=LogBase): """ - arg = f"""MEM://{hex(host_mem_offset)}:{hex(length)}""" - cmd = self.create_cmd("GET-HW-INFO", arg) + content = { + "arg": [ + f"MEM://{hex(host_mem_offset)}:{hex(length)}" + ] + } + cmd = self.create_cmd("GET-HW-INFO", content) resp = """ #EMMC 1.20x%llx%d%s%s0x%x0x%llx0x%llx0x%llx0x%llx0000%s%s or #UFS @@ -208,24 +259,43 @@ class XMLCmd(metaclass=LogBase): """ return cmd + def cmd_set_boot_mode(self, mode:BootModes=BootModes.testmode, adb:bool=True, mobilelog:bool=True, connectuart:bool=False): + connect_type="UART" if connectuart else "USB" + mobilelog="ON" if mobilelog else "OFF" + adb="ON" if adb else "OFF" + content = { + "arg": [ + f"{mode}", + f"{connect_type}", + f"{mobilelog}", + f"{adb}" + ] + } + cmd = self.create_cmd("SET-BOOT-MODE", content) + def cmd_read_reg(self, bit_width: int = 32, base_address: int = 0x1000, mem_offset: int = 0x8000000, mem_length: int = 0x4): - arg = f"""{bit_width} - {hex(base_address)} - MEM://{hex(mem_offset)}:{hex(mem_length)}""" - cmd = self.create_cmd("READ-REGISTER", arg) - resp = """ - 1.0CMD:UPLOAD-FILE<"checksum>CHK_NO%s%s0x%x - OK@0x%x (length) - """ + content = { + "arg": [ + f"{bit_width}", + f"{hex(base_address)}", + f"MEM://{hex(mem_offset)}:{hex(mem_length)}" + ] + } + cmd = self.create_cmd("READ-REGISTER", content) return cmd + def cmd_write_reg(self, bit_width: int = 32, base_address: int = 0x1000, mem_offset: int = 0x8000000, mem_length: int = 0x4): - arg = f"""{bit_width} - {hex(base_address)} - MEM://{hex(mem_offset)}:{hex(mem_length)}""" - cmd = self.create_cmd("WRITE-REGISTER", arg) + content = { + "arg": [ + f"{bit_width}", + f"{hex(base_address)}", + f"MEM://{hex(mem_offset)}:{hex(mem_length)}" + ] + } + cmd = self.create_cmd("WRITE-REGISTER", content) return cmd def cmd_read_partition_name(self): @@ -248,9 +318,13 @@ class XMLCmd(metaclass=LogBase): """ - arg = f"""{function} - MEM://{hex(mem_offset)}:{hex(mem_length)}""" - cmd = self.create_cmd("EMMC-CONTROL", arg) + content = { + "arg": [ + f"{function}", + f"MEM://{hex(mem_offset)}:{hex(mem_length)}" + ] + } + cmd = self.create_cmd("EMMC-CONTROL", content) return cmd def cmd_reboot(self, disconnect: bool = False): @@ -258,100 +332,139 @@ class XMLCmd(metaclass=LogBase): action = "DISCONNECT" else: action = "IMMEDIATE" - arg = f"""{action}""" - cmd = self.create_cmd("REBOOT", arg) + content = { + "arg": [ + f"{action}", + ] + } + cmd = self.create_cmd("REBOOT", content) return cmd def cmd_write_partition(self, partition: str = "system", mem_offset: int = 0x8000000, mem_length: int = 0x100000): - arg = f"""{partition} - MEM://{hex(mem_offset)}:{hex(mem_length)}""" - cmd = self.create_cmd("WRITE-FLASH", arg) + content = { + "arg": [ + f"{partition}", + f"MEM://{hex(mem_offset)}:{hex(mem_length)}" + ] + } + cmd = self.create_cmd("WRITE-FLASH", content) return cmd def cmd_write_flash(self, partition: str = "EMMC-USER", offset: int = 0, mem_offset: int = 0x8000000, mem_length: int = 0x100000): - arg = f"""{partition} - {hex(offset)} - MEM://{hex(mem_offset)}:{hex(mem_length)}""" - cmd = self.create_cmd("WRITE-FLASH", arg) + content = { + "arg": [ + f"{partition}", + f"{hex(offset)}", + f"MEM://{hex(mem_offset)}:{hex(mem_length)}" + ] + } + cmd = self.create_cmd("WRITE-FLASH", content) return cmd def cmd_read_partition(self, partition: str = "system"): - arg = f"""{partition} - "C:/file.bin"""" - cmd = self.create_cmd("READ-PARTITION", arg) + content = { + "arg": [ + f"{partition}", + f"\"C:/file.bin\"" + ] + } + cmd = self.create_cmd("READ-PARTITION", content) return cmd def cmd_read_flash(self, partition: str = "EMMC-USER", offset: int = 0, length: int = 0x100000): - arg = f"""{partition} - {hex(offset)} - {hex(length)}""" - cmd = self.create_cmd("READ-FLASH", arg) + content = { + "arg": [ + f"{partition}", + f"{hex(offset)}", + f"{hex(length)}", + f"ROM_0" + ] + } + cmd = self.create_cmd("READ-FLASH", content) return cmd def cmd_flash_all(self): - arg = f"""/ - D:/scatter.xml""" - cmd = self.create_cmd("FLASH-ALL", arg) + content = { + "arg": [ + f"/", + f"D:/scatter.xml" + ] + } + cmd = self.create_cmd("FLASH-ALL", content) return cmd def cmd_erase_partition(self, partition: str = "system"): - arg = f"""{partition}""" - cmd = self.create_cmd("ERASE-PARTITION", arg) + content = { + "arg": [ + f"{partition}" + ] + } + cmd = self.create_cmd("ERASE-PARTITION", content) return cmd def cmd_erase_flash(self, partition: str = "EMMC-USER", offset: int = 0, length: int = 0x100000): - arg = f"""{partition} - {hex(offset)} - {hex(length)}""" - cmd = self.create_cmd("ERASE-FLASH", arg) + content = { + "arg": [ + f"{partition}", + f"{hex(offset)}", + f"{hex(length)}" + ] + } + cmd = self.create_cmd("ERASE-FLASH", content) return cmd def cmd_flash_update(self): - arg = f"""/ - D:/scatter.xml - D:/backup""" - cmd = self.create_cmd("FLASH-UPDATE", arg) + content = { + "arg": [ + f"/", + f"D:/scatter.xml", + f"D:/backup" + ] + } + cmd = self.create_cmd("FLASH-UPDATE", content) return cmd def cmd_write_partitions(self, partitions): flashlist = "" for partition in partitions: - flashlist += f"{partition}.img\n" - arg = f"""D:/scatter.xml - {flashlist}""" - cmd = self.create_cmd("WRITE-PARTITIONS", arg) - return cmd - - def cmd_set_boot_mode(self, boot_mode): - if boot_mode == "META": - arg = f"""META - WIFI - ON - ON""" - # ADB = (ON,UART,USB) - elif boot_mode == "FASTBOOT": - arg = f"""META""" - elif boot_mode == "ANDROID-TEST-MODE": - arg = f"""ANDROID-TEST-MODE""" - cmd = self.create_cmd("SET-BOOT-MODE", arg) + flashlist += f" {partition}.img\n" + content = { + "arg": [ + f"D:/scatter.xml", + f"{flashlist}" + ] + } + cmd = self.create_cmd("WRITE-PARTITIONS", content) return cmd def cmd_set_rsc(self, key: str = "k6885v1_64[op01]"): # runtime_switchable_config - arg = f"""{key} - ms-appdata:///local/RSC.bin""" - cmd = self.create_cmd("SET-RSC", arg) + content = { + "arg": [ + f"{key}", + f"ms-appdata:///local/RSC.bin" + ] + } + cmd = self.create_cmd("SET-RSC", content) return cmd def cmd_write_private_cert(self): - arg = f"""ms-appdata:///local/cert.bin""" - cmd = self.create_cmd("WRITE-PRIVATE-CERT", arg) + content = { + "arg": [ + f"ms-appdata:///local/cert.bin" + ] + } + cmd = self.create_cmd("WRITE-PRIVATE-CERT", content) return cmd def cmd_get_da_info(self, mem_offset: int = 0x2000000, mem_length: int = 0x20000): - arg = f"""MEM://{hex(mem_offset)}:{hex(mem_length)}""" - cmd = self.create_cmd("GET-DA-INFO", arg) + content = { + "arg": [ + f"MEM://{hex(mem_offset)}:{hex(mem_length)}" + ] + } + cmd = self.create_cmd("GET-DA-INFO", content) resp = """ 1.0CMD:UPLOAD-FILECHK_NOWriteLocalFile%s0x%x 1.02021May 24 2022:19:03:56" @@ -372,9 +485,13 @@ class XMLCmd(metaclass=LogBase): """ - arg = f"""{key} - MEM://{hex(host_mem_offset)}:{hex(length)}""" - cmd = self.create_cmd("GET-SYS-PROPERTY", arg) + content = { + "arg": [ + f"{key}", + f"MEM://{hex(host_mem_offset)}:{hex(length)}" + ] + } + cmd = self.create_cmd("GET-SYS-PROPERTY", content) return cmd def cmd_set_host_info(self, hostinfo: str = ""): @@ -384,11 +501,19 @@ class XMLCmd(metaclass=LogBase): if hostinfo == "": currentDateAndTime = datetime.datetime.now() hostinfo = currentDateAndTime.strftime("%Y%m%dT%H%M%S") - arg = f"""{hostinfo}""" - cmd = self.create_cmd("SET-HOST-INFO", arg) + content = { + "arg": [ + f"{hostinfo}", + ] + } + cmd = self.create_cmd("SET-HOST-INFO", content) return cmd def cmd_get_downloaded_image_feedback(self, mem_offset: int = 0x2000000, mem_length: int = 0x20000): - arg = f"""MEM://{hex(mem_offset)}:{hex(mem_length)}""" - cmd = self.create_cmd("GET-DOWNLOADED-IMAGE-FEEDBACK", arg) + content = { + "arg": [ + f"MEM://{hex(mem_offset)}:{hex(mem_length)}", + ] + } + cmd = self.create_cmd("GET-DOWNLOADED-IMAGE-FEEDBACK", content) return cmd diff --git a/mtkclient/Library/DA/xml/xml_lib.py b/mtkclient/Library/DA/xml/xml_lib.py old mode 100644 new mode 100755 index b65bd64..55312ef --- a/mtkclient/Library/DA/xml/xml_lib.py +++ b/mtkclient/Library/DA/xml/xml_lib.py @@ -16,11 +16,41 @@ from mtkclient.config.payloads import pathconfig from mtkclient.Library.settings import hwparam from mtkclient.Library.thread_handling import writedata, Queue, Thread from mtkclient.Library.DA.xml.xml_cmd import * - +from mtkclient.Library.DA.xml.extension.v6 import xmlflashext rq = Queue() +class ShutDownModes: + TEST = 3 + META = 4 + NORMAL = 0 + HOME_SCREEN = 1 + FASTBOOT = 2 + + +def get_field(data, fieldname): + if type(data)==bytes or type(data)==bytearray: + data = data.decode('utf-8') + start = data.find(f"<{fieldname}>") + if start != -1: + end = data.find(f"", start + len(fieldname) + 2) + if start != -1 and end != -1: + return data[start + len(fieldname) + 2:end] + return "" + +class file_sys_op: + key = None + file_path = None + def __init__(self, key, file_path): + self.key = key + self.file_path = file_path + class upfile: + checksum = None + info = None + source_file = None + packet_length = None + def __init__(self, checksum, info, target_file, packet_length): self.checksum = checksum self.info = info @@ -29,7 +59,12 @@ class upfile: class dwnfile: - def __init__(self, checksum, info, source_file, packet_length): + checksum = None + info = None + source_file = None + packet_length = None + + def __init__(self, checksum:str, info:str, source_file:str, packet_length:int): self.checksum = checksum self.info = info self.source_file = source_file @@ -60,12 +95,32 @@ class DAXML(metaclass=LogBase): self.rdword = self.mtk.port.rdword self.rword = self.mtk.port.rword self.daconfig = daconfig - self.partition = Partition(self.mtk, self.readflash, self.read_pmt, loglevel) + self.partition = Partition(self.mtk, self.readflash, self.read_partition_table, loglevel) self.pathconfig = pathconfig() self.patch = False self.generatekeys = self.mtk.config.generatekeys if self.generatekeys: self.patch = True + try: + from mtkclient.Library.Exploit.carbonara import Carbonara + self.carbonara = Carbonara(self.mtk, loglevel) + except: + self.carbonara = None + + self.xmlft = xmlflashext(self.mtk, self, loglevel) + + def xread(self): + try: + hdr = self.usbread(4 + 4 + 4) + magic, datatype, length = unpack("") - if start!=-1: - end = data.find(f"",start+len(fieldname)+2) - if start!=-1 and end!=-1: - return data[start+len(fieldname)+2:end] - return "" - - def get_response(self) -> str: + def get_response(self, raw:bool=False) -> str: sync = self.usbread(4 * 3) if len(sync) == 4 * 3: - if int.to_bytes(sync[:4], 'little') == 0xfeeeeeef: - if int.to_bytes(sync[4:8], 'little') == 0x1: - length = int.to_bytes(sync[8:12]) + if int.from_bytes(sync[:4], 'little') == 0xfeeeeeef: + if int.from_bytes(sync[4:8], 'little') == 0x1: + length = int.from_bytes(sync[8:12],'little') data = self.usbread(length) if len(data) == length: - return bytes.decode(data.rstrip(b"\x00"), 'utf-8') + if raw: + return data + return data.rstrip(b"\x00").decode('utf-8') return "" def get_response_data(self) -> bytes: sync = self.usbread(4 * 3) if len(sync) == 4 * 3: - if int.to_bytes(sync[:4], 'little') == 0xfeeeeeef: - if int.to_bytes(sync[4:8], 'little') == 0x1: - length = int.to_bytes(sync[8:12]) - data = self.usbread(length) + if int.from_bytes(sync[:4], 'little') == 0xfeeeeeef: + if int.from_bytes(sync[4:8], 'little') == 0x1: + length = int.from_bytes(sync[8:12],'little') + usbepsz = self.mtk.port.cdc.get_read_packetsize() + data=bytearray() + bytestoread = length + while bytestoread>0: + sz = min(usbepsz, bytestoread) + data.extend(self.usbread(sz)) + bytestoread-=sz if len(data) == length: return data return b"" @@ -229,10 +291,79 @@ class DAXML(metaclass=LogBase): res = self.send_command(self.Cmd.cmd_set_host_info(hostinfo)) return res + def write_register(self,addr, data): + result = self.send_command(self.Cmd.cmd_write_reg(bit_width=32,base_address=addr)) + if type(result) == dwnfile: + if self.upload(result, data): + self.info("Successfully wrote data.") + return True + return False + + def read_efuse(self): + tmp = self.Cmd.cmd_read_efuse() + self.send_command(tmp) + cmd, result = self.get_command_result() + # CMD:END + scmd, sresult = self.get_command_result() + self.ack() + if sresult == "OK": + tcmd, tresult = self.get_command_result() + if tresult=="START": + return result + return None + + def read_register(self,addr): + tmp = self.Cmd.cmd_read_reg(base_address=addr) + if self.send_command(tmp): + cmd, data = self.get_command_result() + if cmd!='': + return False + # CMD:END + scmd, sresult = self.get_command_result() + self.ack() + if sresult == "OK": + tcmd, tresult = self.get_command_result() + if tresult=="START": + return data + return None + def get_command_result(self): data = self.get_response() - cmd = self.get_field(data,"command") + cmd = get_field(data,"command") result = "" + if cmd == '' and "OK@" in data: + tmp = data.split("@")[1] + length = int(tmp[2:], 16) + self.ack() + sresp = self.get_response() + if "OK" in sresp: + self.ack() + data = bytearray() + bytesread = 0 + bytestoread = length + worker = None + while bytestoread > 0: + tmp = self.get_response_data() + bytestoread -= len(tmp) + bytesread += len(tmp) + data.extend(tmp) + self.ack() + return cmd, data + if cmd=="CMD:PROGRESS-REPORT": + """ + 1.0 + CMD:PROGRESS-REPORT + + init-hw + + """ + self.ack() + data = "" + while data != "OK!EOT": + data = self.get_response() + self.ack() + data = self.get_response() + cmd = get_field(data, "command") if cmd == "CMD:START": self.ack() return cmd, "START" @@ -247,86 +378,126 @@ class DAXML(metaclass=LogBase): 0x1000 """ - checksum = self.get_field(data,"checksum") - info = self.get_field(data,"info") - source_file = self.get_field(data, "source_file") - packet_length = self.get_field(data, "packet_length") + checksum = get_field(data,"checksum") + info = get_field(data,"info") + source_file = get_field(data, "source_file") + packet_length = int(get_field(data, "packet_length"),16) self.ack() return cmd, dwnfile(checksum,info,source_file,packet_length) - elif cmd=="CMD:PROGRESS-REPORT": - """ - 1.0 - CMD:PROGRESS-REPORT - - init-hw - - """ - self.ack() - data = "" - while data != "OK!EOT": - data = self.get_response() - self.ack() - data = self.get_response() - cmd = self.get_field(data, "command") elif cmd=="CMD:UPLOAD-FILE": - checksum = self.get_field(data, "checksum") - info = self.get_field(data, "info") - target_file = self.get_field(data, "target_file") - packet_length = self.get_field(data, "packet_length") + checksum = get_field(data, "checksum") + info = get_field(data, "info") + target_file = get_field(data, "target_file") + packet_length = get_field(data, "packet_length") self.ack() return cmd, upfile(checksum,info,target_file,packet_length) + elif cmd=="CMD:FILE-SYS-OPERATION": + """ + '1.0CMD:FILE-SYS-OPERATIONFILE-SIZEMEM://0x8000000:0x4000000' + """ + key = get_field(data, "key") + file_path = get_field(data, "file_path") + self.ack() + return cmd, file_sys_op(key, file_path) if cmd=="CMD:END": - result = self.get_field(data,"result") + result = get_field(data,"result") if "message" in data and result !="OK": - message = self.get_field(data,"message") + message = get_field(data,"message") return cmd, message return cmd, result - def upload(self, result, data): + def upload(self, result:dwnfile, data, display=True, raw=False): if type(result)==dwnfile: - checksum, info, source_file, packet_length = result + checksum=result.checksum + info=result.info + source_file=result.source_file + packet_length = result.packet_length tmp = source_file.split(":")[2] length = int(tmp[2:], 16) self.ack_value(length) + if display: + self.mtk.daloader.progress.clear() resp = self.get_response() + byteswritten=0 if resp == "OK": for pos in range(0, length, packet_length): self.ack_value(0) - self.xsend(data=data[pos:pos + packet_length]) resp = self.get_response() - if resp != "OK": + if not "OK" in resp: + msg = get_field(resp, "message") + self.error(f"Error on writing stage2 ACK0 at pos {hex(pos)}") + self.error(msg) + return False + tmp=data[pos:pos+packet_length] + tmplen=len(tmp) + self.xsend(data=tmp) + resp = self.get_response() + if not "OK" in resp: self.error(f"Error on writing stage2 at pos {hex(pos)}") return False - cmd, result = self.get_command_result() + byteswritten+=tmplen + if display: + self.mtk.daloader.progress.show_progress("Written", byteswritten, length, display) + if raw: self.ack() - if cmd == "CMD:END" and result=="OK": - cmd, result = self.get_command_result() - if cmd=="CMD:START": - self.ack() - return True - return True + cmd, result = self.get_command_result() + self.ack() + if cmd == "CMD:END" and result=="OK": + cmd, result = self.get_command_result() + if cmd=="CMD:START": + return True + else: + cmd, result = self.get_command_result() + self.error(result) return False else: self.error("No upload data received. Aborting.") return False - def download(self, result): + def download_raw(self, result, filename:str="", display:bool=False): + global rq + if display: + self.mtk.daloader.progress.clear() if type(result)==upfile: - checksum, info, target_file, packet_length = result + checksum = result.checksum + info = result.info + target_file = result.target_file + packet_length = int(result.packet_length,16) resp = self.get_response() if "OK@" in resp: tmp = resp.split("@")[1] length = int(tmp[2:], 16) self.ack() sresp = self.get_response() - if sresp == "OK": + if "OK" in sresp: self.ack() data=bytearray() - while length>0: + bytesread = 0 + bytestoread = length + worker = None + if filename != "": + worker = Thread(target=writedata, args=(filename, rq), daemon=True) + worker.start() + while bytestoread>0: tmp = self.get_response_data() - length-=len(tmp) - data.extend(tmp) + bytestoread-=len(tmp) + bytesread+=len(tmp) + if filename != "": + rq.put(tmp) + else: + data.extend(tmp) + if display: + self.mtk.daloader.progress.show_progress("Read", bytesread, length, display) self.ack() + sresp = self.get_response() + if "OK" not in sresp: + break + else: + self.ack() + if filename != "": + rq.put(None) + worker.join(60) + return True return data self.error("Error on downloading data:"+resp) return False @@ -334,12 +505,44 @@ class DAXML(metaclass=LogBase): self.error("No download data received. Aborting.") return False - def boot_to(self, da2, da2offset): - result = self.send_command(self.Cmd.cmd_boot_to(at_addr=da2offset, jmp_addr=da2offset, length=len(da2))) - if type(result) == dict: + def download(self, result): + if type(result)==upfile: + checksum = result.checksum + info = result.info + target_file = result.target_file + packet_length = int(result.packet_length,16) + resp = self.get_response() + if "OK@" in resp: + tmp = resp.split("@")[1] + length = int(tmp[2:], 16) + self.ack() + sresp = self.get_response() + if "OK" in sresp: + self.ack() + data=bytearray() + bytesread = 0 + bytestoread = length + worker = None + while bytestoread>0: + tmp = self.get_response_data() + bytestoread-=len(tmp) + bytesread+=len(tmp) + data.extend(tmp) + self.ack() + return data + self.error("Error on downloading data:"+resp) + return False + else: + self.error("No download data received. Aborting.") + return False + + def boot_to(self, addr, data, display=True, timeout=0.5): + result = self.send_command(self.Cmd.cmd_boot_to(at_addr=addr, jmp_addr=addr, length=len(data))) + if type(result) == dwnfile: self.info("Uploading stage 2...") - if self.upload(result,da2): + if self.upload(result, data): self.info("Successfully uploaded stage 2.") + return True else: self.error("Wrong boot_to response :(") return False @@ -349,8 +552,15 @@ class DAXML(metaclass=LogBase): if self.upload_da1(): self.info("Stage 1 successfully loaded.") da2 = self.daconfig.da2 - da2offset = self.daconfig.da_loader.region[2].m_buf - if self.boot_to(da2,da2offset): + da2offset = self.daconfig.da_loader.region[2].m_start_addr + if not self.mtk.daloader.patch: + loaded = self.boot_to(da2offset, da2) + self.daext = False + else: + loaded = self.boot_to(da2offset, da2) + self.daext = False + + if loaded: self.info("Successfully uploaded stage 2") self.setup_hw_init() self.change_usb_speed() @@ -362,7 +572,6 @@ class DAXML(metaclass=LogBase): self.info("SLA is enabled") else: self.error(res) - self.daext = False self.storage = self.get_hw_info() self.reinit(True) self.check_lifecycle() @@ -374,6 +583,8 @@ class DAXML(metaclass=LogBase): def get_hw_info(self): self.send_command(self.Cmd.cmd_get_hw_info(),noack=True) cmd, result = self.get_command_result() + if type(result)!=upfile: + return False data = self.download(result) """ @@ -399,45 +610,68 @@ class DAXML(metaclass=LogBase): if sresult == "OK": tcmd, tresult = self.get_command_result() if tresult=="START": - storage = self.get_field(data, "storage") + storage = get_field(data, "storage") class storage_info: def __init__(self, storagetype, data): self.storagetype = storagetype if self.storagetype == "UFS": - self.block_size = self.get_field(data,"block_size") - self.lua0_size = self.get_field(data,"lua0_size") - self.lua1_size = self.get_field(data,"lua1_size") - self.lua2_size = self.get_field(data,"lua2_size") - self.lua3_size = self.get_field(data,"lua3_size") - self.cid = self.get_field(data,"id") + self.block_size = int(get_field(data,"block_size"),16) + self.lua0_size = int(get_field(data,"lua0_size"),16) + self.lua1_size = int(get_field(data,"lua1_size"),16) + self.lua2_size = int(get_field(data,"lua2_size"),16) + self.lua3_size = int(get_field(data,"lua3_size"),16) + self.cid = get_field(data,"id") elif self.storagetype == "EMMC": - self.block_size = self.get_field(data, "block_size") - self.boot1_size = self.get_field(data, "boot1_size") - self.boot2_size = self.get_field(data, "boot2_size") - self.rpmb_size = self.get_field(data, "rpmb_size") - self.user_size = self.get_field(data, "user_size") - self.gp1_size = self.get_field(data, "gp1_size") - self.gp2_size = self.get_field(data, "gp2_size") - self.gp3_size = self.get_field(data, "gp3_size") - self.gp4_size = self.get_field(data, "gp4_size") - self.cid = self.get_field(data, "id") + self.block_size = int(get_field(data, "block_size"),16) + self.boot1_size = int(get_field(data, "boot1_size"),16) + self.boot2_size = int(get_field(data, "boot2_size"),16) + self.rpmb_size = int(get_field(data, "rpmb_size"),16) + self.user_size = int(get_field(data, "user_size"),16) + self.gp1_size = int(get_field(data, "gp1_size"),16) + self.gp2_size = int(get_field(data, "gp2_size"),16) + self.gp3_size = int(get_field(data, "gp3_size"),16) + self.gp4_size = int(get_field(data, "gp4_size"),16) + self.cid = get_field(data, "id") elif self.storagetype == "NAND": - self.block_size = self.get_field(data, "block_size") - self.page_size = self.get_field(data, "page_size") - self.spare_size = self.get_field(data, "spare_size") - self.total_size = self.get_field(data, "total_size") - self.cid = self.get_field(data, "id") - self.page_parity_size = self.get_field(data, "page_parity_size") - self.sub_type = self.get_field(data, "sub_type") + self.block_size = int(get_field(data, "block_size"),16) + self.page_size = int(get_field(data, "page_size"),16) + self.spare_size = int(get_field(data, "spare_size"),16) + self.total_size = int(get_field(data, "total_size"),16) + self.cid = get_field(data, "id") + self.page_parity_size = int(get_field(data, "page_parity_size"),16) + self.sub_type = get_field(data, "sub_type") else: self.error(f"Unknown storage type: {storage}") return storage_info(storagetype=storage,data=data) def check_sla(self): + """ + ;private_key_d="009a3c3d4da0650cef38ed96ef833904c9c13835199367c7b9cb03a55e7aa482016a820dfe597cd54dd1f81fd879cf070ec0c25899ac5a49822db09675a92acf6a01e0f8f538bbe66de48ca9bdca313b616470d9ec2914356d03c95f7d9236549e5a21457e4dd5fcaf09046c47ca7436f06cd7b82cb6d2a936fca88b707f6ce28f33110fea1ec363e8482419db901cb0d38e574fe0c02ad117166b40ec78f59aaa7f3eafa425010a95614e046651273a6cb1371380c4e6ce81bdb892db6ff4892cc4d8c613a8fb3fec1e72c279052896872fc23da07fba63783374f3be8e16a15e0a04a139108dd6ac239f191135f4a895e27c670de065d2248e3f9c7e920fd001" + ;public_key_e = "00010001" + ;public_key_n = "008C8BF38EB2FC7FC06D567DBF70E9C34BE4281C4239ED9C58A6B598C3AE7821815D94D0B463463EEBBD69FF6AF990AE0499B6C3B3CADCD91D54499CD66E5314DB610FC0C6CAEEB1F16B6F2D451E3F2B2D515008917FCEC50ADA4CE0699BCF247D5AE2A1DDD34C48624A657CCB11CE5F8C6CE92CAB6038EFC2A89E42E029488C02C3CF21947C86D51BBA8EF540A2A7CE85356F431891261D860B518E89DD73B2D240461ACB66BCC213403145DE83F6963147E65274EA1E45DB2D231E0774ECC86E4F2328F8A90835C4FDEF1088DDBA1D8F7CA0CA732A64BDA6816162C0F88F02CF97634D85530968CBF8B7CE6A8B67D53BBFB4910843EA413135D56FB5074445" + + ROWAN / 0_2048_key.pem / CHIP_TEST_KEY.ini + e_brom = 010001 + n_brom = D16403466C530EF9BB53C1E8A96A61A4E332E17DC0F55BB46D207AC305BAE9354EAAC2CB3077B33740D275036B822DB268200DE17DA3DB7266B27686B8970B85737050F084F8D576904E74CD6C53B31F0BB0CD60686BF67C60DA0EC20F563EEA715CEBDBF76D1C5C10E982AB2955D833DE553C9CDAFD7EA2388C02823CFE7DD9AC83FA2A8EB0685ABDAB56A92DF1A7805E8AC0BD10C0F3DCB1770A9E6BBC3418C5F84A48B7CB2316B2C8F64972F391B116A58C9395A9CE9E743569A367086D7771D39FEC8EBBBA3DD2B519785A76A9F589D36D637AF884543FD65BAC75BE823C0C50AA16D58187B97223625C54C66B5A5E4DBAEAB7BE89A4E340A2E241B09B2F + d_brom = 09976537029b4362591c5b13873f223de5525d55df52dde283e52afa67f6c9dbf1408d2fb586a624efc93426f5f3be981f80e861ddd975a1e5e662db84f5164804a3ae717605d7f15866df9ed1497c38fdd6197243163ef22f958d7b822c57317203e9a1e7d18dad01f15054facdbddb9261a1272638da661fe4f9f0714ecf00e6541cc435afb1fd75a27d34b17ad400e9474ba850dafce266799caff32a058ff71e4c2daacaf8ba709e9ca4dc87584a7ffe8aa9a0a160ed069c3970b7dae3987ded71bd0bc824356987bd74363d46682c71913c3edbdb2a911f701f23aee3f8dd98180b5a138fd5ad74743682d2d2d1bb3d92786710248f316dd8391178ea81 + + SetRsaKey in libsla_challenge.so : + + e_brom = 010001 + n_brom = C43469A95B143CDC63CE318FE32BAD35B9554A136244FA74D13947425A32949EE6DC808CDEBF4121687A570B83C51E657303C925EC280B420C757E5A63AD3EC6980AAD5B6CA6D1BBDC50DB793D2FDDC0D0361C06163CFF9757C07F96559A2186322F7ABF1FFC7765F396673A48A4E8E3296427BC5510D0F97F54E5CA1BD7A93ADE3F6A625056426BDFE77B3B502C68A18F08B470DA23B0A2FAE13B8D4DB3746255371F43306582C74794D1491E97FDE504F0B1ECAC9DDEF282D674B817B7FFA8522672CF6281790910378FEBFA7DC6C2B0AF9DA03A58509D60AA1AD6F9BFDC84537CD0959B8735FE0BB9B471104B458A38DF846366926993097222F90628528F + d_brom = 8E02CDB389BBC52D5383EBB5949C895B0850E633CF7DD3B5F7B5B8911B0DDF2A80387B46FAF67D22BC2748978A0183B5B420BA579B6D847082EA0BD14AB21B6CCCA175C66586FCE93756C2F426C85D7DF07629A47236265D1963B8354CB229AFA2E560B7B3641DDB8A0A839ED8F39BA8C7CDB94104650E8C7790305E2FF6D18206F49B7290B1ADB7B4C523E10EBF53630D438EF49C877402EA3C1BD6DD903892FD662FBDF1DFF5D7B095712E58E728BD7F6A8B5621175F4C08EBD6143CDACD65D9284DFFECAB64F70FD63182E4981551522727A2EE9873D0DB78180C26553AD0EE1CAAA21BCEBC5A8C0B331FE7FD8710F905A7456AF675A04AF1118CE71E36C9 + + d_da = 707C8892D0DE8CE0CA116914C8BD277B821E784D298D00D3473EDE236399435F8541009525C2786CB3ED3D7530D47C9163692B0D588209E7E0E8D06F4A69725498B979599DC576303B5D8D96F874687A310D32E8C86E965B844BC2ACE51DC5E06859EA087BD536C39DCB8E1262FDEAF6DA20035F14D3592AB2C1B58734C5C62AC86FE44F98C602BABAB60A6C8D09A199D2170E373D9B9A5D9B6DE852E859DEB1BDF33034DCD91EC4EEBFDDBECA88E29724391BB928F40EFD945299DFFC4595BB8D45F426AC15EC8B1C68A19EB51BEB2CC6611072AE5637DF0ABA89ED1E9CB8C9AC1EB05B1F01734DB303C23BE1869C9013561B9F6EA65BD2516DE950F08B2E81 + n_da = A243F6694336D527C5B3ED569DDD0386D309C6592841E4C033DCB461EEA7B6F8535FC4939E403060646A970DD81DE367CF003848146F19D259F50A385015AF6309EAA71BFED6B098C7A24D4871B4B82AAD7DC6E2856C301BE7CDB46DC10795C0D30A68DD8432B5EE5DA42BA22124796512FCA21D811D50B34C2F672E25BCC2594D9C012B34D473EE222D1E56B90E7D697CEA97E8DD4CCC6BED5FDAECE1A43F96495335F322CCE32612DAB462B024281841F553FF7FF33E0103A7904037F8FE5D9BE293ACD7485CDB50957DB11CA6DB28AF6393C3E78D9FBCD4567DEBCA2601622F0F2EB19DA9192372F9EA3B28B1079409C0A09E3D51D64A4C4CE026FAD24CD7 + e_da = 010001 + + int RSA_private_encrypt(int flen, unsigned char *from, unsigned char *to, RSA *rsa, int padding); + 0x10, , 1 + """ data=self.get_sys_property(key="DA.SLA", length=0x200000) data = data.decode('utf-8') if "item key=" in data: - tmp=data[data.find("item key=")+8] + tmp=data[data.find("item key=")+8:] res=tmp[tmp.find(">")+1:tmp.find("<")] if res=="DISABLED": return False @@ -451,6 +685,8 @@ class DAXML(metaclass=LogBase): def get_sys_property(self, key:int="DA.SLA", length:int=0x200000): self.send_command(self.Cmd.cmd_get_sys_property(key=key,length=length),noack=True) cmd, result = self.get_command_result() + if type(result)!=upfile: + return False data = self.download(result) # CMD:END scmd, sresult = self.get_command_result() @@ -466,36 +702,183 @@ class DAXML(metaclass=LogBase): if "Unsupported" in resp: return False - def read_partition_table(self): + def read_partition_table(self) -> tuple: self.send_command(self.Cmd.cmd_read_partition_table(),noack=True) cmd, result = self.get_command_result() - if "Unsupported" in result: - return False + if type(result)!=upfile: + return b"", None data = self.download(result) # CMD:END scmd, sresult = self.get_command_result() self.ack() - self.ack() if sresult == "OK": tcmd, tresult = self.get_command_result() class partitiontable: def __init__(self,name,start,size): self.name=name - self.start=int(start,16) - self.size=int(size,16) + self.start=start + self.size=size if tresult=="START": parttbl=[] + data = data.decode('utf-8') for item in data.split(""): - name=self.get_field(item,"name") - start = self.get_field(item, "start") - size = self.get_field(item, "size") - parttbl.append(partitiontable(name,start,size)) - return parttbl - return None + name=get_field(item,"name") + if name!='': + start = get_field(item, "start") + size = get_field(item, "size") + if size=="": + continue + size = int(size,16) + start = int(start,16) + parttbl.append(partitiontable(name,start//self.config.pagesize,size//self.config.pagesize)) + return data, parttbl + return b"", None + + def partitiontype_and_size(self, storage=None, parttype=None, length=0): + if length<0x20000: + length = 0x20000 + if storage == DaStorage.MTK_DA_STORAGE_EMMC or storage == DaStorage.MTK_DA_STORAGE_SDMMC: + storage = 1 + if parttype is None or parttype == "user": + parttype = "EMMC-USER" + elif parttype == "boot1": + parttype = "EMMC-BOOT1" + if self.daconfig.flashtype == "emmc": + length = min(length, self.emmc.boot1_size) + elif parttype == "boot2": + parttype = "EMMC-BOOT2" + if self.daconfig.flashtype == "emmc": + length = min(length, self.emmc.boot2_size) + elif parttype == "gp1": + parttype = "EMMC-GP1" + if self.daconfig.flashtype == "emmc": + length = min(length, self.emmc.gp1_size) + else: + self.error("Unknown parttype. Known parttypes are \"boot1\",\"boot2\",\"gp1\"," + + "\"gp2\",\"gp3\",\"gp4\",\"rpmb\"") + return [] + elif storage == DaStorage.MTK_DA_STORAGE_UFS: + if parttype is None or parttype == "lu3" or parttype == "user": # USER + parttype = "UFS-LUA2" + length = min(length, self.ufs.lu3_size) + elif parttype in ["lu1", "boot1"]: # BOOT1 + parttype = "UFS-LUA0" + length = min(length, self.ufs.lu1_size) + elif parttype in ["lu2", "boot2"]: # BOOT2 + parttype = "UFS-LUA1" + length = min(length, self.ufs.lu2_size) + elif parttype in ["lu4", "rpmb"]: # RPMB + parttype = "UFS-LUA3" + length = min(length, self.ufs.lu4_size) + else: + self.error("Unknown parttype. Known parttypes are \"lu1\",\"lu2\",\"lu3\",\"lu4\"") + return [] + elif storage in [DaStorage.MTK_DA_STORAGE_NAND, DaStorage.MTK_DA_STORAGE_NAND_MLC, + DaStorage.MTK_DA_STORAGE_NAND_SLC, DaStorage.MTK_DA_STORAGE_NAND_TLC, + DaStorage.MTK_DA_STORAGE_NAND_SPI, DaStorage.MTK_DA_STORAGE_NAND_AMLC]: + parttype = "NAND-WHOLE" # NAND-AREA0 + length = min(length, self.nand.total_size) + elif storage in [DaStorage.MTK_DA_STORAGE_NOR, DaStorage.MTK_DA_STORAGE_NOR_PARALLEL, + DaStorage.MTK_DA_STORAGE_NOR_SERIAL]: + parttype = "NOR-WHOLE" # NOR-AREA0 + length = min(length, self.nor.available_size) + return [storage, parttype, length] + + def getstorage(self, parttype, length): + if self.daconfig.flashtype == "nor": + storage = DaStorage.MTK_DA_STORAGE_NOR + elif self.daconfig.flashtype == "nand": + storage = DaStorage.MTK_DA_STORAGE_NAND + elif self.daconfig.flashtype == "ufs": + storage = DaStorage.MTK_DA_STORAGE_UFS + if parttype == EMMC_PartitionType.MTK_DA_EMMC_PART_USER: + parttype = UFS_PartitionType.UFS_LU3 + elif self.daconfig.flashtype == "sdc": + storage = DaStorage.MTK_DA_STORAGE_SDMMC + else: + storage = DaStorage.MTK_DA_STORAGE_EMMC + + part_info = self.partitiontype_and_size(storage, parttype, length) + return part_info + + def readflash(self, addr, length, filename, parttype=None, display=True) -> (bytes,bool): + global rq + if parttype is None: + if self.daconfig.flashtype=="emmc": + parttype = "user" + elif self.daconfig.flashtype=="ufs": + parttype = "lu3" + partinfo = self.getstorage(parttype, length) + if not partinfo: + return b"" + self.mtk.daloader.progress.clear() + storage, parttype, length = partinfo + + self.send_command(self.Cmd.cmd_read_flash(parttype,addr,length),noack=True) + cmd, result = self.get_command_result() + if type(result)!=upfile: + return b"" + data = self.download_raw(result=result,filename=filename,display=display) + scmd, sresult = self.get_command_result() + if sresult == "START": + if not filename: + return data + else: + return True + if not filename: + return b"" + return False + + def writeflash(self, addr, length, filename, offset=0, parttype=None, wdata=None, display=True): + self.mtk.daloader.progress.clear() + fh = None + fill = 0 + if filename is not None: + if os.path.exists(filename): + fsize = os.stat(filename).st_size + length = min(fsize, length) + if length % 512 != 0: + fill = 512 - (length % 512) + length += fill + fh = open(filename, "rb") + fh.seek(offset) + else: + self.error(f"Filename doesn't exists: {filename}, aborting flash write.") + return False + + if parttype is None: + if self.daconfig.flashtype=="emmc": + parttype = "user" + elif self.daconfig.flashtype=="ufs": + parttype = "lu3" + partinfo = self.getstorage(parttype, length) + if not partinfo: + return False + storage, parttype, rlength = partinfo + + self.send_command(self.Cmd.cmd_write_flash(partition=parttype,offset=addr,mem_length=length),noack=True) + cmd, fileopresult = self.get_command_result() + if type(fileopresult)==file_sys_op: + if fileopresult.key != "FILE-SIZE": + return False + self.ack_value(length) + cmd, result = self.get_command_result() + if type(result)==dwnfile: + data = fh.read(length) + if not self.upload(result, data,raw=True): + self.error("Error on writing flash at 0x%08X" % addr) + return False + if fh: + fh.close() + return True + if fh: + fh.close() + return False + def check_lifecycle(self): self.send_command(self.Cmd.cmd_emmc_control(function="LIFE-CYCLE-STATUS"),noack=True) cmd, result = self.get_command_result() - if "Unsupported" in result: + if type(result)!=upfile: return False data = self.download(result) scmd, sresult = self.get_command_result() @@ -503,14 +886,13 @@ class DAXML(metaclass=LogBase): if sresult == "OK": tcmd, tresult = self.get_command_result() if tresult == "START": - if data==b"OK": + if data==b"OK\x00": return True else: return False return False def reinit(self, display=False): - self.config.hwparam = hwparam(self.config.meid, self.config.hwparam_path) """ self.config.sram, self.config.dram = self.get_ram_info() self.emmc = self.get_emmc_info(display) @@ -524,6 +906,29 @@ class DAXML(metaclass=LogBase): self.daconfig.rpmbsize = self.storage.rpmb_size self.daconfig.boot1size = self.storage.boot1_size self.daconfig.boot2size = self.storage.boot2_size + class EmmcInfo: + type = 1 # emmc or sdmmc or none + block_size = 0x200 + boot1_size = 0 + boot2_size = 0 + rpmb_size = 0 + gp1_size = 0 + gp2_size = 0 + gp3_size = 0 + gp4_size = 0 + user_size = 0 + cid = b"" + fwver = 0 + unknown = b"" + + self.emmc = EmmcInfo() + self.emmc.gp1_size = self.storage.gp1_size + self.emmc.gp2_size = self.storage.gp2_size + self.emmc.gp3_size = self.storage.gp3_size + self.emmc.gp4_size = self.storage.gp4_size + self.emmc.rpmb_size = self.storage.rpmb_size + self.emmc.boot1_size = self.storage.boot1_size + self.emmc.boot2_size = self.storage.boot2_size elif self.storage.storagetype == "NAND": self.daconfig.flashtype = "nand" self.daconfig.flashsize = self.storage.total_size @@ -536,6 +941,22 @@ class DAXML(metaclass=LogBase): self.daconfig.rpmbsize = self.storage.lua1_size self.daconfig.boot1size = self.storage.lua1_size self.daconfig.boot2size = self.storage.lua2_size + self.config.pagesize = 4096 + class UfsInfo: + type = 1 # nor, none + block_size = 0 + lu1_size = 0 + lu2_size = 0 + lu3_size = 0 + lu4_size = 0 + cid = b"" + fwver = b"" + serial = b"" + self.ufs = UfsInfo() + self.ufs.lu1_size = self.storage.lua0_size + self.ufs.lu2_size = self.storage.lua1_size + self.ufs.lu3_size = self.storage.lua2_size + self.ufs.lu4_size = self.storage.lua3_size """ self.chipid = self.get_chip_id() self.daversion = self.get_da_version() @@ -553,3 +974,37 @@ class DAXML(metaclass=LogBase): self.mtk.port.cdc.set_fast_mode(True) self.config.set_gui_status(self.config.tr("Connected to stage2 with higher speed")) """ + + def formatflash(self, addr, length, storage=None, + parttype=None, display=False): + self.mtk.daloader.progress.clear() + part_info = self.getstorage(parttype, length) + if not part_info: + return False + storage, parttype, length = part_info + self.info(f"Formatting addr {hex(addr)} with length {hex(length)}, please standby....") + self.mtk.daloader.progress.show_progress("Erasing", 0, length, True) + self.send_command(self.Cmd.cmd_erase_flash(partition=parttype,offset=addr,length=length)) + result=self.get_response() + if result=="OK": + self.info(f"Successsfully formatted addr {hex(addr)} with length {length}.") + return True + + self.error(f"Error on format.") + return False + + + def shutdown(self, async_mode: int = 0, dl_bit: int = 0, bootmode: ShutDownModes = ShutDownModes.NORMAL): + if bootmode == ShutDownModes.FASTBOOT: + self.send_command(self.Cmd.cmd_set_boot_mode(mode=BootModes.fastboot)) + elif bootmode == ShutDownModes.TEST: + self.send_command(self.Cmd.cmd_set_boot_mode(mode=BootModes.testmode)) + elif bootmode == ShutDownModes.META: + self.send_command(self.Cmd.cmd_set_boot_mode(mode=BootModes.meta)) + if self.send_command(self.Cmd.cmd_reboot(disconnect=False)): + self.mtk.port.close(reset=True) + return True + else: + self.error(f"Error on sending reboot") + self.mtk.port.close(reset=True) + return False \ No newline at end of file diff --git a/mtkclient/Library/DA/xml/xml_param.py b/mtkclient/Library/DA/xml/xml_param.py old mode 100644 new mode 100755 diff --git a/mtkclient/Library/Exploit/__init__.py b/mtkclient/Library/Exploit/__init__.py old mode 100644 new mode 100755 diff --git a/mtkclient/Library/Exploit/amonet.py b/mtkclient/Library/Exploit/amonet.py old mode 100644 new mode 100755 diff --git a/mtkclient/Library/Exploit/hashimoto.py b/mtkclient/Library/Exploit/hashimoto.py old mode 100644 new mode 100755 diff --git a/mtkclient/Library/Exploit/kamakiri2.py b/mtkclient/Library/Exploit/kamakiri2.py old mode 100644 new mode 100755 index cb71ec2..1736e23 --- a/mtkclient/Library/Exploit/kamakiri2.py +++ b/mtkclient/Library/Exploit/kamakiri2.py @@ -19,7 +19,9 @@ class Kamakiri2(Exploitation, metaclass=LogBase): def kamakiri2(self, addr): self.udev = self.mtk.port.cdc.device try: - # self.linecode = array('B', [0x80, 0x25, 0, 0, 0, 0, 8, 0]) + if self.linecode is None: + #self.linecode = array('B', [0x80, 0x25, 0, 0, 0, 0, 8, 0]) + self.linecode = self.mtk.port.cdc.device.ctrl_transfer(0xA1, 0x25, 0, 0, 8) + array.array('B', [0]) # array('B', [128, 37, 0, 0, 0, 0, 8, 0, addr, addr, addr, addr]) self.udev.ctrl_transfer(0x21, 0x20, 0, 0, self.linecode + array.array('B', pack("= 10: + sys.stdout.write('.') + if loop >= 20: + sys.stdout.write('\n') + loop = 0 + loop += 1 + time.sleep(0.1) + sys.stdout.flush() + + + except Exception as serr: + print("Handshake: " + str(serr)) + if "access denied" in str(serr): + self.warning(str(serr)) + self.debug(str(serr)) + pass + return False + def run_handshake(self): EP_OUT = self.cdc.EP_OUT.write EP_IN = self.cdc.EP_IN.read diff --git a/mtkclient/Library/__init__.py b/mtkclient/Library/__init__.py old mode 100644 new mode 100755 diff --git a/mtkclient/Library/error.py b/mtkclient/Library/error.py index 04cc5a9..57ed44c 100755 --- a/mtkclient/Library/error.py +++ b/mtkclient/Library/error.py @@ -439,7 +439,7 @@ ErrorCodes = { 0x1D00: "ADDRESS_TOO_HIGH_80000000", 0x1D01: "ADDRESS_TOO_HIGH_40000000", 0x1D02: "INVALID_ADDRESS", - 0x1D0C: "", + 0x1D0C: "NO_AUTH_NEEDED", 0x1D0D: "SLA_ERROR", 0x1D0E: "DA_OVERLAP", 0x1D0F: "DA_INVALID_JUMP_ADDR", @@ -488,6 +488,10 @@ ErrorCodes = { 0x5004: "IMG_LOCK_MAGIC_ERROR", 0x6000: "SBC_KEY_NOT_FOUND", 0x6001: "BR_SEC_CFG_NOT_FOUND", + 0x6002: "ERR_PUBK_NOT_INITIALIZED", + 0x6003: "SHA256_OP_FAIL", + 0x6004: "ERR_PSS_CHK_FAIL", + 0x6005: "ERR_SIG_CHK_FAIL", 0x7000: "REGION_INVALID_INCLUDE", 0x7001: "REGION_INVALID_OVERLAP", 0x7002: "REGION_INVALID_OVERFLOW", diff --git a/mtkclient/Library/exploit_handler.py b/mtkclient/Library/exploit_handler.py old mode 100644 new mode 100755 diff --git a/mtkclient/Library/meta.py b/mtkclient/Library/meta.py old mode 100644 new mode 100755 index b30ebf6..81fb1d1 --- a/mtkclient/Library/meta.py +++ b/mtkclient/Library/meta.py @@ -60,6 +60,12 @@ class META(metaclass=LogBase): while resp==b"READY": resp = bytearray(EP_IN(maxinsize)) if resp in [b"ATEMEVDX",b"TOOBTSAF",b"ATEMATEM",b"TCAFTCAF",b"MYROTCAF"]: + if resp == b"ATEMATEM": + EP_OUT(b"\x04\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\xC0") + EP_OUT(b"\x04\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\xC0") + EP_OUT(b"\x06\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\xC0\x00\x80\x00\x00") + info = EP_IN(13) #!READYATEM + EP_OUT(b"DISCONNECT") return True self.warning(resp) else: diff --git a/mtkclient/Library/mtk_class.py b/mtkclient/Library/mtk_class.py old mode 100644 new mode 100755 index cd1d4e1..4ee123e --- a/mtkclient/Library/mtk_class.py +++ b/mtkclient/Library/mtk_class.py @@ -10,7 +10,7 @@ from mtkclient.Library.pltools import PLTools from mtkclient.Library.mtk_preloader import Preloader from mtkclient.Library.DA.mtk_daloader import DAloader from mtkclient.Library.Port import Port -from mtkclient.Library.utils import LogBase, logsetup +from mtkclient.Library.utils import LogBase, logsetup, find_binary from mtkclient.Library.error import ErrorHandler @@ -47,18 +47,29 @@ class Mtk(metaclass=LogBase): ("5072656C6F61646572205374617274","50617463686564204C205374617274", "Patched loader msg"), ("F0B58BB002AE20250C460746","002070470000000000205374617274", "sec_img_auth"), ("FFC0F3400008BD","FF4FF0000008BD","get_vfy_policy"), - ("040007C0","00000000","hash_check") + ("040007C0","00000000","hash_check"), + ("CCF20709", "4FF00009", "hash_check2"), + (b"\x14\x2C\xF6.\xFE\xE7",b"\x00\x00\x00\x00\x00\x00","hash_check3") ] i = 0 for patchval in patches: - pattern = bytes.fromhex(patchval[0]) - idx = data.find(pattern) - if idx != -1: - patch = bytes.fromhex(patchval[1]) - data[idx:idx + len(patch)] = patch - self.info(f"Patched \"{patchval[2]}\" in preloader") - patched = True - # break + if type(patchval[0])==bytes: + idx = find_binary(data,patchval[0]) + if idx is None: + idx = -1 + else: + data[idx:idx + len(patch)] = patch + self.info(f"Patched \"{patchval[2]}\" in preloader") + patched = True + else: + pattern = bytes.fromhex(patchval[0]) + idx = data.find(pattern) + if idx != -1: + patch = bytes.fromhex(patchval[1]) + data[idx:idx + len(patch)] = patch + self.info(f"Patched \"{patchval[2]}\" in preloader") + patched = True + # break i += 1 if not patched: self.warning(f"Failed to patch preloader security") diff --git a/mtkclient/Library/mtk_main.py b/mtkclient/Library/mtk_main.py old mode 100644 new mode 100755 index 89abc98..e78a125 --- a/mtkclient/Library/mtk_main.py +++ b/mtkclient/Library/mtk_main.py @@ -57,6 +57,11 @@ class ArgHandler(metaclass=LogBase): config.payloadfile = args.payload except: pass + try: + if args.appid is not None: + config.appid = bytes.fromhex(args.appid) + except: + pass try: if args.loader is not None: config.loader = args.loader @@ -354,6 +359,16 @@ class Main(metaclass=LogBase): config.iot = iot except: pass + try: + auth = self.args.auth + config.auth = auth + except: + pass + try: + cert = self.args.cert + config.cert = cert + except: + pass mtk = Mtk(config=config, loglevel=loglevel, serialportname=serialport) config.set_peek(mtk.daloader.peek) if mtk.config.debugmode: @@ -415,6 +430,8 @@ class Main(metaclass=LogBase): self.warning("We couldn't enter preloader.") plt = PLTools(rmtk, self.__logger.level) data, filename = plt.run_dump_preloader(self.args.ptype) + if filename is None: + filename = "preloader.bin" if data is not None: if filename == "": if self.args.filename is not None: diff --git a/mtkclient/Library/mtk_preloader.py b/mtkclient/Library/mtk_preloader.py index 425b1ce..f74885c 100755 --- a/mtkclient/Library/mtk_preloader.py +++ b/mtkclient/Library/mtk_preloader.py @@ -3,9 +3,14 @@ # (c) B.Kerler 2018-2023 GPLv3 License import os import logging +import time from enum import Enum from struct import unpack, pack from binascii import hexlify + +from Cryptodome.Util.number import bytes_to_long, long_to_bytes, ceil_div, size +from Cryptodome.PublicKey import RSA + from mtkclient.Library.utils import LogBase, logsetup from mtkclient.Library.error import ErrorHandler @@ -17,6 +22,27 @@ USBDL_MAGIC = 0x444C0000 # Brom will check this magic number MISC_LOCK_KEY_MAGIC = 0xAD98 +def customizedSign(n, e, msg): + modBits = size(n) + k = ceil_div(modBits, 8) + + ps = b'\xFF' * (k - len(msg) - 3) + em = b'\x00\x01' + ps + b'\x00' + msg + + em_int = bytes_to_long(em) + m_int = pow(em_int, e, n) + signature = long_to_bytes(m_int, k) + + return signature + +def generate_rsa_challenge(n,e,data): + for i in range(0,len(data),2): + data[i],data[i+1]=data[i+1],data[i] + msg=bytearray(customizedSign(n,e,data)) + for i in range(0,len(msg),2): + msg[i],msg[i+1]=msg[i+1],msg[i] + return msg + def calc_xflash_checksum(data): checksum = 0 pos = 0 @@ -78,7 +104,7 @@ class Preloader(metaclass=LogBase): PWR_DEINIT = b"\xC5" PWR_READ16 = b"\xC6" PWR_WRITE16 = b"\xC7" - CMD_C8 = b"\xC8" # RE + CMD_C8 = b"\xC8" # Cache control READ16 = b"\xD0" READ32 = b"\xD1" @@ -97,17 +123,18 @@ class Preloader(metaclass=LogBase): JUMP_DA64 = b"\xDE", # RE GET_BROM_LOG_NEW = b"\xDF", # RE - SEND_CERT = b"\xE0", + SEND_CERT = b"\xE0", # DA_CHK_PC_SEC_INFO_CMD GET_ME_ID = b"\xE1" SEND_AUTH = b"\xE2" SLA = b"\xE3" - CMD_E4 = b"\xE4" - CMD_E5 = b"\xE5" - CMD_E6 = b"\xE6" + CMD_E4 = b"\xE4" # returns 0x703A + CMD_E5 = b"\xE5" # echo cmd, dword = dword, then returns 0x7054 as status + CMD_E6 = b"\xE6" # returns 0x7054 GET_SOC_ID = b"\xE7" - + CMD_E8 = b"\xE8" # return 0x100A00 cert content and check similar to SLA ZEROIZATION = b"\xF0" GET_PL_CAP = b"\xFB" + CMD_FA = b"\xFA" GET_HW_SW_VER = b"\xFC" GET_HW_CODE = b"\xFD" GET_BL_VER = b"\xFE" @@ -141,23 +168,23 @@ class Preloader(metaclass=LogBase): readsocid = self.config.readsocid skipwdt = self.config.skipwdt - if not display: - self.info("Status: Waiting for PreLoader VCOM, please reconnect mobile to brom mode") - self.config.set_gui_status(self.config.tr("Status: Waiting for connection")) - else: - self.info("Status: Waiting for PreLoader VCOM, please connect mobile") - self.config.set_gui_status(self.config.tr("Status: Waiting for connection")) + self.info("Status: Waiting for PreLoader VCOM, please reconnect mobile to brom mode") + self.config.set_gui_status(self.config.tr("Status: Waiting for connection")) res = False + maxtries = 100 tries = 0 - while not res and tries < 10: - res = self.mtk.port.handshake(maxtries=maxtries) + while not res and tries < 1000: + if self.mtk.serialportname: + res = self.mtk.port.serial_handshake(maxtries=maxtries) + else: + res = self.mtk.port.handshake(maxtries=maxtries) if not res: if display: self.error("Status: Handshake failed, retrying...") self.config.set_gui_status(self.config.tr("Status: Handshake failed, retrying...")) self.mtk.port.close() tries += 1 - if tries == 10: + if tries == 1000: return False if self.config.iot: @@ -194,7 +221,7 @@ class Preloader(metaclass=LogBase): if not skipwdt: if self.display: self.info("Disabling Watchdog...") - self.setreg_disablewatchdogtimer(self.config.hwcode) # D4 + self.setreg_disablewatchdogtimer(self.config.hwcode, self.config.hwver) # D4 if self.display: self.info("HW code:\t\t\t" + hex(self.config.hwcode)) self.config.target_config = self.get_target_config(self.display) @@ -226,6 +253,20 @@ class Preloader(metaclass=LogBase): if self.display: if socid != b"": self.info("SOC_ID:\t\t\t" + hexlify(socid).decode('utf-8').upper()) + if self.config.auth is not None and self.config.is_brom and self.config.target_config["daa"]: + if os.path.exists(self.config.auth): + authdata = open(self.config.auth,"rb").read() + self.send_auth(authdata) + else: + self.error(f"Couldn't find auth file {self.config.auth}") + if self.config.cert is not None and self.config.is_brom and self.config.target_config["daa"]: + if os.path.exists(self.config.cert): + certdata = open(self.config.cert,"rb").read() + self.send_root_cert(certdata) + else: + self.error(f"Couldn't find cert file {self.config.cert}") + if self.config.target_config["sla"]: + self.handle_sla(func=None,isbrom=self.config.is_brom) return True def read_a2(self, addr, dwords=1) -> list: @@ -377,51 +418,74 @@ class Preloader(metaclass=LogBase): # self.usbwrite(data) self.usbwrite(pack(">I", checksum)) - def setreg_disablewatchdogtimer(self, hwcode): + def setreg_disablewatchdogtimer(self, hwcode, hwver): """ SetReg_DisableWatchDogTimer; BRom_WriteCmd32(): Reg 0x10007000[1]={ Value 0x22000000 }. """ addr, value = self.config.get_watchdog_addr() if hwcode == 0x6261: - # SetLongPressPWKEY - self.read32(0xA01C0108) - self.write16(0xA0700F00, 0x41) - self.write16(0xA0700F00, 0x51) - self.write16(0xA0700F00, 0x41) - # SetReg_DisableChargeControl() - self.write16(0xA0700A28, self.read16(0xA0700A28) | 0x4000) - self.write16(0xA0700A00, self.read16(0xA0700A00, 1) | 0x10) - self.write16(0xA0030000, 0x2200) - # SetReg_LockPowerKey - self.read16(0xA0710000, 1) - # PowerKeysMatched - self.read16(0xA0710050, 1) - self.read16(0xA0710054, 1) - self.write16(0xA0710010, 0) - self.write16(0xA0710008, 0) - self.write16(0xA071000C, 0) + # Disable watchdog timer + # MT2503 + if hwver == 0xca02: + # PMU + #self.write16(0xA0700F00, 0x41) + #self.write16(0xA0700F00, 0x51) + #self.write16(0xA0700F00, 0x41) - # Unlock - self.write16(0xA0710074, 1) - val2 = self.read16(0xA0710000, 1) - self.write16(0xA0710050, 0xA357) - self.write16(0xA0710054, 0x67D2) - self.read16(0xA0710074, 1) - val2 = self.read16(0xA0710000, 1) - self.write16(0xA0710068, 0x586A) - self.write16(0xA0710074, 1) - self.read16(0xA0710000, 1) - self.write16(0xA0710068, 0x9136) - self.write16(0xA0710074, 1) - self.read16(0xA0710000, 1) - self.write16(0xA0710074, 1) - self.read16(0xA0710000, 1) - # Get Target Config : D8 + # GPIO + #self.write32(0xA0020318,0x2000) # GPIO_DOUT1_SET, GPIO45 + #self.write32(0xA0020014, 0x2000) # GPIO_DIR1_SET, GPIO45 + #self.write32(0xA0020C58, 0x700000) # GPIO_MODE5_CLR, GPIO45 TESTMODE_D - # SetRemap: - self.write32(0xA0510000, self.read32(0xA0510000, 1) | 2) - self.write32(0xA0510000, self.read32(0xA0510000, 1) | 2) + # PMU + # SetReg_MinuteLevelChargerWDT + #self.write16(0xA0700A24, 0x15) + # SetReg_DisableBAT_ON_Protection + #self.write16(0xA0700A14, 0x6001) + # SetReg_OV_Level + #self.write16(0xA0700A14, 0x6041) + # SetReg_USBDL_ChargerCurrent + #self.write16(0xA0700A08, 0x10B) + # SetReg_EnableChargeControlToNormalMode + #self.write16(0xA0700A00, 0xF27A) + # SetReg_HWAutoFChargeModeToNormalMode + #self.write16(0xA0700A28, 0x8010) + + # Disable watchdog + self.write16(0xA0030000, 0x2200) + + # SetLSRSTB + #self.write16(0xA0020318, 0x2000) + #self.write16(0xA0020014, 0x2000) + #self.write32(0xA0020C58, 0x700000) + + # SetupRTC32K + #self.write16(0xA071004C, 0x1A57) + #self.write16(0xA071004C, 0x2B68) + #self.write16(0xA071004C, 0x407) + + #self.write16(0xA0710010, 0x0) + #self.write16(0xA0710008, 0x0) + #self.write16(0xA071000C, 0x0) + #self.write16(0xA0710074, 0x1) + + # RTC Unlock + #self.write16(0xA0710068, 0x586A) + #self.write16(0xA0710074, 1) + #self.write16(0xA0710068, 0x9136) + #self.write16(0xA0710074, 1) + + #self.write16(0xA0710000, 0x430E) + #self.write16(0xA0710074, 0x1) + + # SetRemap: + # BootEngine + # set external boot , remap control change to Bus + # Set MB0 to Bank0 and MB1 to Bank1 + self.write32(0xA0510000, self.read32(0xA0510000, 1) | 2) + else: + self.write16(0xA0030000, 0x2200) res = True elif hwcode in [0x6575, 0x6577]: @@ -510,20 +574,15 @@ class Preloader(metaclass=LogBase): try: status = self.rword() except Exception as e: - self.error(f"Jump_DA Resp2 {str(e)} ," + hexlify(data).decode('utf-8')) + self.error(f"Jump_DA No data available {str(e)} ," + hexlify(data).decode('utf-8')) self.config.set_gui_status(self.config.tr("DA Error")) return False if status == 0: self.info(f"Jumping to {hex(addr)}: ok.") self.config.set_gui_status(self.config.tr(f"Jumping to {hex(addr)}: ok.")) return True - else: - self.error(f"Jump_DA status error:{self.eh.status(status)}") - self.config.set_gui_status(self.config.tr("DA Error")) - else: - self.error(f"Jump_DA status error:{self.eh.status(addr)}") - self.config.set_gui_status(self.config.tr("DA Error")) - + self.error(f"Jump_DA status error:{self.eh.status(status)}") + self.config.set_gui_status(self.config.tr("DA Error")) return False def jump_da64(self, addr: int): @@ -580,18 +639,344 @@ class Preloader(metaclass=LogBase): return False def send_auth(self, auth): - gen_chksum, data = self.prepare_data(auth) - if self.echo(self.Cmd.SEND_AUTH): - self.usbwrite(len(data)) + gen_chksum, data = self.prepare_data(data=auth,sigdata=b"",maxsize=len(auth)) + if self.echo(self.Cmd.SEND_AUTH.value): + length = len(data) + self.usbwrite(int.to_bytes(length,4,'big')) + rlen = self.rdword() + if rlen != length: + return False + self.config.set_gui_status(self.config.tr(f"Uploading data.")) status = self.rword() - if 0x0 <= status <= 0xFF: - if not self.upload_data(data, gen_chksum): - self.error("Error on uploading auth.") - return False - return True - self.error(f"Send auth error:{self.eh.status(status)}") + if status < 0xFF: + bytestowrite = len(data) + pos = 0 + while bytestowrite > 0: + size = min(bytestowrite, 64) + self.usbwrite(data[pos:pos + size]) + bytestowrite -= size + pos += size + self.usbwrite(b"") + time.sleep(0.035) + status = self.rword() + if 0x0 <= status <= 0xFF: + return True + if status==0x1D0C: + self.info("No auth needed.") + else: + self.error(f"Send auth error:{self.eh.status(status)}") return False + def handle_sla(self, func=None, isbrom:bool=True): + rsakeys = [ + # libsla_challenge.so, secure_chip_tools/keys/toolauth/sla_prvk.pem V5 + (bytes_to_long(bytes.fromhex("010001")), + bytes_to_long(bytes.fromhex( + "C43469A95B143CDC63CE318FE32BAD35B9554A136244FA74D13947425A32949EE6DC808CDEBF4121687A570B83C51E657303C925EC280B420C757E5A63AD3EC6980AAD5B6CA6D1BBDC50DB793D2FDDC0D0361C06163CFF9757C07F96559A2186322F7ABF1FFC7765F396673A48A4E8E3296427BC5510D0F97F54E5CA1BD7A93ADE3F6A625056426BDFE77B3B502C68A18F08B470DA23B0A2FAE13B8D4DB3746255371F43306582C74794D1491E97FDE504F0B1ECAC9DDEF282D674B817B7FFA8522672CF6281790910378FEBFA7DC6C2B0AF9DA03A58509D60AA1AD6F9BFDC84537CD0959B8735FE0BB9B471104B458A38DF846366926993097222F90628528F")), + bytes_to_long(bytes.fromhex( + "8E02CDB389BBC52D5383EBB5949C895B0850E633CF7DD3B5F7B5B8911B0DDF2A80387B46FAF67D22BC2748978A0183B5B420BA579B6D847082EA0BD14AB21B6CCCA175C66586FCE93756C2F426C85D7DF07629A47236265D1963B8354CB229AFA2E560B7B3641DDB8A0A839ED8F39BA8C7CDB94104650E8C7790305E2FF6D18206F49B7290B1ADB7B4C523E10EBF53630D438EF49C877402EA3C1BD6DD903892FD662FBDF1DFF5D7B095712E58E728BD7F6A8B5621175F4C08EBD6143CDACD65D9284DFFECAB64F70FD63182E4981551522727A2EE9873D0DB78180C26553AD0EE1CAAA21BCEBC5A8C0B331FE7FD8710F905A7456AF675A04AF1118CE71E36C9"))), + # bootloader/preloader/platform/mt6781/flash/custom/oemkey.h V6 + (bytes_to_long(bytes.fromhex("010001")), + bytes_to_long(bytes.fromhex( + "B243F6694336D527C5B3ED569DDD0386D309C6592841E4C033DCB461EEA7B6F8535FC4939E403060646A970DD81DE367CF003848146F19D259F50A385015AF6309EAA71BFED6B098C7A24D4871B4B82AAD7DC6E2856C301BE7CDB46DC10795C0D30A68DD8432B5EE5DA42BA22124796512FCA21D811D50B34C2F672E25BCC2594D9C012B34D473EE222D1E56B90E7D697CEA97E8DD4CCC6BED5FDAECE1A43F96495335F322CCE32612DAB462B024281841F553FF7FF33E0103A7904037F8FE5D9BE293ACD7485CDB50957DB11CA6DB28AF6393C3E78D9FBCD4567DEBCA2601622F0F2EB19DA9192372F9EA3B28B1079409C0A09E3D51D64A4C4CE026FAD24CD7")), + bytes_to_long(bytes.fromhex( + "607C8892D0DE8CE0CA116914C8BD277B821E784D298D00D3473EDE236399435F8541009525C2786CB3ED3D7530D47C9163692B0D588209E7E0E8D06F4A69725498B979599DC576303B5D8D96F874687A310D32E8C86E965B844BC2ACE51DC5E06859EA087BD536C39DCB8E1262FDEAF6DA20035F14D3592AB2C1B58734C5C62AC86FE44F98C602BABAB60A6C8D09A199D2170E373D9B9A5D9B6DE852E859DEB1BDF33034DCD91EC4EEBFDDBECA88E29724391BB928F40EFD945299DFFC4595BB8D45F426AC15EC8B1C68A19EB51BEB2CC6611072AE5637DF0ABA89ED1E9CB8C9AC1EB05B1F01734DB303C23BE1869C9013561B9F6EA65BD2516DE950F08B2E81"))), + # lk/files/pbp/keys/toolauth/sla_prvk.pem, rowan + (bytes_to_long(bytes.fromhex("010001")), + bytes_to_long(bytes.fromhex( + "D16403466C530EF9BB53C1E8A96A61A4E332E17DC0F55BB46D207AC305BAE9354EAAC2CB3077B33740D275036B822DB268200DE17DA3DB7266B27686B8970B85737050F084F8D576904E74CD6C53B31F0BB0CD60686BF67C60DA0EC20F563EEA715CEBDBF76D1C5C10E982AB2955D833DE553C9CDAFD7EA2388C02823CFE7DD9AC83FA2A8EB0685ABDAB56A92DF1A7805E8AC0BD10C0F3DCB1770A9E6BBC3418C5F84A48B7CB2316B2C8F64972F391B116A58C9395A9CE9E743569A367086D7771D39FEC8EBBBA3DD2B519785A76A9F589D36D637AF884543FD65BAC75BE823C0C50AA16D58187B97223625C54C66B5A5E4DBAEAB7BE89A4E340A2E241B09B2F")), + bytes_to_long(bytes.fromhex( + "09976537029b4362591c5b13873f223de5525d55df52dde283e52afa67f6c9dbf1408d2fb586a624efc93426f5f3be981f80e861ddd975a1e5e662db84f5164804a3ae717605d7f15866df9ed1497c38fdd6197243163ef22f958d7b822c57317203e9a1e7d18dad01f15054facdbddb9261a1272638da661fe4f9f0714ecf00e6541cc435afb1fd75a27d34b17ad400e9474ba850dafce266799caff32a058ff71e4c2daacaf8ba709e9ca4dc87584a7ffe8aa9a0a160ed069c3970b7dae3987ded71bd0bc824356987bd74363d46682c71913c3edbdb2a911f701f23aee3f8dd98180b5a138fd5ad74743682d2d2d1bb3d92786710248f316dd8391178ea81"))), + # Alcatel/TCL MTK_U91 + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "9a97c44b0768424b6bbb0b6aa987a2d373448c6fee1f61fb81f8cf53d70856f0f77e76c06a6901de90ed3b4d9ad4b9e04eaed42e5657bf2fccf390fe9f5abe1abe8575f07916da69acef95d38874223ec51cb501148a1feea2be2b8ccda08672aa423a4099203c6aa4777fed7353c57696b8e0d4020bd6930b828b9846a454cd")), + bytes_to_long(bytes.fromhex( + "8553e31d7a73f6c9294e961815c23f31f2b5ea1116e3c613ae12b26cf285e4c5ca0e2dc8e17d52f96b30cef6ad544e43205933f20ad17eb8712097aaa23116c68eb6328980b8ba26706105656fa65315688b8232758607b8936d0abc27dbc97d94e95b4f1957fd1965082e5849c4185ebba8afc7d558d4f5f001ac5363423ac1")) + ), + # Alcatel/TCL MTK_OTMINI + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "bc7b5107bcf46c2cd7758f4bd4d4e9f06b731d9cff383dffe48156d1ad91ff74a7925fa3027669766b3d4c6e28c1c9310194c34a59e672c8ced38588e998d7b162889dcf06668345f93e4efca34b5fee5bb57dfc38d7623a48f31b382de2db656ec1f3b5267a9a8f5e441c61448a283e4717ace6983d01b163e34f959c9972cd")), + bytes_to_long(bytes.fromhex( + "6bc0e84b4f38415bc575dd0d5248c2d182ec55e2ba7a11dfe86815155c709a25bbe34fafa6a9c19344adcfb32eb3d2eca465c2dc0fd7528a00cc268c6657cdff0b0da1b2ac6a95b94865facb7e1494cedf44358e29ec7e8f091172e4ef29856d1f45032aa644efc273f141c10cb8281a12cebe202b65f176e1a145c326d75841")) + ), + # Alcatel/TCL ST513 + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "df836c16bc8e129dac8e6efcd3f41636981687c29c465b481cbe874ffb14d592de024b70f4fa20ad96c96e4e3eded3625f314dedb4d8635782f6d668d04ab1167982229e03ede17a7857a22cbf72444a6bee2bba54f32099e0eabe654c3da4933926db4d97dcaeb68236df4b3e51bd3c4bfa8b2d47c2534405e4f1c1d43e1069")), + bytes_to_long(bytes.fromhex( + "9ea0f7256bcca9099e5db80757a5f3ddeb3292475c01d2e6eaff8da905d9537a5875e874d26872a8c04b552dd310f194ef5a5ea445a50d5c1e6670e5126ef01e5fb1af24a67d07b5a9f72197bc66d5743faab54759fbedcf1fd8ac1aabede2c6fb29601b4734334db92a92fc25f7ed8700d307b74a2c435c9ce5b5caba4b3801")) + ), + # Alcatel/TCL MPK_U7 + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "db0b6e89fabdc24e6e7379d25b0c402686537ab6375d8b2407beaf44cbbef27e04e90b556801bbce5eee2a7ec636ac825667dae3578eb7bbb66701bc62ee86f28fc14d57e8637a2ddcee00cc3ab87dff4155250c2dbde9ae62f3d7a9d5e4a265fb0a8b23c082be263d7788e44d59780b47a31b25dc588f81902be419f917933b")), + bytes_to_long(bytes.fromhex( + "c5829b5bc34253f090db831f5085cd5a6f88da7f6f90e3a3cb6fff6e53218c5a616719971b3f64ef02de526719a7b709978bf1ed48c821981b32ea77c9e536bbda206fad74946d02a20d17120f89419b0daee2d8a47275768930ad53c876afebffb6805483c1ddcf6c19f3566f0de494838afb51b18080beff66364de5294581")) + ), + # Alcatel/TCL MTK_U8 + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "9bc517a0dfa87a7e240000c5f42cf31905ab93d4bcb95694dee85282867d5c83270aea0b0948d66eb39d8500aa6c8b1069b8ee784f75948958f7bbf627d6ed5f286fd3bd4df60a6c9490cb319448b22765aba9329820eec50f62f1ca0b6b3322aa27747b26855a1f1719cf0c4060c9f5a6a3a60ec60fe6e04e7b044e5da994e9")), + bytes_to_long(bytes.fromhex( + "76ca90a16bcf7552db2b716b8531fe5617bfe86635627647e3d27291fdf47e67ba8f953ac362dbbce2977f05a9f24aff4250f8f3a14d3ef09b7b99c9384aad0c53104f87b47d7daea3ca725beb233d127ec342ce0619b16bd3d5e44371cffce9f23178ff48dd42fc4450ccdb3e2d63437ef9dfc0296b12840ae85d472cf0135d")) + ), + # Alcatel/TCL MPK_U91 + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "9a97c44b0768424b6bbb0b6aa987a2d373448c6fee1f61fb81f8cf53d70856f0f77e76c06a6901de90ed3b4d9ad4b9e04eaed42e5657bf2fccf390fe9f5abe1abe8575f07916da69acef95d38874223ec51cb501148a1feea2be2b8ccda08672aa423a4099203c6aa4777fed7353c57696b8e0d4020bd6930b828b9846a454cd")), + bytes_to_long(bytes.fromhex( + "8553e31d7a73f6c9294e961815c23f31f2b5ea1116e3c613ae12b26cf285e4c5ca0e2dc8e17d52f96b30cef6ad544e43205933f20ad17eb8712097aaa23116c68eb6328980b8ba26706105656fa65315688b8232758607b8936d0abc27dbc97d94e95b4f1957fd1965082e5849c4185ebba8afc7d558d4f5f001ac5363423ac1")) + ), + # Alcatel/TCL MTK_6577_HUIZHOU + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "ac2a2c19bf4beef4272df8899cb648f90453e53faa1dd8143327978620ec74e6068a8fd051fac856a59ff0a2f3051b7512f55fcd6eea57262a5a24e141b2a9c105509b79976b952a4cfa0367535aa1db83290f18f62e2f604bfd5fee3fb6fa863ca5546e359e0348937e5b62e47f645e9552ebd2e7e516c13a192a6075c55351192dd545dd90c34fa28c695d6643a2449c0c7acc9d003b9bb4f9d249bc19beb8ffdc2d6115260499156461eea896361aac9a24ace3bf6c81db3e8c32fd6d74d876882382618c7ae920ce63b0c33a3ed6a59642acdcdccd68f2e84f6b1dfe8e4dd33fd78208c750f877a8eddbf32b7f6cd28bc7f62a79e1281cad49b29ea1aeeb")), + bytes_to_long(bytes.fromhex( + "3d6ff33ae0ec1d029db4a6fb9ca3e41890f5cb5a53bfc0ab3cb2053d85243c7715a07ebfad719bea67c252a223ad0fe65074a5d26ea14ba63ff8d92e553e879b6ce51e065f05b23e5d27deed116ec751c9556ea0cec11e80f3bd206da9e9072fbe1695b19a8a9fcb576f00f7a268df8d6d262127ab3f3246941004f25534ac8d2f418815d15f4a5a663a2f1383115cb3e8bd263ebcd92c5bd1b92644497e15a1b41e77e648cac179182d83c496728fb52b9a1c600954ad0c3eac5d4633d519c88daf775fe090c2f2568c7c91a8938a2859245f100fce764033147d84d79075a81331ecdd170d2541832ab9161dc473cadc1dfbc17df2be89fa6d6c13d9db3611")) + ), + # Alcatel/TCL MTK_S_2019 + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "e4607e6cf78f5e4857bdaea441f8ddd35a7576f552b4ad2c8b4ee7f578c0590d747b049bb5014e06f8350dc6b78d5e0ddff1b4bb8af695e4a338a154596555738cccbe6b58eb43ae221df9babfe9dda6ca770c25ab42ff986f946756b46ec553daf7616f2843dcd6a48f48d9011c050e7ed11c99f61624f057695d622088f868bf6a3966f25bd8ad58db81623fd63f2b91f3ded1a5be0efb69a64bb40d8bbfc251d9c32fbf0a1bad516751e9e04439392c59ba6f856b5c0bebe0dcc67d7d4f25da5342aba94680583ed76d94823c6f62e5e7484f7e2d2a467d167ad3f5647f958dbba3eb66f756c851a55138d1ce465333592969470fa8652df2e38bc380ff4f")), + bytes_to_long(bytes.fromhex( + "68d01875ee507057075dd8cf2e3007aebeaf767f350c130684911c483eb918a5e235ab71c2eaec62aa7bbeecdac518cb8962272e83a2943cb0e486b66da8e244fbf3e3d8e4a065198032fdb045f011784127cdfd63d285f7f20dcc37b0ebbdc8b49020b9a16333f196e8e3e8246835b1e76615985ba6e221241d096cc5bdd7336d8b22704dc1576ae0ac252fea8dab129756a609f347d60e25d8d085cf0c8775631d3c0e54e50fc67dff2c55148b4e78cf36987febb23e14ffc1da9cb0adfc139d509826aa98f6fe0e25ec6ab6442e5a7cebbe6454ff06b897467512cdd8f0460201125d0bc9cc2bae259840722ae56d16b06f9e0515a2d128a23b5b0a1896e1")) + ), + # Alcatel/TCL MTK_6577_SHENZHEN + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "a29274e3085c260de63f571646cd2c69737ba5a0bf604ad31cf6a86d6a9e08dc931ecdddb7404f4c9255c72b5debdb69114146bdd7edf6b38505b19c4d18eb0e71516d4faa871cbe1d2e24e15c1877b33587a8bdd1e7dfe1b17235d1ac431c27cae07804014c287fbf2479e6b4b80665898f7cbaa7edcf23daa8dd95f63039fe7eb641ad7c05e221d29adc62cf84893ffc6acfd44a9d2cd60d5e0f94d1c29d317bbddb3f5a324648069c72857cfc708fc9bd8a3f7a98051fa9835af1f9c71d80236334ea51cbd52e57e5a7950beb394d9c97bcc32591d9700106b0abfe1dd2db9617fb7dd2eaa3885630c3ce1dfcf087c814b480f30c411f3071f12aedee4077")), + bytes_to_long(bytes.fromhex( + "6d209285b39ee78c7cfa17a34473855463c8a42d7b494ff0d6885c16d672aed0219193ef388b5aafb3ab10bef394d6fb7831b122ce47564abb084f68f3f7be113bcfc4e8ad3774fbc8eaa8a6fe030e96a56022cd0891f59eb2564ffa2700056e50a8cce72357d3f7ac7ef7b4fdaa69e0ceae1ab3d0f5b90e00414a3cd7bd17afc3b6463ef43bfd22788b68fcfcc2964421b1b622907d8c75e8d83193a579e50c26b0beb93e53e2888cfddafefa03c368c68e6d357087f1bf0800e1bb4f0fc97c092a7e7098cb60cad71e292b506c0cd1f428aff3192da6818351a780aa1b4cce0dccd15adad815b610f445a6571d3c65d2c44da9057b5c8970cded0dfc3072c1")) + ), + # Alcatel/TCL MTK_S_2022 + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "af823063550d6e5adcca01a1ae1fe357f73d7e5c60cfa25e4beac24304b70623654fd13547de869899be532f45f3c5ff26b50292dccd112dda1478721c05304445058499bd00f6b104e16fcf2d0af55781be147787227eff54a25dca42b9d6f1fc8f4b821c099f483c402addd178330167aa9b1021dae121bb2bdcb0127ac47ae866a1579f2399c70e69293ddd3b0bacec2df9dc518aa0c58c2d7561c5783ac32e57b91d16d6c57764755894963733b85f19f9a3bcbf624199cdd1b31cbecc5448b132c3799e2d0e569f0ba61245796db5876820ef125f4a230039c5cd16b2414855bf3a3b565f81787a4e9b264c9bc855b4fe7ac17caca1bc5f070594a9c175")), + bytes_to_long(bytes.fromhex( + "3be4c4d89124e53d12cdc922c0c6571224e8925fba160186068855c5032de6655be49233899432008faef8ba5037f1a0b237e169f6f9f05be2694bf53d04b44507fceb1480007d2f49c8191ced7528e6b4fb06070851c85f2025ccb60271631def9f831822b351ed17ca9a165aae97516a6c3940971d17e927f3befb43432c1b689cc660a896237f090d7b311d9e39aa1eee5a4e3af00843c965c30ca9aa5dd7767809d27d4f66777661779d2a1fb90b014329a1973e67b8989de924e8ac98673667e4f734382f87f0dd0300d360142afa772d5beca2ef248e90a7bd32240c4a5b5f41aed3f4b63f90642f138186fe17afd713a3242eea7b2dd0f32b06b67681")) + ), + # Alcatel/TCL MTK_B3G + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "cf8243d13128ed39fadad9ca97c15585d634f4d9b38dd59e4eec4b0b93e4eb2fd2d96c425855e69706d5c11021a8c2e08bff87b424bed2dc3efa9360bf1bcf80c96cd4ba9c39eb79bfa2bf9d4efc5a56798ccd9c6599ede595aea644086605fbe55b2f7719fccbafe0c95956fcffb0ce77a9637c9ed66e067165cbe901eb041b")), + bytes_to_long(bytes.fromhex( + "12ff6a160cda225ddc898cc6ef7dd3c69d05dc24d23b7a0334568dc85191f3b63d278ab1c8449507dea8533496e04c77225a12a27b7abcf34d10c3cd67b1b41d7c19c44114e344a74396541d998d7b76ca06d0322bf3333684652528df22021c190bc38acdac2a3be6e2d0bce7f1e3c77a71750ff17895cff9c6225275a3ce81")) + ), + # Alcatel/TCL MTK_E8 + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "bdef438901dfa726cfc2cca59d12f009108b8e1fd7dd9b91a5cc71fa7b1e36c8783f9de5850050e6505fc715c50bddd59a3064b05214c4365360cb98d080cc38658a94695184b564e8e8dcc28f70eb0122a4bb7662e3a1f34c057ea523819ed02ed46bae0cd9530b0536cbe7a1ba3f33a45feb2f92ff5104dc32ebe94f249eed")), + bytes_to_long(bytes.fromhex( + "95b32d61a10e6c2a54fa4e5e020d590f6bf0f295fa87fa03b3d00dcdc4982dc997ad5c7ff872255141ec1b77f714c14587ffb87c985531c937b245062ee03514aa796ad79698c40c49a8b3c54ec66fc20deb874a8bbce87239c414f541367a350d525fa6bdea77e4cd3078cf7ddf22a8aefb0c595a6c76285d837008c0a77e29")) + ), + # Alcatel/TCL MTK_C3G + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "c04e6a1be49c5a57accaebc837099b40890180fc046c3dca58745749d0979cadb63b8b4573fafc129c2f89ebb64c4ec81339e862f5638ae145e2c8bc291097e6b90434ff3f3a1e620fa77dcb6d963f53b79abaf4eefb8a5d4378cdf4ab3060a9901909fd455cf850ae5adbdf035cb3cbcf572ac4dce4bc1321562273a461ddf1")), + bytes_to_long(bytes.fromhex( + "4375be875664fad432cb6476f1c7aeecaea3166a51eadeaa32e96d0d79dd159b6287f4cd42685330fc15391eb4ee83dc6fd22a913c5fd5023d8fd6b71af8b530209b5355acf1cc6e6397aa6e5d2dc92b7d37635d391cd22a3aa337d8fc0a274cdd7d6630395d13517e32c91daab2f5378ed7a1be86c81c2e775c249201f2c221")) + ), + # Alcatel/TCL MTK_K6 + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "a7e3089840bb7a9a7a972e8c88d7c464fe40dc4771a2df0da981079cc800f5d3cd45ed9eb34efac6bf7d2aa6dbc1266285f50d7e86e6e0e5dc6d062bc8fe871672139904e5ffe64c6ffb4ff00817ffc0ad4c18787a253ba5f7f7bd8412e5f46e2c264cedf174ed5163943331a658b434c59ec9e11b269e829ab638c80c4ebe51")), + bytes_to_long(bytes.fromhex( + "4f65cda0c3ac66753c58d748db46bfb8cb8dbd1f849c7444afcf37dc6bb218904c5a2fe08808680d2a6e7587681256a6ed9751046fa42ce44874bf2061f40dca4953c345c2f156e8ee7e2f497ebc59b3ddccda98584dfc999d213d6782f2b0faff59a9671cee801defeb5a51178a7b95c487aa735b463e8b1321b6ebe58c7401")) + ), + # Alcatel/TCL OPK_VLE5 + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "cb676a5de86e2c7d75a17f10fb2e3f81a473e5d2d088833d8c1928ce78caf1000aaa607c83f55b57dc07fac7a9ecad1600df5d033986c02c003884620661a9674042a835b99cf8a024c27a10410eb379ac69e72d6f5a9cf72c185262331c98879cbc225de835d864983d2bd085f1df99341d3cbb0ba3b0a50491c8ee98d691b5")), + bytes_to_long(bytes.fromhex( + "4befe0eb0c424d83cd2dacb59740cddec599ab3c8833dee354717425993d12ba5441056297153bb3d2667c3e9c76caabc349a07cfab60efa9e5e7b35e971fe7eedac090a1a5a7d8a2cd59de84762f09cacffecb65bf70ed504243721fd0e094c3f216fbb85778ad82829658232a2f472919e992060394e79f2aada9e8a42ce21")) + ), + # Alcatel/TCL OPK_U7_1 + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "de15dc10818e30c363bd0a87d5f8d89b832329fa25b8388709d94e9b0ee4efdd3e24eed3d931f01ea1b0e2b76265d7dc270ea8012545bb7245c286761210bf46c6dd1fadefc257fabebba29bbbd86e8336460e5d21888a319156e8ba529e4b6a200136ae4aba447fb37a357028142d8b16d79a421d513ecd9b9ec0d908ba8217")), + bytes_to_long(bytes.fromhex( + "18e2fa361f4e7fc86574d9a93f2113a4d99d272710f303e29e07ebf71444335ce789dbf9816d472b27935ad49202379e44023071706bd0058e2bae45ace0938e75610579240ec87086d27fc0844ba25bba09214ae43037cb902801a58915ce58c6f805fb3ad6cf7996f25e0cf0a94c13e04eb4370ed6b93c39ba2136f8cfd101")) + ), + # Alcatel/TCL MPK_U7_1 + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "b6a33b825b0cf6abd3c9d39d1c8bdce50a41f9bd5ca2de52c4c447afa9943f5c1365d2e9cb7961ffd877fd38696b4479a8bb7eb8da15bd8d59a1cd7e5ee517d1a20f29bc66974f87796a11f7537529f8f46ac57861484808bfce9ee6cd6527f7fe3bfd57b4a7fd46f8dc047d6c8370de6507620c2b9a3bf864e8ee4c4d2abda1")), + bytes_to_long(bytes.fromhex( + "88a4477997b57337cb144d0656bd2d5f0ef59d6b574b631a79ac8015a4c20d454e1df85682ad25eccc7fb92be373259fffe58741b5a85e50caa68b9fe84f6e295d2176b96c20ff819e8bb889702c474effe1a77710ff3b93e896fa488f1717c75e46a1b0f5898fcacfa35943f1abf80ebb665ba7fde59c4baa61dd2f6c5ec001")) + ), + # Alcatel/TCL MTK_S_AT_META + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "d1eee63f19d148c904076c507aa8d4f6c7e931a65476fe5231c06036fea2ecbcb8c811882c4f70e6e3523be73f5c7a83570f3a40bd894399a5ee9f903e8e745ec4e4e034495175b167192535843f06241d6477e3ce1ad5270e590db9cb905404c01aa407433fa2c2ca1f8366c1623fa45bd5ee68e3145a57f9af3e6e68fce41b8c682c0e07f3c48f4b377951b23b467fea0d4ee0e67c0235d0e83ae27e40ad1c060063ceb966835a0ac1eb68066f8b55775ceb7b444ffaeec19548a42247ebe687f881a0c8e5277beec22241e2ddae1c21cec8046eb005302812b7ef42ac153cab317bbeaad73f7ccaced38c433530b7e0ad464150026025a9a3ff5d45e025db")), + bytes_to_long(bytes.fromhex( + "8294e45929b8f95a380c59fe715da5225fd518920a85fdc9a8b2ade6675b7680293c21539fa4466907cb3601b072d8adebb0481ecf069baaee00d0f5cb4396f4ffea11dfd41f3c62fdeb312ee9b4be2026bc40aacd9ff928130fa7af0305228dd5e47c551c2a701653dd6841b9566099de99e2731194ae617ca8d9df99a47c49d9f514620ea1e3742da8dc7dec6756403631a274dc226c6121863e4a571a120b63c38d134853df5b986fac1565e1f3bd8a02d239462967e9c71cedd9ae0c0eec330018ca553cc7cc2fbc73d6ba37be2fe360644ff69ab7c734264675c057417857df4ca206dfdac9a5621f9d8e45dd2e58dc8b4198667de3efd1d5bd7ce007a1")) + ), + # Alcatel/TCL MTK_B7 + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "e3e3166f47177de4915e915a9d555d980afad96be22cbb8a02516ac8fe69657bd10bc6d072046dcd33e4476e24f128cb7ac613df140cefe71abf080a74d27c114635d3954c55299f6f81c2a0aa14c4c678307f4b3bbf0c64f0006051ea7573b5b0cc290201c76c4d272c981b1bb19bd0a0a0ac046e6e63b0f4cf88d2c98a5c91")), + bytes_to_long(bytes.fromhex( + "776b1deb8c3e943b3dae67cf2b597ba55c439dc1fa10e4e9ea530df96bd0815cc3ec3ef0267f89a699c5cb64bdb91e5e9ae4c7af03cbcfbfb4755cda55e3a31d510f96a102b5aed90731788a426e371f8ae24f660403377cc0836a06b2a8e159bd177f4cf68e36d447e4b52ca63611cd8416c1efcac52143106c272f7474387d")) + ), + # Alcatel/TCL MTK_BACHATA + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "94cc529bb1af0ab8043f09e3ca612d787cc19485d3769546e750f6edb844979ba8f1f9afb8b93b521330b74713831a78a584f7b24780f92dd00e5d56ce8defa3cd39d01752e514a4c2ba7499f334729622049491b1aecee6c9e1c867e996c294b10f5d62ea4504e333424b280162087296c300c01fdf75f47d874df40dbdb94f")), + bytes_to_long(bytes.fromhex( + "09fe029a23ff7e37c749386fcc9a640450546b95e5127489d364d380393c99f5c10da6d7cf0ed955f4a5f3d8d90d97cc7c49069d394206f9b59c11568ffe66163eae377447abb103cd5d4256885cf7984b28cff8a096dc479b9196d66cd534cbdfece7a61de04110bb14a3ba5e0f20ae0bb4d82e18fbff0335904dc09b829e91")) + ), + # Alcatel/TCL MPK_VLE5 + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "a62bf756a70657b6b560588e85e662e181b6a61ae466ac3d0d2e971f160e88216792cedfb1979b3d6b665068eee8a8699888cd74ec9482c61ae7eae3571e50beccdcb336477c26040d09b46dbd93efc0fece4adde2e00c1cbedafd6ad7c43bd621675a6a46425c5cf6182fc5602be443a372fb4ead4531e64285ce29be913285")), + bytes_to_long(bytes.fromhex( + "7005d1bf5be81db7b17c9b16b1d407b308b42e3490e75a93e9d00fd6c812d1d8db2f1041a342964808a037f315a448ecaf0502a5215c58f0de709c5bd87e3a65e0291a1a23547c76cf437ef1d9b434b70dbb417049a31de9ee7becf218a5bb63b05fb84ff49d1e6aaa4b9b4376f47417435ecd85ccda63be9070e7892ecd4a41")) + ), + # Alcatel/TCL MTK_C7 + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "c1d6c392828f4620e455c138840ab448cfcd4aca821663335dba9c51dec9b8198301ca6b069adefcd1887f1cec31c15674ab264daeeb82398b419f08b4236904203c48a7db8724f1773d04a6b8c88cb38907a00bc53e86cdb2bbf479a68b8241382bdc5ac6105270efc2da4cb91a36459ccf6a2a87dd56ec4c331dd419ba5931")), + bytes_to_long(bytes.fromhex( + "31d28ed040a8ace0d56fc94b4a7d29dbb135d62c7905621818d657499fd6ff6fe7417592cececdd3f3d37ec0a361228da34d3e7a2724b7832ced00008fb4ae500357fc3d285c64fbf7efd4bd1ee48ed40190296171acc3c2d0c69e89da5a8fde7e0ba7048aec6bef1bb19646f883fe9d77d8d263545e7c00e8604be38210d065")) + ), + # Alcatel/TCL MTK_MARTELL + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "a800d061e4a42e4c3453a17cc8daa974e23bfaa403b4a60fad6d3516d8ec035c1ebabdcd60009d9b8c639954e616c6cb6cf821e31e58772ffc366e6ffb7314657567b12279a34dd69e46b8a4a628dc2dfabc68fa1d89388d2058a97d2e31520b4fb04bc2f963e110e8541eefd22d90a03eca806b3c6a20c6bd1a7468e61ea1ab283ed1bc462dfae189eb5fb451f802fb868cda9a7409aa52e42b18882e79f4f1c2377829fafd9760468bd1db823bd9080378cf46ef405d91636cafc03acad9fada6b0446dbaf51e9d533887e4a3a8f62114063e0b8920684c28bfbe256aab26e98751166358c201347ba6c3b36d49aab6302fc248eea3c254e15a08429fd2149")), + bytes_to_long(bytes.fromhex( + "985e549fd42c0b4955d3db8c3ee601f65e10a3db08f957fab4016dbad0f60c7e09e8b7a782404cb0fc7c805dfd67fed814765ed58b7a146ed2c1d31b80e3f845a45b6ccda5a0344247be404c23debf027c7b5082373372b49bf78d9058caa66c57d3be829088c3610034faf1ea9f24a21110bbb3865182747ca1779e83c6983c189b3f19f3df49e5f9cdfa57f4f69dfae53e19ee0b1ec30986d59ad11f52bdc022a9499dfa89f8546d266f6026aa307501ca5a619f5413a45ef38f139c3ea8b52f02fbc8983aa878052d9108668ecfc8605057a298355d2f680c34630e224c57dd4c4f2dc0d51766ef7070daddfa3c885a3f94d76c943c6c1054d338e2323b99")) + ), + # Alcatel/TCL OPK_U7 + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "9f94e8f1171fed4b427629c928e807b2220f109ac70a3d5b1b8cbd295bc3fa3226d3903298cd81319b9b08a6f8e77efad0b04139b686ee0d1586175913ad6f65d6cf21bbc7f769885381ba6d840414b26fe7b9b3e393acacb3453e3a0cb79ca21cb38a42685a03462244fdb2a5f1d8b9e20745fb3206e799655c47146310911b")), + bytes_to_long(bytes.fromhex( + "61ed86791440c26491b763730f483c18c32fcd77bdb6f9e9e3e11cdfb9716d22c392c68556219e2b6c1ada57649ce2de559c239a9ff8f33252480421e4a2649df8e3ee0095c9bec361f25a5ec67d0b4d96c73404ff8a115fecf1173a6568845480fd4423b5dba2e5111335655f3bc2f3fec65510648571992e010ba0aaf243e1")) + ), + # Alcatel/TCL MTK_S_2020 + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "e4cc4967bec817bb348468024c3084b15fd4f7810c8a9d078a4f51cf9974d2e3bae8d5a19a85c0a73befd0675100e642a3f425e3192dfb1de56928c37f45fc142adaa65798ada863b84d4b5f22c3f79b95cc201ac7c292c99475453a62b7b7e06e84833dfca7a0df931084932a80129e543c6d24a13c5f2cba6ef5ffed9efd4dbc20496f5194f0d1aad9d789f32577f8846df9a14778504ccb5dd7507114c148c1937fb99da15f9596d4fa052cdaf1f66d7e5e0c0793628752bf9af3c4ac67e21c21d170ad448160761bddf586a4900fbb7dcc44467f1550d15db774d7cacfe3105b465321a5f95fec22c2011d616a5c0e22f0535dd1f969202be56ec015f891")), + bytes_to_long(bytes.fromhex( + "b86887499d157d3b1feb1041b9d2e94065732b41d22feebce317676321d66d1babcc7a53544e35a714c207811e62d134291d616417295e5b0c4aa3d65e40b41a352822263c22cbb4041a1883c76b97a8c925cb428a7b2300622ddaec62209d8dc0c60159f6c7ccfc26768bc469deec22bcd62f49f4c2ca1b2cf0be49d6e5ec563279cdee79c92800c6c965200d316c79285551a54359b37ec4173eadf4c0506d857ddca4831ade7ea8f13097b4e2b630a2d3eb9c57abcc65f84d693c55e361763d8d37bb40cd6e2520684ae05edc62a36cda6747509600f4605b7ed924ee1ad49e66eca1176a20794600173dbb42fced2f1fa0cccc0af3b56d58453bee420099")) + ), + # Alcatel/TCL MTK_U82 + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "ed2055a7b95db86f7e3101196ae6218015d70d03df6fd5787de150e82927443097a90485757743447e2f4641afcf510acf585f73e79c45b2908d5de8835221a76d93e48ca465ffbe0dd76cdaa98550ab2e7b84a6470d48595742fb54a204442ce67bab989c69adf86457e313eb24c87d80aa7d635449fab0d97b6b08c5f7c86f")), + bytes_to_long(bytes.fromhex( + "3f5d99a61561d70c6c335a30d9a11fa8a3ad70fbecf46c9e233d57aa827cccbb137c060a47e693e234ba1b532851053e17446d5582b9fee205c0d12c7613378c8b8c8c0184cdba90d56a308014aac0458c5572699d599a15ba36146b6f2e230034708cf67d31ab837b7bd8e5967fd9a7bf413b7d9314302b18e48962d01cf6f1")) + ), + # Alcatel/TCL MTK_JADE + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "e8490dcbd3488278442f78ec5634ccdb8befee081ed0d19071480a10c299416ab8d0e9eb19e8975cac260606463c51bb62875ab24690d07905b9c48fe60086da12899bce3dbed91e0157cff76f27a1c09b37e837e7acb71da3c0e30564223ae20216fbcb3de5e93c2d7f98827d61441b988e57497c1ddacb87cec1e73139bf67")), + bytes_to_long(bytes.fromhex( + "69fd6b9e25ba604e204ec90e8e0769b28417e6b52dda7ac53deb712c549f398a48ea8ad20bf065a093ac85f336f92f1221d3413f3793bc8c7c6057a091828c04f6fb695f43747d0d22de100bccce70ac7a8f9d092afaa7d44fcda99b12454f8c887e383c69e7e21ad15203eaae51d803cf35da09c8d536139c658bebfddccf01")) + ), + # Alcatel/TCL MTK_B82 + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "b6a33b825b0cf6abd3c9d39d1c8bdce50a41f9bd5ca2de52c4c447afa9943f5c1365d2e9cb7961ffd877fd38696b4479a8bb7eb8da15bd8d59a1cd7e5ee517d1a20f29bc66974f87796a11f7537529f8f46ac57861484808bfce9ee6cd6527f7fe3bfd57b4a7fd46f8dc047d6c8370de6507620c2b9a3bf864e8ee4c4d2abda1")), + bytes_to_long(bytes.fromhex( + "88a4477997b57337cb144d0656bd2d5f0ef59d6b574b631a79ac8015a4c20d454e1df85682ad25eccc7fb92be373259fffe58741b5a85e50caa68b9fe84f6e295d2176b96c20ff819e8bb889702c474effe1a77710ff3b93e896fa488f1717c75e46a1b0f5898fcacfa35943f1abf80ebb665ba7fde59c4baa61dd2f6c5ec001")) + ), + # Alcatel/TCL MTK_S_2021 + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "df85f4c4ae8c98e78142d403d002276a5bf9edd17870caa848fc45720e8b4be94f6f9a47181417840a5b7d4fc36575129afd6a848a0de3f62fac5b5f687a2219cab8cdf2e7527d6af3c6be84eb99bf519b0b210960fc8f5223c9bc38e8f20d0267642153cf370312b955143e10490c6a207868ac7ac314bbe10f6063a1ba606e28d248a1ee3e7000d12e9c4ebd47ae483b625156b82026fcfdc36118198cac1463aeb56bdfe260efa38ac1d4123c13fe59e0fb0f2f895609c117f7a39fb9f27c356d4748cf7af41e15ea68c6c7c64c4d0a1acb4632965e0260d9b08de9fd81b82050c9929b79ee865f89272483b6fed8a409d6a1af2429d24fd358a4b4da4e77")), + bytes_to_long(bytes.fromhex( + "cf553c03ac3cf21fdb4097d4a97f35fc6c305a2e30dfbebb7667ba2adfdec99d3277bccd314281c592ade680b42849fde6122659a68cd7e525b764520d612c7c6c141bc4b2594bc88732d4ca0a97e464d7c1ecf4fc2788f1920cb030c1b2b3ea84e8d6191d5e53d56c5fc495051a1d0fdbea947d58a9d773a68152d157d4bf57f2b4fba8182f96ea4c9b798018361054f95b251089c786be542c7881c49b077ad52af25a359bb26257170706217f66533cf4b8379a1fb7a30c955c8ed4c1c6dca905ce6e7e5e92ec7e1bda1db44cd187a9e5137fe44a37cfdbee173a49654994926cb2fdd7857dfc8978d9de73e899e18f5dfe33a64e6414fc5d93738f8c5591")) + ), + # Alcatel/TCL MTK_MINIQ2 + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "ba1d10a245e60471e8d3138611615170f213cae5b895c8af35eb720e2671915f07dd6ccb5384d7580200d18f430c89405dcb0be6a5e91cff0fda970e292d5f0704720473bc61e19590539b1bb08ce2b306755db1f70cf1193933802ca44281fe01699f75e56fb7660fce0342ccc284d497a17ad7d3d15eaa20ad4c67bd92de61")), + bytes_to_long(bytes.fromhex( + "a475ba952a9f2f9e58d6ec91b41a03158354ea1e451656d83d15691c07eca3410e7a2401283462f66a0ebf1f91682a80ae61168b2260f4368f93e197a9db65f4139523ef5449a6fa77568a9ffe90e0a34a37f99b7c1ec6ed1683a574d9045993679ef73299991cd43b96fdba6673ae4318f2f635a816f8559d325f9ebe428a01")) + ), + # Alcatel/TCL MTK_HIGHWAY + ( + bytes_to_long(bytes.fromhex("00010001")), + bytes_to_long(bytes.fromhex( + "beca753fd31ef104bbb01b0a7c560c7bc040d30ea18f216b64b7de416b695af2b3350ecc02fa5224b412793f876a7bdbd8cbe7fecd754aa8214a27bfe7ececd8caa16959df83bdaeed524880a820f8dfe601dc70f164ff1921baaa06efd8c584c22269a109d16287356fd30e7eb02a1365ca93fcb8088278f119a2c7298306a9")), + bytes_to_long(bytes.fromhex( + "5407571c851f5b877a2255c6887c5d832369698b481c81db8ac07062dfabc7229d4b00f95956665743f7deeedbf54a17c9a404c97433f46d983bd0c5f49fa4b013b9d86e5f1377f563d8299675c0ea2b81f51c33ad74a265184df9389eefb8e72d2f0585e4a41826b8846b0ee6da5ef8cce471536109fe4c658735247ebbc301")) + ), + ] + if isbrom: + # e, n, d + for key in rsakeys: + if self.echo(self.Cmd.SLA.value): + status = self.rword() + if status > 0xFF: + self.error(f"Send auth error:{self.eh.status(status)}") + return False + e = key[0] + n = key[1] + d = key[2] + challenge_length = self.rdword() + challenge = self.rbyte(challenge_length) + response = generate_rsa_challenge(n, d, challenge) + resplen = len(response) # 0x80, 0x100, 0x180 + self.usbwrite(int.to_bytes(resplen,4,'little')) + rlen = self.rdword() + if resplen == rlen: + status = self.rword() + if status > 0xFF: + self.error(f"Send sla challenge response len error:{self.eh.status(status)}") + return False + self.usbwrite(response[:resplen]) + status = self.rdword() + if status < 0xFF: + return True + else: + self.error(f"Send auth error:{self.eh.status(status)}") + continue + return False + else: # not brom / da + """ + # N=B243F669..... + for key in rsakeys: + rsakey = RSA.construct((n, e, d)) + encryptor = PKCS1_OAEP.new(rsakey) + encrypted = encryptor.encrypt(data) + print(encrypted.hex()) + """ + return True + def get_brom_log(self): if self.echo(self.Cmd.BROM_DEBUGLOG.value): # 0xDD length = self.rdword() @@ -677,7 +1062,17 @@ class Preloader(metaclass=LogBase): return self.mtk.config.meid else: self.error("Error on get_meid: " + self.eh.status(status)) - else: + elif int.from_bytes(res,'little')>2: + self.usbwrite(self.Cmd.GET_ME_ID.value) + if self.usbread(1) == self.Cmd.GET_ME_ID.value: + length = unpack(">I", self.usbread(4))[0] + self.mtk.config.meid = self.usbread(length) + status = unpack("2: + self.usbwrite(self.Cmd.GET_SOC_ID.value) + if self.usbread(1) == self.Cmd.GET_SOC_ID.value: + length = unpack(">I", self.usbread(4))[0] + self.mtk.config.socid = self.usbread(length) + status = unpack(" tuple: + def get_pmt(self, backup: bool = False, parttype: str = "user") -> tuple: + pt = pmt() + blocksize = self.mtk.daloader.daconfig.pagesize + if not backup: + addr = self.mtk.daloader.daconfig.flashsize - (2 * blocksize) + else: + addr = self.mtk.daloader.daconfig.flashsize - (2 * blocksize) + blocksize + data = self.readflash(addr=addr, length=2 * self.config.pagesize, filename="", parttype=parttype, display=False) + magic = int.from_bytes(data[:4],'little') + if magic in [b"PTv3", b"MPT3"]: + partdata = data[8:] + partitions = [] + for partpos in range(128): + partinfo = pt.pt_resident(partdata[partpos * 96:(partpos * 96) + 96]) + if partinfo[:4] == b"\x00\x00\x00\x00": + break + class partf: + unique = b"" + first_lba = 0 + last_lba = 0 + flags = 0 + sector = 0 + sectors = 0 + type = b"" + name = "" + + pm = partf() + pm.name = partinfo.name.rstrip(b"\x00").decode('utf-8') + pm.sector = partinfo.offset // self.config.pagesize + pm.sectors = partinfo.size // self.config.pagesize + pm.type = 1 + pm.flags = partinfo.mask_flags + partitions.add(pm) + return data, partitions + return b"", None + + def get_gpt(self, gpt_settings, parttype: str = "user") -> tuple: data = self.readflash(addr=0, length=2 * self.config.pagesize, filename="", parttype=parttype, display=False) if data[:4] == b"BPI\x00": guid_gpt = gpt( @@ -77,7 +114,8 @@ class Partition(metaclass=LogBase): guid_gpt.parse(data, self.config.pagesize) return data, guid_gpt - def get_backup_gpt(self, lun, gpt_num_part_entries, gpt_part_entry_size, gpt_part_entry_start_lba, parttype="user") -> bytearray: + def get_backup_gpt(self, lun, gpt_num_part_entries, gpt_part_entry_size, gpt_part_entry_start_lba, + parttype="user") -> bytearray: data = self.readflash(addr=0, length=2 * self.config.pagesize, filename="", parttype=parttype, display=False) if data == b"": return data diff --git a/mtkclient/Library/pmt.py b/mtkclient/Library/pmt.py new file mode 100644 index 0000000..0a9a0b9 --- /dev/null +++ b/mtkclient/Library/pmt.py @@ -0,0 +1,55 @@ +#!/usr/bin/python3 +# -*- coding: utf-8 -*- +# (c) B.Kerler 2018-2023 +import argparse +import os +import sys +import logging +from io import BytesIO +from enum import Enum +from struct import unpack +from binascii import hexlify + +try: + from mtkclient.Library.utils import LogBase, structhelper +except: + from utils import LogBase, structhelper + +class pmt(metaclass=LogBase): + class pt_resident: + def __init__(self, data): + sh = structhelper(data) + self.name = sh.bytes(64) + self.size = sh.qword() + self.part_id = sh.qword() + self.offset = sh.qword() + self.mask_flags = sh.qword() + + class pt_info: + def __init__(self, data): + sh = structhelper(data) + self.sequencenumber = sh.bytes(1) + self.tool_or_sd_update = sh.bytes(1) + tmp = sh.bytes(1) + self.mirror_pt_dl = (tmp>>4)&0xF + self.mirror_pt_has_space = tmp&0xF + tmp = sh.bytes(1) + self.pt_changed = (tmp >> 4) & 0xF + self.pt_has_space = tmp & 0xF + + class pmt_header: + def __init__(self, data): + sh = structhelper(data) + self.signature = sh.bytes(8) + self.revision = sh.dword() + self.header_size = sh.dword() + self.crc32 = sh.dword() + self.reserved = sh.dword() + self.current_lba = sh.qword() + self.backup_lba = sh.qword() + self.first_usable_lba = sh.qword() + self.last_usable_lba = sh.qword() + self.disk_guid = sh.bytes(16) + self.part_entry_start_lba = sh.qword() + self.num_part_entries = sh.dword() + self.part_entry_size = sh.dword() \ No newline at end of file diff --git a/mtkclient/Library/settings.py b/mtkclient/Library/settings.py old mode 100644 new mode 100755 index 9ef91cb..cb555f2 --- a/mtkclient/Library/settings.py +++ b/mtkclient/Library/settings.py @@ -5,10 +5,12 @@ from binascii import hexlify class hwparam: paramsetting = None hwcode = None + appid = b"" def __init__(self, meid:str, path:str="logs"): self.paramfile = "hwparam.json" self.hwparampath = path + self.appid = b"" if isinstance(meid,bytearray) or isinstance(meid,bytes): meid=hexlify(meid).decode('utf-8') if meid is None: diff --git a/mtkclient/Library/thread_handling.py b/mtkclient/Library/thread_handling.py old mode 100644 new mode 100755 diff --git a/mtkclient/Library/utils.py b/mtkclient/Library/utils.py index 2fc6276..8ae3fc9 100755 --- a/mtkclient/Library/utils.py +++ b/mtkclient/Library/utils.py @@ -124,7 +124,7 @@ def find_binary(data, strf, pos=0): rt += 1 continue rt += 1 - prep = data[rt:].find(t[i]) + prep = data[pos+rt:].find(t[i]) if prep != 0: error = 1 break diff --git a/mtkclient/Loader/MTK_AllInOne_DA_5.1420.bin b/mtkclient/Loader/MTK_AllInOne_DA_5.1420.bin deleted file mode 100644 index dd99622..0000000 Binary files a/mtkclient/Loader/MTK_AllInOne_DA_5.1420.bin and /dev/null differ diff --git a/mtkclient/Loader/MTK_AllInOne_DA_5.1824.bin b/mtkclient/Loader/MTK_AllInOne_DA_5.1824.bin deleted file mode 100755 index 3205f3a..0000000 Binary files a/mtkclient/Loader/MTK_AllInOne_DA_5.1824.bin and /dev/null differ diff --git a/mtkclient/Loader/MTK_AllInOne_DA_iot.bin b/mtkclient/Loader/MTK_AllInOne_DA_iot.bin deleted file mode 100755 index 3ecb67d..0000000 Binary files a/mtkclient/Loader/MTK_AllInOne_DA_iot.bin and /dev/null differ diff --git a/mtkclient/Loader/MTK_AllInOne_DA_mt6789.bin b/mtkclient/Loader/MTK_AllInOne_DA_mt6789.bin deleted file mode 100644 index 476953b..0000000 Binary files a/mtkclient/Loader/MTK_AllInOne_DA_mt6789.bin and /dev/null differ diff --git a/mtkclient/Loader/MTK_AllInOne_DA_5.2228.bin b/mtkclient/Loader/MTK_DA_V5.bin similarity index 73% rename from mtkclient/Loader/MTK_AllInOne_DA_5.2228.bin rename to mtkclient/Loader/MTK_DA_V5.bin index 9ee774c..aef48ee 100644 Binary files a/mtkclient/Loader/MTK_AllInOne_DA_5.2228.bin and b/mtkclient/Loader/MTK_DA_V5.bin differ diff --git a/mtkclient/Loader/MTK_DA_V6.bin b/mtkclient/Loader/MTK_DA_V6.bin new file mode 100644 index 0000000..3bb3d1b Binary files /dev/null and b/mtkclient/Loader/MTK_DA_V6.bin differ diff --git a/mtkclient/Loader/Preloader/0699_preloader_c767_8111h_xxa1_39_o1_7D734924C1.bin b/mtkclient/Loader/Preloader/0699_preloader_c767_8111h_xxa1_39_o1_7D734924C1.bin deleted file mode 100644 index 8eadfdc..0000000 Binary files a/mtkclient/Loader/Preloader/0699_preloader_c767_8111h_xxa1_39_o1_7D734924C1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/0699_preloader_dura_BFE22C5E88.bin b/mtkclient/Loader/Preloader/0699_preloader_dura_BFE22C5E88.bin deleted file mode 100644 index c0268d1..0000000 Binary files a/mtkclient/Loader/Preloader/0699_preloader_dura_BFE22C5E88.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/0717_preloader_k61v1_64_bsp_37D5FA1A49.bin b/mtkclient/Loader/Preloader/0717_preloader_k61v1_64_bsp_37D5FA1A49.bin deleted file mode 100644 index eac8cb1..0000000 Binary files a/mtkclient/Loader/Preloader/0717_preloader_k61v1_64_bsp_37D5FA1A49.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/0766_preloader_cereus_3C2D76D046.bin b/mtkclient/Loader/Preloader/0766_preloader_cereus_3C2D76D046.bin deleted file mode 100644 index 43965e7..0000000 Binary files a/mtkclient/Loader/Preloader/0766_preloader_cereus_3C2D76D046.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/0766_preloader_k62v1_64_bsp_45762BFACF.bin b/mtkclient/Loader/Preloader/0766_preloader_k62v1_64_bsp_45762BFACF.bin deleted file mode 100644 index 99fc0ea..0000000 Binary files a/mtkclient/Loader/Preloader/0766_preloader_k62v1_64_bsp_45762BFACF.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/0766_preloader_k65v1_64_bsp_titan_rat_DD91307C1E.bin b/mtkclient/Loader/Preloader/0766_preloader_k65v1_64_bsp_titan_rat_DD91307C1E.bin deleted file mode 100644 index dd50bbe..0000000 Binary files a/mtkclient/Loader/Preloader/0766_preloader_k65v1_64_bsp_titan_rat_DD91307C1E.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/0766_preloader_oppo6762_18540_98711A09AB.bin b/mtkclient/Loader/Preloader/0766_preloader_oppo6762_18540_98711A09AB.bin deleted file mode 100644 index fee8783..0000000 Binary files a/mtkclient/Loader/Preloader/0766_preloader_oppo6762_18540_98711A09AB.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/0766_preloader_oppo6765_19451_94B0482E99.bin b/mtkclient/Loader/Preloader/0766_preloader_oppo6765_19451_94B0482E99.bin deleted file mode 100644 index 2b5199e..0000000 Binary files a/mtkclient/Loader/Preloader/0766_preloader_oppo6765_19451_94B0482E99.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/0766_preloader_s96116ca1_B430EEA477.bin b/mtkclient/Loader/Preloader/0766_preloader_s96116ca1_B430EEA477.bin deleted file mode 100644 index 1039f2d..0000000 Binary files a/mtkclient/Loader/Preloader/0766_preloader_s96116ca1_B430EEA477.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/0813_preloader_begonia_1547BE956A.bin b/mtkclient/Loader/Preloader/0813_preloader_begonia_1547BE956A.bin deleted file mode 100644 index e964cda..0000000 Binary files a/mtkclient/Loader/Preloader/0813_preloader_begonia_1547BE956A.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/A15s_preloader_oppo6765.bin b/mtkclient/Loader/Preloader/A15s_preloader_oppo6765.bin deleted file mode 100644 index 1c5cb92..0000000 Binary files a/mtkclient/Loader/Preloader/A15s_preloader_oppo6765.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/A7x_preloader_oppo6771_18011.bin b/mtkclient/Loader/Preloader/A7x_preloader_oppo6771_18011.bin deleted file mode 100644 index 44ee589..0000000 Binary files a/mtkclient/Loader/Preloader/A7x_preloader_oppo6771_18011.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/Coolpad_Cool_X_Preloader.bin b/mtkclient/Loader/Preloader/Coolpad_Cool_X_Preloader.bin deleted file mode 100644 index 218a1dc..0000000 Binary files a/mtkclient/Loader/Preloader/Coolpad_Cool_X_Preloader.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/F11_PRO_preloader_oppo6771_18531.bin b/mtkclient/Loader/Preloader/F11_PRO_preloader_oppo6771_18531.bin deleted file mode 100644 index e44dd82..0000000 Binary files a/mtkclient/Loader/Preloader/F11_PRO_preloader_oppo6771_18531.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/OPPO_A3_preloader_oppo6771_17331.bin b/mtkclient/Loader/Preloader/OPPO_A3_preloader_oppo6771_17331.bin deleted file mode 100644 index a4eed2e..0000000 Binary files a/mtkclient/Loader/Preloader/OPPO_A3_preloader_oppo6771_17331.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/OPPO_A91_preloader_oppo6771_19350.bin b/mtkclient/Loader/Preloader/OPPO_A91_preloader_oppo6771_19350.bin deleted file mode 100644 index a1a45b2..0000000 Binary files a/mtkclient/Loader/Preloader/OPPO_A91_preloader_oppo6771_19350.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/Realme_3_preloader_oppo6771_18601.bin b/mtkclient/Loader/Preloader/Realme_3_preloader_oppo6771_18601.bin deleted file mode 100644 index c3acef8..0000000 Binary files a/mtkclient/Loader/Preloader/Realme_3_preloader_oppo6771_18601.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/Redmi_Note_10s_preloader.bin b/mtkclient/Loader/Preloader/Redmi_Note_10s_preloader.bin deleted file mode 100644 index 316a6c5..0000000 Binary files a/mtkclient/Loader/Preloader/Redmi_Note_10s_preloader.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/Reno_2F_preloader_oppo6771.bin b/mtkclient/Loader/Preloader/Reno_2F_preloader_oppo6771.bin deleted file mode 100644 index 3585e34..0000000 Binary files a/mtkclient/Loader/Preloader/Reno_2F_preloader_oppo6771.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/Samsung_A32_Preloader.bin b/mtkclient/Loader/Preloader/Samsung_A32_Preloader.bin deleted file mode 100644 index fde6880..0000000 Binary files a/mtkclient/Loader/Preloader/Samsung_A32_Preloader.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/alcatel_OT-5028A_preloader.bin b/mtkclient/Loader/Preloader/alcatel_OT-5028A_preloader.bin deleted file mode 100644 index c003475..0000000 Binary files a/mtkclient/Loader/Preloader/alcatel_OT-5028A_preloader.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader.bin b/mtkclient/Loader/Preloader/preloader.bin deleted file mode 100644 index e004dbf..0000000 Binary files a/mtkclient/Loader/Preloader/preloader.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_1501_m02.bin b/mtkclient/Loader/Preloader/preloader_1501_m02.bin deleted file mode 100644 index 6924781..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_1501_m02.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_1603_A03.bin b/mtkclient/Loader/Preloader/preloader_1603_A03.bin deleted file mode 100644 index 794db49..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_1603_A03.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_8681_A01.bin b/mtkclient/Loader/Preloader/preloader_8681_A01.bin deleted file mode 100644 index 20a78c7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_8681_A01.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_A022F_U1.bin b/mtkclient/Loader/Preloader/preloader_A022F_U1.bin deleted file mode 100644 index 67c7093..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_A022F_U1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_A158_mpan1721.bin b/mtkclient/Loader/Preloader/preloader_A158_mpan1721.bin deleted file mode 100644 index 6aa313f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_A158_mpan1721.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_A158_mpan1723.bin b/mtkclient/Loader/Preloader/preloader_A158_mpan1723.bin deleted file mode 100644 index 31d76f0..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_A158_mpan1723.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_A32F_itel.bin b/mtkclient/Loader/Preloader/preloader_A32F_itel.bin deleted file mode 100644 index 9241e42..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_A32F_itel.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_A45.bin b/mtkclient/Loader/Preloader/preloader_A45.bin deleted file mode 100644 index 530a0bf..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_A45.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_A7L6_b1-770.bin b/mtkclient/Loader/Preloader/preloader_A7L6_b1-770.bin deleted file mode 100644 index cb7d2b9..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_A7L6_b1-770.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_A8_b1-850.bin b/mtkclient/Loader/Preloader/preloader_A8_b1-850.bin deleted file mode 100644 index 9035810..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_A8_b1-850.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_AC156OXYGEN.bin b/mtkclient/Loader/Preloader/preloader_AC156OXYGEN.bin deleted file mode 100644 index 9b7aa37..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_AC156OXYGEN.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_ANT.bin b/mtkclient/Loader/Preloader/preloader_ANT.bin deleted file mode 100644 index d417000..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_ANT.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_ASUS_ZC52_E286L.bin b/mtkclient/Loader/Preloader/preloader_ASUS_ZC52_E286L.bin deleted file mode 100644 index 63549ce..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_ASUS_ZC52_E286L.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_Archos_101e_neon.bin b/mtkclient/Loader/Preloader/preloader_Archos_101e_neon.bin deleted file mode 100644 index 10414c1..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_Archos_101e_neon.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_B1f_POP_2f.bin b/mtkclient/Loader/Preloader/preloader_B1f_POP_2f.bin deleted file mode 100644 index 01c3538..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_B1f_POP_2f.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_CO2.bin b/mtkclient/Loader/Preloader/preloader_CO2.bin deleted file mode 100644 index e523ac7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_CO2.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_Coolpad_Fancy.bin b/mtkclient/Loader/Preloader/preloader_Coolpad_Fancy.bin deleted file mode 100644 index 5c0a5b5..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_Coolpad_Fancy.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_D77_if.bin b/mtkclient/Loader/Preloader/preloader_D77_if.bin deleted file mode 100644 index 8a8de19..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_D77_if.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_E262L.bin b/mtkclient/Loader/Preloader/preloader_E262L.bin deleted file mode 100644 index 9b330f1..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_E262L.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_E266L.bin b/mtkclient/Loader/Preloader/preloader_E266L.bin deleted file mode 100644 index 22ecad1..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_E266L.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_E286L.bin b/mtkclient/Loader/Preloader/preloader_E286L.bin deleted file mode 100644 index 63549ce..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_E286L.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_E523_E7.bin b/mtkclient/Loader/Preloader/preloader_E523_E7.bin deleted file mode 100644 index 41b4430..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_E523_E7.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_E523_if9002.bin b/mtkclient/Loader/Preloader/preloader_E523_if9002.bin deleted file mode 100644 index 9af0288..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_E523_if9002.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_E7_Pro_yk736_lwg_36.bin b/mtkclient/Loader/Preloader/preloader_E7_Pro_yk736_lwg_36.bin deleted file mode 100644 index 5c4e8d9..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_E7_Pro_yk736_lwg_36.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_F18.bin b/mtkclient/Loader/Preloader/preloader_F18.bin deleted file mode 100644 index 24a495f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_F18.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_G10_if.bin b/mtkclient/Loader/Preloader/preloader_G10_if.bin deleted file mode 100644 index ccf2692..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_G10_if.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_G30_if.bin b/mtkclient/Loader/Preloader/preloader_G30_if.bin deleted file mode 100644 index 97bdf03..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_G30_if.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_Hisense_6739_yk737_lwg_bsp1g.bin b/mtkclient/Loader/Preloader/preloader_Hisense_6739_yk737_lwg_bsp1g.bin deleted file mode 100644 index 2be3e87..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_Hisense_6739_yk737_lwg_bsp1g.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_Hisense_F27_yk736_emmc_wcdma.bin b/mtkclient/Loader/Preloader/preloader_Hisense_F27_yk736_emmc_wcdma.bin deleted file mode 100644 index 1b6c290..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_Hisense_F27_yk736_emmc_wcdma.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_Hisense_Infinity_E7_yk736_emmc_wcdma.bin b/mtkclient/Loader/Preloader/preloader_Hisense_Infinity_E7_yk736_emmc_wcdma.bin deleted file mode 100644 index 1b6c290..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_Hisense_Infinity_E7_yk736_emmc_wcdma.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_Hisense_U965_3G_yk737_go_wcdma.bin b/mtkclient/Loader/Preloader/preloader_Hisense_U965_3G_yk737_go_wcdma.bin deleted file mode 100644 index 22f5b8f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_Hisense_U965_3G_yk737_go_wcdma.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_It_A45.bin b/mtkclient/Loader/Preloader/preloader_It_A45.bin deleted file mode 100644 index 6596761..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_It_A45.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_K350t.bin b/mtkclient/Loader/Preloader/preloader_K350t.bin deleted file mode 100644 index 9cbe8c7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_K350t.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_K711C.bin b/mtkclient/Loader/Preloader/preloader_K711C.bin deleted file mode 100644 index bacdbcd..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_K711C.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_K802.bin b/mtkclient/Loader/Preloader/preloader_K802.bin deleted file mode 100644 index 9936f55..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_K802.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_KUL_SYM_6737m_65_c_n.bin b/mtkclient/Loader/Preloader/preloader_KUL_SYM_6737m_65_c_n.bin deleted file mode 100644 index 72a9b05..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_KUL_SYM_6737m_65_c_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_L18011.bin b/mtkclient/Loader/Preloader/preloader_L18011.bin deleted file mode 100644 index a5e21a0..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_L18011.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_M013F_U1.bin b/mtkclient/Loader/Preloader/preloader_M013F_U1.bin deleted file mode 100644 index 75e17c3..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_M013F_U1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_M013F_U1.img b/mtkclient/Loader/Preloader/preloader_M013F_U1.img deleted file mode 100644 index e1cefe2..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_M013F_U1.img and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_M250.bin b/mtkclient/Loader/Preloader/preloader_M250.bin deleted file mode 100644 index d342739..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_M250.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_M5.bin b/mtkclient/Loader/Preloader/preloader_M5.bin deleted file mode 100644 index 8f154da..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_M5.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_M5s.bin b/mtkclient/Loader/Preloader/preloader_M5s.bin deleted file mode 100644 index dd06406..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_M5s.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_M6206B.bin b/mtkclient/Loader/Preloader/preloader_M6206B.bin deleted file mode 100644 index 0efd2e9..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_M6206B.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_M6T.bin b/mtkclient/Loader/Preloader/preloader_M6T.bin deleted file mode 100644 index d28e655..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_M6T.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_M98.bin b/mtkclient/Loader/Preloader/preloader_M98.bin deleted file mode 100644 index e772714..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_M98.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_M98_m3smini.bin b/mtkclient/Loader/Preloader/preloader_M98_m3smini.bin deleted file mode 100644 index d378d75..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_M98_m3smini.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_MMX_6750_66_n.bin b/mtkclient/Loader/Preloader/preloader_MMX_6750_66_n.bin deleted file mode 100644 index f847f7e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_MMX_6750_66_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_Moto_6735_taidos_row.bin b/mtkclient/Loader/Preloader/preloader_Moto_6735_taidos_row.bin deleted file mode 100644 index 595dfd6..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_Moto_6735_taidos_row.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_Moto_6737_wt98737.bin b/mtkclient/Loader/Preloader/preloader_Moto_6737_wt98737.bin deleted file mode 100644 index bf76120..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_Moto_6737_wt98737.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_NX535J.bin b/mtkclient/Loader/Preloader/preloader_NX535J.bin deleted file mode 100644 index 77465fd..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_NX535J.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_NX541J.bin b/mtkclient/Loader/Preloader/preloader_NX541J.bin deleted file mode 100644 index 0abd6d6..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_NX541J.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_NX573J.bin b/mtkclient/Loader/Preloader/preloader_NX573J.bin deleted file mode 100644 index 4360bf6..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_NX573J.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_NX575J.bin b/mtkclient/Loader/Preloader/preloader_NX575J.bin deleted file mode 100644 index 1f7e26e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_NX575J.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_P13_itel.bin b/mtkclient/Loader/Preloader/preloader_P13_itel.bin deleted file mode 100644 index 84f6682..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_P13_itel.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_P32_itel.bin b/mtkclient/Loader/Preloader/preloader_P32_itel.bin deleted file mode 100644 index 9b80c58..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_P32_itel.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_P8_Pro.bin b/mtkclient/Loader/Preloader/preloader_P8_Pro.bin deleted file mode 100644 index 8e5ecda..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_P8_Pro.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_P98995AA1.bin b/mtkclient/Loader/Preloader/preloader_P98995AA1.bin deleted file mode 100644 index cc40ac3..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_P98995AA1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_P98996AA1.bin b/mtkclient/Loader/Preloader/preloader_P98996AA1.bin deleted file mode 100644 index f634f71..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_P98996AA1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_PDA.bin b/mtkclient/Loader/Preloader/preloader_PDA.bin deleted file mode 100644 index ecb03e5..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_PDA.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_ROO.bin b/mtkclient/Loader/Preloader/preloader_ROO.bin deleted file mode 100644 index 48844b0..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_ROO.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_S11Pro.bin b/mtkclient/Loader/Preloader/preloader_S11Pro.bin deleted file mode 100644 index 1316cc8..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_S11Pro.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_S13_itel.bin b/mtkclient/Loader/Preloader/preloader_S13_itel.bin deleted file mode 100644 index c1d50f6..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_S13_itel.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_SYM_MT6739tv1_bsp_1g.bin b/mtkclient/Loader/Preloader/preloader_SYM_MT6739tv1_bsp_1g.bin deleted file mode 100644 index 32a3071..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_SYM_MT6739tv1_bsp_1g.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_T99621AA1.bin b/mtkclient/Loader/Preloader/preloader_T99621AA1.bin deleted file mode 100644 index 200335c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_T99621AA1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_TIT-AL00.bin b/mtkclient/Loader/Preloader/preloader_TIT-AL00.bin deleted file mode 100644 index 2e81476..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_TIT-AL00.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_V303_blu.bin b/mtkclient/Loader/Preloader/preloader_V303_blu.bin deleted file mode 100644 index fa82b3a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_V303_blu.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_V8.bin b/mtkclient/Loader/Preloader/preloader_V8.bin deleted file mode 100644 index 8154d96..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_V8.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_Vivo_6750_66_V3.bin b/mtkclient/Loader/Preloader/preloader_Vivo_6750_66_V3.bin deleted file mode 100644 index 0a18fb7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_Vivo_6750_66_V3.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_Vivo_6750_66_Y69.bin b/mtkclient/Loader/Preloader/preloader_Vivo_6750_66_Y69.bin deleted file mode 100644 index 32559a5..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_Vivo_6750_66_Y69.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_Vivo_6762_Y8X_k62v1_64_bsp.bin b/mtkclient/Loader/Preloader/preloader_Vivo_6762_Y8X_k62v1_64_bsp.bin deleted file mode 100644 index 6eba1f3..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_Vivo_6762_Y8X_k62v1_64_bsp.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_Vivo_752_65c_X6.bin b/mtkclient/Loader/Preloader/preloader_Vivo_752_65c_X6.bin deleted file mode 100644 index 164f81c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_Vivo_752_65c_X6.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_X604_H633.bin b/mtkclient/Loader/Preloader/preloader_X604_H633.bin deleted file mode 100644 index 4454c9c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_X604_H633.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_X605_H632.bin b/mtkclient/Loader/Preloader/preloader_X605_H632.bin deleted file mode 100644 index 7665fa1..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_X605_H632.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_X606_H8023_Infinix.bin b/mtkclient/Loader/Preloader/preloader_X606_H8023_Infinix.bin deleted file mode 100644 index c8a87c2..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_X606_H8023_Infinix.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_ZTE_p182a10.bin b/mtkclient/Loader/Preloader/preloader_ZTE_p182a10.bin deleted file mode 100644 index bc40d87..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_ZTE_p182a10.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_a02_if9031.bin b/mtkclient/Loader/Preloader/preloader_a02_if9031.bin deleted file mode 100644 index 08a67cc..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_a02_if9031.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_a04br3.bin b/mtkclient/Loader/Preloader/preloader_a04br3.bin deleted file mode 100644 index ae822b2..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_a04br3.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_a05ba.img b/mtkclient/Loader/Preloader/preloader_a05ba.img deleted file mode 100644 index 91912c9..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_a05ba.img and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_a05bd.img b/mtkclient/Loader/Preloader/preloader_a05bd.img deleted file mode 100644 index 9ca1824..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_a05bd.img and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_a1-810_emea_fr.bin b/mtkclient/Loader/Preloader/preloader_a1-810_emea_fr.bin deleted file mode 100644 index 262e785..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_a1-810_emea_fr.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_a1-810_pa_ca.bin b/mtkclient/Loader/Preloader/preloader_a1-810_pa_ca.bin deleted file mode 100644 index 3112613..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_a1-810_pa_ca.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_a153_d.bin b/mtkclient/Loader/Preloader/preloader_a153_d.bin deleted file mode 100644 index 130d9e9..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_a153_d.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_a155_d.bin b/mtkclient/Loader/Preloader/preloader_a155_d.bin deleted file mode 100644 index cb2035f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_a155_d.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_a1841_ww_gen1.bin b/mtkclient/Loader/Preloader/preloader_a1841_ww_gen1.bin deleted file mode 100644 index 68537dd..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_a1841_ww_gen1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_a3a64g.bin b/mtkclient/Loader/Preloader/preloader_a3a64g.bin deleted file mode 100644 index a004518..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_a3a64g.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_a3s_k61_bsp.bin b/mtkclient/Loader/Preloader/preloader_a3s_k61_bsp.bin deleted file mode 100644 index 932bb31..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_a3s_k61_bsp.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_a3x_k61_bsp.bin b/mtkclient/Loader/Preloader/preloader_a3x_k61_bsp.bin deleted file mode 100644 index 2e2c2a4..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_a3x_k61_bsp.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_a510f.bin b/mtkclient/Loader/Preloader/preloader_a510f.bin deleted file mode 100644 index 412dcac..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_a510f.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_a798_cq_8121c_61_p0.bin b/mtkclient/Loader/Preloader/preloader_a798_cq_8121c_61_p0.bin deleted file mode 100644 index f539e29..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_a798_cq_8121c_61_p0.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_a798_cq_8123c_62_p0.bin b/mtkclient/Loader/Preloader/preloader_a798_cq_8123c_62_p0.bin deleted file mode 100644 index c772639..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_a798_cq_8123c_62_p0.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_aaron_row_wifi.bin b/mtkclient/Loader/Preloader/preloader_aaron_row_wifi.bin deleted file mode 100644 index 5fc0f9f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_aaron_row_wifi.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_ac101hello.bin b/mtkclient/Loader/Preloader/preloader_ac101hello.bin deleted file mode 100644 index c3b8188..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_ac101hello.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_achilles6_row_wifi.bin b/mtkclient/Loader/Preloader/preloader_achilles6_row_wifi.bin deleted file mode 100644 index dda8103..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_achilles6_row_wifi.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_advan8735m_9013.bin b/mtkclient/Loader/Preloader/preloader_advan8735m_9013.bin deleted file mode 100644 index ce99a87..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_advan8735m_9013.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_aeon6737m_35g_d_n_avvp450.bin b/mtkclient/Loader/Preloader/preloader_aeon6737m_35g_d_n_avvp450.bin deleted file mode 100644 index bde19ab..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_aeon6737m_35g_d_n_avvp450.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_aeon6737m_65_d_n_Just5C110.bin b/mtkclient/Loader/Preloader/preloader_aeon6737m_65_d_n_Just5C110.bin deleted file mode 100644 index b229fa8..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_aeon6737m_65_d_n_Just5C110.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_aeon6737m_65_d_n_ht37p.bin b/mtkclient/Loader/Preloader/preloader_aeon6737m_65_d_n_ht37p.bin deleted file mode 100644 index 5f9068b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_aeon6737m_65_d_n_ht37p.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_aeon6737m_65_d_n_ht50.bin b/mtkclient/Loader/Preloader/preloader_aeon6737m_65_d_n_ht50.bin deleted file mode 100644 index 2ea7ec7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_aeon6737m_65_d_n_ht50.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_aeon6737m_65_n_P5047.bin b/mtkclient/Loader/Preloader/preloader_aeon6737m_65_n_P5047.bin deleted file mode 100644 index 076a0ce..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_aeon6737m_65_n_P5047.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_aeon6737m_65_n_pelWe.bin b/mtkclient/Loader/Preloader/preloader_aeon6737m_65_n_pelWe.bin deleted file mode 100644 index 076a0ce..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_aeon6737m_65_n_pelWe.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_aeon6737t_66_d_n_Fs518.bin b/mtkclient/Loader/Preloader/preloader_aeon6737t_66_d_n_Fs518.bin deleted file mode 100644 index 40f728e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_aeon6737t_66_d_n_Fs518.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_aeon6737t_66_d_n_Ray550.bin b/mtkclient/Loader/Preloader/preloader_aeon6737t_66_d_n_Ray550.bin deleted file mode 100644 index 6177296..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_aeon6737t_66_d_n_Ray550.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_aeon6737t_66_d_n_panI7.bin b/mtkclient/Loader/Preloader/preloader_aeon6737t_66_d_n_panI7.bin deleted file mode 100644 index 4a4fd32..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_aeon6737t_66_d_n_panI7.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_aeon6750_65_n_blaS8.bin b/mtkclient/Loader/Preloader/preloader_aeon6750_65_n_blaS8.bin deleted file mode 100644 index 21f5d7a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_aeon6750_65_n_blaS8.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_aeon6750_65_n_leaS8.bin b/mtkclient/Loader/Preloader/preloader_aeon6750_65_n_leaS8.bin deleted file mode 100644 index db477f7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_aeon6750_65_n_leaS8.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_aeon6750_66_c_n_phX598.bin b/mtkclient/Loader/Preloader/preloader_aeon6750_66_c_n_phX598.bin deleted file mode 100644 index 190f820..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_aeon6750_66_c_n_phX598.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_aeon6750_66_n_azuA550.bin b/mtkclient/Loader/Preloader/preloader_aeon6750_66_n_azuA550.bin deleted file mode 100644 index f847f7e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_aeon6750_66_n_azuA550.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_aeon6750_66_n_epro3.bin b/mtkclient/Loader/Preloader/preloader_aeon6750_66_n_epro3.bin deleted file mode 100644 index e52a4ba..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_aeon6750_66_n_epro3.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_aeon6750_66_n_phS329.bin b/mtkclient/Loader/Preloader/preloader_aeon6750_66_n_phS329.bin deleted file mode 100644 index b144a50..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_aeon6750_66_n_phS329.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_ah1_ifo.bin b/mtkclient/Loader/Preloader/preloader_ah1_ifo.bin deleted file mode 100644 index b8844fd..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_ah1_ifo.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_aio_row.bin b/mtkclient/Loader/Preloader/preloader_aio_row.bin deleted file mode 100644 index 95a8612..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_aio_row.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_akita_row_wifi.bin b/mtkclient/Loader/Preloader/preloader_akita_row_wifi.bin deleted file mode 100644 index 0ceea74..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_akita_row_wifi.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_al732row.bin b/mtkclient/Loader/Preloader/preloader_al732row.bin deleted file mode 100644 index 1e0e59e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_al732row.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_al910_ap.bin b/mtkclient/Loader/Preloader/preloader_al910_ap.bin deleted file mode 100644 index 08744cf..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_al910_ap.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_ali6735_35g_m0_cpivv1m.bin b/mtkclient/Loader/Preloader/preloader_ali6735_35g_m0_cpivv1m.bin deleted file mode 100644 index 3563e88..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_ali6735_35g_m0_cpivv1m.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_along8321_emmc_706m.bin b/mtkclient/Loader/Preloader/preloader_along8321_emmc_706m.bin deleted file mode 100644 index 6120b4a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_along8321_emmc_706m.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_asus8163_ew_380_z300.bin b/mtkclient/Loader/Preloader/preloader_asus8163_ew_380_z300.bin deleted file mode 100644 index f0939cf..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_asus8163_ew_380_z300.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_asus8163_ew_380_z301.bin b/mtkclient/Loader/Preloader/preloader_asus8163_ew_380_z301.bin deleted file mode 100644 index 33018c9..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_asus8163_ew_380_z301.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_asus8183_adol_p030.bin b/mtkclient/Loader/Preloader/preloader_asus8183_adol_p030.bin deleted file mode 100644 index 73a95a7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_asus8183_adol_p030.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_asus8735_tb_301.bin b/mtkclient/Loader/Preloader/preloader_asus8735_tb_301.bin deleted file mode 100644 index a5ae2c9..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_asus8735_tb_301.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_atom.bin b/mtkclient/Loader/Preloader/preloader_atom.bin deleted file mode 100644 index 4f93721..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_atom.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_aus6750_66c_m_gomu1.bin b/mtkclient/Loader/Preloader/preloader_aus6750_66c_m_gomu1.bin deleted file mode 100644 index 438782e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_aus6750_66c_m_gomu1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_aus6757_66_m_gomk1.bin b/mtkclient/Loader/Preloader/preloader_aus6757_66_m_gomk1.bin deleted file mode 100644 index 6da354b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_aus6757_66_m_gomk1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_ay1_ifo.bin b/mtkclient/Loader/Preloader/preloader_ay1_ifo.bin deleted file mode 100644 index aada07a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_ay1_ifo.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_b1p_f8017.bin b/mtkclient/Loader/Preloader/preloader_b1p_f8017.bin deleted file mode 100644 index 08eb584..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_b1p_f8017.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_bali.bin b/mtkclient/Loader/Preloader/preloader_bali.bin deleted file mode 100644 index 1abd755..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_bali.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_bb4k_spark_4lite.bin b/mtkclient/Loader/Preloader/preloader_bb4k_spark_4lite.bin deleted file mode 100644 index 4a6f4c2..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_bb4k_spark_4lite.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_bbk6750_66_m (2).bin b/mtkclient/Loader/Preloader/preloader_bbk6750_66_m (2).bin deleted file mode 100644 index 0b8909d..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_bbk6750_66_m (2).bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_bbk6750_66_m.bin b/mtkclient/Loader/Preloader/preloader_bbk6750_66_m.bin deleted file mode 100644 index 141a063..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_bbk6750_66_m.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_bbk6750_66_m_VV5L.bin b/mtkclient/Loader/Preloader/preloader_bbk6750_66_m_VV5L.bin deleted file mode 100644 index 2c16643..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_bbk6750_66_m_VV5L.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_bbk6750_66_m_VV5S.bin b/mtkclient/Loader/Preloader/preloader_bbk6750_66_m_VV5S.bin deleted file mode 100644 index 0b8909d..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_bbk6750_66_m_VV5S.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_bbk6750_66_n.bin b/mtkclient/Loader/Preloader/preloader_bbk6750_66_n.bin deleted file mode 100644 index 32559a5..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_bbk6750_66_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_bbk6750_66_n_VY69.bin b/mtkclient/Loader/Preloader/preloader_bbk6750_66_n_VY69.bin deleted file mode 100644 index 32559a5..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_bbk6750_66_n_VY69.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_bbk6752_65c_l1_VX6P.bin b/mtkclient/Loader/Preloader/preloader_bbk6752_65c_l1_VX6P.bin deleted file mode 100644 index 164f81c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_bbk6752_65c_l1_VX6P.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_bbk6763_66_n1_VY75.bin b/mtkclient/Loader/Preloader/preloader_bbk6763_66_n1_VY75.bin deleted file mode 100644 index 89f91cd..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_bbk6763_66_n1_VY75.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_bbk6763_66_n1_VY75a.bin b/mtkclient/Loader/Preloader/preloader_bbk6763_66_n1_VY75a.bin deleted file mode 100644 index 41f1bf1..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_bbk6763_66_n1_VY75a.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_bd6750_66m5_a_n1.bin b/mtkclient/Loader/Preloader/preloader_bd6750_66m5_a_n1.bin deleted file mode 100644 index 2da8491..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_bd6750_66m5_a_n1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_begonia.bin b/mtkclient/Loader/Preloader/preloader_begonia.bin deleted file mode 100644 index e964cda..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_begonia.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_begonia_1547BE956A.bin b/mtkclient/Loader/Preloader/preloader_begonia_1547BE956A.bin deleted file mode 100644 index 72aeea1..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_begonia_1547BE956A.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_benrui6580_we_n_fireAD1.bin b/mtkclient/Loader/Preloader/preloader_benrui6580_we_n_fireAD1.bin deleted file mode 100644 index e64c638..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_benrui6580_we_n_fireAD1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_benrui71_e_lca.bin b/mtkclient/Loader/Preloader/preloader_benrui71_e_lca.bin deleted file mode 100644 index e303c1b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_benrui71_e_lca.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_bird72_cwet_a_kk_6572.bin b/mtkclient/Loader/Preloader/preloader_bird72_cwet_a_kk_6572.bin deleted file mode 100644 index 73cdc49..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_bird72_cwet_a_kk_6572.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_biscuit.bin b/mtkclient/Loader/Preloader/preloader_biscuit.bin deleted file mode 100644 index b5b65e4..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_biscuit.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_blackjack_64.bin b/mtkclient/Loader/Preloader/preloader_blackjack_64.bin deleted file mode 100644 index 506df75..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_blackjack_64.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_bm65_bsp.bin b/mtkclient/Loader/Preloader/preloader_bm65_bsp.bin deleted file mode 100644 index c3eea21..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_bm65_bsp.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_bm65_bsp_ump.bin b/mtkclient/Loader/Preloader/preloader_bm65_bsp_ump.bin deleted file mode 100644 index cbb7027..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_bm65_bsp_ump.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_bnd8163_tb_n_cu-c2.bin b/mtkclient/Loader/Preloader/preloader_bnd8163_tb_n_cu-c2.bin deleted file mode 100644 index eb0d255..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_bnd8163_tb_n_cu-c2.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_bomb.bin b/mtkclient/Loader/Preloader/preloader_bomb.bin deleted file mode 100644 index cd727d0..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_bomb.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_bq_aquaris_m10_LTE.bin b/mtkclient/Loader/Preloader/preloader_bq_aquaris_m10_LTE.bin deleted file mode 100644 index f8aa271..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_bq_aquaris_m10_LTE.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_bq_aquaris_m8.bin b/mtkclient/Loader/Preloader/preloader_bq_aquaris_m8.bin deleted file mode 100644 index 4a3d693..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_bq_aquaris_m8.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_br6580_weg_l.bin b/mtkclient/Loader/Preloader/preloader_br6580_weg_l.bin deleted file mode 100644 index 50f3819..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_br6580_weg_l.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_bsp_h8025.bin b/mtkclient/Loader/Preloader/preloader_bsp_h8025.bin deleted file mode 100644 index 9146650..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_bsp_h8025.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_c201.bin b/mtkclient/Loader/Preloader/preloader_c201.bin deleted file mode 100644 index b0f4857..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_c201.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_c239v55_dx.bin b/mtkclient/Loader/Preloader/preloader_c239v55_dx.bin deleted file mode 100644 index d61f18c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_c239v55_dx.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_c239v55_kw_u11_max.bin b/mtkclient/Loader/Preloader/preloader_c239v55_kw_u11_max.bin deleted file mode 100644 index df62915..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_c239v55_kw_u11_max.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_c239v55_kw_u3_plus.bin b/mtkclient/Loader/Preloader/preloader_c239v55_kw_u3_plus.bin deleted file mode 100644 index 3baed24..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_c239v55_kw_u3_plus.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_c30mini_10.bin b/mtkclient/Loader/Preloader/preloader_c30mini_10.bin deleted file mode 100644 index bb78c6c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_c30mini_10.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_c30mini_10.bin.patched b/mtkclient/Loader/Preloader/preloader_c30mini_10.bin.patched deleted file mode 100644 index bb78c6c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_c30mini_10.bin.patched and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_c509_cq_7151h_n_37m35.bin b/mtkclient/Loader/Preloader/preloader_c509_cq_7151h_n_37m35.bin deleted file mode 100644 index ebc8e61..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_c509_cq_7151h_n_37m35.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_c767_8111h_xxa1_39_o1.bin b/mtkclient/Loader/Preloader/preloader_c767_8111h_xxa1_39_o1.bin deleted file mode 100644 index 8eadfdc..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_c767_8111h_xxa1_39_o1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_c767_8111h_xxa1_39_o1_7D734924C1.bin b/mtkclient/Loader/Preloader/preloader_c767_8111h_xxa1_39_o1_7D734924C1.bin deleted file mode 100644 index f901ab1..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_c767_8111h_xxa1_39_o1_7D734924C1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_ca7_h633.bin b/mtkclient/Loader/Preloader/preloader_ca7_h633.bin deleted file mode 100644 index ac0dafb..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_ca7_h633.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_cactus.bin b/mtkclient/Loader/Preloader/preloader_cactus.bin deleted file mode 100644 index 3653043..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_cactus.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_camellia.bin b/mtkclient/Loader/Preloader/preloader_camellia.bin deleted file mode 100644 index 9cd12c8..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_camellia.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_camon_12_air_cc6.bin b/mtkclient/Loader/Preloader/preloader_camon_12_air_cc6.bin deleted file mode 100644 index fc23d18..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_camon_12_air_cc6.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_camon_12_cc7.bin b/mtkclient/Loader/Preloader/preloader_camon_12_cc7.bin deleted file mode 100644 index 3a30b52..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_camon_12_cc7.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_camon_12_pro_cc9.bin b/mtkclient/Loader/Preloader/preloader_camon_12_pro_cc9.bin deleted file mode 100644 index 9fc5773..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_camon_12_pro_cc9.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_camon_15_air.bin b/mtkclient/Loader/Preloader/preloader_camon_15_air.bin deleted file mode 100644 index f8769e4..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_camon_15_air.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_camon_15_cd7.bin b/mtkclient/Loader/Preloader/preloader_camon_15_cd7.bin deleted file mode 100644 index 57f8dca..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_camon_15_cd7.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_cb7_h623.bin b/mtkclient/Loader/Preloader/preloader_cb7_h623.bin deleted file mode 100644 index 84ccb5a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_cb7_h623.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_cc6_h627.bin b/mtkclient/Loader/Preloader/preloader_cc6_h627.bin deleted file mode 100644 index fc23d18..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_cc6_h627.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_cc7_h626.bin b/mtkclient/Loader/Preloader/preloader_cc7_h626.bin deleted file mode 100644 index 3a30b52..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_cc7_h626.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_cc9_h626.bin b/mtkclient/Loader/Preloader/preloader_cc9_h626.bin deleted file mode 100644 index 9fc5773..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_cc9_h626.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_cd6_camon_16s.bin b/mtkclient/Loader/Preloader/preloader_cd6_camon_16s.bin deleted file mode 100644 index e31786d..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_cd6_camon_16s.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_cd7_h6214.bin b/mtkclient/Loader/Preloader/preloader_cd7_h6214.bin deleted file mode 100644 index 57f8dca..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_cd7_h6214.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_cd8_camon15_pro.bin b/mtkclient/Loader/Preloader/preloader_cd8_camon15_pro.bin deleted file mode 100644 index 2f6b038..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_cd8_camon15_pro.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_ce7_camon_16.bin b/mtkclient/Loader/Preloader/preloader_ce7_camon_16.bin deleted file mode 100644 index 328b0c3..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_ce7_camon_16.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_ce8_camon_16pro.bin b/mtkclient/Loader/Preloader/preloader_ce8_camon_16pro.bin deleted file mode 100644 index 889fae2..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_ce8_camon_16pro.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_cereus.bin b/mtkclient/Loader/Preloader/preloader_cereus.bin deleted file mode 100644 index 7228095..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_cereus.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_cereus_3C2D76D046.bin b/mtkclient/Loader/Preloader/preloader_cereus_3C2D76D046.bin deleted file mode 100644 index 29d0c06..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_cereus_3C2D76D046.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_cf7_h399.bin b/mtkclient/Loader/Preloader/preloader_cf7_h399.bin deleted file mode 100644 index fb9ab37..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_cf7_h399.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_cf7k_h612.bin b/mtkclient/Loader/Preloader/preloader_cf7k_h612.bin deleted file mode 100644 index 5ebba0e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_cf7k_h612.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_cf8_h612.bin b/mtkclient/Loader/Preloader/preloader_cf8_h612.bin deleted file mode 100644 index 7cb5927..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_cf8_h612.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_cp3505i.bin b/mtkclient/Loader/Preloader/preloader_cp3505i.bin deleted file mode 100644 index b3a6973..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_cp3505i.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_cp8298_m02.bin b/mtkclient/Loader/Preloader/preloader_cp8298_m02.bin deleted file mode 100644 index 11bde47..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_cp8298_m02.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_cp8676_a01.bin b/mtkclient/Loader/Preloader/preloader_cp8676_a01.bin deleted file mode 100644 index 6e3eb4f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_cp8676_a01.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_cpe91s.bin b/mtkclient/Loader/Preloader/preloader_cpe91s.bin deleted file mode 100644 index cdd17d2..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_cpe91s.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_cro_go.bin b/mtkclient/Loader/Preloader/preloader_cro_go.bin deleted file mode 100644 index 9f55b68..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_cro_go.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_d3.bin b/mtkclient/Loader/Preloader/preloader_d3.bin deleted file mode 100644 index fa7af2f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_d3.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_d3668.bin b/mtkclient/Loader/Preloader/preloader_d3668.bin deleted file mode 100644 index eec6111..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_d3668.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_d5.bin b/mtkclient/Loader/Preloader/preloader_d5.bin deleted file mode 100644 index aeadf15..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_d5.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_d5278_s2_37m35_n.bin b/mtkclient/Loader/Preloader/preloader_d5278_s2_37m35_n.bin deleted file mode 100644 index 10f28fc..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_d5278_s2_37m35_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_d629.bin b/mtkclient/Loader/Preloader/preloader_d629.bin deleted file mode 100644 index ceed764..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_d629.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_d936p.bin b/mtkclient/Loader/Preloader/preloader_d936p.bin deleted file mode 100644 index 7bf7b58..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_d936p.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_dura.bin b/mtkclient/Loader/Preloader/preloader_dura.bin deleted file mode 100644 index c0268d1..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_dura.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_dura64.bin b/mtkclient/Loader/Preloader/preloader_dura64.bin deleted file mode 100644 index 72ed1b4..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_dura64.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_dura_BFE22C5E88.bin b/mtkclient/Loader/Preloader/preloader_dura_BFE22C5E88.bin deleted file mode 100644 index 7a2272c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_dura_BFE22C5E88.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_e2001v21_v89_jbl1a698_2g.bin b/mtkclient/Loader/Preloader/preloader_e2001v21_v89_jbl1a698_2g.bin deleted file mode 100644 index 6be9a79..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_e2001v21_v89_jbl1a698_2g.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_e400n_if9021.bin b/mtkclient/Loader/Preloader/preloader_e400n_if9021.bin deleted file mode 100644 index 12b944c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_e400n_if9021.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_e528m_if9001.bin b/mtkclient/Loader/Preloader/preloader_e528m_if9001.bin deleted file mode 100644 index bb7a632..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_e528m_if9001.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_e535_dg_m9t_39_p0_russia.bin b/mtkclient/Loader/Preloader/preloader_e535_dg_m9t_39_p0_russia.bin deleted file mode 100644 index 7af9b20..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_e535_dg_m9t_39_p0_russia.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_e535_dk_dk008p_39_p0.bin b/mtkclient/Loader/Preloader/preloader_e535_dk_dk008p_39_p0.bin deleted file mode 100644 index aec67a2..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_e535_dk_dk008p_39_p0.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_e557_cq_9052c_61_p0.bin b/mtkclient/Loader/Preloader/preloader_e557_cq_9052c_61_p0.bin deleted file mode 100644 index 618ef8f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_e557_cq_9052c_61_p0.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_e557_leagoo_m12_61_p0.bin b/mtkclient/Loader/Preloader/preloader_e557_leagoo_m12_61_p0.bin deleted file mode 100644 index da5d2fa..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_e557_leagoo_m12_61_p0.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_e59632b.bin b/mtkclient/Loader/Preloader/preloader_e59632b.bin deleted file mode 100644 index bfec10f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_e59632b.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_e596_panR500.bin b/mtkclient/Loader/Preloader/preloader_e596_panR500.bin deleted file mode 100644 index b980ebb..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_e596_panR500.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_e936_dg_a78_39_p0.bin b/mtkclient/Loader/Preloader/preloader_e936_dg_a78_39_p0.bin deleted file mode 100644 index 3ee2f41..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_e936_dg_a78_39_p0.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_e937_cq_9011c_62_p0.bin b/mtkclient/Loader/Preloader/preloader_e937_cq_9011c_62_p0.bin deleted file mode 100644 index 0fe056a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_e937_cq_9011c_62_p0.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_e937_dg_a77_61_p0.bin b/mtkclient/Loader/Preloader/preloader_e937_dg_a77_61_p0.bin deleted file mode 100644 index cb67419..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_e937_dg_a77_61_p0.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_e937_dk_dk011_61_p0.bin b/mtkclient/Loader/Preloader/preloader_e937_dk_dk011_61_p0.bin deleted file mode 100644 index 1af1d94..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_e937_dk_dk011_61_p0.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_e959_oq_s70_63_p0.bin b/mtkclient/Loader/Preloader/preloader_e959_oq_s70_63_p0.bin deleted file mode 100644 index e5bf836..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_e959_oq_s70_63_p0.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_e966_cq_9071_71_p0.bin b/mtkclient/Loader/Preloader/preloader_e966_cq_9071_71_p0.bin deleted file mode 100644 index 8034b09..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_e966_cq_9071_71_p0.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_e977_dg_m11_71_p0_eea.bin b/mtkclient/Loader/Preloader/preloader_e977_dg_m11_71_p0_eea.bin deleted file mode 100644 index d6481da..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_e977_dg_m11_71_p0_eea.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_elink8163_e_70b-neon.bin b/mtkclient/Loader/Preloader/preloader_elink8163_e_70b-neon.bin deleted file mode 100644 index dc8525b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_elink8163_e_70b-neon.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_elink8321_emmc.bin b/mtkclient/Loader/Preloader/preloader_elink8321_emmc.bin deleted file mode 100644 index be978d7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_elink8321_emmc.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_es2.bin b/mtkclient/Loader/Preloader/preloader_es2.bin deleted file mode 100644 index 4c400cb..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_es2.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_esky6580_we_n.bin b/mtkclient/Loader/Preloader/preloader_esky6580_we_n.bin deleted file mode 100644 index 30416b7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_esky6580_we_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_esky6580_we_n_mypA10.bin b/mtkclient/Loader/Preloader/preloader_esky6580_we_n_mypA10.bin deleted file mode 100644 index 30416b7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_esky6580_we_n_mypA10.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_even6757_66_n_uniS.bin b/mtkclient/Loader/Preloader/preloader_even6757_66_n_uniS.bin deleted file mode 100644 index 0b5d43d..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_even6757_66_n_uniS.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_f10_10.bin b/mtkclient/Loader/Preloader/preloader_f10_10.bin deleted file mode 100644 index 9e0dc72..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_f10_10.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_f12.bin b/mtkclient/Loader/Preloader/preloader_f12.bin deleted file mode 100644 index 95f66be..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_f12.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_f22e_10.bin b/mtkclient/Loader/Preloader/preloader_f22e_10.bin deleted file mode 100644 index 1d488b8..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_f22e_10.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_f4_h398.bin b/mtkclient/Loader/Preloader/preloader_f4_h398.bin deleted file mode 100644 index 5d711bb..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_f4_h398.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_fd568bo.bin b/mtkclient/Loader/Preloader/preloader_fd568bo.bin deleted file mode 100644 index bd28fb6..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_fd568bo.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_fih_mt6750_64.bin b/mtkclient/Loader/Preloader/preloader_fih_mt6750_64.bin deleted file mode 100644 index baceff7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_fih_mt6750_64.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_fih_mt6771_64.bin b/mtkclient/Loader/Preloader/preloader_fih_mt6771_64.bin deleted file mode 100644 index e21cb1b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_fih_mt6771_64.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_fiji.bin b/mtkclient/Loader/Preloader/preloader_fiji.bin deleted file mode 100644 index ccc7aec..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_fiji.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_fise6570_ctlc_m.bin b/mtkclient/Loader/Preloader/preloader_fise6570_ctlc_m.bin deleted file mode 100644 index 2eb309f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_fise6570_ctlc_m.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_fise6731_kaie_s_e_k.bin b/mtkclient/Loader/Preloader/preloader_fise6731_kaie_s_e_k.bin deleted file mode 100644 index 8dba9e7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_fise6731_kaie_s_e_k.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_frt.bin b/mtkclient/Loader/Preloader/preloader_frt.bin deleted file mode 100644 index 97f6572..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_frt.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_frt_.bin b/mtkclient/Loader/Preloader/preloader_frt_.bin deleted file mode 100644 index 97f6572..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_frt_.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_full_oppo6763_17031.bin b/mtkclient/Loader/Preloader/preloader_full_oppo6763_17031.bin deleted file mode 100644 index 132d2e9..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_full_oppo6763_17031.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_g15v97_kw_u8_4m_umiz.bin b/mtkclient/Loader/Preloader/preloader_g15v97_kw_u8_4m_umiz.bin deleted file mode 100644 index ac59feb..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_g15v97_kw_u8_4m_umiz.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_g20v57c2k_kw_s81_umiS2.bin b/mtkclient/Loader/Preloader/preloader_g20v57c2k_kw_s81_umiS2.bin deleted file mode 100644 index 43ba211..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_g20v57c2k_kw_s81_umiS2.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_g27v57c2k_kw_s82_umiS2p.bin b/mtkclient/Loader/Preloader/preloader_g27v57c2k_kw_s82_umiS2p.bin deleted file mode 100644 index de8276d..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_g27v57c2k_kw_s82_umiS2p.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_g36v63c2k_kw.bin b/mtkclient/Loader/Preloader/preloader_g36v63c2k_kw.bin deleted file mode 100644 index 68d3758..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_g36v63c2k_kw.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_g37v71c2k_xjd_tee_nuu.bin b/mtkclient/Loader/Preloader/preloader_g37v71c2k_xjd_tee_nuu.bin deleted file mode 100644 index eab4281..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_g37v71c2k_xjd_tee_nuu.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_g38v71c2k_kw_f1_eea.bin b/mtkclient/Loader/Preloader/preloader_g38v71c2k_kw_f1_eea.bin deleted file mode 100644 index a4960cb..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_g38v71c2k_kw_f1_eea.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_g702.bin b/mtkclient/Loader/Preloader/preloader_g702.bin deleted file mode 100644 index 49e09b8..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_g702.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_g9v57_kw_u3_4m.bin b/mtkclient/Loader/Preloader/preloader_g9v57_kw_u3_4m.bin deleted file mode 100644 index 0d35009..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_g9v57_kw_u3_4m.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_gfive89_6833b.bin b/mtkclient/Loader/Preloader/preloader_gfive89_6833b.bin deleted file mode 100644 index 0986cb9..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_gfive89_6833b.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_ginr_M2.bin b/mtkclient/Loader/Preloader/preloader_ginr_M2.bin deleted file mode 100644 index e01acbd..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_ginr_M2.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_gionee6595_lwt_m.bin b/mtkclient/Loader/Preloader/preloader_gionee6595_lwt_m.bin deleted file mode 100644 index 11c7811..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_gionee6595_lwt_m.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_gionee6735_65c_l.bin b/mtkclient/Loader/Preloader/preloader_gionee6735_65c_l.bin deleted file mode 100644 index f4346ff..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_gionee6735_65c_l.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_gionee6755_c66_m_s9.bin b/mtkclient/Loader/Preloader/preloader_gionee6755_c66_m_s9.bin deleted file mode 100644 index cc75107..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_gionee6755_c66_m_s9.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_gionee89_dwe_jb2.bin b/mtkclient/Loader/Preloader/preloader_gionee89_dwe_jb2.bin deleted file mode 100644 index b9ad4e7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_gionee89_dwe_jb2.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_gnsz6737t_66_a_n_f109n.bin b/mtkclient/Loader/Preloader/preloader_gnsz6737t_66_a_n_f109n.bin deleted file mode 100644 index c6567a8..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_gnsz6737t_66_a_n_f109n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_gnsz6739_66_n1.bin b/mtkclient/Loader/Preloader/preloader_gnsz6739_66_n1.bin deleted file mode 100644 index 3c46f2b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_gnsz6739_66_n1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_gnsz6753_66_n_blv0190.bin b/mtkclient/Loader/Preloader/preloader_gnsz6753_66_n_blv0190.bin deleted file mode 100644 index ff20921..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_gnsz6753_66_n_blv0190.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_gnsz6755_66_n_s10b.bin b/mtkclient/Loader/Preloader/preloader_gnsz6755_66_n_s10b.bin deleted file mode 100644 index a3a66ab..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_gnsz6755_66_n_s10b.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_gnsz6757_66_n_s10.bin b/mtkclient/Loader/Preloader/preloader_gnsz6757_66_n_s10.bin deleted file mode 100644 index 0d0920b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_gnsz6757_66_n_s10.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_gnsz6757_66_n_sw17.bin b/mtkclient/Loader/Preloader/preloader_gnsz6757_66_n_sw17.bin deleted file mode 100644 index 1d3b9d8..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_gnsz6757_66_n_sw17.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_gnsz6758_66_n.bin b/mtkclient/Loader/Preloader/preloader_gnsz6758_66_n.bin deleted file mode 100644 index 07f3b6c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_gnsz6758_66_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_gnsz6763_66_n1.bin b/mtkclient/Loader/Preloader/preloader_gnsz6763_66_n1.bin deleted file mode 100644 index b650c41..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_gnsz6763_66_n1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_gxq6580_weg_l.bin b/mtkclient/Loader/Preloader/preloader_gxq6580_weg_l.bin deleted file mode 100644 index 9ef1035..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_gxq6580_weg_l.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hct6580_weg_n_doogX30.bin b/mtkclient/Loader/Preloader/preloader_hct6580_weg_n_doogX30.bin deleted file mode 100644 index 0146d76..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hct6580_weg_n_doogX30.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hct6735m_35gu_l1.bin b/mtkclient/Loader/Preloader/preloader_hct6735m_35gu_l1.bin deleted file mode 100644 index fcc4867..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hct6735m_35gu_l1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hct6737m_65_m0.bin b/mtkclient/Loader/Preloader/preloader_hct6737m_65_m0.bin deleted file mode 100644 index 1182091..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hct6737m_65_m0.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hct6737m_65_n.bin b/mtkclient/Loader/Preloader/preloader_hct6737m_65_n.bin deleted file mode 100644 index e029b5d..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hct6737m_65_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hct6737m_65_n_doogS30.bin b/mtkclient/Loader/Preloader/preloader_hct6737m_65_n_doogS30.bin deleted file mode 100644 index e029b5d..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hct6737m_65_n_doogS30.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hct6737t_66_n_ilaS1.bin b/mtkclient/Loader/Preloader/preloader_hct6737t_66_n_ilaS1.bin deleted file mode 100644 index 8ea4eed..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hct6737t_66_n_ilaS1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hct6750_66_n_Ulefone_power2.bin b/mtkclient/Loader/Preloader/preloader_hct6750_66_n_Ulefone_power2.bin deleted file mode 100644 index f13e253..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hct6750_66_n_Ulefone_power2.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hct6753_66_n.bin b/mtkclient/Loader/Preloader/preloader_hct6753_66_n.bin deleted file mode 100644 index 519885c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hct6753_66_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hct6757_66_n.bin b/mtkclient/Loader/Preloader/preloader_hct6757_66_n.bin deleted file mode 100644 index 0c63366..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hct6757_66_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hct6757_66_n_Mix_Silv.bin b/mtkclient/Loader/Preloader/preloader_hct6757_66_n_Mix_Silv.bin deleted file mode 100644 index ed82016..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hct6757_66_n_Mix_Silv.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hct6757_66_n_doogMix4g.bin b/mtkclient/Loader/Preloader/preloader_hct6757_66_n_doogMix4g.bin deleted file mode 100644 index 0c63366..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hct6757_66_n_doogMix4g.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hct6757_66_n_doogMix6g.bin b/mtkclient/Loader/Preloader/preloader_hct6757_66_n_doogMix6g.bin deleted file mode 100644 index 70082c2..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hct6757_66_n_doogMix6g.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hct6757_66_n_patched.bin b/mtkclient/Loader/Preloader/preloader_hct6757_66_n_patched.bin deleted file mode 100644 index 0c63366..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hct6757_66_n_patched.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hexing6580_we_m.bin b/mtkclient/Loader/Preloader/preloader_hexing6580_we_m.bin deleted file mode 100644 index c99c4aa..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hexing6580_we_m.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hisense_F10_30.bin b/mtkclient/Loader/Preloader/preloader_hisense_F10_30.bin deleted file mode 100644 index 8c10638..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hisense_F10_30.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hisense_f102.bin b/mtkclient/Loader/Preloader/preloader_hisense_f102.bin deleted file mode 100644 index e428a98..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hisense_f102.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hisense_f22e_50.bin b/mtkclient/Loader/Preloader/preloader_hisense_f22e_50.bin deleted file mode 100644 index c831500..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hisense_f22e_50.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hiteq8163_ce_cu-ip8.bin b/mtkclient/Loader/Preloader/preloader_hiteq8163_ce_cu-ip8.bin deleted file mode 100644 index 45c9e2b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hiteq8163_ce_cu-ip8.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hq6580_we_1ha_m_u29.bin b/mtkclient/Loader/Preloader/preloader_hq6580_we_1ha_m_u29.bin deleted file mode 100644 index 73accc0..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hq6580_we_1ha_m_u29.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hq6582_we_b1b_l1.bin b/mtkclient/Loader/Preloader/preloader_hq6582_we_b1b_l1.bin deleted file mode 100644 index 6934e2f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hq6582_we_b1b_l1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hq6735_35u_b1n_l1.bin b/mtkclient/Loader/Preloader/preloader_hq6735_35u_b1n_l1.bin deleted file mode 100644 index ee2c380..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hq6735_35u_b1n_l1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hq6737t_66_1ha_m0.bin b/mtkclient/Loader/Preloader/preloader_hq6737t_66_1ha_m0.bin deleted file mode 100644 index 2a0be8b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hq6737t_66_1ha_m0.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hq6737t_66_1hg_m_al10.bin b/mtkclient/Loader/Preloader/preloader_hq6737t_66_1hg_m_al10.bin deleted file mode 100644 index e5eba24..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hq6737t_66_1hg_m_al10.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hq6737t_66_1hg_m_tl10.bin b/mtkclient/Loader/Preloader/preloader_hq6737t_66_1hg_m_tl10.bin deleted file mode 100644 index 028afc9..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hq6737t_66_1hg_m_tl10.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hq6753_65u_b2b_l1.bin b/mtkclient/Loader/Preloader/preloader_hq6753_65u_b2b_l1.bin deleted file mode 100644 index 172d762..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hq6753_65u_b2b_l1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hq8163_tb_a8_n.bin b/mtkclient/Loader/Preloader/preloader_hq8163_tb_a8_n.bin deleted file mode 100644 index 64e2298..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hq8163_tb_a8_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hq8163_tb_a8_n1.bin b/mtkclient/Loader/Preloader/preloader_hq8163_tb_a8_n1.bin deleted file mode 100644 index 74ea305..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hq8163_tb_a8_n1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hq8167_tb_n.bin b/mtkclient/Loader/Preloader/preloader_hq8167_tb_n.bin deleted file mode 100644 index 0457de5..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hq8167_tb_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hq8382_tb_b2b_l.bin b/mtkclient/Loader/Preloader/preloader_hq8382_tb_b2b_l.bin deleted file mode 100644 index 06957f0..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hq8382_tb_b2b_l.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hq8392_tb_b2e_l1.bin b/mtkclient/Loader/Preloader/preloader_hq8392_tb_b2e_l1.bin deleted file mode 100644 index e093fd8..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hq8392_tb_b2e_l1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hq8735_6t_b2b.bin b/mtkclient/Loader/Preloader/preloader_hq8735_6t_b2b.bin deleted file mode 100644 index bc05e1c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hq8735_6t_b2b.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hq8735_6ttb_b2b_m.bin b/mtkclient/Loader/Preloader/preloader_hq8735_6ttb_b2b_m.bin deleted file mode 100644 index c041d18..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hq8735_6ttb_b2b_m.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hq8735b_tb_n.bin b/mtkclient/Loader/Preloader/preloader_hq8735b_tb_n.bin deleted file mode 100644 index f459428..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hq8735b_tb_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_hs03s.bin b/mtkclient/Loader/Preloader/preloader_hs03s.bin deleted file mode 100644 index 588e94c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_hs03s.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_huaqin27_tb_b2e_kk_a3-a20fhd.bin b/mtkclient/Loader/Preloader/preloader_huaqin27_tb_b2e_kk_a3-a20fhd.bin deleted file mode 100644 index e62be2b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_huaqin27_tb_b2e_kk_a3-a20fhd.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_huaqin71_cwet_i_kk.bin b/mtkclient/Loader/Preloader/preloader_huaqin71_cwet_i_kk.bin deleted file mode 100644 index d209f21..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_huaqin71_cwet_i_kk.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_huaqin75_cu_jb_6575.bin b/mtkclient/Loader/Preloader/preloader_huaqin75_cu_jb_6575.bin deleted file mode 100644 index f964240..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_huaqin75_cu_jb_6575.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_huaqin82_cwet_b2_kk.bin b/mtkclient/Loader/Preloader/preloader_huaqin82_cwet_b2_kk.bin deleted file mode 100644 index d143dcf..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_huaqin82_cwet_b2_kk.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_huaqin82_tb_b2c_kk_a1-713.bin b/mtkclient/Loader/Preloader/preloader_huaqin82_tb_b2c_kk_a1-713.bin deleted file mode 100644 index c8e7182..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_huaqin82_tb_b2c_kk_a1-713.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_huawei82_wet_jb5.bin b/mtkclient/Loader/Preloader/preloader_huawei82_wet_jb5.bin deleted file mode 100644 index 704619e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_huawei82_wet_jb5.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_huawei89_we_jb2.bin b/mtkclient/Loader/Preloader/preloader_huawei89_we_jb2.bin deleted file mode 100644 index 17cac33..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_huawei89_we_jb2.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_i7.bin b/mtkclient/Loader/Preloader/preloader_i7.bin deleted file mode 100644 index c5e3e5e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_i7.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_id3a_h612.bin b/mtkclient/Loader/Preloader/preloader_id3a_h612.bin deleted file mode 100644 index daee0ef..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_id3a_h612.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_id5a_camon_i2.bin b/mtkclient/Loader/Preloader/preloader_id5a_camon_i2.bin deleted file mode 100644 index 688a0c9..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_id5a_camon_i2.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_id5b_h622.bin b/mtkclient/Loader/Preloader/preloader_id5b_h622.bin deleted file mode 100644 index 78e56ad..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_id5b_h622.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_id6_camon_iclick2.bin b/mtkclient/Loader/Preloader/preloader_id6_camon_iclick2.bin deleted file mode 100644 index bb2ac55..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_id6_camon_iclick2.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_in1_h398.bin b/mtkclient/Loader/Preloader/preloader_in1_h398.bin deleted file mode 100644 index caaf3de..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_in1_h398.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_in6_h633.bin b/mtkclient/Loader/Preloader/preloader_in6_h633.bin deleted file mode 100644 index 89b5b47..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_in6_h633.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_j7209.bin b/mtkclient/Loader/Preloader/preloader_j7209.bin deleted file mode 100644 index 968ce21..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_j7209.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_joyasz8163_tb_m_cu-ip10.bin b/mtkclient/Loader/Preloader/preloader_joyasz8163_tb_m_cu-ip10.bin deleted file mode 100644 index 4c4edf9..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_joyasz8163_tb_m_cu-ip10.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k06ntd_a.bin b/mtkclient/Loader/Preloader/preloader_k06ntd_a.bin deleted file mode 100644 index e77569d..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k06ntd_a.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k15tb_a.bin b/mtkclient/Loader/Preloader/preloader_k15tb_a.bin deleted file mode 100644 index 3230c83..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k15tb_a.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k200_1g.bin b/mtkclient/Loader/Preloader/preloader_k200_1g.bin deleted file mode 100644 index ce2cbf7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k200_1g.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k300.bin b/mtkclient/Loader/Preloader/preloader_k300.bin deleted file mode 100644 index 28b85c5..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k300.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k37mv1_bsp_F311.bin b/mtkclient/Loader/Preloader/preloader_k37mv1_bsp_F311.bin deleted file mode 100644 index d008a6d..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k37mv1_bsp_F311.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k37mv1_bsp_q437g.bin b/mtkclient/Loader/Preloader/preloader_k37mv1_bsp_q437g.bin deleted file mode 100644 index 0c8bfdc..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k37mv1_bsp_q437g.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k37mv1_bsp_strb2plus.bin b/mtkclient/Loader/Preloader/preloader_k37mv1_bsp_strb2plus.bin deleted file mode 100644 index f91b183..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k37mv1_bsp_strb2plus.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k37mv1_bsp_strb3pro.bin b/mtkclient/Loader/Preloader/preloader_k37mv1_bsp_strb3pro.bin deleted file mode 100644 index b3fea72..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k37mv1_bsp_strb3pro.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k37mv1_bsp_tecR8.bin b/mtkclient/Loader/Preloader/preloader_k37mv1_bsp_tecR8.bin deleted file mode 100644 index 0d16e57..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k37mv1_bsp_tecR8.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k37tv1_64.bin b/mtkclient/Loader/Preloader/preloader_k37tv1_64.bin deleted file mode 100644 index 1800b69..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k37tv1_64.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k37tv1_64_blv0250.bin b/mtkclient/Loader/Preloader/preloader_k37tv1_64_blv0250.bin deleted file mode 100644 index 7769fef..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k37tv1_64_blv0250.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k39tv1_64_bsp.bin b/mtkclient/Loader/Preloader/preloader_k39tv1_64_bsp.bin deleted file mode 100644 index 422af39..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k39tv1_64_bsp.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k39tv1_64_bsp_cp1822.bin b/mtkclient/Loader/Preloader/preloader_k39tv1_64_bsp_cp1822.bin deleted file mode 100644 index 71440f9..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k39tv1_64_bsp_cp1822.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k39tv1_64_bsp_cs6063.bin b/mtkclient/Loader/Preloader/preloader_k39tv1_64_bsp_cs6063.bin deleted file mode 100644 index f7f4d5e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k39tv1_64_bsp_cs6063.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k39tv1_64_bsp_gn205p.bin b/mtkclient/Loader/Preloader/preloader_k39tv1_64_bsp_gn205p.bin deleted file mode 100644 index 4ce72a4..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k39tv1_64_bsp_gn205p.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k39tv1_64_bsp_irvoxal.bin b/mtkclient/Loader/Preloader/preloader_k39tv1_64_bsp_irvoxal.bin deleted file mode 100644 index 7f33ac7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k39tv1_64_bsp_irvoxal.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k39tv1_64_bsp_sp625.bin b/mtkclient/Loader/Preloader/preloader_k39tv1_64_bsp_sp625.bin deleted file mode 100644 index f2948a8..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k39tv1_64_bsp_sp625.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k39tv1_64_bsp_zba530.bin b/mtkclient/Loader/Preloader/preloader_k39tv1_64_bsp_zba530.bin deleted file mode 100644 index 422af39..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k39tv1_64_bsp_zba530.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k39tv1_bsp.bin b/mtkclient/Loader/Preloader/preloader_k39tv1_bsp.bin deleted file mode 100644 index 25645bc..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k39tv1_bsp.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_1g_bluV0390.bin b/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_1g_bluV0390.bin deleted file mode 100644 index 67fc402..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_1g_bluV0390.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_1g_neffosC7l.bin b/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_1g_neffosC7l.bin deleted file mode 100644 index 930a04b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_1g_neffosC7l.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_1g_p110.bin b/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_1g_p110.bin deleted file mode 100644 index 274aa0f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_1g_p110.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_1g_sp624.bin b/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_1g_sp624.bin deleted file mode 100644 index 6d25617..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_1g_sp624.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_1g_symV155.bin b/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_1g_symV155.bin deleted file mode 100644 index 561c915..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_1g_symV155.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_1g_zte1.bin b/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_1g_zte1.bin deleted file mode 100644 index a6e3a96..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_1g_zte1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_512_yuho2p.bin b/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_512_yuho2p.bin deleted file mode 100644 index d3d50a0..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_512_yuho2p.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_cp1812.bin b/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_cp1812.bin deleted file mode 100644 index a841a1a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_cp1812.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_hth1.bin b/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_hth1.bin deleted file mode 100644 index 72b5a6a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_hth1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_mobE1s.bin b/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_mobE1s.bin deleted file mode 100644 index 0208e9a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_mobE1s.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_ulp6000p.bin b/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_ulp6000p.bin deleted file mode 100644 index 2057202..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k39tv1_bsp_ulp6000p.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k400.bin b/mtkclient/Loader/Preloader/preloader_k400.bin deleted file mode 100644 index 8b6339b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k400.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k50v1_64_cp1861.bin b/mtkclient/Loader/Preloader/preloader_k50v1_64_cp1861.bin deleted file mode 100644 index cc06713..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k50v1_64_cp1861.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k510.bin b/mtkclient/Loader/Preloader/preloader_k510.bin deleted file mode 100644 index bdcea23..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k510.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k52_a40.bin b/mtkclient/Loader/Preloader/preloader_k52_a40.bin deleted file mode 100644 index 4d8f66a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k52_a40.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k52_a48.bin b/mtkclient/Loader/Preloader/preloader_k52_a48.bin deleted file mode 100644 index a6d0729..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k52_a48.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k57pv1_dm_64.bin b/mtkclient/Loader/Preloader/preloader_k57pv1_dm_64.bin deleted file mode 100644 index 2c088e9..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k57pv1_dm_64.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k5_ivvi.bin b/mtkclient/Loader/Preloader/preloader_k5_ivvi.bin deleted file mode 100644 index ad000cd..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k5_ivvi.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k600_go.bin b/mtkclient/Loader/Preloader/preloader_k600_go.bin deleted file mode 100644 index 6be9a4a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k600_go.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k600_go_SYMPHONY_G100.bin b/mtkclient/Loader/Preloader/preloader_k600_go_SYMPHONY_G100.bin deleted file mode 100644 index 730988a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k600_go_SYMPHONY_G100.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k602.bin b/mtkclient/Loader/Preloader/preloader_k602.bin deleted file mode 100644 index 1d49bc3..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k602.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k61v1_32_bsp_hdp.bin b/mtkclient/Loader/Preloader/preloader_k61v1_32_bsp_hdp.bin deleted file mode 100644 index 0717106..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k61v1_32_bsp_hdp.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k61v1_32_bsp_hdp_mobx1.bin b/mtkclient/Loader/Preloader/preloader_k61v1_32_bsp_hdp_mobx1.bin deleted file mode 100644 index db3cca0..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k61v1_32_bsp_hdp_mobx1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k61v1_32_bsp_hdp_zte.bin b/mtkclient/Loader/Preloader/preloader_k61v1_32_bsp_hdp_zte.bin deleted file mode 100644 index 0717106..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k61v1_32_bsp_hdp_zte.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k61v1_64_bsp.bin b/mtkclient/Loader/Preloader/preloader_k61v1_64_bsp.bin deleted file mode 100644 index eac8cb1..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k61v1_64_bsp.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k61v1_64_bsp_37D5FA1A49.bin b/mtkclient/Loader/Preloader/preloader_k61v1_64_bsp_37D5FA1A49.bin deleted file mode 100644 index 3a4fe20..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k61v1_64_bsp_37D5FA1A49.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k61v1_64_bsp_bv5900.bin b/mtkclient/Loader/Preloader/preloader_k61v1_64_bsp_bv5900.bin deleted file mode 100644 index 9e90479..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k61v1_64_bsp_bv5900.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k61v1_64_bsp_okC16p.bin b/mtkclient/Loader/Preloader/preloader_k61v1_64_bsp_okC16p.bin deleted file mode 100644 index 25141f8..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k61v1_64_bsp_okC16p.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k61v1_64_bsp_viv1908.bin b/mtkclient/Loader/Preloader/preloader_k61v1_64_bsp_viv1908.bin deleted file mode 100644 index 0385527..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k61v1_64_bsp_viv1908.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k61v1_64_mexico.bin b/mtkclient/Loader/Preloader/preloader_k61v1_64_mexico.bin deleted file mode 100644 index 33f85b7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k61v1_64_mexico.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k61v1_64_mexico_amn.bin b/mtkclient/Loader/Preloader/preloader_k61v1_64_mexico_amn.bin deleted file mode 100644 index 6d833dc..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k61v1_64_mexico_amn.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k61v1_64_mexico_ksa.bin b/mtkclient/Loader/Preloader/preloader_k61v1_64_mexico_ksa.bin deleted file mode 100644 index 33f85b7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k61v1_64_mexico_ksa.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k61v1_64_mexico_mrd.bin b/mtkclient/Loader/Preloader/preloader_k61v1_64_mexico_mrd.bin deleted file mode 100644 index 0a8bed6..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k61v1_64_mexico_mrd.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k61v1_64_mexico_mrdlx3.bin b/mtkclient/Loader/Preloader/preloader_k61v1_64_mexico_mrdlx3.bin deleted file mode 100644 index 95a1cf5..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k61v1_64_mexico_mrdlx3.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k61v1_op55_lava.bin b/mtkclient/Loader/Preloader/preloader_k61v1_op55_lava.bin deleted file mode 100644 index 76b3494..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k61v1_op55_lava.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k61v1_op56_lava.bin b/mtkclient/Loader/Preloader/preloader_k61v1_op56_lava.bin deleted file mode 100644 index fcc4610..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k61v1_op56_lava.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k62v1_32_bsp_zteF02.bin b/mtkclient/Loader/Preloader/preloader_k62v1_32_bsp_zteF02.bin deleted file mode 100644 index d641fbf..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k62v1_32_bsp_zteF02.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp.bin b/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp.bin deleted file mode 100644 index 1441153..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_45762BFACF.bin b/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_45762BFACF.bin deleted file mode 100644 index 9417ba7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_45762BFACF.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_TEST.bin b/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_TEST.bin deleted file mode 100644 index a81792d..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_TEST.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_alcatel_OT-5028A.bin b/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_alcatel_OT-5028A.bin deleted file mode 100644 index 7b8ac5f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_alcatel_OT-5028A.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_blxl4.bin b/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_blxl4.bin deleted file mode 100644 index 0760fe0..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_blxl4.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_sp626.bin b/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_sp626.bin deleted file mode 100644 index de8513b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_sp626.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_viv1815.bin b/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_viv1815.bin deleted file mode 100644 index 510a8a5..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_viv1815.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_viv1901.bin b/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_viv1901.bin deleted file mode 100644 index ea69211..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_viv1901.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_viv81.bin b/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_viv81.bin deleted file mode 100644 index 66dc48b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_viv81.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_vivo_y15.bin b/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_vivo_y15.bin deleted file mode 100644 index 03227be..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_vivo_y15.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_zteS02.bin b/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_zteS02.bin deleted file mode 100644 index 7504abb..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k62v1_64_bsp_zteS02.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k62v1_64_mex_a32.bin b/mtkclient/Loader/Preloader/preloader_k62v1_64_mex_a32.bin deleted file mode 100644 index 4d31364..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k62v1_64_mex_a32.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k62v1_64_mexico.bin b/mtkclient/Loader/Preloader/preloader_k62v1_64_mexico.bin deleted file mode 100644 index 7844c1b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k62v1_64_mexico.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k62v1_64_mexico_jat.bin b/mtkclient/Loader/Preloader/preloader_k62v1_64_mexico_jat.bin deleted file mode 100644 index 7844c1b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k62v1_64_mexico_jat.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k62v1_64_mexico_mrd.bin b/mtkclient/Loader/Preloader/preloader_k62v1_64_mexico_mrd.bin deleted file mode 100644 index 1c4c60f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k62v1_64_mexico_mrd.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k62v_op66_z93.bin b/mtkclient/Loader/Preloader/preloader_k62v_op66_z93.bin deleted file mode 100644 index b8856e4..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k62v_op66_z93.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k63v2_64_bsp.bin b/mtkclient/Loader/Preloader/preloader_k63v2_64_bsp.bin deleted file mode 100644 index e799345..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k63v2_64_bsp.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k63v2_64_bsp_Coolpad_Cool_X.bin b/mtkclient/Loader/Preloader/preloader_k63v2_64_bsp_Coolpad_Cool_X.bin deleted file mode 100644 index c1e6c5c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k63v2_64_bsp_Coolpad_Cool_X.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k63v2_64_bsp_cs6062.bin b/mtkclient/Loader/Preloader/preloader_k63v2_64_bsp_cs6062.bin deleted file mode 100644 index 607a9cd..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k63v2_64_bsp_cs6062.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k63v2_64_bsp_doogok.bin b/mtkclient/Loader/Preloader/preloader_k63v2_64_bsp_doogok.bin deleted file mode 100644 index 7b93448..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k63v2_64_bsp_doogok.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k63v2_64_bsp_ulax5.bin b/mtkclient/Loader/Preloader/preloader_k63v2_64_bsp_ulax5.bin deleted file mode 100644 index 69bd43a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k63v2_64_bsp_ulax5.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k65v1_64_bsp.bin b/mtkclient/Loader/Preloader/preloader_k65v1_64_bsp.bin deleted file mode 100644 index 2c06b2e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k65v1_64_bsp.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k65v1_64_bsp_hsmax3.bin b/mtkclient/Loader/Preloader/preloader_k65v1_64_bsp_hsmax3.bin deleted file mode 100644 index 0849121..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k65v1_64_bsp_hsmax3.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k65v1_64_bsp_oukk12.bin b/mtkclient/Loader/Preloader/preloader_k65v1_64_bsp_oukk12.bin deleted file mode 100644 index 0132073..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k65v1_64_bsp_oukk12.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k65v1_64_bsp_oukk9.bin b/mtkclient/Loader/Preloader/preloader_k65v1_64_bsp_oukk9.bin deleted file mode 100644 index a7147f5..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k65v1_64_bsp_oukk9.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k65v1_64_bsp_titan_rat_DD91307C1E.bin b/mtkclient/Loader/Preloader/preloader_k65v1_64_bsp_titan_rat_DD91307C1E.bin deleted file mode 100644 index dfd31b5..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k65v1_64_bsp_titan_rat_DD91307C1E.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k65v1_64_bsp_viv1902.bin b/mtkclient/Loader/Preloader/preloader_k65v1_64_bsp_viv1902.bin deleted file mode 100644 index cde9b59..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k65v1_64_bsp_viv1902.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k6833v1_64.bin b/mtkclient/Loader/Preloader/preloader_k6833v1_64.bin deleted file mode 100644 index a296f0b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k6833v1_64.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k68v1_64.bin b/mtkclient/Loader/Preloader/preloader_k68v1_64.bin deleted file mode 100644 index 4409973..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k68v1_64.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k68v1_64_Vivo_MT6768.bin b/mtkclient/Loader/Preloader/preloader_k68v1_64_Vivo_MT6768.bin deleted file mode 100644 index b0573fa..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k68v1_64_Vivo_MT6768.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k68v1_64_Vivo_MT6768_2.bin b/mtkclient/Loader/Preloader/preloader_k68v1_64_Vivo_MT6768_2.bin deleted file mode 100644 index 4409973..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k68v1_64_Vivo_MT6768_2.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k68v1_64_titan.bin b/mtkclient/Loader/Preloader/preloader_k68v1_64_titan.bin deleted file mode 100644 index 446bf79..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k68v1_64_titan.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k69v1_64.bin b/mtkclient/Loader/Preloader/preloader_k69v1_64.bin deleted file mode 100644 index 7ee1574..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k69v1_64.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k71v1_64_bsp.bin b/mtkclient/Loader/Preloader/preloader_k71v1_64_bsp.bin deleted file mode 100644 index 3d204f0..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k71v1_64_bsp.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k71v1_64_bsp_bln0030.bin b/mtkclient/Loader/Preloader/preloader_k71v1_64_bsp_bln0030.bin deleted file mode 100644 index a34ee7b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k71v1_64_bsp_bln0030.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k71v1_64_bsp_blxlp.bin b/mtkclient/Loader/Preloader/preloader_k71v1_64_bsp_blxlp.bin deleted file mode 100644 index e4daf8f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k71v1_64_bsp_blxlp.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k71v1_64_bsp_bv9600.bin b/mtkclient/Loader/Preloader/preloader_k71v1_64_bsp_bv9600.bin deleted file mode 100644 index 5c7d317..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k71v1_64_bsp_bv9600.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k71v1_64_bsp_vivV15.bin b/mtkclient/Loader/Preloader/preloader_k71v1_64_bsp_vivV15.bin deleted file mode 100644 index 0538a61..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k71v1_64_bsp_vivV15.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k71v1_64_bsp_vivX21i.bin b/mtkclient/Loader/Preloader/preloader_k71v1_64_bsp_vivX21i.bin deleted file mode 100644 index ccaa048..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k71v1_64_bsp_vivX21i.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k71v1_64_bsp_zteS02.bin b/mtkclient/Loader/Preloader/preloader_k71v1_64_bsp_zteS02.bin deleted file mode 100644 index 1ffb84b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k71v1_64_bsp_zteS02.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k79v1_64_MT6779_Generic.bin b/mtkclient/Loader/Preloader/preloader_k79v1_64_MT6779_Generic.bin deleted file mode 100644 index 1866d1b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k79v1_64_MT6779_Generic.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k80_bsp_doogX11.bin b/mtkclient/Loader/Preloader/preloader_k80_bsp_doogX11.bin deleted file mode 100644 index 9435bc1..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k80_bsp_doogX11.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k80_pop_3.bin b/mtkclient/Loader/Preloader/preloader_k80_pop_3.bin deleted file mode 100644 index ac48adb..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k80_pop_3.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k80hd_bsp_fwv_512m_we9.bin b/mtkclient/Loader/Preloader/preloader_k80hd_bsp_fwv_512m_we9.bin deleted file mode 100644 index 8fdfc3e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k80hd_bsp_fwv_512m_we9.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k80hd_bsp_fwv_512m_y3.bin b/mtkclient/Loader/Preloader/preloader_k80hd_bsp_fwv_512m_y3.bin deleted file mode 100644 index 938392e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k80hd_bsp_fwv_512m_y3.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_k92811aa1.bin b/mtkclient/Loader/Preloader/preloader_k92811aa1.bin deleted file mode 100644 index 8d001f3..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_k92811aa1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_ka7_h8024.bin b/mtkclient/Loader/Preloader/preloader_ka7_h8024.bin deleted file mode 100644 index 7523220..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_ka7_h8024.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_ka7_h8024_o.bin b/mtkclient/Loader/Preloader/preloader_ka7_h8024_o.bin deleted file mode 100644 index df885e6..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_ka7_h8024_o.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_kb2_h613.bin b/mtkclient/Loader/Preloader/preloader_kb2_h613.bin deleted file mode 100644 index 598d24e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_kb2_h613.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_kb2_h613_j.bin b/mtkclient/Loader/Preloader/preloader_kb2_h613_j.bin deleted file mode 100644 index 3a8accc..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_kb2_h613_j.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_kb3_camon_isky3.bin b/mtkclient/Loader/Preloader/preloader_kb3_camon_isky3.bin deleted file mode 100644 index f5f4a7a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_kb3_camon_isky3.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_kb3_h623.bin b/mtkclient/Loader/Preloader/preloader_kb3_h623.bin deleted file mode 100644 index f5f4a7a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_kb3_h623.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_kb7_spark_3.bin b/mtkclient/Loader/Preloader/preloader_kb7_spark_3.bin deleted file mode 100644 index 231c434..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_kb7_spark_3.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_kb7j_h615.bin b/mtkclient/Loader/Preloader/preloader_kb7j_h615.bin deleted file mode 100644 index 76fd9b1..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_kb7j_h615.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_kc1_Go.bin b/mtkclient/Loader/Preloader/preloader_kc1_Go.bin deleted file mode 100644 index 555bd99..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_kc1_Go.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_kc1_h6114.bin b/mtkclient/Loader/Preloader/preloader_kc1_h6114.bin deleted file mode 100644 index ca8f3ab..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_kc1_h6114.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_kc8_h6110.bin b/mtkclient/Loader/Preloader/preloader_kc8_h6110.bin deleted file mode 100644 index f2b95f1..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_kc8_h6110.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_kd6_spark_5air.bin b/mtkclient/Loader/Preloader/preloader_kd6_spark_5air.bin deleted file mode 100644 index 5caee3f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_kd6_spark_5air.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_kd7_h6211.bin b/mtkclient/Loader/Preloader/preloader_kd7_h6211.bin deleted file mode 100644 index a18c68d..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_kd7_h6211.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_kd7_h6211_Techno_spark_5.bin b/mtkclient/Loader/Preloader/preloader_kd7_h6211_Techno_spark_5.bin deleted file mode 100644 index 224f80f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_kd7_h6211_Techno_spark_5.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_kd7_spark5_pro.bin b/mtkclient/Loader/Preloader/preloader_kd7_spark5_pro.bin deleted file mode 100644 index 74bc2bc..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_kd7_spark5_pro.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_kd7h_spark_5.bin b/mtkclient/Loader/Preloader/preloader_kd7h_spark_5.bin deleted file mode 100644 index 7ff4707..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_kd7h_spark_5.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_ke5j_spark_6go.bin b/mtkclient/Loader/Preloader/preloader_ke5j_spark_6go.bin deleted file mode 100644 index 3d932fa..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_ke5j_spark_6go.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_ke5k.bin b/mtkclient/Loader/Preloader/preloader_ke5k.bin deleted file mode 100644 index 494c066..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_ke5k.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_ke7_spark_6.bin b/mtkclient/Loader/Preloader/preloader_ke7_spark_6.bin deleted file mode 100644 index 2c14fee..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_ke7_spark_6.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_kon6737m_e2_65_n.bin b/mtkclient/Loader/Preloader/preloader_kon6737m_e2_65_n.bin deleted file mode 100644 index 66a21ec..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_kon6737m_e2_65_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_kungfu_m.bin b/mtkclient/Loader/Preloader/preloader_kungfu_m.bin deleted file mode 100644 index a4d5d68..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_kungfu_m.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_la7_h393.bin b/mtkclient/Loader/Preloader/preloader_la7_h393.bin deleted file mode 100644 index 207cfc3..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_la7_h393.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lancelot.bin b/mtkclient/Loader/Preloader/preloader_lancelot.bin deleted file mode 100644 index 5ad6430..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lancelot.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lava35p_sp501_int.bin b/mtkclient/Loader/Preloader/preloader_lava35p_sp501_int.bin deleted file mode 100644 index 13d2ad1..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lava35p_sp501_int.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lava6580_sp511.bin b/mtkclient/Loader/Preloader/preloader_lava6580_sp511.bin deleted file mode 100644 index 845fe42..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lava6580_sp511.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lava6737m_op53.bin b/mtkclient/Loader/Preloader/preloader_lava6737m_op53.bin deleted file mode 100644 index 68a22c5..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lava6737m_op53.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lava6737m_op53_z50.bin b/mtkclient/Loader/Preloader/preloader_lava6737m_op53_z50.bin deleted file mode 100644 index 68a22c5..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lava6737m_op53_z50.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lava6737m_op60_gmo_z60.bin b/mtkclient/Loader/Preloader/preloader_lava6737m_op60_gmo_z60.bin deleted file mode 100644 index baf3256..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lava6737m_op60_gmo_z60.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lava6737m_op60_z60g.bin b/mtkclient/Loader/Preloader/preloader_lava6737m_op60_z60g.bin deleted file mode 100644 index 3bd8f2e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lava6737m_op60_z60g.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lava6737m_op80.bin b/mtkclient/Loader/Preloader/preloader_lava6737m_op80.bin deleted file mode 100644 index e07077b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lava6737m_op80.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lava6737m_op80_gmo.bin b/mtkclient/Loader/Preloader/preloader_lava6737m_op80_gmo.bin deleted file mode 100644 index b062b42..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lava6737m_op80_gmo.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lava6737m_sp90_z90.bin b/mtkclient/Loader/Preloader/preloader_lava6737m_sp90_z90.bin deleted file mode 100644 index 764363f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lava6737m_sp90_z90.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lava6737t_sp508.bin b/mtkclient/Loader/Preloader/preloader_lava6737t_sp508.bin deleted file mode 100644 index c390531..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lava6737t_sp508.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lava6737t_sp508_a3mini.bin b/mtkclient/Loader/Preloader/preloader_lava6737t_sp508_a3mini.bin deleted file mode 100644 index fbe6da9..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lava6737t_sp508_a3mini.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lava6739_32_op63.bin b/mtkclient/Loader/Preloader/preloader_lava6739_32_op63.bin deleted file mode 100644 index 1474253..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lava6739_32_op63.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lava6739_32_op63_z61.bin b/mtkclient/Loader/Preloader/preloader_lava6739_32_op63_z61.bin deleted file mode 100644 index 956f44e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lava6739_32_op63_z61.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lava6739_op63_gmo.bin b/mtkclient/Loader/Preloader/preloader_lava6739_op63_gmo.bin deleted file mode 100644 index 227f789..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lava6739_op63_gmo.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lava6739_op63_gmo_z61.bin b/mtkclient/Loader/Preloader/preloader_lava6739_op63_gmo_z61.bin deleted file mode 100644 index bf19917..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lava6739_op63_gmo_z61.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lava6739_sp65.bin b/mtkclient/Loader/Preloader/preloader_lava6739_sp65.bin deleted file mode 100644 index 3035bfe..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lava6739_sp65.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lava6739_sp65_in.bin b/mtkclient/Loader/Preloader/preloader_lava6739_sp65_in.bin deleted file mode 100644 index ebec38f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lava6739_sp65_in.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lava6739_sp65_in_z60s.bin b/mtkclient/Loader/Preloader/preloader_lava6739_sp65_in_z60s.bin deleted file mode 100644 index ebec38f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lava6739_sp65_in_z60s.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lava6739_sp91.bin b/mtkclient/Loader/Preloader/preloader_lava6739_sp91.bin deleted file mode 100644 index 28fefbd..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lava6739_sp91.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lava6739_sp91_r3.bin b/mtkclient/Loader/Preloader/preloader_lava6739_sp91_r3.bin deleted file mode 100644 index 28fefbd..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lava6739_sp91_r3.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lava6761_32_op67.bin b/mtkclient/Loader/Preloader/preloader_lava6761_32_op67.bin deleted file mode 100644 index 6be6919..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lava6761_32_op67.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lava6762_32_op68.bin b/mtkclient/Loader/Preloader/preloader_lava6762_32_op68.bin deleted file mode 100644 index ebdf05a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lava6762_32_op68.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lava6762_l01.bin b/mtkclient/Loader/Preloader/preloader_lava6762_l01.bin deleted file mode 100644 index 8993056..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lava6762_l01.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lava6762_op70.bin b/mtkclient/Loader/Preloader/preloader_lava6762_op70.bin deleted file mode 100644 index f55945f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lava6762_op70.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lava72_sp51.bin b/mtkclient/Loader/Preloader/preloader_lava72_sp51.bin deleted file mode 100644 index 2256915..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lava72_sp51.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lb7_h393.bin b/mtkclient/Loader/Preloader/preloader_lb7_h393.bin deleted file mode 100644 index c51a5d6..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lb7_h393.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lb8_h6110.bin b/mtkclient/Loader/Preloader/preloader_lb8_h6110.bin deleted file mode 100644 index 760ce93..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lb8_h6110.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lc6_h617.bin b/mtkclient/Loader/Preloader/preloader_lc6_h617.bin deleted file mode 100644 index def4c2d..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lc6_h617.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lcsh6582_wt_l.bin b/mtkclient/Loader/Preloader/preloader_lcsh6582_wt_l.bin deleted file mode 100644 index 0047798..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lcsh6582_wt_l.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lcsh6735m_35u_m.bin b/mtkclient/Loader/Preloader/preloader_lcsh6735m_35u_m.bin deleted file mode 100644 index 9ef4200..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lcsh6735m_35u_m.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lcsh6739_66_n1.bin b/mtkclient/Loader/Preloader/preloader_lcsh6739_66_n1.bin deleted file mode 100644 index caf5f28..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lcsh6739_66_n1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lcsh6795_lwt_l-sign.bin b/mtkclient/Loader/Preloader/preloader_lcsh6795_lwt_l-sign.bin deleted file mode 100644 index 4e1f7f3..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lcsh6795_lwt_l-sign.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lcsh6795_lwt_l.bin b/mtkclient/Loader/Preloader/preloader_lcsh6795_lwt_l.bin deleted file mode 100644 index 398af1a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lcsh6795_lwt_l.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lcsh6797_6c_lw_m.bin b/mtkclient/Loader/Preloader/preloader_lcsh6797_6c_lw_m.bin deleted file mode 100644 index f34e398..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lcsh6797_6c_lw_m.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lcsh8735_6tb_a8_l.bin b/mtkclient/Loader/Preloader/preloader_lcsh8735_6tb_a8_l.bin deleted file mode 100644 index e46d176..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lcsh8735_6tb_a8_l.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lcsh8735_6tb_a8_l1.bin b/mtkclient/Loader/Preloader/preloader_lcsh8735_6tb_a8_l1.bin deleted file mode 100644 index cb87477..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lcsh8735_6tb_a8_l1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lcsh8735_6tb_a8_l1_lc.bin b/mtkclient/Loader/Preloader/preloader_lcsh8735_6tb_a8_l1_lc.bin deleted file mode 100644 index fdf13ab..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lcsh8735_6tb_a8_l1_lc.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lcsh8735m_6_co.bin b/mtkclient/Loader/Preloader/preloader_lcsh8735m_6_co.bin deleted file mode 100644 index 5aee9be..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lcsh8735m_6_co.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_ld7_h694.bin b/mtkclient/Loader/Preloader/preloader_ld7_h694.bin deleted file mode 100644 index 6cbca89..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_ld7_h694.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_letv_x500.bin b/mtkclient/Loader/Preloader/preloader_letv_x500.bin deleted file mode 100644 index 1d74a71..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_letv_x500.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lima.bin b/mtkclient/Loader/Preloader/preloader_lima.bin deleted file mode 100644 index cc5da78..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lima.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lo1.bin b/mtkclient/Loader/Preloader/preloader_lo1.bin deleted file mode 100644 index 32870fe..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lo1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lo2.bin b/mtkclient/Loader/Preloader/preloader_lo2.bin deleted file mode 100644 index 1542466..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lo2.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lotus.bin b/mtkclient/Loader/Preloader/preloader_lotus.bin deleted file mode 100644 index 0692503..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lotus.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_lv3.bin b/mtkclient/Loader/Preloader/preloader_lv3.bin deleted file mode 100644 index 809a4cf..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_lv3.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_m12.bin b/mtkclient/Loader/Preloader/preloader_m12.bin deleted file mode 100644 index c1e126d..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_m12.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_magc6570_cweg_m.bin b/mtkclient/Loader/Preloader/preloader_magc6570_cweg_m.bin deleted file mode 100644 index 1accd28..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_magc6570_cweg_m.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_magc6580_we_c_m.bin b/mtkclient/Loader/Preloader/preloader_magc6580_we_c_m.bin deleted file mode 100644 index 2701d3e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_magc6580_we_c_m.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_mantis.bin b/mtkclient/Loader/Preloader/preloader_mantis.bin deleted file mode 100644 index e381a50..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_mantis.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_mbk72_wet_jb3.bin b/mtkclient/Loader/Preloader/preloader_mbk72_wet_jb3.bin deleted file mode 100644 index 16ad7c4..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_mbk72_wet_jb3.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_meitu6755_66c_m_1503.bin b/mtkclient/Loader/Preloader/preloader_meitu6755_66c_m_1503.bin deleted file mode 100644 index 071b7f9..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_meitu6755_66c_m_1503.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_meitu6755_66c_m_1512.bin b/mtkclient/Loader/Preloader/preloader_meitu6755_66c_m_1512.bin deleted file mode 100644 index e0ad133..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_meitu6755_66c_m_1512.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_meitu6797_6c_m.bin b/mtkclient/Loader/Preloader/preloader_meitu6797_6c_m.bin deleted file mode 100644 index 497f746..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_meitu6797_6c_m.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_meitu92_wet_jb9.bin b/mtkclient/Loader/Preloader/preloader_meitu92_wet_jb9.bin deleted file mode 100644 index 7683d99..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_meitu92_wet_jb9.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_meizu6795_lwt_l.bin b/mtkclient/Loader/Preloader/preloader_meizu6795_lwt_l.bin deleted file mode 100644 index 110728e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_meizu6795_lwt_l.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_meizuM3_max.bin b/mtkclient/Loader/Preloader/preloader_meizuM3_max.bin deleted file mode 100644 index 3d85b51..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_meizuM3_max.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_meizu_M1_metal.bin b/mtkclient/Loader/Preloader/preloader_meizu_M1_metal.bin deleted file mode 100644 index 5dd9569..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_meizu_M1_metal.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_meizu_M5_note.bin b/mtkclient/Loader/Preloader/preloader_meizu_M5_note.bin deleted file mode 100644 index e33e6ef..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_meizu_M5_note.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_meizu_MX5.bin b/mtkclient/Loader/Preloader/preloader_meizu_MX5.bin deleted file mode 100644 index 110728e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_meizu_MX5.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_meizu_m2_Note.bin b/mtkclient/Loader/Preloader/preloader_meizu_m2_Note.bin deleted file mode 100644 index aa7362a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_meizu_m2_Note.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_mercury.bin b/mtkclient/Loader/Preloader/preloader_mercury.bin deleted file mode 100644 index 31e8b3a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_mercury.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_merlin.bin b/mtkclient/Loader/Preloader/preloader_merlin.bin deleted file mode 100644 index 3d46f54..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_merlin.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_miki6737m_35_n_mmxC2.bin b/mtkclient/Loader/Preloader/preloader_miki6737m_35_n_mmxC2.bin deleted file mode 100644 index 6afe091..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_miki6737m_35_n_mmxC2.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_miki6737m_521_adv.bin b/mtkclient/Loader/Preloader/preloader_miki6737m_521_adv.bin deleted file mode 100644 index c7b16b7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_miki6737m_521_adv.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_miki6737m_65_n_rh3.bin b/mtkclient/Loader/Preloader/preloader_miki6737m_65_n_rh3.bin deleted file mode 100644 index 031b501..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_miki6737m_65_n_rh3.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_miki6750_66_556_adv.bin b/mtkclient/Loader/Preloader/preloader_miki6750_66_556_adv.bin deleted file mode 100644 index fb8d227..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_miki6750_66_556_adv.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_miki6750_66_591_adv.bin b/mtkclient/Loader/Preloader/preloader_miki6750_66_591_adv.bin deleted file mode 100644 index d4f7423..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_miki6750_66_591_adv.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_miki8735_tb_m_adv.bin b/mtkclient/Loader/Preloader/preloader_miki8735_tb_m_adv.bin deleted file mode 100644 index 68299c5..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_miki8735_tb_m_adv.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_miki8735b_6951b_adv.bin b/mtkclient/Loader/Preloader/preloader_miki8735b_6951b_adv.bin deleted file mode 100644 index 985e19a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_miki8735b_6951b_adv.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_mt8321_p_tb7305f.bin b/mtkclient/Loader/Preloader/preloader_mt8321_p_tb7305f.bin deleted file mode 100644 index 47314ab..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_mt8321_p_tb7305f.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_mt8765_p_tb7305x.bin b/mtkclient/Loader/Preloader/preloader_mt8765_p_tb7305x.bin deleted file mode 100644 index 96b5f4e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_mt8765_p_tb7305x.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_mtk6750_nice_al10.bin b/mtkclient/Loader/Preloader/preloader_mtk6750_nice_al10.bin deleted file mode 100644 index c3a6ca7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_mtk6750_nice_al10.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_muse6739_mh6_p.bin b/mtkclient/Loader/Preloader/preloader_muse6739_mh6_p.bin deleted file mode 100644 index 406da93..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_muse6739_mh6_p.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_muse6750_lv5_o.bin b/mtkclient/Loader/Preloader/preloader_muse6750_lv5_o.bin deleted file mode 100644 index d342739..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_muse6750_lv5_o.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_muse6762_dh30x_q.bin b/mtkclient/Loader/Preloader/preloader_muse6762_dh30x_q.bin deleted file mode 100644 index 14cf999..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_muse6762_dh30x_q.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_muse6762_mh4_o.bin b/mtkclient/Loader/Preloader/preloader_muse6762_mh4_o.bin deleted file mode 100644 index 18f5718..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_muse6762_mh4_o.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_muse6762_mh4p_p.bin b/mtkclient/Loader/Preloader/preloader_muse6762_mh4p_p.bin deleted file mode 100644 index a746cdf..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_muse6762_mh4p_p.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_muse6765_dh40lm_p.bin b/mtkclient/Loader/Preloader/preloader_muse6765_dh40lm_p.bin deleted file mode 100644 index 8c48c95..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_muse6765_dh40lm_p.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_mz6757_66_92l_n.bin b/mtkclient/Loader/Preloader/preloader_mz6757_66_92l_n.bin deleted file mode 100644 index 32eb24b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_mz6757_66_92l_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_mz6799_6m_v2_2k_n.bin b/mtkclient/Loader/Preloader/preloader_mz6799_6m_v2_2k_n.bin deleted file mode 100644 index 203e21b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_mz6799_6m_v2_2k_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_nd396b_adv.bin b/mtkclient/Loader/Preloader/preloader_nd396b_adv.bin deleted file mode 100644 index ba82dbd..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_nd396b_adv.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_ne1.bin b/mtkclient/Loader/Preloader/preloader_ne1.bin deleted file mode 100644 index 33d79ba..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_ne1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_neostra8163_e_b3-a20.bin b/mtkclient/Loader/Preloader/preloader_neostra8163_e_b3-a20.bin deleted file mode 100644 index d6f4098..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_neostra8163_e_b3-a20.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_neostra8163_tb_m_a3-a40.bin b/mtkclient/Loader/Preloader/preloader_neostra8163_tb_m_a3-a40.bin deleted file mode 100644 index c8e47ea..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_neostra8163_tb_m_a3-a40.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_neostra8163_tb_m_b1-780.bin b/mtkclient/Loader/Preloader/preloader_neostra8163_tb_m_b1-780.bin deleted file mode 100644 index 3cafa5b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_neostra8163_tb_m_b1-780.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_neostra8163_tb_n_b1-860.bin b/mtkclient/Loader/Preloader/preloader_neostra8163_tb_n_b1-860.bin deleted file mode 100644 index c4a4ba9..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_neostra8163_tb_n_b1-860.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_neostra8167_tb_n_b1-7a0.bin b/mtkclient/Loader/Preloader/preloader_neostra8167_tb_n_b1-7a0.bin deleted file mode 100644 index 5dcc0e0..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_neostra8167_tb_n_b1-7a0.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_neostra8167_tb_n_b3-a40.bin b/mtkclient/Loader/Preloader/preloader_neostra8167_tb_n_b3-a40.bin deleted file mode 100644 index eeafa4d..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_neostra8167_tb_n_b3-a40.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_neostra8176_tb_n_a3-a50.bin b/mtkclient/Loader/Preloader/preloader_neostra8176_tb_n_a3-a50.bin deleted file mode 100644 index 6f8e4d2..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_neostra8176_tb_n_a3-a50.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_neostra8735_6tb_m_a1-734.bin b/mtkclient/Loader/Preloader/preloader_neostra8735_6tb_m_a1-734.bin deleted file mode 100644 index b5d95b1..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_neostra8735_6tb_m_a1-734.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_newway82_tb_n_kk.bin b/mtkclient/Loader/Preloader/preloader_newway82_tb_n_kk.bin deleted file mode 100644 index 27c9f85..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_newway82_tb_n_kk.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_nicklaus.bin b/mtkclient/Loader/Preloader/preloader_nicklaus.bin deleted file mode 100644 index 3920067..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_nicklaus.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6572_14079.bin b/mtkclient/Loader/Preloader/preloader_oppo6572_14079.bin deleted file mode 100644 index 6a11107..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6572_14079.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6582_15066.bin b/mtkclient/Loader/Preloader/preloader_oppo6582_15066.bin deleted file mode 100644 index 0bc03fe..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6582_15066.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6582_15093.bin b/mtkclient/Loader/Preloader/preloader_oppo6582_15093.bin deleted file mode 100644 index 3e45bbf..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6582_15093.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6750_15127.bin b/mtkclient/Loader/Preloader/preloader_oppo6750_15127.bin deleted file mode 100644 index e1c4b69..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6750_15127.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6750_15131.bin b/mtkclient/Loader/Preloader/preloader_oppo6750_15131.bin deleted file mode 100644 index 913ed35..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6750_15131.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6750_15131_F1S.bin b/mtkclient/Loader/Preloader/preloader_oppo6750_15131_F1S.bin deleted file mode 100644 index 8a7bab6..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6750_15131_F1S.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6750_16021.bin b/mtkclient/Loader/Preloader/preloader_oppo6750_16021.bin deleted file mode 100644 index 54e6968..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6750_16021.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6750_16059.bin b/mtkclient/Loader/Preloader/preloader_oppo6750_16059.bin deleted file mode 100644 index e859a3e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6750_16059.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6750_16391.bin b/mtkclient/Loader/Preloader/preloader_oppo6750_16391.bin deleted file mode 100644 index 93d1fc3..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6750_16391.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6750_17351.bin b/mtkclient/Loader/Preloader/preloader_oppo6750_17351.bin deleted file mode 100644 index d40bf48..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6750_17351.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6752_15011.bin b/mtkclient/Loader/Preloader/preloader_oppo6752_15011.bin deleted file mode 100644 index a508912..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6752_15011.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6752_15021.bin b/mtkclient/Loader/Preloader/preloader_oppo6752_15021.bin deleted file mode 100644 index adeb267..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6752_15021.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6755_15111.bin b/mtkclient/Loader/Preloader/preloader_oppo6755_15111.bin deleted file mode 100644 index 63637a2..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6755_15111.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6755_15111r.bin b/mtkclient/Loader/Preloader/preloader_oppo6755_15111r.bin deleted file mode 100644 index 919d18f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6755_15111r.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6755_15111x.bin b/mtkclient/Loader/Preloader/preloader_oppo6755_15111x.bin deleted file mode 100644 index 63637a2..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6755_15111x.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6762_18540.bin b/mtkclient/Loader/Preloader/preloader_oppo6762_18540.bin deleted file mode 100644 index fee8783..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6762_18540.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6762_18540_98711A09AB.bin b/mtkclient/Loader/Preloader/preloader_oppo6762_18540_98711A09AB.bin deleted file mode 100644 index 1627725..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6762_18540_98711A09AB.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6763_17031.bin b/mtkclient/Loader/Preloader/preloader_oppo6763_17031.bin deleted file mode 100644 index 471b8f9..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6763_17031.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6763_17031_.bin b/mtkclient/Loader/Preloader/preloader_oppo6763_17031_.bin deleted file mode 100644 index 88f51e1..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6763_17031_.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6763_17101.bin b/mtkclient/Loader/Preloader/preloader_oppo6763_17101.bin deleted file mode 100644 index 2fcd731..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6763_17101.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6763_17101_A83_100519.bin b/mtkclient/Loader/Preloader/preloader_oppo6763_17101_A83_100519.bin deleted file mode 100644 index 2fcd731..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6763_17101_A83_100519.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6765_18510.bin b/mtkclient/Loader/Preloader/preloader_oppo6765_18510.bin deleted file mode 100644 index 12aa05f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6765_18510.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6765_18511.bin b/mtkclient/Loader/Preloader/preloader_oppo6765_18511.bin deleted file mode 100644 index 0ce18fd..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6765_18511.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6765_18511_OPPO_a5s.bin b/mtkclient/Loader/Preloader/preloader_oppo6765_18511_OPPO_a5s.bin deleted file mode 100644 index 0ce18fd..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6765_18511_OPPO_a5s.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6765_19181.bin b/mtkclient/Loader/Preloader/preloader_oppo6765_19181.bin deleted file mode 100644 index 39b517e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6765_19181.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6765_19451.bin b/mtkclient/Loader/Preloader/preloader_oppo6765_19451.bin deleted file mode 100644 index 2b5199e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6765_19451.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6765_19451_94B0482E99.bin b/mtkclient/Loader/Preloader/preloader_oppo6765_19451_94B0482E99.bin deleted file mode 100644 index e31ce62..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6765_19451_94B0482E99.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6765_19581.bin b/mtkclient/Loader/Preloader/preloader_oppo6765_19581.bin deleted file mode 100644 index 5142c76..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6765_19581.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6765_Realme_C15.bin b/mtkclient/Loader/Preloader/preloader_oppo6765_Realme_C15.bin deleted file mode 100644 index 1c5cb92..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6765_Realme_C15.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6769.bin b/mtkclient/Loader/Preloader/preloader_oppo6769.bin deleted file mode 100644 index 4692882..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6769.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6769_Nazro_20.bin b/mtkclient/Loader/Preloader/preloader_oppo6769_Nazro_20.bin deleted file mode 100644 index b76a706..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6769_Nazro_20.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6769_Realme_6i.bin b/mtkclient/Loader/Preloader/preloader_oppo6769_Realme_6i.bin deleted file mode 100644 index 22b3468..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6769_Realme_6i.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6771_17061.bin b/mtkclient/Loader/Preloader/preloader_oppo6771_17061.bin deleted file mode 100644 index eaa12fc..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6771_17061.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6771_17197.bin b/mtkclient/Loader/Preloader/preloader_oppo6771_17197.bin deleted file mode 100644 index e1f2557..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6771_17197.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6771_17331.bin b/mtkclient/Loader/Preloader/preloader_oppo6771_17331.bin deleted file mode 100644 index a4eed2e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6771_17331.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6771_17331_.bin b/mtkclient/Loader/Preloader/preloader_oppo6771_17331_.bin deleted file mode 100644 index a4eed2e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6771_17331_.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6771_17331_F7_010520.bin b/mtkclient/Loader/Preloader/preloader_oppo6771_17331_F7_010520.bin deleted file mode 100644 index bed6043..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6771_17331_F7_010520.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6771_18011.bin b/mtkclient/Loader/Preloader/preloader_oppo6771_18011.bin deleted file mode 100644 index 5ded75f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6771_18011.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6771_18311.bin b/mtkclient/Loader/Preloader/preloader_oppo6771_18311.bin deleted file mode 100644 index 0fac8f9..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6771_18311.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6771_18311_F9Pro.bin b/mtkclient/Loader/Preloader/preloader_oppo6771_18311_F9Pro.bin deleted file mode 100644 index 29505db..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6771_18311_F9Pro.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6771_18311__.bin b/mtkclient/Loader/Preloader/preloader_oppo6771_18311__.bin deleted file mode 100644 index 4d20f86..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6771_18311__.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6771_18311_v9.bin b/mtkclient/Loader/Preloader/preloader_oppo6771_18311_v9.bin deleted file mode 100644 index 29505db..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6771_18311_v9.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6771_18531_F11_PRO.bin b/mtkclient/Loader/Preloader/preloader_oppo6771_18531_F11_PRO.bin deleted file mode 100644 index 5a2da2b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6771_18531_F11_PRO.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6771_18531__.bin b/mtkclient/Loader/Preloader/preloader_oppo6771_18531__.bin deleted file mode 100644 index e44dd82..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6771_18531__.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6771_18531_fix.bin b/mtkclient/Loader/Preloader/preloader_oppo6771_18531_fix.bin deleted file mode 100644 index e44dd82..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6771_18531_fix.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6771_18601.bin b/mtkclient/Loader/Preloader/preloader_oppo6771_18601.bin deleted file mode 100644 index 361cf07..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6771_18601.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6771_18611.bin b/mtkclient/Loader/Preloader/preloader_oppo6771_18611.bin deleted file mode 100644 index cc0f708..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6771_18611.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6771_19350_OPPO_A91.bin b/mtkclient/Loader/Preloader/preloader_oppo6771_19350_OPPO_A91.bin deleted file mode 100644 index ca3b3e2..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6771_19350_OPPO_A91.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6771_A7x_18011.bin b/mtkclient/Loader/Preloader/preloader_oppo6771_A7x_18011.bin deleted file mode 100644 index ae66387..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6771_A7x_18011.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6779.bin b/mtkclient/Loader/Preloader/preloader_oppo6779.bin deleted file mode 100644 index f62ad8a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6779.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6779_18593.bin b/mtkclient/Loader/Preloader/preloader_oppo6779_18593.bin deleted file mode 100644 index b16ba84..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6779_18593.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6779_19301.bin b/mtkclient/Loader/Preloader/preloader_oppo6779_19301.bin deleted file mode 100644 index f42869f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6779_19301.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6779_F17_Pro.bin b/mtkclient/Loader/Preloader/preloader_oppo6779_F17_Pro.bin deleted file mode 100644 index 79852e1..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6779_F17_Pro.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6779_OPPO_Reno_Z.bin b/mtkclient/Loader/Preloader/preloader_oppo6779_OPPO_Reno_Z.bin deleted file mode 100644 index b16ba84..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6779_OPPO_Reno_Z.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6785.bin b/mtkclient/Loader/Preloader/preloader_oppo6785.bin deleted file mode 100644 index 7c9909c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6785.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6785_Realme_7.bin b/mtkclient/Loader/Preloader/preloader_oppo6785_Realme_7.bin deleted file mode 100644 index 2969c52..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6785_Realme_7.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6795_15019.bin b/mtkclient/Loader/Preloader/preloader_oppo6795_15019.bin deleted file mode 100644 index dd104e0..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6795_15019.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6833.bin b/mtkclient/Loader/Preloader/preloader_oppo6833.bin deleted file mode 100644 index 1fd2c5f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6833.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6853.bin b/mtkclient/Loader/Preloader/preloader_oppo6853.bin deleted file mode 100644 index 6a886f4..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6853.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo6889.bin b/mtkclient/Loader/Preloader/preloader_oppo6889.bin deleted file mode 100644 index 35e5512..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo6889.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo72_13076.bin b/mtkclient/Loader/Preloader/preloader_oppo72_13076.bin deleted file mode 100644 index e68f54a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo72_13076.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo72_15077.bin b/mtkclient/Loader/Preloader/preloader_oppo72_15077.bin deleted file mode 100644 index 96b2aed..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo72_15077.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo72t_13033.bin b/mtkclient/Loader/Preloader/preloader_oppo72t_13033.bin deleted file mode 100644 index c37aa91..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo72t_13033.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo82_13059.bin b/mtkclient/Loader/Preloader/preloader_oppo82_13059.bin deleted file mode 100644 index e6eac4b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo82_13059.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo82_13071.bin b/mtkclient/Loader/Preloader/preloader_oppo82_13071.bin deleted file mode 100644 index ba09b69..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo82_13071.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo82_13075.bin b/mtkclient/Loader/Preloader/preloader_oppo82_13075.bin deleted file mode 100644 index 7fb5260..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo82_13075.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo82_13081.bin b/mtkclient/Loader/Preloader/preloader_oppo82_13081.bin deleted file mode 100644 index d23430d..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo82_13081.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo82_14086.bin b/mtkclient/Loader/Preloader/preloader_oppo82_14086.bin deleted file mode 100644 index 0ce0f69..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo82_14086.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo82_15063.bin b/mtkclient/Loader/Preloader/preloader_oppo82_15063.bin deleted file mode 100644 index 4969fec..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo82_15063.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo82_15066.bin b/mtkclient/Loader/Preloader/preloader_oppo82_15066.bin deleted file mode 100644 index 7c87f1e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo82_15066.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo82_15066_1201.bin b/mtkclient/Loader/Preloader/preloader_oppo82_15066_1201.bin deleted file mode 100644 index 0bc03fe..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo82_15066_1201.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oppo82_15093.bin b/mtkclient/Loader/Preloader/preloader_oppo82_15093.bin deleted file mode 100644 index 3e45bbf..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oppo82_15093.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_oy01_q5533.bin b/mtkclient/Loader/Preloader/preloader_oy01_q5533.bin deleted file mode 100644 index 92fa451..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_oy01_q5533.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_p100.bin b/mtkclient/Loader/Preloader/preloader_p100.bin deleted file mode 100644 index 4abf94c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_p100.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_p130_wr5p.bin b/mtkclient/Loader/Preloader/preloader_p130_wr5p.bin deleted file mode 100644 index 17b33cb..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_p130_wr5p.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_p161bn.bin b/mtkclient/Loader/Preloader/preloader_p161bn.bin deleted file mode 100644 index 41cf17e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_p161bn.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_p200.bin b/mtkclient/Loader/Preloader/preloader_p200.bin deleted file mode 100644 index 1babc7e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_p200.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_p311_wts7.bin b/mtkclient/Loader/Preloader/preloader_p311_wts7.bin deleted file mode 100644 index 9ae5603..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_p311_wts7.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_p388z.bin b/mtkclient/Loader/Preloader/preloader_p388z.bin deleted file mode 100644 index 0cd5649..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_p388z.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_p389bf.bin b/mtkclient/Loader/Preloader/preloader_p389bf.bin deleted file mode 100644 index d8320c5..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_p389bf.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_pd1054_kw_x1_max.bin b/mtkclient/Loader/Preloader/preloader_pd1054_kw_x1_max.bin deleted file mode 100644 index 419ef85..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_pd1054_kw_x1_max.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_pd1124_kw_x1_a.bin b/mtkclient/Loader/Preloader/preloader_pd1124_kw_x1_a.bin deleted file mode 100644 index f1b9fe1..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_pd1124_kw_x1_a.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_pd3s44_lg_l6205l.bin b/mtkclient/Loader/Preloader/preloader_pd3s44_lg_l6205l.bin deleted file mode 100644 index 2dd8bed..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_pd3s44_lg_l6205l.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_power3_k71_bsp.bin b/mtkclient/Loader/Preloader/preloader_power3_k71_bsp.bin deleted file mode 100644 index 201a7a6..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_power3_k71_bsp.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_pri6580_we_n_uleS8_2.bin b/mtkclient/Loader/Preloader/preloader_pri6580_we_n_uleS8_2.bin deleted file mode 100644 index a2e600f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_pri6580_we_n_uleS8_2.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_pri6580_weg_n_blvA10.bin b/mtkclient/Loader/Preloader/preloader_pri6580_weg_n_blvA10.bin deleted file mode 100644 index a78849c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_pri6580_weg_n_blvA10.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_pri6580_weg_n_oukC9.bin b/mtkclient/Loader/Preloader/preloader_pri6580_weg_n_oukC9.bin deleted file mode 100644 index 23a11c5..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_pri6580_weg_n_oukC9.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_pri6580_weg_n_uleS8_1.bin b/mtkclient/Loader/Preloader/preloader_pri6580_weg_n_uleS8_1.bin deleted file mode 100644 index 0a4bf2d..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_pri6580_weg_n_uleS8_1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_pri6737m_35g_n_tx5201.bin b/mtkclient/Loader/Preloader/preloader_pri6737m_35g_n_tx5201.bin deleted file mode 100644 index 60dc465..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_pri6737m_35g_n_tx5201.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_pri6737m_65_n.bin b/mtkclient/Loader/Preloader/preloader_pri6737m_65_n.bin deleted file mode 100644 index 5207924..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_pri6737m_65_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_pri6737m_65_n_uleS8P.bin b/mtkclient/Loader/Preloader/preloader_pri6737m_65_n_uleS8P.bin deleted file mode 100644 index 4e7b56f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_pri6737m_65_n_uleS8P.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_pri6737t_35g_m0_vivi.bin b/mtkclient/Loader/Preloader/preloader_pri6737t_35g_m0_vivi.bin deleted file mode 100644 index e18fde5..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_pri6737t_35g_m0_vivi.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_pri6737t_66_n_jru.bin b/mtkclient/Loader/Preloader/preloader_pri6737t_66_n_jru.bin deleted file mode 100644 index 2b19358..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_pri6737t_66_n_jru.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_pri6737t_66_n_just5L707.bin b/mtkclient/Loader/Preloader/preloader_pri6737t_66_n_just5L707.bin deleted file mode 100644 index 3a24a42..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_pri6737t_66_n_just5L707.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_pri6737t_66_n_pure1.bin b/mtkclient/Loader/Preloader/preloader_pri6737t_66_n_pure1.bin deleted file mode 100644 index e8966d8..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_pri6737t_66_n_pure1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_pu6a63_hdl_n3_e3_2.bin b/mtkclient/Loader/Preloader/preloader_pu6a63_hdl_n3_e3_2.bin deleted file mode 100644 index cda0b04..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_pu6a63_hdl_n3_e3_2.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_px154_kw_e.bin b/mtkclient/Loader/Preloader/preloader_px154_kw_e.bin deleted file mode 100644 index e90936f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_px154_kw_e.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_q593_x19s.bin b/mtkclient/Loader/Preloader/preloader_q593_x19s.bin deleted file mode 100644 index 9697640..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_q593_x19s.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_q812_v03_37m_fdd_35g_u50a.bin b/mtkclient/Loader/Preloader/preloader_q812_v03_37m_fdd_35g_u50a.bin deleted file mode 100644 index fe28111..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_q812_v03_37m_fdd_35g_u50a.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_q812_v03_37m_fdd_35g_u50aplus.bin b/mtkclient/Loader/Preloader/preloader_q812_v03_37m_fdd_35g_u50aplus.bin deleted file mode 100644 index bf653bf..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_q812_v03_37m_fdd_35g_u50aplus.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_q930.bin b/mtkclient/Loader/Preloader/preloader_q930.bin deleted file mode 100644 index 53c4279..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_q930.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_ra6_h394.bin b/mtkclient/Loader/Preloader/preloader_ra6_h394.bin deleted file mode 100644 index 60acb7d..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_ra6_h394.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_reallytek82_tb_jb5.bin b/mtkclient/Loader/Preloader/preloader_reallytek82_tb_jb5.bin deleted file mode 100644 index bb26ce9..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_reallytek82_tb_jb5.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_redmi9a_Hydra_V2.bin b/mtkclient/Loader/Preloader/preloader_redmi9a_Hydra_V2.bin deleted file mode 100644 index 588cdcd..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_redmi9a_Hydra_V2.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6580_we_c_m.bin b/mtkclient/Loader/Preloader/preloader_rlk6580_we_c_m.bin deleted file mode 100644 index c42ae8b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6580_we_c_m.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6580_we_c_m.bin.CA78985116 b/mtkclient/Loader/Preloader/preloader_rlk6580_we_c_m.bin.CA78985116 deleted file mode 100644 index 3bc9094..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6580_we_c_m.bin.CA78985116 and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6580_we_c_m__.bin b/mtkclient/Loader/Preloader/preloader_rlk6580_we_c_m__.bin deleted file mode 100644 index 8ec09da..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6580_we_c_m__.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6580_we_m_tecL8L.bin b/mtkclient/Loader/Preloader/preloader_rlk6580_we_m_tecL8L.bin deleted file mode 100644 index e063785..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6580_we_m_tecL8L.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6580_we_n.bin b/mtkclient/Loader/Preloader/preloader_rlk6580_we_n.bin deleted file mode 100644 index 6080c63..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6580_we_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6580_weg_m.bin b/mtkclient/Loader/Preloader/preloader_rlk6580_weg_m.bin deleted file mode 100644 index c888844..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6580_weg_m.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6580_weg_n_tecF3.bin b/mtkclient/Loader/Preloader/preloader_rlk6580_weg_n_tecF3.bin deleted file mode 100644 index c872c59..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6580_weg_n_tecF3.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6735_65u_1_l1_tecJ8.bin b/mtkclient/Loader/Preloader/preloader_rlk6735_65u_1_l1_tecJ8.bin deleted file mode 100644 index 02b648d..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6735_65u_1_l1_tecJ8.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6735_65u_m0.bin b/mtkclient/Loader/Preloader/preloader_rlk6735_65u_m0.bin deleted file mode 100644 index 805468f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6735_65u_m0.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6737m_35_i_n.bin b/mtkclient/Loader/Preloader/preloader_rlk6737m_35_i_n.bin deleted file mode 100644 index 2a029db..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6737m_35_i_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6737m_35_i_n_itA44.bin b/mtkclient/Loader/Preloader/preloader_rlk6737m_35_i_n_itA44.bin deleted file mode 100644 index a67fcc8..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6737m_35_i_n_itA44.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6737m_35_i_n_itS32.bin b/mtkclient/Loader/Preloader/preloader_rlk6737m_35_i_n_itS32.bin deleted file mode 100644 index 4c56ebc..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6737m_35_i_n_itS32.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6737m_35_i_n_itS41.bin b/mtkclient/Loader/Preloader/preloader_rlk6737m_35_i_n_itS41.bin deleted file mode 100644 index c6c7707..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6737m_35_i_n_itS41.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6737m_35g_n_tecK8.bin b/mtkclient/Loader/Preloader/preloader_rlk6737m_35g_n_tecK8.bin deleted file mode 100644 index 0e7e5ee..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6737m_35g_n_tecK8.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6737m_65_n_tecI3.bin b/mtkclient/Loader/Preloader/preloader_rlk6737m_65_n_tecI3.bin deleted file mode 100644 index 3e0bdf6..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6737m_65_n_tecI3.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6737m_65_n_tecI3P.bin b/mtkclient/Loader/Preloader/preloader_rlk6737m_65_n_tecI3P.bin deleted file mode 100644 index c9b8a2b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6737m_65_n_tecI3P.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6737t_65_n.bin b/mtkclient/Loader/Preloader/preloader_rlk6737t_65_n.bin deleted file mode 100644 index aa344a4..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6737t_65_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6737t_65_n_tecI5.bin b/mtkclient/Loader/Preloader/preloader_rlk6737t_65_n_tecI5.bin deleted file mode 100644 index aa6b43c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6737t_65_n_tecI5.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6737t_65_n_tecI5P.bin b/mtkclient/Loader/Preloader/preloader_rlk6737t_65_n_tecI5P.bin deleted file mode 100644 index ceffaf7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6737t_65_n_tecI5P.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6737t_65_n_tecIN5.bin b/mtkclient/Loader/Preloader/preloader_rlk6737t_65_n_tecIN5.bin deleted file mode 100644 index a773782..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6737t_65_n_tecIN5.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6739_36_c_n1.bin b/mtkclient/Loader/Preloader/preloader_rlk6739_36_c_n1.bin deleted file mode 100644 index 5659b82..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6739_36_c_n1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6739_36_c_n1_blu29.bin b/mtkclient/Loader/Preloader/preloader_rlk6739_36_c_n1_blu29.bin deleted file mode 100644 index cad0d0c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6739_36_c_n1_blu29.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6739_36_c_n1_kulKT05.bin b/mtkclient/Loader/Preloader/preloader_rlk6739_36_c_n1_kulKT05.bin deleted file mode 100644 index d8bc4e2..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6739_36_c_n1_kulKT05.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6739_66_c_n1.bin b/mtkclient/Loader/Preloader/preloader_rlk6739_66_c_n1.bin deleted file mode 100644 index 7d7da1b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6739_66_c_n1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6750_65_n_tecCXde.bin b/mtkclient/Loader/Preloader/preloader_rlk6750_65_n_tecCXde.bin deleted file mode 100644 index 15d54e8..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6750_65_n_tecCXde.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6750_65_n_tecCXs.bin b/mtkclient/Loader/Preloader/preloader_rlk6750_65_n_tecCXs.bin deleted file mode 100644 index 81c489a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6750_65_n_tecCXs.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6750_65_n_tecI7.bin b/mtkclient/Loader/Preloader/preloader_rlk6750_65_n_tecI7.bin deleted file mode 100644 index c5e3e5e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6750_65_n_tecI7.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6753_65_c_n_symP9P.bin b/mtkclient/Loader/Preloader/preloader_rlk6753_65_c_n_symP9P.bin deleted file mode 100644 index 3453e9a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6753_65_c_n_symP9P.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6755_65u_m_tecA6s.bin b/mtkclient/Loader/Preloader/preloader_rlk6755_65u_m_tecA6s.bin deleted file mode 100644 index 12c85f4..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6755_65u_m_tecA6s.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_rlk6757_66_n_tecAX8s.bin b/mtkclient/Loader/Preloader/preloader_rlk6757_66_n_tecAX8s.bin deleted file mode 100644 index 3510472..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_rlk6757_66_n_tecAX8s.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_s103_yh2.bin b/mtkclient/Loader/Preloader/preloader_s103_yh2.bin deleted file mode 100644 index 38500a3..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_s103_yh2.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_s106_yu2.bin b/mtkclient/Loader/Preloader/preloader_s106_yu2.bin deleted file mode 100644 index 32845f7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_s106_yu2.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_s12v55_mle_3m_nomu.bin b/mtkclient/Loader/Preloader/preloader_s12v55_mle_3m_nomu.bin deleted file mode 100644 index 86635f9..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_s12v55_mle_3m_nomu.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_s13pro_itel.bin b/mtkclient/Loader/Preloader/preloader_s13pro_itel.bin deleted file mode 100644 index 9d81c5c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_s13pro_itel.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_s21v57c2k_dg_m1t.bin b/mtkclient/Loader/Preloader/preloader_s21v57c2k_dg_m1t.bin deleted file mode 100644 index 7f504cf..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_s21v57c2k_dg_m1t.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_s21v57c2k_gq_fp_uleAr2.bin b/mtkclient/Loader/Preloader/preloader_s21v57c2k_gq_fp_uleAr2.bin deleted file mode 100644 index 6b50506..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_s21v57c2k_gq_fp_uleAr2.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_s2_plus_letv.bin b/mtkclient/Loader/Preloader/preloader_s2_plus_letv.bin deleted file mode 100644 index cd68c5a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_s2_plus_letv.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_s32v63c2k_gq_gms_3_uleAr3.bin b/mtkclient/Loader/Preloader/preloader_s32v63c2k_gq_gms_3_uleAr3.bin deleted file mode 100644 index 43c9cb0..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_s32v63c2k_gq_gms_3_uleAr3.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_s32v63c2k_jk_bv95pro.bin b/mtkclient/Loader/Preloader/preloader_s32v63c2k_jk_bv95pro.bin deleted file mode 100644 index 3281bb0..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_s32v63c2k_jk_bv95pro.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_s3610_otd_k502_kzen.bin b/mtkclient/Loader/Preloader/preloader_s3610_otd_k502_kzen.bin deleted file mode 100644 index db9c286..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_s3610_otd_k502_kzen.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_s41v71c2k_jk_eea.bin b/mtkclient/Loader/Preloader/preloader_s41v71c2k_jk_eea.bin deleted file mode 100644 index c796819..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_s41v71c2k_jk_eea.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_s5000_row_3gdata.bin b/mtkclient/Loader/Preloader/preloader_s5000_row_3gdata.bin deleted file mode 100644 index 2bb716e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_s5000_row_3gdata.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_s5030.bin b/mtkclient/Loader/Preloader/preloader_s5030.bin deleted file mode 100644 index e48fb88..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_s5030.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_s5087_qmobile_s1_we.bin b/mtkclient/Loader/Preloader/preloader_s5087_qmobile_s1_we.bin deleted file mode 100644 index 0996ba6..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_s5087_qmobile_s1_we.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_s5250.bin b/mtkclient/Loader/Preloader/preloader_s5250.bin deleted file mode 100644 index d09224d..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_s5250.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_s5254.bin b/mtkclient/Loader/Preloader/preloader_s5254.bin deleted file mode 100644 index 6cedd7d..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_s5254.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_s6030.bin b/mtkclient/Loader/Preloader/preloader_s6030.bin deleted file mode 100644 index 27e5a1c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_s6030.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_s62v71c2k_gq_3weea.bin b/mtkclient/Loader/Preloader/preloader_s62v71c2k_gq_3weea.bin deleted file mode 100644 index 89a87c0..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_s62v71c2k_gq_3weea.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_s62v71c2k_jk_eea.bin b/mtkclient/Loader/Preloader/preloader_s62v71c2k_jk_eea.bin deleted file mode 100644 index b4323db..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_s62v71c2k_jk_eea.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_s96116ca1_B430EEA477.bin b/mtkclient/Loader/Preloader/preloader_s96116ca1_B430EEA477.bin deleted file mode 100644 index 49b0487..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_s96116ca1_B430EEA477.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_sa1_h8016.bin b/mtkclient/Loader/Preloader/preloader_sa1_h8016.bin deleted file mode 100644 index 5d0c8f9..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_sa1_h8016.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_shiva.bin b/mtkclient/Loader/Preloader/preloader_shiva.bin deleted file mode 100644 index b3b20fd..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_shiva.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_sloane_mt8173.bin b/mtkclient/Loader/Preloader/preloader_sloane_mt8173.bin deleted file mode 100644 index 63fe963..0000000 --- a/mtkclient/Loader/Preloader/preloader_sloane_mt8173.bin +++ /dev/null @@ -1,3 +0,0 @@ -MTK_BLOADER_INFO_v00 preloader_mt6575_evb.bin V116"ˆD3 p MTK_BIN   ­¼UT .  ˆ ˆ ˆ ˆ TA‚" `ð\@ƒ‚ ŒŸa3@ B(d 2  ,¼UV .  ˆ ˆ ˆ ˆ TA‚" `ð\@ƒ‚ Œ Ÿa3@ B(d 2  ì¼ fV .  ˆ ˆ ˆ ˆ eA‚"  ð\@ƒ‚ ŒŸa3@ B(d 2   Rev.R ! ˆ ˆ ˆ ˆ ¸DØE  ðpA  ŒŸ@c@ B(5!  2      ÿ - ?  JHYNIX ! ˆ ˆ ˆ ˆ ¸DØE  ð`A  ŒŸ@c@ B(2! 2      ÿ - ?   KLL00M \ No newline at end of file diff --git a/mtkclient/Loader/Preloader/preloader_spro6737m_65_n_mmxB5pro.bin b/mtkclient/Loader/Preloader/preloader_spro6737m_65_n_mmxB5pro.bin deleted file mode 100644 index c0d9f3e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_spro6737m_65_n_mmxB5pro.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_spro6737m_65_n_mmxC1.bin b/mtkclient/Loader/Preloader/preloader_spro6737m_65_n_mmxC1.bin deleted file mode 100644 index dc45e2b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_spro6737m_65_n_mmxC1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_spro6737mmx_65_n.bin b/mtkclient/Loader/Preloader/preloader_spro6737mmx_65_n.bin deleted file mode 100644 index dc45e2b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_spro6737mmx_65_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_sr6570_cweg_m.bin b/mtkclient/Loader/Preloader/preloader_sr6570_cweg_m.bin deleted file mode 100644 index ed53c8a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_sr6570_cweg_m.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_sr6580_weg_n_tecnoF2.bin b/mtkclient/Loader/Preloader/preloader_sr6580_weg_n_tecnoF2.bin deleted file mode 100644 index fcd41d6..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_sr6580_weg_n_tecnoF2.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_sr6737m_35_m0_it1518.bin b/mtkclient/Loader/Preloader/preloader_sr6737m_35_m0_it1518.bin deleted file mode 100644 index 9f78d47..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_sr6737m_35_m0_it1518.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_sr6737m_35_m0_tecN9s.bin b/mtkclient/Loader/Preloader/preloader_sr6737m_35_m0_tecN9s.bin deleted file mode 100644 index b546e04..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_sr6737m_35_m0_tecN9s.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_sr6750_65_n.bin b/mtkclient/Loader/Preloader/preloader_sr6750_65_n.bin deleted file mode 100644 index dcbff8b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_sr6750_65_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_t591_cq_7021h_cherry_we.bin b/mtkclient/Loader/Preloader/preloader_t591_cq_7021h_cherry_we.bin deleted file mode 100644 index bdfe91b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_t591_cq_7021h_cherry_we.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_t655_cq_7041_cherry_65_n.bin b/mtkclient/Loader/Preloader/preloader_t655_cq_7041_cherry_65_n.bin deleted file mode 100644 index d3421db..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_t655_cq_7041_cherry_65_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_t758_dg_a67t_n.bin b/mtkclient/Loader/Preloader/preloader_t758_dg_a67t_n.bin deleted file mode 100644 index 01ac86c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_t758_dg_a67t_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_t960w_v1_aa_frogm01c_h430_cherry.bin b/mtkclient/Loader/Preloader/preloader_t960w_v1_aa_frogm01c_h430_cherry.bin deleted file mode 100644 index 222a957..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_t960w_v1_aa_frogm01c_h430_cherry.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_t960w_v1_w_frog_m05c_h1240_fw_cherry.bin b/mtkclient/Loader/Preloader/preloader_t960w_v1_w_frog_m05c_h1240_fw_cherry.bin deleted file mode 100644 index d06df97..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_t960w_v1_w_frog_m05c_h1240_fw_cherry.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_t960w_v1_w_frog_m05pc_h1300_hd_cherry.bin b/mtkclient/Loader/Preloader/preloader_t960w_v1_w_frog_m05pc_h1300_hd_cherry.bin deleted file mode 100644 index 22210cd..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_t960w_v1_w_frog_m05pc_h1300_hd_cherry.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_t961w_v1_a_yx_a8pro_gretel_1s.bin b/mtkclient/Loader/Preloader/preloader_t961w_v1_a_yx_a8pro_gretel_1s.bin deleted file mode 100644 index cd413b3..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_t961w_v1_a_yx_a8pro_gretel_1s.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_t99621aa2.bin b/mtkclient/Loader/Preloader/preloader_t99621aa2.bin deleted file mode 100644 index dfe95fd..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_t99621aa2.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_taido_row.bin b/mtkclient/Loader/Preloader/preloader_taido_row.bin deleted file mode 100644 index 0b79b9c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_taido_row.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_tb8163p3_64_bsp_cu-ip10p.bin b/mtkclient/Loader/Preloader/preloader_tb8163p3_64_bsp_cu-ip10p.bin deleted file mode 100644 index 6436067..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_tb8163p3_64_bsp_cu-ip10p.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_tb8167p5_64_bsp_b3-a50.bin b/mtkclient/Loader/Preloader/preloader_tb8167p5_64_bsp_b3-a50.bin deleted file mode 100644 index 78f58d7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_tb8167p5_64_bsp_b3-a50.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_tb8765ap1_bsp_al8088.bin b/mtkclient/Loader/Preloader/preloader_tb8765ap1_bsp_al8088.bin deleted file mode 100644 index b48ca58..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_tb8765ap1_bsp_al8088.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_te616_dk_dk019_37_q0_go.bin b/mtkclient/Loader/Preloader/preloader_te616_dk_dk019_37_q0_go.bin deleted file mode 100644 index 7c89bbd..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_te616_dk_dk019_37_q0_go.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_te647_cq_a041c_37_q0_go_eea.bin b/mtkclient/Loader/Preloader/preloader_te647_cq_a041c_37_q0_go_eea.bin deleted file mode 100644 index 9e87b7f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_te647_cq_a041c_37_q0_go_eea.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_techno_IN2.bin b/mtkclient/Loader/Preloader/preloader_techno_IN2.bin deleted file mode 100644 index afccb8b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_techno_IN2.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_tk6757_66_n1_oukWP5.bin b/mtkclient/Loader/Preloader/preloader_tk6757_66_n1_oukWP5.bin deleted file mode 100644 index 3750e5a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_tk6757_66_n1_oukWP5.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_top6737m_35_a_n_P1.bin b/mtkclient/Loader/Preloader/preloader_top6737m_35_a_n_P1.bin deleted file mode 100644 index 76f941b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_top6737m_35_a_n_P1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_top6737m_35_a_n_comC1.bin b/mtkclient/Loader/Preloader/preloader_top6737m_35_a_n_comC1.bin deleted file mode 100644 index d88b546..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_top6737m_35_a_n_comC1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_top6737m_35_a_n_comC2.bin b/mtkclient/Loader/Preloader/preloader_top6737m_35_a_n_comC2.bin deleted file mode 100644 index 957d206..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_top6737m_35_a_n_comC2.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_top6737m_35_a_n_comC2L.bin b/mtkclient/Loader/Preloader/preloader_top6737m_35_a_n_comC2L.bin deleted file mode 100644 index 2c40273..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_top6737m_35_a_n_comC2L.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_tp717b.bin b/mtkclient/Loader/Preloader/preloader_tp717b.bin deleted file mode 100644 index 294aa6f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_tp717b.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_tp9131a.bin b/mtkclient/Loader/Preloader/preloader_tp9131a.bin deleted file mode 100644 index 822ec0e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_tp9131a.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_tx6737m_65_hl_n.bin b/mtkclient/Loader/Preloader/preloader_tx6737m_65_hl_n.bin deleted file mode 100644 index 4a13fa3..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_tx6737m_65_hl_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_u300.bin b/mtkclient/Loader/Preloader/preloader_u300.bin deleted file mode 100644 index 8c00bda..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_u300.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_u3a_plus_4g.bin b/mtkclient/Loader/Preloader/preloader_u3a_plus_4g.bin deleted file mode 100644 index 311cee7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_u3a_plus_4g.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_um63_a5_pro_bsp.bin b/mtkclient/Loader/Preloader/preloader_um63_a5_pro_bsp.bin deleted file mode 100644 index fb7ecb2..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_um63_a5_pro_bsp.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_v10.bin b/mtkclient/Loader/Preloader/preloader_v10.bin deleted file mode 100644 index 81b5306..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_v10.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_v20.bin b/mtkclient/Loader/Preloader/preloader_v20.bin deleted file mode 100644 index 1c6b37f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_v20.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_v2500.bin b/mtkclient/Loader/Preloader/preloader_v2500.bin deleted file mode 100644 index 0bc7446..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_v2500.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_v2500cl.bin b/mtkclient/Loader/Preloader/preloader_v2500cl.bin deleted file mode 100644 index 3d0a19d..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_v2500cl.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_v2600.bin b/mtkclient/Loader/Preloader/preloader_v2600.bin deleted file mode 100644 index ec7b4b4..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_v2600.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_v26000.bin b/mtkclient/Loader/Preloader/preloader_v26000.bin deleted file mode 100644 index 122ff03..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_v26000.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_v2600cn.bin b/mtkclient/Loader/Preloader/preloader_v2600cn.bin deleted file mode 100644 index 4872910..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_v2600cn.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_v2610.bin b/mtkclient/Loader/Preloader/preloader_v2610.bin deleted file mode 100644 index 0261964..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_v2610.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_v2800.bin b/mtkclient/Loader/Preloader/preloader_v2800.bin deleted file mode 100644 index 80fde07..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_v2800.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_v3610.bin b/mtkclient/Loader/Preloader/preloader_v3610.bin deleted file mode 100644 index 8ba967b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_v3610.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_v3702.bin b/mtkclient/Loader/Preloader/preloader_v3702.bin deleted file mode 100644 index 6d35bbd..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_v3702.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_v3710.bin b/mtkclient/Loader/Preloader/preloader_v3710.bin deleted file mode 100644 index 7d75503..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_v3710.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_v3720_v2600.bin b/mtkclient/Loader/Preloader/preloader_v3720_v2600.bin deleted file mode 100644 index 594e8c0..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_v3720_v2600.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_v3730.bin b/mtkclient/Loader/Preloader/preloader_v3730.bin deleted file mode 100644 index 719c81c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_v3730.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_v3740.bin b/mtkclient/Loader/Preloader/preloader_v3740.bin deleted file mode 100644 index 5e3e81e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_v3740.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_v3750.bin b/mtkclient/Loader/Preloader/preloader_v3750.bin deleted file mode 100644 index 46d0f46..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_v3750.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_v3800.bin b/mtkclient/Loader/Preloader/preloader_v3800.bin deleted file mode 100644 index f9112c4..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_v3800.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_v3913.bin b/mtkclient/Loader/Preloader/preloader_v3913.bin deleted file mode 100644 index 555ae32..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_v3913.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_v3953.bin b/mtkclient/Loader/Preloader/preloader_v3953.bin deleted file mode 100644 index 7eb87b1..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_v3953.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_v3961.bin b/mtkclient/Loader/Preloader/preloader_v3961.bin deleted file mode 100644 index 0fbaecb..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_v3961.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_v3963.bin b/mtkclient/Loader/Preloader/preloader_v3963.bin deleted file mode 100644 index b5a6525..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_v3963.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_v3971.bin b/mtkclient/Loader/Preloader/preloader_v3971.bin deleted file mode 100644 index 241084e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_v3971.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_v600.bin b/mtkclient/Loader/Preloader/preloader_v600.bin deleted file mode 100644 index 6ad948a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_v600.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_vanzo72_cwet_kk.bin b/mtkclient/Loader/Preloader/preloader_vanzo72_cwet_kk.bin deleted file mode 100644 index 3c53acc..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_vanzo72_cwet_kk.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_vanzo82_cwet_kk.bin b/mtkclient/Loader/Preloader/preloader_vanzo82_cwet_kk.bin deleted file mode 100644 index 0af2d4d..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_vanzo82_cwet_kk.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_vs6737m_35_n_InLio3.bin b/mtkclient/Loader/Preloader/preloader_vs6737m_35_n_InLio3.bin deleted file mode 100644 index 2b73d98..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_vs6737m_35_n_InLio3.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_w-v600.bin b/mtkclient/Loader/Preloader/preloader_w-v600.bin deleted file mode 100644 index 0220272..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_w-v600.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_w370_doogx5m.bin b/mtkclient/Loader/Preloader/preloader_w370_doogx5m.bin deleted file mode 100644 index 7954082..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_w370_doogx5m.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_w700.bin b/mtkclient/Loader/Preloader/preloader_w700.bin deleted file mode 100644 index a573924..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_w700.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_w825_648_aw_loq_oukitel.bin b/mtkclient/Loader/Preloader/preloader_w825_648_aw_loq_oukitel.bin deleted file mode 100644 index 737b506..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_w825_648_aw_loq_oukitel.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_wasp.bin b/mtkclient/Loader/Preloader/preloader_wasp.bin deleted file mode 100644 index 3d210f2..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_wasp.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_wc27bf.bin b/mtkclient/Loader/Preloader/preloader_wc27bf.bin deleted file mode 100644 index 09d6d91..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_wc27bf.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_wd395v_chR6.bin b/mtkclient/Loader/Preloader/preloader_wd395v_chR6.bin deleted file mode 100644 index d8bf163..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_wd395v_chR6.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_we568b.bin b/mtkclient/Loader/Preloader/preloader_we568b.bin deleted file mode 100644 index 1873f72..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_we568b.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_we568b_cfs7p.bin b/mtkclient/Loader/Preloader/preloader_we568b_cfs7p.bin deleted file mode 100644 index 1873f72..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_we568b_cfs7p.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_woods.bin b/mtkclient/Loader/Preloader/preloader_woods.bin deleted file mode 100644 index 60192f3..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_woods.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_wt6755_66_n5_m.bin b/mtkclient/Loader/Preloader/preloader_wt6755_66_n5_m.bin deleted file mode 100644 index c475202..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_wt6755_66_n5_m.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_wt93007_6583.bin b/mtkclient/Loader/Preloader/preloader_wt93007_6583.bin deleted file mode 100644 index 3e7d604..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_wt93007_6583.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_wt96582_s96582aa2.bin b/mtkclient/Loader/Preloader/preloader_wt96582_s96582aa2.bin deleted file mode 100644 index 968318d..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_wt96582_s96582aa2.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_wt96582_s96582aa51.bin b/mtkclient/Loader/Preloader/preloader_wt96582_s96582aa51.bin deleted file mode 100644 index 637b5db..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_wt96582_s96582aa51.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_wt98511.bin b/mtkclient/Loader/Preloader/preloader_wt98511.bin deleted file mode 100644 index 8d04fdd..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_wt98511.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_wt98736b32_aa1.bin b/mtkclient/Loader/Preloader/preloader_wt98736b32_aa1.bin deleted file mode 100644 index fd91b41..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_wt98736b32_aa1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_wt98736b32_ca1.bin b/mtkclient/Loader/Preloader/preloader_wt98736b32_ca1.bin deleted file mode 100644 index 072853e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_wt98736b32_ca1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_wt98737.bin b/mtkclient/Loader/Preloader/preloader_wt98737.bin deleted file mode 100644 index bf76120..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_wt98737.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_wt98997_lterow.bin b/mtkclient/Loader/Preloader/preloader_wt98997_lterow.bin deleted file mode 100644 index 770af6b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_wt98997_lterow.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_wt98997_wifirow.bin b/mtkclient/Loader/Preloader/preloader_wt98997_wifirow.bin deleted file mode 100644 index c9d7c50..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_wt98997_wifirow.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_wt98998_lterow.bin b/mtkclient/Loader/Preloader/preloader_wt98998_lterow.bin deleted file mode 100644 index 3c40401..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_wt98998_lterow.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_wt98999_lterow.bin b/mtkclient/Loader/Preloader/preloader_wt98999_lterow.bin deleted file mode 100644 index fbfb731..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_wt98999_lterow.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_wt98999_wifirow.bin b/mtkclient/Loader/Preloader/preloader_wt98999_wifirow.bin deleted file mode 100644 index 9e6476a..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_wt98999_wifirow.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_wt99605.bin b/mtkclient/Loader/Preloader/preloader_wt99605.bin deleted file mode 100644 index dc2e1d1..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_wt99605.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_x009_k71v1_64_bsp.bin b/mtkclient/Loader/Preloader/preloader_x009_k71v1_64_bsp.bin deleted file mode 100644 index 9ba72da..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_x009_k71v1_64_bsp.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_x5514d_h395.bin b/mtkclient/Loader/Preloader/preloader_x5514d_h395.bin deleted file mode 100644 index e3341f8..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_x5514d_h395.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_x5515_h398.bin b/mtkclient/Loader/Preloader/preloader_x5515_h398.bin deleted file mode 100644 index 8b77348..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_x5515_h398.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_x5516_go.bin b/mtkclient/Loader/Preloader/preloader_x5516_go.bin deleted file mode 100644 index 1eaef06..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_x5516_go.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_x610_h651.bin b/mtkclient/Loader/Preloader/preloader_x610_h651.bin deleted file mode 100644 index 757be58..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_x610_h651.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_x624_h8025.bin b/mtkclient/Loader/Preloader/preloader_x624_h8025.bin deleted file mode 100644 index b37e422..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_x624_h8025.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_x625c_h576.bin b/mtkclient/Loader/Preloader/preloader_x625c_h576.bin deleted file mode 100644 index 5a5f6fb..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_x625c_h576.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_x625d_h623.bin b/mtkclient/Loader/Preloader/preloader_x625d_h623.bin deleted file mode 100644 index fcc259c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_x625d_h623.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_x626_h623.bin b/mtkclient/Loader/Preloader/preloader_x626_h623.bin deleted file mode 100644 index 30ff7e5..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_x626_h623.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_x627_h624.bin b/mtkclient/Loader/Preloader/preloader_x627_h624.bin deleted file mode 100644 index 9c6e4cd..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_x627_h624.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_x652c_h627.bin b/mtkclient/Loader/Preloader/preloader_x652c_h627.bin deleted file mode 100644 index 1a5cdfb..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_x652c_h627.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_x680b_h6215.bin b/mtkclient/Loader/Preloader/preloader_x680b_h6215.bin deleted file mode 100644 index e080bf6..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_x680b_h6215.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_x680f_h6116.bin b/mtkclient/Loader/Preloader/preloader_x680f_h6116.bin deleted file mode 100644 index 126fd79..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_x680f_h6116.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_x683_h694.bin b/mtkclient/Loader/Preloader/preloader_x683_h694.bin deleted file mode 100644 index 832dcf0..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_x683_h694.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_x687b_h851.bin b/mtkclient/Loader/Preloader/preloader_x687b_h851.bin deleted file mode 100644 index bdf05cb..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_x687b_h851.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_x690b_h691.bin b/mtkclient/Loader/Preloader/preloader_x690b_h691.bin deleted file mode 100644 index ef9e4ea..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_x690b_h691.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_x692_h694.bin b/mtkclient/Loader/Preloader/preloader_x692_h694.bin deleted file mode 100644 index 2e99afb..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_x692_h694.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_x7_letv.bin b/mtkclient/Loader/Preloader/preloader_x7_letv.bin deleted file mode 100644 index d0ad060..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_x7_letv.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_y37m_yh1.bin b/mtkclient/Loader/Preloader/preloader_y37m_yh1.bin deleted file mode 100644 index 0084596..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_y37m_yh1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_y37t_yu1.bin b/mtkclient/Loader/Preloader/preloader_y37t_yu1.bin deleted file mode 100644 index 21ba766..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_y37t_yu1.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_y41m_y2.bin b/mtkclient/Loader/Preloader/preloader_y41m_y2.bin deleted file mode 100644 index be83f7d..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_y41m_y2.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_y41m_y2p.bin b/mtkclient/Loader/Preloader/preloader_y41m_y2p.bin deleted file mode 100644 index 9e23ee7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_y41m_y2p.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_yk736_lwg_36_f17att.bin b/mtkclient/Loader/Preloader/preloader_yk736_lwg_36_f17att.bin deleted file mode 100644 index 504ddce..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_yk736_lwg_36_f17att.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_yk736_lwg_bsp_hisF27.bin b/mtkclient/Loader/Preloader/preloader_yk736_lwg_bsp_hisF27.bin deleted file mode 100644 index bef1c0e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_yk736_lwg_bsp_hisF27.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_yk737_go_wcdma_sm02-24.bin b/mtkclient/Loader/Preloader/preloader_yk737_go_wcdma_sm02-24.bin deleted file mode 100644 index 52f28a5..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_yk737_go_wcdma_sm02-24.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_yk737_go_wcdma_sm02-30.bin b/mtkclient/Loader/Preloader/preloader_yk737_go_wcdma_sm02-30.bin deleted file mode 100644 index 22f5b8f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_yk737_go_wcdma_sm02-30.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_yk737_lwg_bsp1g_hisF15.bin b/mtkclient/Loader/Preloader/preloader_yk737_lwg_bsp1g_hisF15.bin deleted file mode 100644 index 2be3e87..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_yk737_lwg_bsp1g_hisF15.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_yuanda6580_weg_l.bin b/mtkclient/Loader/Preloader/preloader_yuanda6580_weg_l.bin deleted file mode 100644 index eb2cd3c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_yuanda6580_weg_l.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_yuanda6580_weg_l.bin.AF162DA769 b/mtkclient/Loader/Preloader/preloader_yuanda6580_weg_l.bin.AF162DA769 deleted file mode 100644 index e78e919..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_yuanda6580_weg_l.bin.AF162DA769 and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_yuanda6580_weg_l_.bin b/mtkclient/Loader/Preloader/preloader_yuanda6580_weg_l_.bin deleted file mode 100644 index 49f5174..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_yuanda6580_weg_l_.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_yuanda72_cwet_kk.bin b/mtkclient/Loader/Preloader/preloader_yuanda72_cwet_kk.bin deleted file mode 100644 index 7de5225..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_yuanda72_cwet_kk.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_z8051.bin b/mtkclient/Loader/Preloader/preloader_z8051.bin deleted file mode 100644 index 222e366..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_z8051.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_z8052.bin b/mtkclient/Loader/Preloader/preloader_z8052.bin deleted file mode 100644 index 815bb0c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_z8052.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_zal1066_platform.bin b/mtkclient/Loader/Preloader/preloader_zal1066_platform.bin deleted file mode 100644 index 813395f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_zal1066_platform.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_zaw878_infinix_X5010.bin b/mtkclient/Loader/Preloader/preloader_zaw878_infinix_X5010.bin deleted file mode 100644 index 5d02f09..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_zaw878_infinix_X5010.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_zechin6580_we_n.bin b/mtkclient/Loader/Preloader/preloader_zechin6580_we_n.bin deleted file mode 100644 index 4f30f0b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_zechin6580_we_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_zechin6580_we_n_bluG150.bin b/mtkclient/Loader/Preloader/preloader_zechin6580_we_n_bluG150.bin deleted file mode 100644 index 7fc9feb..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_zechin6580_we_n_bluG150.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_zechin6580_we_n_bluG190.bin b/mtkclient/Loader/Preloader/preloader_zechin6580_we_n_bluG190.bin deleted file mode 100644 index 17b0e46..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_zechin6580_we_n_bluG190.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_zechin6580_we_n_doogX53.bin b/mtkclient/Loader/Preloader/preloader_zechin6580_we_n_doogX53.bin deleted file mode 100644 index 4f30f0b..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_zechin6580_we_n_doogX53.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_zechin6580_weg_m.bin b/mtkclient/Loader/Preloader/preloader_zechin6580_weg_m.bin deleted file mode 100644 index db0799e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_zechin6580_weg_m.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_zechin6580_weg_m_bluG070.bin b/mtkclient/Loader/Preloader/preloader_zechin6580_weg_m_bluG070.bin deleted file mode 100644 index ecc299e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_zechin6580_weg_m_bluG070.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_zechin6737m_35_n.bin b/mtkclient/Loader/Preloader/preloader_zechin6737m_35_n.bin deleted file mode 100644 index 60aeb22..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_zechin6737m_35_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_zechin6737m_35_n_bluG0010.bin b/mtkclient/Loader/Preloader/preloader_zechin6737m_35_n_bluG0010.bin deleted file mode 100644 index d38b6f1..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_zechin6737m_35_n_bluG0010.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_zechin6737m_35_n_bluG0030.bin b/mtkclient/Loader/Preloader/preloader_zechin6737m_35_n_bluG0030.bin deleted file mode 100644 index 36430f7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_zechin6737m_35_n_bluG0030.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_zechin6737m_35_n_bq5209.bin b/mtkclient/Loader/Preloader/preloader_zechin6737m_35_n_bq5209.bin deleted file mode 100644 index aab161e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_zechin6737m_35_n_bq5209.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_zechin6737m_65_n.bin b/mtkclient/Loader/Preloader/preloader_zechin6737m_65_n.bin deleted file mode 100644 index ee47c1c..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_zechin6737m_65_n.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_znj6750_c66c_m_bv0730.bin b/mtkclient/Loader/Preloader/preloader_znj6750_c66c_m_bv0730.bin deleted file mode 100644 index 06443f7..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_znj6750_c66c_m_bv0730.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_znj6755_66c_m_zbv0710.bin b/mtkclient/Loader/Preloader/preloader_znj6755_66c_m_zbv0710.bin deleted file mode 100644 index ec19e7f..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_znj6755_66c_m_zbv0710.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_zte6737m_35g_n_a520.bin b/mtkclient/Loader/Preloader/preloader_zte6737m_35g_n_a520.bin deleted file mode 100644 index 763e362..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_zte6737m_35g_n_a520.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_zte6737t_66_n_a0616.bin b/mtkclient/Loader/Preloader/preloader_zte6737t_66_n_a0616.bin deleted file mode 100644 index 8541f4e..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_zte6737t_66_n_a0616.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_zte6750_35g_n_v8lite.bin b/mtkclient/Loader/Preloader/preloader_zte6750_35g_n_v8lite.bin deleted file mode 100644 index 25771d3..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_zte6750_35g_n_v8lite.bin and /dev/null differ diff --git a/mtkclient/Loader/Preloader/preloader_ztehz6735m_65u_l.bin b/mtkclient/Loader/Preloader/preloader_ztehz6735m_65u_l.bin deleted file mode 100644 index 49a60f3..0000000 Binary files a/mtkclient/Loader/Preloader/preloader_ztehz6735m_65u_l.bin and /dev/null differ diff --git a/mtkclient/Tools/__init__.py b/mtkclient/Tools/__init__.py old mode 100644 new mode 100755 diff --git a/mtkclient/Tools/da_info.txt b/mtkclient/Tools/da_info.txt new file mode 100755 index 0000000..75b8e1b --- /dev/null +++ b/mtkclient/Tools/da_info.txt @@ -0,0 +1,820 @@ +hwcode: 0x6573 +hw_sub_code: 0x0000 +hw_version: 0xCA10 +sw_version: 0xCA01 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x90006000 + 1: 0x90005000 + 2: 0xf1000000 + +hwcode: 0x6575 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0xE100 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0xc2010000 + 1: 0xc2000000 + 2: 0xc2038000 + +hwcode: 0x6575 +hw_sub_code: 0x0000 +hw_version: 0xCB00 +sw_version: 0xE201 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0xc2010000 + 1: 0xc2000000 + 2: 0xc2038000 + +hwcode: 0x6577 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0xE100 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0xc2010000 + 1: 0xc2000000 + 2: 0xc2038000 + +hwcode: 0x6572 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x80010000 + 1: 0x2007000 + 2: 0x80000000 + +hwcode: 0x6583 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x12020000 + 1: 0x12000000 + 2: 0x82038000 + +hwcode: 0x6582 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x80010000 + 1: 0x200000 + 2: 0x80000000 + +hwcode: 0x8135 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x12020000 + 1: 0x12000000 + 2: 0x82038000 + +hwcode: 0x6592 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x80010000 + 1: 0x110000 + 2: 0x80000000 + +hwcode: 0x6571 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x80010000 + 1: 0x2008000 + 2: 0x80000000 + +hwcode: 0x6595 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x210000 + 1: 0x110000 + 2: 0x40000000 + +hwcode: 0x8127 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x80010000 + 1: 0x200000 + 2: 0x80000000 + +hwcode: 0x6739 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6595 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x210000 + 1: 0x110000 + 2: 0x40000000 + +hwcode: 0x8127 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x80010000 + 1: 0x200000 + 2: 0x80000000 + +hwcode: 0x8173 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x210000 + 1: 0xc0000 + 2: 0x40000000 + +hwcode: 0x6735 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6580 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x80000000 + +hwcode: 0x8590 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x80010000 + 1: 0x200000 + 2: 0x80000000 + +hwcode: 0x8163 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x8518 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x8512 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x110000 + 2: 0x40000000 + +hwcode: 0x8168 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6755 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6797 +hw_sub_code: 0x0000 +hw_version: 0x8A00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6570 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x80000000 + +hwcode: 0x6757 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x8167 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6763 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6758 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6771 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x8695 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6765 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6761 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6768 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6779 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6885 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6873 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6785 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6853 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6893 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6833 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x8696 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x8195 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6877 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6725 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6781 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6572 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x80010000 + 1: 0x2007000 + 2: 0x80000000 + +hwcode: 0x6582 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x80010000 + 1: 0x200000 + 2: 0x80000000 + +hwcode: 0x6592 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x80010000 + 1: 0x110000 + 2: 0x80000000 + +hwcode: 0x6571 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x80010000 + 1: 0x2008000 + 2: 0x80000000 + +hwcode: 0x6595 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x210000 + 1: 0x110000 + 2: 0x40000000 + +hwcode: 0x8127 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x80010000 + 1: 0x200000 + 2: 0x80000000 + +hwcode: 0x6752 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x110000 + 2: 0x40000000 + +hwcode: 0x2601 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x80010000 + 1: 0x2007000 + 2: 0x80000000 + +hwcode: 0x8173 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x210000 + 1: 0xc0000 + 2: 0x40000000 + +hwcode: 0x6795 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x210000 + 1: 0x110000 + 2: 0x40000000 + +hwcode: 0x6735 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6580 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x80000000 + +hwcode: 0x8590 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x80010000 + 1: 0x200000 + 2: 0x80000000 + +hwcode: 0x8163 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6755 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6797 +hw_sub_code: 0x0000 +hw_version: 0x8A00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6570 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x80000000 + +hwcode: 0x6757 +hw_sub_code: 0x0000 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x8167 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6763 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6758 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6739 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6771 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6775 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x8695 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6799 +hw_sub_code: 0x8A00 +hw_version: 0xCB00 +sw_version: 0x0001 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6799 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6765 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x3967 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +hwcode: 0x6761 +hw_sub_code: 0x8A00 +hw_version: 0xCA00 +sw_version: 0x0000 +Reserved1: 0x0000 +Reserved3: 0x0000 + 0: 0x50000000 + 1: 0x200000 + 2: 0x40000000 + +0x6573:0x90005000 +0x6575:0xc2000000 +0x6577:0xc2000000 +0x6572:0x2007000 +0x6583:0x12000000 +0x6582:0x200000 +0x8135:0x12000000 +0x6592:0x110000 +0x6571:0x2008000 +0x6595:0x110000 +0x8127:0x200000 +0x6739:0x200000 +0x8173:0xc0000 +0x6735:0x200000 +0x6580:0x200000 +0x8590:0x200000 +0x8163:0x200000 +0x8518:0x200000 +0x8512:0x110000 +0x8168:0x200000 +0x6755:0x200000 +0x6797:0x200000 +0x6570:0x200000 +0x6757:0x200000 +0x8167:0x200000 +0x6763:0x200000 +0x6758:0x200000 +0x6771:0x200000 +0x8695:0x200000 +0x6765:0x200000 +0x6761:0x200000 +0x6768:0x200000 +0x6779:0x200000 +0x6885:0x200000 +0x6873:0x200000 +0x6785:0x200000 +0x6853:0x200000 +0x6893:0x200000 +0x6833:0x200000 +0x8696:0x200000 +0x8195:0x200000 +0x6877:0x200000 +0x6725:0x200000 +0x6781:0x200000 +0x6752:0x110000 +0x2601:0x2007000 +0x6795:0x110000 +0x6775:0x200000 +0x6799:0x200000 +0x3967:0x200000 diff --git a/mtkclient/Tools/da_parser b/mtkclient/Tools/da_parser index be2335d..a364eab 100755 --- a/mtkclient/Tools/da_parser +++ b/mtkclient/Tools/da_parser @@ -1,10 +1,11 @@ #!/usr/bin/env python3 #(c) B.Kerler 2021 MIT License import os +import sys from struct import unpack from mtkclient.config.payloads import pathconfig from mtkclient.Library.utils import read_object - +from mtkclient.Library.utils import find_binary entry_region = [ ('m_buf', 'I'), ('m_len', 'I'), @@ -68,15 +69,30 @@ def main(): startaddr=da[3]["m_start_addr"] with open(loader,"rb") as rf: rf.seek(mbuf) - data=rf.read(m_len) + da2data=rf.read(m_len) fname=os.path.join("loaders",hex(da[0]["hw_code"])[2:]+"_"+hex(startaddr)[2:]+os.path.basename(loader)) - open(fname,"wb").write(data) + open(fname,"wb").write(da2data) mbuf=da[2]["m_buf"] m_len=da[2]["m_len"] startaddr=da[2]["m_start_addr"] + sys.stdout.flush() with open(loader,"rb") as rf: rf.seek(mbuf) data=rf.read(m_len) + hashidx=data.find(int.to_bytes(0xC0070004,4,'little')) + if hashidx!=-1: + print("Hash check found.") + else: + hashidx = data.find(b"\xCC\xF2\x07\x09") # => b"\x4F\xF0\x00\x09"" + if hashidx != -1: + print("Hash check 2 found.") + else: + hashidx = find_binary(data,b"\x14\x2C\xF6.\xFE\xE7") # => b"\x14\x2C\xF6\xD1\x00\x00" + if hashidx is not None: + print("Hash check 3 found.") + else: + print("HASH ERROR !!!!") + fname=os.path.join("loaders",hex(da[0]["hw_code"])[2:]+"_"+hex(startaddr)[2:]+os.path.basename(loader)) open(fname,"wb").write(data) print(f"Offset: {hex(mbuf)}") diff --git a/mtkclient/Tools/decode.py b/mtkclient/Tools/decode.py new file mode 100755 index 0000000..0401fc7 --- /dev/null +++ b/mtkclient/Tools/decode.py @@ -0,0 +1,466 @@ +#!/usr/bin/env python3 + +from struct import pack +from binascii import hexlify + +dat=[ +0x200640, +0x100, +0x2009BC, +0x20060C, +0x1, +0x956FC3F1, +0xFC44ED52, +0x110, +0x30, +0xB88D2DE6, +0x420AFD30, +0x981673DC, +0xCEF139F6, +0x7D7EBEBF, +0x453663E9, +0x80C24808, +0x31D907A3, +0x1A00116C, +0xDA35675B, +0xA5A7407A, +0x93AB1070, +0xA6C10A71, +0xF7DCA502, +0x507F584D, +0xAF6FF845, +0xA987DDCC, +0x59A4A85B, +0xBF79EDB5, +0xAFEE683A, +0x7FB92904, +0xC8AECBF5, +0x417111DF, +0xC9674933, +0xB5584779, +0xCE870108, +0x1EB5ED61, +0x680DA351, +0x11F4C09F, +0x9E657A29, +0x9EC0896, +0xBA8AA025, +0x5DB75909, +0xC9C04648, +0x7CFBF2DE, +0x97401150, +0x9B607559, +0xCDDBB1B4, +0x79F3ABE2, +0x589E0744, +0x783473D3, +0x9E944CF2, +0x105C1944, +0xE2E94E57, +0x2752C848, +0x9F46B50, +0xF9FC82B5, +0x4F27A5C, +0xEE2D404, +0xE4227778, +0xB469652D, +0xB97E773E, +0x5AF74F66, +0x2774802F, +0xD8D46FD, +0x53D02BE9, +0xC981FADC, +0x97448D08, +0x1DE7B5A3, +0x61116241, +0xC2CA39C4, +0x305022B9, +0xB6B88748, +0x2EE14D00, +0xE62F5BB0, +0xA552FFD7, +0x321F0BBE, +0xA637A977, +0x8A7E95D0, +0x93C0EC5F, +0x5E42AA13, +0x10FAB161, +0x4E20BFE3, +0x1208EAAC, +0xDCBC80E8, +0xC6CC5571, +0x4C0C7A75, +0xA5B5AE44, +0x2E9285DE, +0xC9585FC2, +0x8DE3F166, +0xEAD706BC, +0x8362E701, +0x4B3CA8C9, +0xDE2DE227, +0x50D72910, +0x47DDAE24, +0x251A1AE8, +0x6EEA11F3, +0x77213D30, +0xEBF0C572, +0xCB8674AE, +0x1B0C0665, +0xDAC240F6, +0xE13686F6, +0xE1A57AA9, +0x4C95FD31, +0xB4DFE80B, +0x822A2B20, +0x65B82AA1, +0x55933F7B, +0xE9859433, +0x822B1C12, +0xCC62A517, +0x8024C43F, +0xBBBB8397, +0x14E1AA71, +0x5E4B2739, +0x290643A3, +0x5B319383, +0xAFF63229, +0xD533632E, +0x2574FB7D, +0x36584B13, +0x7E3A89A0, +0xA3055297, +0xE1FDC3BB, +0xAC2BCF8B, +0xE2B3D63, +0xB8621010, +0x226C7FC3, +0x16B7325D, +0x1E8D7217, +0x6429282D, +0x857A06BE, +0x93DC2A42, +0xFFEE5953, +0x97E14DC, +0x970A0109, +0xF8569B9E, +0x42D481C4, +0x48463BA2, +0x80439D11, +0x46A26CC8, +0xF9286FFF, +0xAC75485, +0xF041347A, +0xAAF4877A, +0xA62E4D5A, +0x93BD8D8E, +0x10101010, +0x10101010, +0x10101010, +0x10101010, +0x0, +0x0, +0x0, +0x0, +0xF82D9879, +0xDA1900FB, +0x58EBFFF2, +0x4EB2DFB4, +0x1C33F5A4, +0x370C5164, +0x9221FC94, +0x5004E2C3, +0x7FD052F6, +0x7595B765, +0x18DF431D, +0xE9923FD0, +0xA092A13, +0x5FD2884C, +0xC7E313BA, +0xE61A166, +0xC2B78486, +0x7E514A14, +0x19E03A5C, +0xD34147FA, +0xD458DDEC, +0xC944D376, +0x7BBDBA4, +0x13C87753, +0x55524FFD, +0xCCAC8772, +0x542AD157, +0xA0CB045A, +0xB950F97A, +0x2245DF6B, +0x418D3050, +0x26DF2DF2, +0x8A5BC3CE, +0xE142848, +0xE3D8C454, +0xC1DA9D2D, +0x3511D990, +0xD42A0CD0, +0x9132E073, +0x33A1702, +0xEAB064F2, +0x6CF228D0, +0x840D744D, +0xC87F2596, +0xB5166023, +0xCA00D29C, +0x6A5B6AA2, +0x68E72E20, +0x226F2776, +0x8395A840, +0xF7553CAB, +0x21FE7AA6, +0x6CADDABD, +0xDBCA4AD9, +0x43142719, +0x3F8F15DE, +0x22AE6502, +0xFAE8C0C9, +0xD32715EF, +0x53544A23, +0x603C72C2, +0xD0B37957, +0x14D0BCB0, +0x8AF20686, +0x246300, +0x70000000, +0x70000000 +] + +strm="" +for val in dat: + strm+=hexlify(pack("address>=0x10210000: + print("CBR %08X:%08X" % (address,value)) + return True + + +def hook_mem_write(uc,access,address,size,value,user_data): + global buffer + global data + pc = uc.reg_read(UC_ARM_REG_PC) + if address == 0x10007000: + data+="WD: 0x10007000" + print("WD: 0x10007000") + return True + elif address == 0x1000108C: + print("TZCC_CLK 0x1000108C %x" % value) + return True + elif address == 0x10001088: + print("TZCC_CLK 0x10001088 %x" % value) + return True + elif 0x10220000>address>=0x10210000: + print("CBW %08X,%08X" % (address,value)) + return True + #else: + # data=hex(value) + # print("MW %08X:%d:%s" %(address,size,data)) + +def hook_code(uc,access,address,size): + pc = uc.reg_read(UC_ARM_REG_PC) + lr = uc.reg_read(UC_ARM_REG_LR) + if pc==0x23158C: + r0 = uc.reg_read(UC_ARM_REG_R0) + r1 = uc.reg_read(UC_ARM_REG_R1) + r2 = uc.reg_read(UC_ARM_REG_R2) + print("sasi_paldmamap PC(%08X) R0:%08X,R1:%08X,R2:%08X" % (lr,r0,r1,r2)) + print("SRC:"+hexlify(uc.mem_read(r0,16)).decode('utf-8')) + print("DST:"+hex(r2)) + elif pc==0x230DF8: + r0 = uc.reg_read(UC_ARM_REG_R0) + r1 = uc.reg_read(UC_ARM_REG_R1) + r2 = uc.reg_read(UC_ARM_REG_R2) + r3 = uc.reg_read(UC_ARM_REG_R3) + r4 = uc.reg_read(UC_ARM_REG_R4) + r7 = uc.reg_read(UC_ARM_REG_R7) + r9 = uc.reg_read(UC_ARM_REG_R9) + r11 = uc.reg_read(UC_ARM_REG_R11) + print("SBROM_AesCmac PC(%08X) R0:%08X,R1:%08X,R2:%08X,R3:%08X,R4:%08X,R7:%08X,R9:%08X,R11:%08X" % (lr, r0, r1, r2, r3, r4,r7,r9,r11)) + print("Buffer:" + hexlify(uc.mem_read(r9, r7)).decode('utf-8')) + elif pc==0x230CB6: + r0 = uc.reg_read(UC_ARM_REG_R0) + r1 = uc.reg_read(UC_ARM_REG_R1) + r2 = uc.reg_read(UC_ARM_REG_R2) + r3 = uc.reg_read(UC_ARM_REG_R3) + r4 = uc.reg_read(UC_ARM_REG_R4) + r5 = uc.reg_read(UC_ARM_REG_R5) + r6 = uc.reg_read(UC_ARM_REG_R6) + print("SBROM_AesCmacDriver PC(%08X) R0:%08X,R1:%08X,R2:%08X,R3:%08X,R4:%08X,R5:%08X,R6:%08X" % (lr, r0, r1, r2, r3, r4, r5, r6)) + elif pc==0x22750C: + r0 = uc.reg_read(UC_ARM_REG_R0) + r1 = uc.reg_read(UC_ARM_REG_R1) + r2 = uc.reg_read(UC_ARM_REG_R2) + print("memcpy PC(%08X) R0:%08X,R1:%08X,R2:%08X" % (lr, r0, r1, r2)) + print("SRC:" + hexlify(uc.mem_read(r1, r2)).decode('utf-8')) + print("DST:" + hex(r0)) + elif pc==0x2316F8: + r0 = uc.reg_read(UC_ARM_REG_R0) + r1 = uc.reg_read(UC_ARM_REG_R1) + r2 = uc.reg_read(UC_ARM_REG_R2) + print("UTIL_memcpy PC(%08X) R0:%08X,R1:%08X,R2:%08X" % (lr, r0, r1, r2)) + print("SRC:" + hexlify(uc.mem_read(r1, r2)).decode('utf-8')) + print("DST:" + hex(r0)) + elif pc==0x230BB8: + r0 = uc.reg_read(UC_ARM_REG_R0) + r1 = uc.reg_read(UC_ARM_REG_R1) + r2 = uc.reg_read(UC_ARM_REG_R2) + r3 = uc.reg_read(UC_ARM_REG_R3) + r4 = uc.reg_read(UC_ARM_REG_R4) + r5 = uc.reg_read(UC_ARM_REG_R5) + r6 = uc.reg_read(UC_ARM_REG_R6) + r7 = uc.reg_read(UC_ARM_REG_R7) + r12 = uc.reg_read(UC_ARM_REG_R12) + print("SBROM_KeyDerivation PC(%08X)" %lr) + print("R0:%08X,R1:%08X,R2:%08X,R3:%08X,R4:%08X,R5:%08X,R6:%08X,R7:%08X,R12:%08X" % ( + r0, r1, r2, r3, r4, r5, r6, r7, r12)) + print("R2:" + hexlify(uc.mem_read(r2, r3)).decode('utf-8')) + print("R5:" + hexlify(uc.mem_read(r5, r6)).decode('utf-8')) + #print("PC %08X" % pc) + return True + +def hook_mem_invalid(uc, access, address, size, value, user_data): + pc = uc.reg_read(UC_ARM_REG_PC) + if access == UC_MEM_WRITE: + info=("invalid WRITE of 0x%x at 0x%X, data size = %u, data value = 0x%x" % (address, pc, size, value)) + if access == UC_MEM_READ: + info=("invalid READ of 0x%x at 0x%X, data size = %u" % (address, pc, size)) + if access == UC_MEM_FETCH: + info=("UC_MEM_FETCH of 0x%x at 0x%X, data size = %u" % (address, pc, size)) + if access == UC_MEM_READ_UNMAPPED: + info=("UC_MEM_READ_UNMAPPED of 0x%x at 0x%X, data size = %u" % (address, pc, size)) + if access == UC_MEM_WRITE_UNMAPPED: + info=("UC_MEM_WRITE_UNMAPPED of 0x%x at 0x%X, data size = %u" % (address, pc, size)) + if access == UC_MEM_FETCH_UNMAPPED: + info=("UC_MEM_FETCH_UNMAPPED of 0x%x at 0x%X, data size = %u" % (address, pc, size)) + if access == UC_MEM_WRITE_PROT: + info=("UC_MEM_WRITE_PROT of 0x%x at 0x%X, data size = %u" % (address, pc, size)) + if access == UC_MEM_FETCH_PROT: + info=("UC_MEM_FETCH_PROT of 0x%x at 0x%X, data size = %u" % (address, pc, size)) + if access == UC_MEM_FETCH_PROT: + info=("UC_MEM_FETCH_PROT of 0x%x at 0x%X, data size = %u" % (address, pc, size)) + if access == UC_MEM_READ_AFTER: + info=("UC_MEM_READ_AFTER of 0x%x at 0x%X, data size = %u" % (address, pc, size)) + print(info) + return False + +def do_generic_emu_setup(mu,reg): + def replace_function(address,callback): + def hook_code(uc, address, size, user_data): + logger.debug(">>> Installed hook at 0x%x, instruction size = 0x%x" % (address, size)) + ret = user_data(reg) + uc.reg_write(UC_ARM_REG_R0, ret) + uc.reg_write(UC_ARM_REG_PC, uc.reg_read(UC_ARM_REG_LR)) + mu.hook_add(UC_HOOK_CODE, hook_code, user_data=callback, begin=address, end=address) + + def monitor_function(address,callback): + def hook_code(uc, address, size, user_data): + logger.debug(">>> Installed monitor at 0x%x, instruction size = 0x%x" % (address, size)) + user_data(reg) + mu.hook_add(UC_HOOK_CODE, hook_code, user_data=callback, begin=address, end=address) + + """ + def send_usb_response(regs): + pc = reg["LR"] + print("send_usb_response %08X" % pc) + return 0 + """ + + #mu.hook_add(UC_HOOK_BLOCK, hook_block) + mu.hook_add(UC_HOOK_MEM_INVALID, hook_mem_invalid) + mu.hook_add(UC_HOOK_CODE, hook_code, begin=0, end=-1) + mu.hook_add(UC_HOOK_MEM_READ, hook_mem_read) + mu.hook_add(UC_HOOK_MEM_WRITE, hook_mem_write) + #replace_function(brom_base+br[field][0]-1,send_usb_response) + +def main(): + pfilename = os.path.join("..", "Loader", "Preloader", "preloader_k71v1_64_bsp.bin") + payload = open(pfilename, "rb").read() + + mu = Uc(UC_ARCH_ARM, UC_MODE_THUMB) + reg = ARMRegisters(mu) + reg["SP"] = 0x2001D4 # Stack from start + preloader_base=0x200E20 + mu.mem_map(0x100000, 0x400000) # Map generic memory for payload + try: + mu.mem_map(0x10000000, 0x1000000) # Map WD, TZCC + mu.mem_map(0x11000000, 0x1000000) # Map Uart+SEC_REG + except: + pass + reg["R0"] = 1 + reg["R1"] = 0x100000 + reg["R2"] = 16 + mu.mem_write(preloader_base, payload) + do_generic_emu_setup(mu,reg) + + #Main EDL emulation + logger.info("Emulating Preloader") + try: + mu.emu_start(0x230B1D,-1,0,0) #generate_fde_key + except: + pass + logger.info("Emulation done.") + + +if __name__=="__main__": + main() diff --git a/mtkclient/Tools/enc_test.py b/mtkclient/Tools/enc_test.py new file mode 100755 index 0000000..0be6c74 --- /dev/null +++ b/mtkclient/Tools/enc_test.py @@ -0,0 +1,76 @@ +from Crypto.Cipher import AES +from struct import unpack, pack +from binascii import hexlify + +""" +[IDACode] Executing /home/bjk/Projects/idaemu/idaemu.py +------- +0x1020dc48[W] : 0xc342daa5 +0x1020dc4c[W] : 0xbac5f6b4 +0x1020dc50[W] : 0x68c562e1 +0x1020dc54[W] : 0x526bdad +0x1020dc58[W] : 0x771ba184 +0x1020dc5c[W] : 0x35f963a8 +0x1020dc60[W] : 0x48306825 +0x1020dc64[W] : 0x87b3933e +0x1020dc08[W] : 0x12 +0x1020dc04[W] : 0x1 +0x1020dc0c[W] : 0x16 +0x1020dc10[W] : 0x1a + +0x1020d804[W] : 0x3 +0x1020d808[W] : 0x3 +0x1020dc00[W] : 0x78 +0x1020d400[W] : 0x0 +0x1020d800[R] : 0x0 +0x1020d418[R] : 0x0 +0x1020d804[W] : 0x3 + +0x1020dc48[W] : 0xf5a181eb +0x1020dc4c[W] : 0x6fb87b96 +0x1020dc50[W] : 0x4e0c13e +0x1020dc54[W] : 0x71edb823 + +0x1020dc04[W] : 0x300240 +0x1020dc08[W] : 0x600000 +0x1020dc0c[W] : 0x25d3c +0x1020dc14[W] : 0x12 +0x1020dc18[W] : 0x1a +0x1020dc1c[W] : 0x1a + +0x1020d804[W] : 0x3 +0x1020d808[W] : 0x3 +0x1020dc00[W] : 0x7e +0x1020d400[W] : 0x0 +0x1020d800[R] : 0x0 +0x1020d418[R] : 0x0 +0x1020d804[W] : 0x3 +0x1020dc48[W] : 0x0 +0x1020dc4c[W] : 0x0 +0x1020dc50[W] : 0x0 +0x1020dc54[W] : 0x0 +0x1020dc58[W] : 0x0 +0x1020dc5c[W] : 0x0 +0x1020dc60[W] : 0x0 +0x1020dc64[W] : 0x0 +0x1020dc68[W] : 0x0 +0x1020dc6c[W] : 0x0 +0x1020dc70[W] : 0x0 +0x1020dc74[W] : 0x0 +""" + +preloader_key=bytes.fromhex("A5DA42C3B4F6C5BAE162C568ADBD26055572247C05586BAA37818D2868949ADB9C4DEE58E7C7AFD090D8951035F84BEB") +aeskey1=preloader_key[:16] +aeskey2=preloader_key[16:32] + +seed=bytearray(bytes.fromhex("CEBEA8E5DC1A43A0F0AE425F67AF42047471F1D4B751362F39AE8A5E8BDA0C4C")) +iv = AES.new(aeskey1, AES.MODE_ECB).decrypt(seed[:0x10]) + +out=bytearray() +for i in range(4): + val=unpack(" + +/** \brief Division result + * \sa uidiv + */ +typedef struct uidiv_result { + u32_t quo; ///< Quotient + u32_t rem; ///< Remainder +} uidiv_result_t; + +/********************************************//** + * \brief Unsigned integer division + * + * ARM does not have native division support + * \returns Result of operation or zero if + * dividing by zero. + ***********************************************/ +uidiv_result_t +uidiv (u32_t num, ///< Numerator + u32_t dem) ///< Denominator +{ + u32_t tmp = dem; + uidiv_result_t ans = {0}; + + if (dem == 0) + { + // TODO: Somehow make error + return ans; + } + + while (tmp <= num >> 1) + { + tmp <<= 1; + } + + do + { + if (num >= tmp) + { + num -= tmp; + ans.quo++; + } + ans.quo <<= 1; + tmp >>= 1; + } while (tmp >= dem); + ans.quo >>= 1; + ans.rem = num; + + return ans; +} + +u32_t __aeabi_uidiv(u32_t num, u32_t dem) +{ + return uidiv(num, dem).quo; +} + +u32_t __aeabi_uidivmod(u32_t num, u32_t dem) +{ + return uidiv(num, dem).rem; +} + +void* memset(void* dst, int c, u32_t n) +{ + char* q = dst; + char* end = q + n; + + for (;;) { + if (q >= end) break; + *q++ = (char) c; + if (q >= end) break; + *q++ = (char) c; + if (q >= end) break; + *q++ = (char) c; + if (q >= end) break; + *q++ = (char) c; + } + + return dst; +} + +u32_t +strlen(const char *str) +{ + const char *s; + + for (s = str; *s; ++s) + ; + return (s - str); +} + +char * +strcpy(char *to, const char *from) +{ + char *save = to; + + for (; (*to = *from) != '\0'; ++from, ++to); + return(save); +} + +/* + * Compare strings. + */ +int +strcmp(const char *s1, const char *s2) +{ + while (*s1 == *s2++) + if (*s1++ == 0) + return (0); + return (*(unsigned char *)s1 - *(unsigned char *)--s2); +} + +int +strncmp(const char *s1, const char *s2, u32_t n) +{ + if (n == 0) + return (0); + do { + if (*s1 != *s2++) + return (*(unsigned char *)s1 - *(unsigned char *)--s2); + if (*s1++ == 0) + break; + } while (--n != 0); + return (0); +} + +void *memcpy(void *dest, const void *src, size_t n) +{ + char *dp = dest; + const char *sp = src; + while (n--) + *dp++ = *sp++; + return dest; +} + +int memcmp(const void* s1, const void* s2, size_t n) +{ + const unsigned char *p1 = s1, *p2 = s2; + while(n--) + if( *p1 != *p2 ) + return *p1 - *p2; + else + p1++,p2++; + return 0; +} + +char *strstr(const char *s1, const char *s2) +{ + size_t n = strlen(s2); + while(*s1) + if(!memcmp(s1++,s2,n)) + return (char *)s1-1; + return 0; +} diff --git a/mtkclient/src/da_xml/common/libc.h b/mtkclient/src/da_xml/common/libc.h new file mode 100755 index 0000000..8d2fa60 --- /dev/null +++ b/mtkclient/src/da_xml/common/libc.h @@ -0,0 +1,27 @@ +#pragma once + +/** \name Fixed width integers + * @{ + */ +typedef unsigned char u8_t; ///< Unsigned 8-bit type +typedef unsigned short int u16_t; ///< Unsigned 16-bit type +typedef unsigned int u32_t; ///< Unsigned 32-bit type +typedef unsigned long long u64_t; ///< Unsigned 64-bit type + +// typedef u64_t u64; +// typedef u32_t u32; +// typedef u16_t u16; +// typedef u8_t u8; +#ifndef size_t +typedef unsigned size_t; +#endif +size_t strlen(const char *str); +int printf(const char *format, ...); +int sprintf (char *str, const char *format, ...); +char *strcpy(char *to, const char *from); +int strncmp(const char *s1, const char *s2, u32_t n); +void* memset(void* dst, int c, u32_t n); +void *memcpy(void *dest, const void *src, size_t n); +int strcmp(const char *s1, const char *s2); +int memcmp(const void* s1, const void* s2, size_t n); +char *strstr(const char *s1, const char *s2); diff --git a/mtkclient/src/da_xml/common/start.S b/mtkclient/src/da_xml/common/start.S new file mode 100755 index 0000000..0472e5d --- /dev/null +++ b/mtkclient/src/da_xml/common/start.S @@ -0,0 +1,170 @@ +.syntax unified + +.code 32 + +.global start +.section .text.start +start: + #add r3, pc, #1 + #bx r3 + +.global apmcu_dcache_clean_invalidate +.section .text +.type apmcu_dcache_clean_invalidate,%function +apmcu_dcache_clean_invalidate: + push {r4,r5,r7,r9,r10,r11} + dmb /* ensure ordering with previous memory accesses */ + mrc p15, 1, r0, c0, c0, 1 /* read clidr */ + ands r3, r0, #0x7000000 /* extract loc from clidr */ + mov r3, r3, lsr #23 /* left align loc bit field */ + beq ci_finished /* if loc is 0, then no need to clean */ + mov r10, #0 /* start clean at cache level 0 */ +ci_loop1: + add r2, r10, r10, lsr #1 /* work out 3x current cache level */ + mov r1, r0, lsr r2 /* extract cache type bits from clidr */ + and r1, r1, #7 /* mask of the bits for current cache only */ + cmp r1, #2 /* see what cache we have at this level */ + blt ci_skip /* skip if no cache, or just i-cache */ + mcr p15, 2, r10, c0, c0, 0 /* select current cache level in cssr */ + isb /* isb to sych the new cssr&csidr */ + mrc p15, 1, r1, c0, c0, 0 /* read the new csidr */ + and r2, r1, #7 /* extract the length of the cache lines */ + add r2, r2, #4 /* add 4 (line length offset) */ + ldr r4, =0x3ff + ands r4, r4, r1, lsr #3 /* find maximum number on the way size */ + clz r5, r4 /* find bit position of way size increment */ + ldr r7, =0x7fff + ands r7, r7, r1, lsr #13 /* extract max number of the index size */ +ci_loop2: + mov r9, r4 /* create working copy of max way size */ +ci_loop3: + orr r11, r10, r9, lsl r5 /* factor way and cache number into r11 */ + orr r11, r11, r7, lsl r2 /* factor index number into r11 */ + mcr p15, 0, r11, c7, c14, 2 /* clean & invalidate by set/way */ + subs r9, r9, #1 /* decrement the way */ + bge ci_loop3 + subs r7, r7, #1 /* decrement the index */ + bge ci_loop2 +ci_skip: + add r10, r10, #2 /* increment cache number */ + cmp r3, r10 + bgt ci_loop1 +ci_finished: + mov r10, #0 /* swith back to cache level 0 */ + mcr p15, 2, r10, c0, c0, 0 /* select current cache level in cssr */ + dsb + isb + pop {r4,r5,r7,r9,r10,r11} + bx lr + + +.global apmcu_dcache_invalidate +.section .text +.type apmcu_dcache_invalidate,%function +apmcu_dcache_invalidate: + push {r4,r5,r7,r9,r10,r11} + dmb /* ensure ordering with previous memory accesses */ + mrc p15, 1, r0, c0, c0, 1 /* read clidr */ + ands r3, r0, #0x7000000 /* extract loc from clidr */ + mov r3, r3, lsr #23 /* left align loc bit field */ + beq cii_finished /* if loc is 0, then no need to clean */ + mov r10, #0 /* start clean at cache level 0 */ +cii_loop1: + add r2, r10, r10, lsr #1 /* work out 3x current cache level */ + mov r1, r0, lsr r2 /* extract cache type bits from clidr */ + and r1, r1, #7 /* mask of the bits for current cache only */ + cmp r1, #2 /* see what cache we have at this level */ + blt cii_skip /* skip if no cache, or just i-cache */ + mcr p15, 2, r10, c0, c0, 0 /* select current cache level in cssr */ + isb /* isb to sych the new cssr&csidr */ + mrc p15, 1, r1, c0, c0, 0 /* read the new csidr */ + and r2, r1, #7 /* extract the length of the cache lines */ + add r2, r2, #4 /* add 4 (line length offset) */ + ldr r4, =0x3ff + ands r4, r4, r1, lsr #3 /* find maximum number on the way size */ + clz r5, r4 /* find bit position of way size increment */ + ldr r7, =0x7fff + ands r7, r7, r1, lsr #13 /* extract max number of the index size */ +cii_loop2: + mov r9, r4 /* create working copy of max way size */ +cii_loop3: + orr r11, r10, r9, lsl r5 /* factor way and cache number into r11 */ + orr r11, r11, r7, lsl r2 /* factor index number into r11 */ + mcr p15, 0, r11, c7, c6, 2 /* invalidate by set/way */ + subs r9, r9, #1 /* decrement the way */ + bge cii_loop3 + subs r7, r7, #1 /* decrement the index */ + bge cii_loop2 +cii_skip: + add r10, r10, #2 /* increment cache number */ + cmp r3, r10 + bgt cii_loop1 +cii_finished: + mov r10, #0 /* swith back to cache level 0 */ + mcr p15, 2, r10, c0, c0, 0 /* select current cache level in cssr */ + dsb + isb + pop {r4,r5,r7,r9,r10,r11} + bx lr + + +.global cache_init +.section .text +.type cache_init,%function +cache_init: + PUSH {R4-R11,LR} + MOV R7, R0 + MRS R12, CPSR + CPSID AIF + TST R7, #2 + BEQ mmt + MRC p15, 0, R0,c1,c0, 0 + TST R0, #4 + BEQ mma + BIC R0, R0, #4 + MCR p15, 0, R0,c1,c0, 0 + BL apmcu_dcache_clean_invalidate + B mmt +mma: + BL apmcu_dcache_invalidate +mmt: + TST R7, #1 + BEQ mml + MRC p15, 0, R0,c1,c0, 0 + BIC R0, R0, #0x1000 + MCR p15, 0, R0,c1,c0, 0 +mml: + MOV R0, #0 + MCR p15, 0, R0,c7,c5, 0 + MSR CPSR_cf, R12 + POP {R4-R11,PC} + + +.global cache_close +.section .text +.type cache_close,%function +cache_close: + PUSH {R4-R11,LR} + MOV R7, R0 + MRS R12, CPSR + CPSID AIF + TST R7, #2 + BEQ cci + MRC p15, 0, R0,c1,c0, 0 + TST R0, #4 + BNE cci + BL apmcu_dcache_invalidate + MRC p15, 0, R0,c1,c0, 0 + ORR R0, R0, #4 + MCR p15, 0, R0,c1,c0, 0 +cci: + TST R7, #1 + BEQ cct + MOV R0, #0 + MCR p15, 0, R0,c7,c5, 0 + MRC p15, 0, R0,c1,c0, 0 + ORR R0, R0, #0x1000 + MCR p15, 0, R0,c1,c0, 0 +cct: + MSR CPSR_cf, R12 + POP {R4-R11,PC} diff --git a/mtkclient/src/da_xml/crypto/hmac-sha256.c b/mtkclient/src/da_xml/crypto/hmac-sha256.c new file mode 100755 index 0000000..ab302fe --- /dev/null +++ b/mtkclient/src/da_xml/crypto/hmac-sha256.c @@ -0,0 +1,95 @@ +/* + * hmac-sha256.c + * Copyright (C) 2017 Adrian Perez + * + * Distributed under terms of the MIT license. + */ + +#include "hmac-sha256.h" +#include "sha256.h" +// #include "apicheck/apicheck.h" + +/* + * HMAC(H, K) == H(K ^ opad, H(K ^ ipad, text)) + * + * H: Hash function (sha256) + * K: Secret key + * B: Block byte length + * L: Byte length of hash function output + * + * https://tools.ietf.org/html/rfc2104 + */ + +#define B 64 +#define L (SHA256_DIGEST_SIZE) +#define K (SHA256_DIGEST_SIZE * 2) + +#define I_PAD 0x36 +#define O_PAD 0x5C + +void +hmac_sha256 (uint8_t out[HMAC_SHA256_DIGEST_SIZE], + const uint8_t *data, size_t data_len, + const uint8_t *key, size_t key_len) +{ + // api_check_return (out); + // api_check_return (data); + // api_check_return (key); + // api_check_return (key_len <= B); + + sha256_t ss; + uint8_t kh[SHA256_DIGEST_SIZE]; + + /* + * If the key length is bigger than the buffer size B, apply the hash + * function to it first and use the result instead. + */ + if (key_len > B) { + sha256_init (&ss); + sha256_update (&ss, key, key_len); + sha256_final (&ss, kh); + key_len = SHA256_DIGEST_SIZE; + key = kh; + } + + /* + * (1) append zeros to the end of K to create a B byte string + * (e.g., if K is of length 20 bytes and B=64, then K will be + * appended with 44 zero bytes 0x00) + * (2) XOR (bitwise exclusive-OR) the B byte string computed in step + * (1) with ipad + */ + uint8_t kx[B]; + for (size_t i = 0; i < key_len; i++) kx[i] = I_PAD ^ key[i]; + for (size_t i = key_len; i < B; i++) kx[i] = I_PAD ^ 0; + + /* + * (3) append the stream of data 'text' to the B byte string resulting + * from step (2) + * (4) apply H to the stream generated in step (3) + */ + sha256_init (&ss); + sha256_update (&ss, kx, B); + sha256_update (&ss, data, data_len); + sha256_final (&ss, out); + + /* + * (5) XOR (bitwise exclusive-OR) the B byte string computed in + * step (1) with opad + * + * NOTE: The "kx" variable is reused. + */ + for (size_t i = 0; i < key_len; i++) kx[i] = O_PAD ^ key[i]; + for (size_t i = key_len; i < B; i++) kx[i] = O_PAD ^ 0; + + /* + * (6) append the H result from step (4) to the B byte string + * resulting from step (5) + * (7) apply H to the stream generated in step (6) and output + * the result + */ + sha256_init (&ss); + sha256_update (&ss, kx, B); + sha256_update (&ss, out, SHA256_DIGEST_SIZE); + sha256_final (&ss, out); +} diff --git a/mtkclient/src/da_xml/crypto/hmac-sha256.h b/mtkclient/src/da_xml/crypto/hmac-sha256.h new file mode 100755 index 0000000..661827e --- /dev/null +++ b/mtkclient/src/da_xml/crypto/hmac-sha256.h @@ -0,0 +1,21 @@ +/* + * hmac-sha256.h + * Copyright (C) 2017 Adrian Perez + * + * Distributed under terms of the MIT license. + */ + +#ifndef HMAC_SHA256_H +#define HMAC_SHA256_H + +#include +#include + +#define HMAC_SHA256_DIGEST_SIZE 32 /* Same as SHA-256's output size. */ + +void +hmac_sha256 (uint8_t out[HMAC_SHA256_DIGEST_SIZE], + const uint8_t *data, size_t data_len, + const uint8_t *key, size_t key_len); + +#endif /* !HMAC_SHA256_H */ diff --git a/mtkclient/src/da_xml/crypto/rotate-bits.h b/mtkclient/src/da_xml/crypto/rotate-bits.h new file mode 100755 index 0000000..75c4881 --- /dev/null +++ b/mtkclient/src/da_xml/crypto/rotate-bits.h @@ -0,0 +1,46 @@ + + +#ifndef __ROTATE_DEFS_H +#define __ROTATE_DEFS_H + +#ifdef _MSC_VER + +#include + +#define ROTL32(v, n) _rotl((v), (n)) +#define ROTL64(v, n) _rotl64((v), (n)) + +#define ROTR32(v, n) _rotr((v), (n)) +#define ROTR64(v, n) _rotr64((v), (n)) + +#else + +#include + +#define U8V(v) ((uint8_t)(v) & 0xFFU) +#define U16V(v) ((uint16_t)(v) & 0xFFFFU) +#define U32V(v) ((uint32_t)(v) & 0xFFFFFFFFU) +#define U64V(v) ((uint64_t)(v) & 0xFFFFFFFFFFFFFFFFU) + +#define ROTL32(v, n) \ + (U32V((uint32_t)(v) << (n)) | ((uint32_t)(v) >> (32 - (n)))) + +// tests fail if we don't have this cast... +#define ROTL64(v, n) \ + (U64V((uint64_t)(v) << (n)) | ((uint64_t)(v) >> (64 - (n)))) + +#define ROTR32(v, n) ROTL32(v, 32 - (n)) +#define ROTR64(v, n) ROTL64(v, 64 - (n)) + +#endif + +#define ROTL8(v, n) \ + (U8V((uint8_t)(v) << (n)) | ((uint8_t)(v) >> (8 - (n)))) + +#define ROTL16(v, n) \ + (U16V((uint16_t)(v) << (n)) | ((uint16_t)(v) >> (16 - (n)))) + +#define ROTR8(v, n) ROTL8(v, 8 - (n)) +#define ROTR16(v, n) ROTL16(v, 16 - (n)) + +#endif diff --git a/mtkclient/src/da_xml/crypto/sha256.c b/mtkclient/src/da_xml/crypto/sha256.c new file mode 100755 index 0000000..cee5441 --- /dev/null +++ b/mtkclient/src/da_xml/crypto/sha256.c @@ -0,0 +1,221 @@ +/* Crypto/Sha256.c -- SHA-256 Hash +2010-06-11 : Igor Pavlov : Public domain +This code is based on public domain code from Wei Dai's Crypto++ library. */ + +#include "rotate-bits.h" +#include "sha256.h" + +/* define it for speed optimization */ +#define _SHA256_UNROLL +#define _SHA256_UNROLL2 + +void +sha256_init(sha256_t *p) +{ + p->state[0] = 0x6a09e667; + p->state[1] = 0xbb67ae85; + p->state[2] = 0x3c6ef372; + p->state[3] = 0xa54ff53a; + p->state[4] = 0x510e527f; + p->state[5] = 0x9b05688c; + p->state[6] = 0x1f83d9ab; + p->state[7] = 0x5be0cd19; + p->count = 0; +} + +#define S0(x) (ROTR32(x, 2) ^ ROTR32(x,13) ^ ROTR32(x, 22)) +#define S1(x) (ROTR32(x, 6) ^ ROTR32(x,11) ^ ROTR32(x, 25)) +#define s0(x) (ROTR32(x, 7) ^ ROTR32(x,18) ^ (x >> 3)) +#define s1(x) (ROTR32(x,17) ^ ROTR32(x,19) ^ (x >> 10)) + +#define blk0(i) (W[i] = data[i]) +#define blk2(i) (W[i&15] += s1(W[(i-2)&15]) + W[(i-7)&15] + s0(W[(i-15)&15])) + +#define Ch(x,y,z) (z^(x&(y^z))) +#define Maj(x,y,z) ((x&y)|(z&(x|y))) + +#define a(i) T[(0-(i))&7] +#define b(i) T[(1-(i))&7] +#define c(i) T[(2-(i))&7] +#define d(i) T[(3-(i))&7] +#define e(i) T[(4-(i))&7] +#define f(i) T[(5-(i))&7] +#define g(i) T[(6-(i))&7] +#define h(i) T[(7-(i))&7] + + +#ifdef _SHA256_UNROLL2 + +#define R(a,b,c,d,e,f,g,h, i) h += S1(e) + Ch(e,f,g) + K[i+j] + (j?blk2(i):blk0(i));\ + d += h; h += S0(a) + Maj(a, b, c) + +#define RX_8(i) \ + R(a,b,c,d,e,f,g,h, i); \ + R(h,a,b,c,d,e,f,g, (i+1)); \ + R(g,h,a,b,c,d,e,f, (i+2)); \ + R(f,g,h,a,b,c,d,e, (i+3)); \ + R(e,f,g,h,a,b,c,d, (i+4)); \ + R(d,e,f,g,h,a,b,c, (i+5)); \ + R(c,d,e,f,g,h,a,b, (i+6)); \ + R(b,c,d,e,f,g,h,a, (i+7)) + +#else + +#define R(i) h(i) += S1(e(i)) + Ch(e(i),f(i),g(i)) + K[i+j] + (j?blk2(i):blk0(i));\ + d(i) += h(i); h(i) += S0(a(i)) + Maj(a(i), b(i), c(i)) + +#ifdef _SHA256_UNROLL + +#define RX_8(i) R(i+0); R(i+1); R(i+2); R(i+3); R(i+4); R(i+5); R(i+6); R(i+7); + +#endif + +#endif + +static const uint32_t K[64] = { + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, + 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, + 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, + 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, + 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, + 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, + 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, + 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, + 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 +}; + +static void +sha256_transform(uint32_t *state, const uint32_t *data) +{ + uint32_t W[16] = {0}; + unsigned j; + #ifdef _SHA256_UNROLL2 + uint32_t a,b,c,d,e,f,g,h; + a = state[0]; + b = state[1]; + c = state[2]; + d = state[3]; + e = state[4]; + f = state[5]; + g = state[6]; + h = state[7]; + #else + uint32_t T[8]; + for (j = 0; j < 8; j++) + T[j] = state[j]; + #endif + + for (j = 0; j < 64; j += 16) + { + #if defined(_SHA256_UNROLL) || defined(_SHA256_UNROLL2) + RX_8(0); RX_8(8); + #else + unsigned i; + for (i = 0; i < 16; i++) { R(i); } + #endif + } + + #ifdef _SHA256_UNROLL2 + state[0] += a; + state[1] += b; + state[2] += c; + state[3] += d; + state[4] += e; + state[5] += f; + state[6] += g; + state[7] += h; + #else + for (j = 0; j < 8; j++) + state[j] += T[j]; + #endif + + /* Wipe variables */ + /* memset(W, 0, sizeof(W)); */ + /* memset(T, 0, sizeof(T)); */ +} + +#undef S0 +#undef S1 +#undef s0 +#undef s1 + +static void +sha256_write_byte_block(sha256_t *p) +{ + uint32_t data32[16]; + unsigned i; + for (i = 0; i < 16; i++) + data32[i] = + ((uint32_t)(p->buffer[i * 4 ]) << 24) + + ((uint32_t)(p->buffer[i * 4 + 1]) << 16) + + ((uint32_t)(p->buffer[i * 4 + 2]) << 8) + + ((uint32_t)(p->buffer[i * 4 + 3])); + sha256_transform(p->state, data32); +} + + +void +sha256_hash(unsigned char *buf, const unsigned char *data, size_t size) +{ + sha256_t hash; + sha256_init(&hash); + sha256_update(&hash, data, size); + sha256_final(&hash, buf); +} + + +void +sha256_update(sha256_t *p, const unsigned char *data, size_t size) +{ + uint32_t curBufferPos = (uint32_t)p->count & 0x3F; + while (size > 0) + { + p->buffer[curBufferPos++] = *data++; + p->count++; + size--; + if (curBufferPos == 64) + { + curBufferPos = 0; + sha256_write_byte_block(p); + } + } +} + + +void +sha256_final(sha256_t *p, unsigned char *digest) +{ + uint64_t lenInBits = (p->count << 3); + uint32_t curBufferPos = (uint32_t)p->count & 0x3F; + unsigned i; + p->buffer[curBufferPos++] = 0x80; + while (curBufferPos != (64 - 8)) + { + curBufferPos &= 0x3F; + if (curBufferPos == 0) + sha256_write_byte_block(p); + p->buffer[curBufferPos++] = 0; + } + for (i = 0; i < 8; i++) + { + p->buffer[curBufferPos++] = (unsigned char)(lenInBits >> 56); + lenInBits <<= 8; + } + sha256_write_byte_block(p); + + for (i = 0; i < 8; i++) + { + *digest++ = (unsigned char)(p->state[i] >> 24); + *digest++ = (unsigned char)(p->state[i] >> 16); + *digest++ = (unsigned char)(p->state[i] >> 8); + *digest++ = (unsigned char)(p->state[i]); + } + sha256_init(p); +} diff --git a/mtkclient/src/da_xml/crypto/sha256.h b/mtkclient/src/da_xml/crypto/sha256.h new file mode 100755 index 0000000..3b39a69 --- /dev/null +++ b/mtkclient/src/da_xml/crypto/sha256.h @@ -0,0 +1,23 @@ +/* Sha256.h -- SHA-256 Hash +2010-06-11 : Igor Pavlov : Public domain */ + +#ifndef __CRYPTO_SHA256_H +#define __CRYPTO_SHA256_H + +#include +#include + +#define SHA256_DIGEST_SIZE 32 + +typedef struct sha256_t +{ + uint32_t state[8]; + uint64_t count; + unsigned char buffer[64]; +} sha256_t; + +void sha256_init(sha256_t *p); +void sha256_update(sha256_t *p, const unsigned char *data, size_t size); +void sha256_final(sha256_t *p, unsigned char *digest); +void sha256_hash(unsigned char *buf, const unsigned char *data, size_t size); +#endif diff --git a/mtkclient/src/da_xml/da_xml.c b/mtkclient/src/da_xml/da_xml.c new file mode 100755 index 0000000..f6c6d7d --- /dev/null +++ b/mtkclient/src/da_xml/da_xml.c @@ -0,0 +1,1200 @@ +#include +#include +#include "crypto/hmac-sha256.h" +#include "common/libc.h" +#define EXT_CSD_PART_CFG 179 + +#define RPMB_CUST_KEY "vutsrqponmlkjihgfedcba9876543210" + +#define UFS_UPIU_RPMB_WLUN 0xC4 +#define UFS_OP_SECURITY_PROTOCOL_IN 0xA2 +#define UFS_OP_SECURITY_PROTOCOL_OUT 0xB5 +#define SECURITY_PROTOCOL 0xEC + +#define RPMB_PROGRAM_KEY 1 /* Program RPMB Authentication Key */ +#define RPMB_GET_WRITE_COUNTER 2 /* Read RPMB write counter */ +#define RPMB_WRITE_DATA 3 /* Write data to RPMB partition */ +#define RPMB_READ_DATA 4 /* Read data from RPMB partition */ +#define RPMB_RESULT_READ 5 /* Read result request */ +#define RPMB_REQ 1 /* RPMB request mark */ +#define RPMB_RESP (1 << 1)/* RPMB response mark */ +#define RPMB_AVALIABLE_SECTORS 8 /* 4K page size */ + +#define RPMB_TYPE_BEG 510 // FF +#define RPMB_RES_BEG 508 // FE +#define RPMB_BLKS_BEG 506 // FD +#define RPMB_ADDR_BEG 504 // FC +#define RPMB_WCOUNTER_BEG 500 // FA + +#define RPMB_NONCE_BEG 484 +#define RPMB_DATA_BEG 228 +#define RPMB_MAC_BEG 196 + +#define UFS_UPIU_MAX_GENERAL_LUN 3 + +struct mmc_cid { + unsigned int manfid; + char prod_name[8]; + unsigned int serial; + unsigned short oemid; + unsigned short year; + unsigned char hwrev; + unsigned char fwrev; + unsigned char month; + unsigned char cbx; /* device type: card(0) BGA(1) POP(2) */ +}; + +struct mmc_csd { + unsigned char csd_struct; /* csd structure version */ + unsigned char mmca_vsn; + unsigned short cmdclass; /* card command classes */ + unsigned short tacc_clks; /* data read access-time-1 in clks */ + unsigned int tacc_ns; /* data read access-time-2 */ + unsigned int r2w_factor; /* write speed factor */ + unsigned int max_dtr; /* max. data transfer rate */ + unsigned int read_blkbits; /* max. read data block length */ + unsigned int write_blkbits; /* max. write data block length */ + unsigned int capacity; /* card capacity */ + unsigned int erase_sctsz; /* erase sector size */ + unsigned int write_prot_grpsz; + unsigned int read_partial:1, + read_misalign:1, + write_partial:1, + write_misalign:1, + write_prot_grp:1, + perm_wr_prot:1, + tmp_wr_prot:1, + erase_blk_en:1, + copy:1, + dsr:1; +}; + +struct mmc_raw_ext_csd { + /* mode segment */ + unsigned char rsv1[134]; + unsigned char sec_bad_blk_mgmt; + unsigned char rsv2[1]; + unsigned char enh_start_addr[4]; + unsigned char enh_sz_mult[3]; + unsigned char gp_sz_mult[12]; + unsigned char part_set_cmpl; + unsigned char part_attr; + unsigned char max_enh_sz_mult[3]; + unsigned char part_supp; + unsigned char rsv3[1]; + unsigned char rst_n_func; + unsigned char rsv4[5]; + unsigned char rpmb_sz_mult; + unsigned char fw_cfg; + unsigned char rsv5[1]; + unsigned char user_wp; + unsigned char rsv6[1]; + unsigned char boot_wp; + unsigned char rsv7[1]; + unsigned char erase_grp_def; + unsigned char rsv8[1]; + unsigned char boot_bus_width; + unsigned char boot_cfg_prot; + unsigned char part_cfg; + unsigned char rsv9[1]; + unsigned char erase_mem_cont; + unsigned char rsv10[1]; + unsigned char bus_width; + unsigned char rsv11[1]; + unsigned char hs_timing; + unsigned char rsv12[1]; + unsigned char pwr_cls; + unsigned char rsv13[1]; + unsigned char cmd_set_rev; + unsigned char rsv14[1]; + unsigned char cmd_set; + + /* propertities segment */ + unsigned char ext_csd_rev; + unsigned char rsv15[1]; + unsigned char csd_struct; + unsigned char rsv16[1]; + unsigned char card_type; + unsigned char rsv17[1]; + unsigned char pwr_cls_52_195; + unsigned char pwr_cls_26_195; + unsigned char pwr_cls_52_360; + unsigned char pwr_cls_26_360; + unsigned char rsv18[1]; + unsigned char min_perf_r_4_26; + unsigned char min_perf_w_4_26; + unsigned char min_perf_r_8_26_4_52; + unsigned char min_perf_w_8_26_4_52; + unsigned char min_perf_r_8_52; + unsigned char min_perf_w_8_52; + unsigned char rsv19[1]; + unsigned char sec_cnt[4]; + unsigned char rsv20[1]; + unsigned char slp_awake_tmo; + unsigned char rsv21[1]; + unsigned char slp_curr_vccq; + unsigned char slp_curr_vcc; + unsigned char hc_wp_grp_sz; + unsigned char rel_wr_sec_cnt; + unsigned char erase_tmo_mult; + unsigned char hc_erase_grp_sz; + unsigned char acc_sz; + unsigned char boot_sz_mult; + unsigned char rsv22[1]; + unsigned char boot_info; + unsigned char sec_trim_mult; + unsigned char sec_erase_mult; + unsigned char sec_supp; + unsigned char trim_mult; + unsigned char rsv23[1]; + unsigned char min_perf_ddr_r_8_52; + unsigned char min_perf_ddr_w_8_52; + unsigned char rsv24[2]; + unsigned char pwr_cls_ddr_52_195; + unsigned char pwr_cls_ddr_52_360; + unsigned char rsv25[1]; + unsigned char ini_tmo_ap; + unsigned char rsv26[262]; + unsigned char supp_cmd_set; + unsigned char rsv27[7]; +}; + +struct mmc_ext_csd { + unsigned int trim_tmo_ms; + unsigned int hc_wp_grp_sz; + unsigned int hc_erase_grp_sz; + unsigned int sectors; + unsigned int hs_max_dtr; + unsigned int boot_part_sz; + unsigned int rpmb_sz; + unsigned int access_sz; + unsigned int enh_sz; + unsigned int enh_start_addr; + unsigned char rev; + unsigned char boot_info; + unsigned char part_en:1, + enh_attr_en:1, + ddr_support:1; + unsigned char erased_mem_cont; + unsigned char usr_wp; + unsigned char boot_wp; +}; + + +struct sd_scr { + unsigned char scr_struct; + unsigned char sda_vsn; + unsigned char data_bit_after_erase; + unsigned char security; + unsigned char bus_widths; + unsigned char sda_vsn3; + unsigned char ex_security; + unsigned char cmd_support; +}; + +struct sd_switch_caps { + unsigned int hs_max_dtr; + unsigned int ddr; + unsigned int drv_strength; + unsigned int max_cur; +}; + +struct mmc_command { + uint32_t opcode; + uint32_t arg; + uint32_t rsptyp; + uint32_t resp[4]; + uint32_t timeout; + uint32_t retries; /* max number of retries */ + uint32_t error; /* command error */ +}; + +struct mmc_host +{ + struct mmc_card *card; + uint64_t max_hw_segs; + uint64_t max_phys_segs; + uint64_t max_seg_size; + uint32_t max_blk_size; + uint32_t max_blk_count; + uint32_t base; + uint32_t caps; + uint32_t f_min; + uint32_t f_max; + uint32_t clk; + uint32_t sclk; + uint32_t blklen; + uint32_t blkbits; + uint32_t ocr; + uint32_t ocr_avail; + uint32_t timeout_ns; + uint32_t timeout_clks; + uint8_t clksrc; + uint8_t id; + uint8_t boot_type; + uint8_t app_cmd; + uint32_t app_cmd_arg; + uint32_t time_read; + uint32_t time_cmd; + uint32_t cur_pwr; /* current power voltage */ + struct mmc_command* cmd; + void *priv; + int (*blk_read)(struct mmc_host *host, uint8_t *dst, uint32_t src, uint32_t nblks); + int (*blk_write)(struct mmc_host *host, uint32_t dst, uint8_t *src, uint32_t nblks); +}; + +/* MMC device */ +struct mmc_card { + struct mmc_host *host; + unsigned int nblks; + unsigned int blklen; + unsigned int ocr; + unsigned int maxhz; + unsigned int uhs_mode; + unsigned int rca; + unsigned int type; + #if defined(FEATURE_MMC_SDIO) + unsigned int sdio_funcs; /* number of SDIO functions */ + #endif + unsigned short state; + unsigned short ready; + uint32_t raw_cid[4]; + uint32_t raw_csd[4]; + uint32_t raw_scr[2]; + uint8_t raw_ext_csd[512]; + struct mmc_cid cid; + struct mmc_csd csd; + struct mmc_ext_csd ext_csd; + struct sd_scr scr; + struct sd_switch_caps sw_caps; + unsigned int wp_size; /* computed in ext_csd decode function, unit is block */ + #if defined(FEATURE_MMC_SDIO) + struct sdio_cccr cccr; /* common card info */ + struct sdio_cis cis; /* common tuple info */ + struct sdio_func *io_func[SDIO_MAX_FUNCS]; /* SDIO functions (devices) */ + struct sdio_func_tuple *tuples; /* unknown common tuples */ + unsigned int num_info; /* number of info strings */ + unsigned int speed_mode; /* recored which speed mode card can support */ + const char **info; /* info strings */ +#endif + uint8_t version; /* the SD card version, 1.0, 2.0, or 3.0*/ +}; + +#define MAX_CDB_SIZE 16 + +enum dma_data_direction { + DMA_BIDIRECTIONAL = 0, + DMA_TO_DEVICE = 1, + DMA_FROM_DEVICE = 2, + DMA_NONE = 3, +}; + +struct ufs_aio_scsi_cmd { + uint32_t lun; + uint32_t tag; + uint8_t dir; //dma_data_direction + uint8_t attr; + uint8_t cmd_data[MAX_CDB_SIZE]; + uint8_t unknown; + uint16_t cmd_len; + uint32_t exp_len; + void * data_buf; +}; + +/* UTP QUERY Transaction Specific Fields OpCode */ +enum query_opcode { + UPIU_QUERY_OPCODE_NOP = 0x0, + UPIU_QUERY_OPCODE_READ_DESC = 0x1, + UPIU_QUERY_OPCODE_WRITE_DESC = 0x2, + UPIU_QUERY_OPCODE_READ_ATTR = 0x3, + UPIU_QUERY_OPCODE_WRITE_ATTR = 0x4, + UPIU_QUERY_OPCODE_READ_FLAG = 0x5, + UPIU_QUERY_OPCODE_SET_FLAG = 0x6, + UPIU_QUERY_OPCODE_CLEAR_FLAG = 0x7, + UPIU_QUERY_OPCODE_TOGGLE_FLAG = 0x8, +}; + +/* Flag idn for Query Requests*/ +enum flag_idn { + QUERY_FLAG_IDN_FDEVICEINIT = 0x01, + QUERY_FLAG_IDN_PWR_ON_WPE = 0x03, + QUERY_FLAG_IDN_BKOPS_EN = 0x04, +}; + +/* Attribute idn for Query requests */ +enum attr_idn { + QUERY_ATTR_IDN_ACTIVE_ICC_LVL = 0x03, + QUERY_ATTR_IDN_BKOPS_STATUS = 0x05, + QUERY_ATTR_IDN_REF_CLK_FREQ = 0x0A, + QUERY_ATTR_IDN_EE_CONTROL = 0x0D, + QUERY_ATTR_IDN_EE_STATUS = 0x0E, +}; + +/* Descriptor idn for Query requests */ +enum desc_idn { + QUERY_DESC_IDN_DEVICE = 0x0, + QUERY_DESC_IDN_CONFIGURATION = 0x1, + QUERY_DESC_IDN_UNIT = 0x2, + QUERY_DESC_IDN_RFU_0 = 0x3, + QUERY_DESC_IDN_INTERCONNECT = 0x4, + QUERY_DESC_IDN_STRING = 0x5, + QUERY_DESC_IDN_RFU_1 = 0x6, + QUERY_DESC_IDN_GEOMETRY = 0x7, + QUERY_DESC_IDN_POWER = 0x8, + QUERY_DESC_IDN_HEALTH = 0x9, + QUERY_DESC_IDN_MAX, +}; + +#define ufs_paddr_t uint32_t + +struct ufs_pa_layer_attr { + uint32_t gear_rx; + uint32_t gear_tx; + uint32_t lane_rx; + uint32_t lane_tx; + uint32_t pwr_rx; + uint32_t pwr_tx; + uint32_t hs_rate; +}; + +#define UFS_MAX_CMD_DATA_SIZE (64) + +enum dev_cmd_type { + DEV_CMD_TYPE_NOP = 0x0, + DEV_CMD_TYPE_QUERY = 0x1, +}; + +/** + * struct utp_upiu_query - upiu request buffer structure for + * query request. + * @opcode: command to perform B-0 + * @idn: a value that indicates the particular type of data B-1 + * @index: Index to further identify data B-2 + * @selector: Index to further identify data B-3 + * @reserved_osf: spec reserved field B-4,5 + * @length: number of descriptor bytes to read/write B-6,7 + * @value: Attribute value to be written DW-5 + * @reserved: spec reserved DW-6,7 + */ +struct utp_upiu_query { + uint8_t opcode; + uint8_t idn; + uint8_t index; + uint8_t selector; + uint16_t reserved_osf; + uint16_t length; + uint32_t value; + uint32_t reserved[2]; +}; + +/** + * struct ufs_query_req - parameters for building a query request + * @query_func: UPIU header query function + * @upiu_req: the query request data + */ +struct ufs_query_req { + uint8_t query_func; + struct utp_upiu_query upiu_req; +}; + +/** + * struct ufs_query_resp - UPIU QUERY + * @response: device response code + * @upiu_res: query response data + */ +struct ufs_query_res { + uint8_t response; + struct utp_upiu_query upiu_res; +}; + +/** + * struct ufs_query - holds relevent data structures for query request + * @request: request upiu and function + * @descriptor: buffer for sending/receiving descriptor + * @response: response upiu and response + */ +struct ufs_query { + struct ufs_query_req request; + uint8_t *descriptor; + struct ufs_query_res response; +}; + +/** + * struct ufs_dev_cmd - all assosiated fields with device management commands + * @type: device management command type - Query, NOP OUT + * @lock: lock to allow one command at a time + * @complete: internal commands completion + * @tag_wq: wait queue until free command slot is available + */ +struct ufs_dev_cmd { + enum dev_cmd_type type; + struct ufs_query query; +}; + +#define MAX_PRODUCT_ID_LEN (16) +#define MAX_PRODUCT_REVISION_LEVEL_LEN (4) +#define MAX_SERAL_NUMBER_LEN (64) /* spec (126*2), 64 because code size */ + +struct ufs_device_info { + uint16_t wmanufacturerid; // from Device Descriptor + uint8_t num_active_lu; // from Device Descriptor + uint16_t ufs_ver; // from Device Descriptor + uint8_t bootable; + char product_id[MAX_PRODUCT_ID_LEN + 1]; + char product_revision_level[MAX_PRODUCT_REVISION_LEVEL_LEN + 1]; + char serial_number[MAX_SERAL_NUMBER_LEN * 2 + 1]; /* 1 byte need 2 char(ex.FF) + 1 end */ + uint8_t serial_number_len; + uint8_t ud0_base_offset; + uint8_t ud_config_len; + uint8_t hpb_support; + uint16_t hpb_ver; + uint8_t tw_support; + uint8_t tw_red; + uint8_t tw_type; + uint16_t tw_ver; + uint32_t wb_buf_au; + uint8_t pre_eol_info; + uint8_t life_time_est_a; + uint8_t life_time_est_b; +}; + +struct ufs_custom_info { + uint32_t custom_flag; + uint32_t force_provision; /* default:0, force:1, skip:2 */ + uint32_t tw_size_gb; + uint32_t tw_no_red; + uint32_t hpb_size_gb; + uint64_t lu3_size_mb; + uint32_t lu3_type; + uint32_t hpb_ctrl_mode; /* host control:0, device control:1 */ + uint16_t hpb_pinned_start_idx; + uint16_t hpb_pinned_regions; +}; + +struct ufs_pwr_mode_info { + bool is_valid; + struct ufs_pa_layer_attr info; +}; + +struct ufs_unit_desc_cfg_param { + uint8_t b_lu_enable; + uint8_t b_boot_lun_id; + uint8_t b_lu_write_protect; + uint8_t b_memory_type; + uint8_t d_num_alloc_units[4]; + uint8_t b_data_reliability; + uint8_t b_logical_block_size; + uint8_t b_provisioning_type; + uint8_t w_context_capabilities[2]; + uint8_t reserved[3]; +}; + +typedef enum { + UFS_LU_0 = 0 + ,UFS_LU_1 = 1 + ,UFS_LU_2 = 2 + ,UFS_LU_3 = 3 + ,UFS_LU_INTERNAL_CNT = 3 +} ufs_logical_unit_internal; + +struct ufs_hba { + void *hci_base; + void *pericfg_base; + void *mphy_base; + int nutrs; + //int nutmrs; + + /* Virtual memory reference */ + struct utp_transfer_cmd_desc *ucdl_base_addr; + struct utp_transfer_req_desc *utrdl_base_addr; + //struct utp_task_req_desc *utmrdl_base_addr; + //void * sense_buf_base_addr[UFS_AIO_MAX_NUTRS]; + + /* DMA memory reference */ + ufs_paddr_t ucdl_dma_addr; + ufs_paddr_t utrdl_dma_addr; + //ufs_paddr_t utmrdl_dma_addr; + //ufs_paddr_t sense_buf_dma_addr[UFS_AIO_MAX_NUTRS]; + + unsigned int hci_quirks; + unsigned int dev_quirks; + + struct uic_command *active_uic_cmd; + struct ufs_pa_layer_attr pwr_info; + + struct ufshcd_lrb *lrb; + unsigned long lrb_in_use; + + struct ufs_device_info dev_info; + struct ufs_custom_info custom_info; + + uint8_t active_tr_tag; + uint8_t mode; + uint8_t unit_desc_cfg_param_valid; + //uint8_t active_tm_tag; + int active_lun; + + unsigned long outstanding_reqs; + + struct ufs_pwr_mode_info max_pwr_info; + + uint8_t quirk_sel; /* selector. legacy Samsung and Micron dev takes selector 0x01 */ + + /* Device management request data */ + struct ufs_dev_cmd dev_cmd; + + int (* blk_read)(struct ufs_hba * hba, uint32_t lun, uint32_t blk_start, uint32_t blk_cnt, unsigned long * buf); + int (* blk_write)(struct ufs_hba * hba, uint32_t lun, uint32_t blk_start, uint32_t blk_cnt, unsigned long * buf); + int (* blk_erase)(struct ufs_hba * hba, uint32_t lun, uint32_t blk_start, uint32_t blk_cnt); + int (* nopin_nopout)(struct ufs_hba * hba); + int (* query_flag)(struct ufs_hba *hba, enum query_opcode opcode, enum flag_idn idn, bool *flag_res); + int (* query_attr)(struct ufs_hba *hba, enum query_opcode opcode, enum attr_idn idn, uint8_t index, uint8_t selector, uint32_t *attr_val); + int (* read_descriptor)(struct ufs_hba * hba, enum desc_idn desc_id, int desc_index, uint8_t selector, uint8_t *buf, uint32_t size); + int (* write_descriptor)(struct ufs_hba * hba, enum desc_idn desc_id, int desc_index, uint8_t selector, uint8_t *buf, uint32_t size); + int (* dme_get)(struct ufs_hba *hba, uint32_t attr_sel, uint32_t *mib_val); + int (* dme_peer_get)(struct ufs_hba *hba, uint32_t attr_sel, uint32_t *mib_val); + int (* dme_set)(struct ufs_hba *hba, uint32_t attr_sel, uint32_t mib_val); + int (* dme_peer_set)(struct ufs_hba *hba, uint32_t attr_sel, uint32_t mib_val); + int (* ffu_write)(struct ufs_hba * hba, unsigned long * buf, uint32_t buf_size); + + // unit descriptor configurable parameters (in Configuration Descriptor) + struct ufs_unit_desc_cfg_param unit_desc_cfg_param[UFS_UPIU_MAX_GENERAL_LUN]; + uint32_t blk_cnt[UFS_LU_INTERNAL_CNT]; + uint32_t drv_status; + uint32_t irq; +}; + +typedef struct +{ + int (*read_packet_with_profile)(uint8_t* buffer, uint32_t* length); + int (*write_packet_with_profile)(uint8_t* buffer, uint32_t length); + int (*log_packet_to_pc)(const uint8_t* buffer, uint32_t length); + int (*log_to_uart)(const uint8_t* buffer, uint32_t length); +} com_channel_struct; + +typedef int (*HHANDLE)(com_channel_struct*); +extern void apmcu_dcache_clean_invalidate(); +extern void apmcu_dcache_invalidate(); +extern int cache_init(int param); +extern int cache_close(int param); +int (*run)(); + +int (*register_xml_cmd)(char* /*cmd*/, char* /*version*/, HHANDLE /*handle*/)=(const void*)0x11111111; +int (*mmc_get_card)(int /*id*/)=(const void*)0x22222222; +int (*mmc_set_part_config)(struct mmc_card */*card*/, uint8_t /*cfg*/)=(const void*)0x33333333; +int (*mmc_rpmb_send_command)(struct mmc_card */*card*/, uint8_t */*data_frame*/, uint32_t /*blks*/, int /*type*/, uint8_t /*req_type*/)=(const void*)0x44444444; +int (*ufshcd_queuecommand)(struct ufs_hba */*hba*/, struct ufs_aio_scsi_cmd */*cmd*/)=(const void*)0x55555555; +int (*ufshcd_get_free_tag)(struct ufs_hba */*hba*/, uint32_t */*tag_out*/)=(const void*)0x66666666; +uint32_t g_ufs_hba=0x77777777; + +void ufshcd_put_tag(struct ufs_hba *hba, int tag) +{ + /* clear_bit(tag, &hba->lrb_in_use); */ + hba->lrb_in_use &= ~(1 << tag); +} + +uint8_t rpmb_key[32]={0x64, 0x76, 0xEE, 0xF0, 0xF1, 0x6B, 0x30, 0x47, 0xE9, 0x79, 0x31, 0x58, 0xF6, 0x42, 0xDA, 0x46, 0xF7, 0x3B, 0x53, 0xFD, 0xC5, 0xF8, 0x84, 0xCE, 0x03, 0x73, 0x15, 0xBC, 0x54, 0x47, 0xD4, 0x6A}; + +void mcpy(uint8_t* src, uint8_t* dst, int len) +{ + uint8_t* i; + uint8_t* m; + uint8_t* t; + + for (i=src;len--;i++) + { + m=dst++; + t=i; + *t=*m; + } +} + +#define HW_DESC_SIZE_WORDS 6 +typedef struct HwDesc { + uint32_t word[HW_DESC_SIZE_WORDS]; +} HwDesc_s; + +#define DX_DSCRPTR_QUEUE0_WORD0_REG_OFFSET 0xE80 +#define DX_DSCRPTR_QUEUE0_WORD1_REG_OFFSET 0xE84 +#define DX_DSCRPTR_QUEUE0_WORD2_REG_OFFSET 0xE88 +#define DX_DSCRPTR_QUEUE0_WORD3_REG_OFFSET 0xE8C +#define DX_DSCRPTR_QUEUE0_WORD4_REG_OFFSET 0xE90 +#define DX_DSCRPTR_QUEUE0_WORD5_REG_OFFSET 0xE94 +#define DX_DSCRPTR_QUEUE0_CONTENT_REG_OFFSET 0xE9C +#define DX_HOST_IRR_REG_OFFSET 0xA00 +#define DX_HOST_ICR_REG_OFFSET 0xA08 +#define DX_HOST_SEP_HOST_GPR4_REG_OFFSET 0xAA0 + +void SaSi_SB_AddDescSequence(volatile uint32_t *result, HwDesc_s *desc) +{ + while ( (result[DX_DSCRPTR_QUEUE0_CONTENT_REG_OFFSET/4] & 0x3FF) == 0 ) + ; + result[DX_DSCRPTR_QUEUE0_WORD0_REG_OFFSET/4] = (volatile uint32_t)desc->word[0]; + result[DX_DSCRPTR_QUEUE0_WORD1_REG_OFFSET/4] = (volatile uint32_t)desc->word[1]; + result[DX_DSCRPTR_QUEUE0_WORD2_REG_OFFSET/4] = (volatile uint32_t)desc->word[2]; + result[DX_DSCRPTR_QUEUE0_WORD3_REG_OFFSET/4] = (volatile uint32_t)desc->word[3]; + result[DX_DSCRPTR_QUEUE0_WORD4_REG_OFFSET/4] = (volatile uint32_t)desc->word[4]; + result[DX_DSCRPTR_QUEUE0_WORD5_REG_OFFSET/4] = (volatile uint32_t)desc->word[5]; +} + +void SaSi_PalDmaMap(uint32_t offset, volatile uint64_t* dst) +{ + *dst=offset; +} + +int SB_ReadFlag(volatile uint32_t* base) +{ + volatile uint32_t res=0; + do { + res=base[0xBA0/4]; + } + while (!res); + return res; +} + +void SaSi_PalDmaUnMap(volatile uint64_t* dst) +{ + (void)dst; +} + +void SB_HalInit(volatile uint32_t* base) +{ + base[DX_HOST_ICR_REG_OFFSET/4]=(volatile uint32_t)4; +} + +int SB_CryptoWait(volatile uint32_t* base) +{ + volatile uint32_t val; + do { + val=(volatile uint32_t)base[DX_HOST_IRR_REG_OFFSET/4]; + } while (!val); + return val; +} + +int SB_HalWaitDescCompletion(volatile uint32_t* base) +{ + struct HwDesc desc; + SB_HalInit(base); + uint32_t outv = 0; + volatile uint64_t out = 0; + SaSi_PalDmaMap((uint32_t)&outv, &out); + desc.word[0] = 0; + desc.word[1] = 0x8000011; + desc.word[2] = out; + desc.word[5] = ((out>>32)&0xFFFFFFFF) << 16; + desc.word[3] = 0x8000012; + desc.word[4] = 0x100; + SaSi_SB_AddDescSequence(base, &desc); + while ( (SB_CryptoWait(base) & 4) == 0 ); + volatile uint32_t val=0; + do + { + val = SB_ReadFlag(base); + } while (!val); + if ( val == 1 ) + { + SB_HalInit(base); + SaSi_PalDmaUnMap(&out); + return 0; + } + else + { + SaSi_PalDmaUnMap(&out); + return 0xF6000001; + } +} + +void write_reg(volatile uint32_t addr, volatile uint32_t value) +{ + *(volatile uint32_t*)addr=value; +} + +int SBROM_AesCmacDriver(volatile uint32_t *base, + uint32_t hwmode, + uint64_t key, + uint64_t buf, + int bufferlen, + uint64_t out) +{ + struct HwDesc desc; + int keylen = 0; + if ( hwmode == 1 ) + { + if (((base[DX_HOST_SEP_HOST_GPR4_REG_OFFSET/4])&2)!=0) + { + keylen = 32; + } + else + { + keylen = 16; + } + } + else + { + keylen = 16; + } + SB_HalInit(base); + volatile uint32_t kval = (keylen << 19) - 0x800000; + desc.word[1] = 0x8000041; + desc.word[4] = kval | 0x1001C20; + desc.word[0] = 0; + desc.word[2] = 0; + desc.word[3] = 0; + desc.word[5] = 0; + SaSi_SB_AddDescSequence(base, &desc); + +desc.word[0] = 0; +desc.word[1] = 0; +desc.word[2] = 0; +desc.word[3] = 0; +desc.word[4] = 0; + +if ( !hwmode ) +{ +desc.word[0] = (uint32_t)key; +desc.word[5] = (uint16_t)(key>>32); +desc.word[1] = 0x42; +} +desc.word[4] = kval | ((hwmode&3)<<15) | (((hwmode>>2)&3)<<20) | 0x4001C20; +SaSi_SB_AddDescSequence(base, &desc); + +desc.word[2] = 0; +desc.word[0] = (uint32_t)buf; +desc.word[5] = (uint16_t)(buf>>32); +desc.word[3] = 0; +desc.word[1] = (4 * (bufferlen & 0xFFFFFF)) | 2; +desc.word[4] = 1; +SaSi_SB_AddDescSequence(base, &desc); + + if (hwmode!=2) + { + desc.word[5] = ((uint16_t)(out>>32)) << 16; + desc.word[0] = 0; + desc.word[4] = 0x8001C26; + desc.word[1] = 0; + desc.word[2] = (uint32_t)out; + desc.word[3] = 0x42; + SaSi_SB_AddDescSequence(base, &desc); + } + +return SB_HalWaitDescCompletion(base); +} + +int SBROM_AesCMac(volatile uint32_t* base, int hwmode, uint8_t* buffer, int bufferlen, uint8_t* outbuf) +{ + int ret; + uint64_t iv=0; + /*if (val0) + SaSi_PalDmaMap((uint32_t)&val0, &iv); + if (buffer) + SaSi_PalDmaMap((uint32_t)&buffer, &buf); + if (outbuf) + SaSi_PalDmaMap((uint32_t)&outbuf, &out); + */ + + ret = SBROM_AesCmacDriver(base, hwmode, iv, (uint32_t)buffer, bufferlen, (uint32_t)outbuf); + /*if (val0) + SaSi_PalDmaUnMap(&iv); + if (buffer) + SaSi_PalDmaUnMap(&buf); + if (outbuf) + SaSi_PalDmaUnMap(&out); + */ + return ret; +} +int dxcc(volatile uint32_t* base, int hwmode, uint8_t* key, int keylen, uint8_t* seed, int seedlen, uint8_t* outbuf, int derivelen) +{ + uint8_t* buffer=(uint8_t*)0x200d10; + uint8_t* tmp=(uint8_t*)0x200d00; + uint32_t i; + uint32_t pos=0; + int ret; + if (!hwmode) + return 0xF2000002; + if (!key && (keylen || keylen > 0x20)) + return 0xF2000003; + if (!seed && (seedlen || seedlen > 0x20)) + return 0xF2000003; + memset(buffer,0,0x43); + buffer[pos++]=1; + if (key) + { + mcpy(&buffer[pos++], key, keylen); + pos += keylen; + } + buffer[pos]=0; + if (seed) + { + mcpy(&buffer[pos], seed, seedlen); + pos += seedlen; + } + buffer[pos]=(8*derivelen)&0xFF; + for (i=0;i<((uint32_t)derivelen+15)>>4;i++) + { + buffer[0] = i+1; + ret = SBROM_AesCMac(base,hwmode,buffer,keylen+seedlen+3,tmp); + mcpy(outbuf+(16*i),tmp,0x10); + if (ret) + return ret; + } + return 0; +} + +int cmd_readmem(com_channel_struct *channel, const char* /*xml*/){ + volatile uint64_t addr=0; + uint8_t buffer2[0x20000]={0}; + uint32_t length=0; + uint32_t cmdlen=8; + channel->read_packet_with_profile((uint8_t*)&addr,&cmdlen); + cmdlen=4; + channel->read_packet_with_profile((uint8_t*)&length,&cmdlen); + if (length>0x20000) length=0x20000; + memcpy(buffer2,(volatile uint64_t*)addr,length); + return channel->write_packet_with_profile((uint8_t *)buffer2,length); +} + +int cmd_readregister(com_channel_struct *channel, const char* /*xml*/){ + volatile uint32_t addr=0; + volatile uint32_t dword=0; + uint32_t cmdlen=4; + channel->read_packet_with_profile((uint8_t*)&addr,&cmdlen); + cmdlen=4; + dword=*(volatile uint32_t*)addr; + return channel->write_packet_with_profile((uint8_t *)&dword,cmdlen); +} + +int cmd_writemem(com_channel_struct *channel, const char* /*xml*/){ + volatile uint64_t addr=0; + uint32_t length=0; + uint32_t cmdlen=8; + channel->read_packet_with_profile((uint8_t*)&addr,&cmdlen); + cmdlen=4; + channel->read_packet_with_profile((uint8_t*)&length,&cmdlen); + return channel->read_packet_with_profile((uint8_t *)addr,&length); +} + +int cmd_writeregister(com_channel_struct *channel, const char* /*xml*/){ + volatile uint32_t addr=0; + volatile uint32_t dword=0; + uint32_t cmdlen=4; + channel->read_packet_with_profile((uint8_t*)&addr,&cmdlen); + cmdlen=4; + channel->read_packet_with_profile((uint8_t*)&dword,&cmdlen); + *(volatile uint32_t*)addr=dword; + return 0; +} + +int cmd_ack(com_channel_struct *channel, const char* /*xml*/){ + uint32_t ack=0xA1A2A3A4; + return channel->write_packet_with_profile((uint8_t *)&ack,4); +} + +/*int register_rw(com_channel_struct* channel, const char* xml){ + volatile uint32_t addr=0; + volatile uint32_t dword=0; + uint32_t mode=0; + uint32_t cmdlen=4; + channel->read_packet_with_profile((uint8_t*)&mode,&cmdlen); + cmdlen=4; + if (mode==0) + { + channel->read_packet_with_profile((uint8_t*)&addr,&cmdlen); + cmdlen=4; + dword=*(volatile uint32_t*)addr; + return channel->write_packet_with_profile((uint8_t *)&dword,cmdlen); + } + else if (mode==1) + { + channel->read_packet_with_profile((uint8_t*)&addr,&cmdlen); + cmdlen=4; + channel->read_packet_with_profile((uint8_t*)&dword,&cmdlen); + *(volatile uint32_t*)addr=dword; + } + else if (mode==2) + { + channel->read_packet_with_profile((uint8_t*)&addr,&cmdlen); + run=(void*)*(volatile uint32_t*)addr; + run(); + } + return channel->write_packet_with_profile("OK",3); +}*/ + +void send_to_device(struct ufs_aio_scsi_cmd *cmd, uint32_t lba, int tag) +{ + memset(cmd->cmd_data, 0, MAX_CDB_SIZE); + cmd->lun = UFS_UPIU_RPMB_WLUN; + cmd->tag = tag; + cmd->cmd_len = 0xC; + cmd->dir = DMA_TO_DEVICE; + cmd->exp_len = 0x200; + cmd->attr = 0; + cmd->cmd_data[0] = (uint8_t)UFS_OP_SECURITY_PROTOCOL_OUT; + cmd->cmd_data[1] = (uint8_t)SECURITY_PROTOCOL; + cmd->cmd_data[2] = (uint8_t)0; // specific + cmd->cmd_data[3] = (uint8_t)1; // specific + cmd->cmd_data[4] = 0; // reserved + cmd->cmd_data[5] = 0; // reserved + cmd->cmd_data[6] = (uint8_t)((lba >> 24) & 0xff); + cmd->cmd_data[7] = (uint8_t)((lba >> 16) & 0xff); + cmd->cmd_data[8] = (uint8_t)((lba >> 8) & 0xff); + cmd->cmd_data[9] = (uint8_t)(lba & 0xff); + cmd->cmd_data[0xA] = 0; // reserved + cmd->cmd_data[0xB] = (uint8_t)0; // control +} +void read_from_device(struct ufs_aio_scsi_cmd *cmd, uint32_t lba, uint32_t tag) +{ + memset(cmd->cmd_data, 0, MAX_CDB_SIZE); + cmd->cmd_len = 0xC; + cmd->lun = UFS_UPIU_RPMB_WLUN; + cmd->tag = tag; + cmd->exp_len = 0x200; + cmd->dir = DMA_FROM_DEVICE; + cmd->attr = 0; + cmd->cmd_data[0] = (uint8_t)UFS_OP_SECURITY_PROTOCOL_IN; + cmd->cmd_data[1] = (uint8_t)SECURITY_PROTOCOL; + cmd->cmd_data[2] = (uint8_t)0; // specific + cmd->cmd_data[3] = (uint8_t)1; // specific + cmd->cmd_data[4] = 0; // reserved + cmd->cmd_data[5] = 0; // reserved + cmd->cmd_data[6] = (uint8_t)((lba >> 24) & 0xff); + cmd->cmd_data[7] = (uint8_t)((lba >> 16) & 0xff); + cmd->cmd_data[8] = (uint8_t)((lba >> 8) & 0xff); + cmd->cmd_data[9] = (uint8_t)(lba & 0xff); + cmd->cmd_data[0xA] = 0; // reserved + cmd->cmd_data[0xB] = (uint8_t)0; // control +} + +int rpmb_key_generate(com_channel_struct *channel, uint8_t* rpmb_frame) +{ + uint8_t hash[34]={0}; + uint32_t rpmbiv[3]; + uint16_t res=__builtin_bswap16(*(uint16_t *)(rpmb_frame + RPMB_RES_BEG)); + if (res) + { + channel->write_packet_with_profile((uint8_t*)&res,2); + return -1; + } else + { + hmac_sha256(hash, rpmb_frame + RPMB_DATA_BEG, 512 - RPMB_DATA_BEG, (const uint8_t*)rpmb_key, 32); + if (!memcmp(rpmb_frame + RPMB_MAC_BEG, hash, 32)) + { + res=0; + } + else + { + //channel->write_packet_with_profile(rpmb_frame,RPMB_DATA_BEG); + //channel->write_packet_with_profile(hash,0x20); + //channel->write_packet_with_profile(rpmb_key,0x20); + memcpy((void*)rpmbiv, "RPMB KEYSASI", sizeof(rpmbiv)); + *(volatile uint32_t*)0x1000108C = 0x18000000; + res=dxcc((volatile uint32_t*)0x10210000, 1, (uint8_t*)rpmbiv, 8, (uint8_t*)&rpmbiv[2], 4, rpmb_key, 32); + if (res!=0) return res; + *(volatile uint32_t*)0x10001088 = 0x18000000; + hmac_sha256(hash, rpmb_frame + RPMB_DATA_BEG, 512 - RPMB_DATA_BEG, (const uint8_t*)rpmb_key, sizeof(rpmb_key)); + if ( !memcmp(rpmb_frame + RPMB_MAC_BEG, hash, 32) ) + { + res=0; + } + else { + memcpy(rpmb_key, RPMB_CUST_KEY, sizeof(rpmb_key)); + hmac_sha256(hash, rpmb_frame + RPMB_DATA_BEG, 512 - RPMB_DATA_BEG, (const uint8_t*)rpmb_key, sizeof(rpmb_key)); + if ( !memcmp(rpmb_frame + RPMB_MAC_BEG, hash, 32) ) + { + res=0; + } + else + { + res = -2; + } + } + } + } + channel->write_packet_with_profile(rpmb_key,0x20); + channel->write_packet_with_profile(rpmb_frame,0x200); + channel->write_packet_with_profile(hash,32); + return res; +} + +int cmd_ufs_read_rpmb(com_channel_struct *channel, const char* /*xml*/) +{ + uint16_t buffer[0x100]; + struct ufs_aio_scsi_cmd cmd; + uint32_t tag; + uint32_t res; + uint32_t size = 4; + uint32_t address = 0; + channel->read_packet_with_profile((uint8_t*)&address, &size); + if (!ufshcd_get_free_tag((struct ufs_hba *)g_ufs_hba, &tag)) + { + res=-1; + channel->write_packet_with_profile((uint8_t*)&res, 2); + return 0; + } + cmd.data_buf = buffer; + memset(buffer, 0, sizeof(buffer)); + buffer[RPMB_ADDR_BEG/2] = __builtin_bswap16(address); + buffer[RPMB_BLKS_BEG/2] = 0x100; + buffer[RPMB_TYPE_BEG/2] = __builtin_bswap16(RPMB_READ_DATA); + send_to_device(&cmd, 0x200, tag); + ufshcd_queuecommand((struct ufs_hba *)g_ufs_hba, &cmd); + memset(buffer, 0, sizeof(buffer)); + read_from_device(&cmd, 0x200, tag); + ufshcd_queuecommand((struct ufs_hba *)g_ufs_hba, &cmd); + res = __builtin_bswap16(buffer[RPMB_RES_BEG/2]); + channel->write_packet_with_profile((uint8_t*)&res, 2); + if ( !buffer[RPMB_RES_BEG/2] ) + channel->write_packet_with_profile((uint8_t*)&buffer[RPMB_DATA_BEG/2], 0x100); + ufshcd_put_tag((struct ufs_hba *)g_ufs_hba, tag); + return 0; +} + +int cmd_ufs_write_rpmb(com_channel_struct *channel, const char* /*xml*/) +{ + uint16_t status; + uint16_t buffer[256]; + struct ufs_aio_scsi_cmd cmd; + uint32_t tag; + + uint32_t size = 4; + uint32_t address = 0; + channel->read_packet_with_profile((uint8_t*)&address, &size); + ufshcd_get_free_tag((struct ufs_hba *)g_ufs_hba, &tag); + cmd.data_buf = buffer; + memset(buffer, 0, sizeof(buffer)); + buffer[RPMB_TYPE_BEG/2] = 0x200; + send_to_device(&cmd, 0x200, tag); + ufshcd_queuecommand((struct ufs_hba *)g_ufs_hba, &cmd); + memset(buffer, 0, sizeof(buffer)); + read_from_device(&cmd, 0x200, tag); + ufshcd_queuecommand((struct ufs_hba *)g_ufs_hba, &cmd); + size = 0x100; + channel->read_packet_with_profile((uint8_t*)&buffer[RPMB_DATA_BEG/2], &size); + buffer[RPMB_ADDR_BEG/2] = __builtin_bswap16(address); + buffer[RPMB_BLKS_BEG/2] = 0x100; + buffer[RPMB_RES_BEG/2] = 0; + buffer[RPMB_TYPE_BEG/2] = __builtin_bswap16(RPMB_WRITE_DATA); + hmac_sha256((uint8_t*)&buffer[RPMB_MAC_BEG/2], (uint8_t*)&buffer[RPMB_DATA_BEG/2], 0x200 - RPMB_DATA_BEG, (const uint8_t*)rpmb_key, sizeof(rpmb_key)); + send_to_device(&cmd, 0x200, tag); + ufshcd_queuecommand((struct ufs_hba *)g_ufs_hba, &cmd); + memset(buffer, 0, sizeof(buffer)); + buffer[RPMB_TYPE_BEG/2] = __builtin_bswap16(RPMB_RESULT_READ); + send_to_device(&cmd, 0x200, tag); + ufshcd_queuecommand((struct ufs_hba *)g_ufs_hba, &cmd); + memset(buffer, 0, sizeof(buffer)); + read_from_device(&cmd, 0x200, tag); + ufshcd_queuecommand((struct ufs_hba *)g_ufs_hba, &cmd); + status = __builtin_bswap16(buffer[RPMB_RES_BEG/2]); + channel->write_packet_with_profile((uint8_t*)&status, 2); + ufshcd_put_tag((struct ufs_hba *)g_ufs_hba, tag); + return 0; +} + +int cmd_ufs_init(com_channel_struct *channel, const char* /*xml*/) +{ + uint16_t buffer[0x200]={0}; + struct ufs_aio_scsi_cmd cmd; + uint32_t tag; + ufshcd_get_free_tag((struct ufs_hba *)g_ufs_hba, &tag); + cmd.data_buf = buffer; + memset(buffer, 0, sizeof(buffer)); + buffer[RPMB_TYPE_BEG/2] = __builtin_bswap16(RPMB_GET_WRITE_COUNTER); + send_to_device(&cmd, 0x200, tag); + ufshcd_queuecommand((struct ufs_hba *)g_ufs_hba, &cmd); + memset(buffer, 0, sizeof(buffer)); + read_from_device(&cmd, 0x200, tag); + ufshcd_queuecommand((struct ufs_hba *)g_ufs_hba, &cmd); + ufshcd_put_tag((struct ufs_hba *)g_ufs_hba, tag); + return rpmb_key_generate(channel, (uint8_t*)buffer); +} + +int cmd_set_rpmbkey(com_channel_struct *channel, const char* /*xml*/) +{ + uint32_t size = 0x20; + channel->read_packet_with_profile((uint8_t*)&rpmb_key[0], &size); + channel->write_packet_with_profile(rpmb_key,0x20); + return 0; +} + +int cmd_mmc_read_rpmb(com_channel_struct *channel, const char* /*xml*/) +{ + uint8_t rpmb_frame[0x200]={0}; + struct mmc_card* card = (struct mmc_card*)mmc_get_card(0); + mmc_set_part_config(card, (card->raw_ext_csd[EXT_CSD_PART_CFG] & 0xF8) | 3); + uint32_t size = 4; + uint32_t address = 0; + channel->read_packet_with_profile((uint8_t*)&address, &size); + memset(rpmb_frame, 0, sizeof(rpmb_frame)); + *(uint16_t*)(rpmb_frame + RPMB_ADDR_BEG) = __builtin_bswap16((uint16_t)address&0xFFFF); + *(uint16_t*)(rpmb_frame + RPMB_TYPE_BEG) = __builtin_bswap16(RPMB_READ_DATA); + + mmc_rpmb_send_command((struct mmc_card *)card->host, rpmb_frame, 1, RPMB_READ_DATA, RPMB_REQ); + mmc_rpmb_send_command((struct mmc_card *)card->host, rpmb_frame, 1, RPMB_READ_DATA, RPMB_RESP); + uint16_t res = __builtin_bswap16(*(uint16_t*)(rpmb_frame + RPMB_RES_BEG)); + channel->write_packet_with_profile((uint8_t *)&res, 2); + if (!*(uint16_t*)(rpmb_frame + RPMB_RES_BEG)) + channel->write_packet_with_profile(rpmb_frame + RPMB_DATA_BEG, 0x100); + mmc_set_part_config(card, card->raw_ext_csd[EXT_CSD_PART_CFG] & 0xF8); + return 0; +} + +int cmd_mmc_write_rpmb(com_channel_struct *channel, const char* /*xml*/) +{ + uint8_t rpmb_frame[0x200]={0}; + struct mmc_card* card = (struct mmc_card*)mmc_get_card(0); + mmc_set_part_config(card, (card->raw_ext_csd[EXT_CSD_PART_CFG] & 0xF8) | 3); + memset(rpmb_frame, 0, sizeof(rpmb_frame)); + *(uint16_t*)(rpmb_frame + RPMB_TYPE_BEG) = __builtin_bswap16(RPMB_GET_WRITE_COUNTER); + mmc_rpmb_send_command((struct mmc_card *)card->host, rpmb_frame, 1, RPMB_GET_WRITE_COUNTER, RPMB_REQ); + mmc_rpmb_send_command((struct mmc_card *)card->host, rpmb_frame, 1, RPMB_GET_WRITE_COUNTER, RPMB_RESP); + uint32_t size = 4; + uint16_t address = 0; + channel->read_packet_with_profile((uint8_t*)&address, &size); + size = 0x100; + channel->read_packet_with_profile(rpmb_frame + RPMB_DATA_BEG, &size); + *(uint16_t*)(rpmb_frame +RPMB_ADDR_BEG) = __builtin_bswap16(address); + *(uint16_t*)(rpmb_frame +RPMB_BLKS_BEG) = 0x100; + *(uint16_t*)(rpmb_frame +RPMB_RES_BEG) = 0; + *(uint16_t*)(rpmb_frame +RPMB_TYPE_BEG) = __builtin_bswap16(RPMB_WRITE_DATA); + hmac_sha256(rpmb_frame + RPMB_MAC_BEG, rpmb_frame + RPMB_DATA_BEG, 0x200 - RPMB_DATA_BEG, (const uint8_t*)rpmb_key, 0x20); + mmc_rpmb_send_command((struct mmc_card *)card->host, rpmb_frame, 1, RPMB_WRITE_DATA, RPMB_REQ); + memset(rpmb_frame, 0, sizeof(rpmb_frame)); + *(uint16_t*)(rpmb_frame +RPMB_TYPE_BEG) = __builtin_bswap16(RPMB_RESULT_READ); + mmc_rpmb_send_command((struct mmc_card *)card->host, rpmb_frame, 1, RPMB_RESULT_READ, RPMB_REQ); + mmc_rpmb_send_command((struct mmc_card *)card->host, rpmb_frame, 1, RPMB_RESULT_READ, RPMB_RESP); + uint16_t res = __builtin_bswap16(*(uint16_t*)(rpmb_frame + RPMB_RES_BEG)); + channel->write_packet_with_profile((uint8_t *)&res, 2); + mmc_set_part_config(card, card->raw_ext_csd[EXT_CSD_PART_CFG] & 0xF8); + return 0; +} + +int cmd_mmc_init(com_channel_struct *channel, const char* /*xml*/) +{ + uint8_t rpmb_frame[0x200]={0}; + struct mmc_card* card = (struct mmc_card*)mmc_get_card(0); + mmc_set_part_config(card, (card->raw_ext_csd[EXT_CSD_PART_CFG] & 0xF8) | 3); + memset(rpmb_frame, 0, sizeof(rpmb_frame)); + *(uint16_t*)(rpmb_frame + RPMB_TYPE_BEG) = __builtin_bswap16(RPMB_GET_WRITE_COUNTER); + mmc_rpmb_send_command((struct mmc_card *)card->host, rpmb_frame, 1, RPMB_GET_WRITE_COUNTER, RPMB_REQ); + mmc_rpmb_send_command((struct mmc_card *)card->host, rpmb_frame, 1, RPMB_GET_WRITE_COUNTER, RPMB_RESP); + mmc_set_part_config(card, card->raw_ext_csd[EXT_CSD_PART_CFG] & 0xF8); + return rpmb_key_generate(channel, rpmb_frame); +} + +__attribute__ ((section(".text.main"))) int main() { + cache_init(3); + register_xml_cmd("CMD:CUSTOMACK","1",(void*)cmd_ack); + register_xml_cmd("CMD:CUSTOMREGW","1",(void*)cmd_writeregister); + register_xml_cmd("CMD:CUSTOMREGR","1",(void*)cmd_readregister); + register_xml_cmd("CMD:CUSTOMMEMR","1",(void*)cmd_readmem); + register_xml_cmd("CMD:CUSTOMMEMW","1",(void*)cmd_writemem); + register_xml_cmd("CMD:CUSTOMMMCINIT","1",(void*)cmd_mmc_init); + register_xml_cmd("CMD:CUSTOMRPMBR","1",(void*)cmd_mmc_read_rpmb); + register_xml_cmd("CMD:CUSTOMRPMBW","1",(void*)cmd_mmc_write_rpmb); + register_xml_cmd("CMD:CUSTOMUFSINIT","1",(void*)cmd_ufs_init); + register_xml_cmd("CMD:CUSTOMURPMBR","1",(void*)cmd_ufs_read_rpmb); + register_xml_cmd("CMD:CUSTOMURPMBW","1",(void*)cmd_ufs_write_rpmb); + register_xml_cmd("CMD:CUSTOMRPMBKEY","1",(void*)cmd_set_rpmbkey); + //register_xml_cmd("CUSTOM","1",(void*)register_rw); + cache_close(1); + return 0; +} \ No newline at end of file diff --git a/mtkclient/src/da_xml/readme.build b/mtkclient/src/da_xml/readme.build new file mode 100755 index 0000000..6d491cf --- /dev/null +++ b/mtkclient/src/da_xml/readme.build @@ -0,0 +1,18 @@ +# Info +- All binaries will end up in ../../payloads + +# Release + +``` +make +``` + +# Debug binaries with uart output enabled + +``` +make debug +``` + +# Run tests (emulates payloads via emulate_payload.py) + +./runtest.sh \ No newline at end of file diff --git a/mtkclient/src/dastage/Makefile b/mtkclient/src/dastage/Makefile old mode 100644 new mode 100755 diff --git a/mtkclient/src/dastage/crypto/hmac-sha256.c b/mtkclient/src/dastage/crypto/hmac-sha256.c old mode 100644 new mode 100755 diff --git a/mtkclient/src/dastage/crypto/hmac-sha256.h b/mtkclient/src/dastage/crypto/hmac-sha256.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/dastage/crypto/rotate-bits.h b/mtkclient/src/dastage/crypto/rotate-bits.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/dastage/crypto/sha256.c b/mtkclient/src/dastage/crypto/sha256.c old mode 100644 new mode 100755 diff --git a/mtkclient/src/dastage/crypto/sha256.h b/mtkclient/src/dastage/crypto/sha256.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/dastage/drivers/core.h b/mtkclient/src/dastage/drivers/core.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/dastage/drivers/errno-base.h b/mtkclient/src/dastage/drivers/errno-base.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/dastage/drivers/errno.h b/mtkclient/src/dastage/drivers/errno.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/dastage/drivers/mmc.c b/mtkclient/src/dastage/drivers/mmc.c old mode 100644 new mode 100755 diff --git a/mtkclient/src/dastage/drivers/mmc.h b/mtkclient/src/dastage/drivers/mmc.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/dastage/drivers/mt_sd.h b/mtkclient/src/dastage/drivers/mt_sd.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/dastage/drivers/read.h b/mtkclient/src/dastage/drivers/read.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/dastage/drivers/sd.c b/mtkclient/src/dastage/drivers/sd.c old mode 100644 new mode 100755 diff --git a/mtkclient/src/dastage/drivers/sd.h b/mtkclient/src/dastage/drivers/sd.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/dastage/drivers/sdio.h b/mtkclient/src/dastage/drivers/sdio.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/dastage/drivers/sync_write.h b/mtkclient/src/dastage/drivers/sync_write.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/dastage/drivers/types.h b/mtkclient/src/dastage/drivers/types.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/dastage/libc.c b/mtkclient/src/dastage/libc.c old mode 100644 new mode 100755 diff --git a/mtkclient/src/dastage/libc.h b/mtkclient/src/dastage/libc.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/dastage/pl.c b/mtkclient/src/dastage/pl.c old mode 100644 new mode 100755 diff --git a/mtkclient/src/dastage/pl.ld b/mtkclient/src/dastage/pl.ld old mode 100644 new mode 100755 diff --git a/mtkclient/src/dastage/printf.c b/mtkclient/src/dastage/printf.c old mode 100644 new mode 100755 diff --git a/mtkclient/src/dastage/printf.h b/mtkclient/src/dastage/printf.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/dastage/start.S b/mtkclient/src/dastage/start.S old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/common/loader.ld b/mtkclient/src/stage1/common/loader.ld old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/generic/generic_loader.c b/mtkclient/src/stage1/generic/generic_loader.c old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt2601.h b/mtkclient/src/stage1/targets/mt2601.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6261.h b/mtkclient/src/stage1/targets/mt6261.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6572.h b/mtkclient/src/stage1/targets/mt6572.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6580.h b/mtkclient/src/stage1/targets/mt6580.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6582.h b/mtkclient/src/stage1/targets/mt6582.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6592.h b/mtkclient/src/stage1/targets/mt6592.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6595.h b/mtkclient/src/stage1/targets/mt6595.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6735.h b/mtkclient/src/stage1/targets/mt6735.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6737.h b/mtkclient/src/stage1/targets/mt6737.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6739.h b/mtkclient/src/stage1/targets/mt6739.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6752.h b/mtkclient/src/stage1/targets/mt6752.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6753.h b/mtkclient/src/stage1/targets/mt6753.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6755.h b/mtkclient/src/stage1/targets/mt6755.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6757.h b/mtkclient/src/stage1/targets/mt6757.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6758.h b/mtkclient/src/stage1/targets/mt6758.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6761.h b/mtkclient/src/stage1/targets/mt6761.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6763.h b/mtkclient/src/stage1/targets/mt6763.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6765.h b/mtkclient/src/stage1/targets/mt6765.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6768.h b/mtkclient/src/stage1/targets/mt6768.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6771.h b/mtkclient/src/stage1/targets/mt6771.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6779.h b/mtkclient/src/stage1/targets/mt6779.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6781.h b/mtkclient/src/stage1/targets/mt6781.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6785.h b/mtkclient/src/stage1/targets/mt6785.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6795.h b/mtkclient/src/stage1/targets/mt6795.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6797.h b/mtkclient/src/stage1/targets/mt6797.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6799.h b/mtkclient/src/stage1/targets/mt6799.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6833.h b/mtkclient/src/stage1/targets/mt6833.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6853.h b/mtkclient/src/stage1/targets/mt6853.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6873.h b/mtkclient/src/stage1/targets/mt6873.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6877.h b/mtkclient/src/stage1/targets/mt6877.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6885.h b/mtkclient/src/stage1/targets/mt6885.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt6893.h b/mtkclient/src/stage1/targets/mt6893.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt8127.h b/mtkclient/src/stage1/targets/mt8127.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt8163.h b/mtkclient/src/stage1/targets/mt8163.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt8167.h b/mtkclient/src/stage1/targets/mt8167.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt8168.h b/mtkclient/src/stage1/targets/mt8168.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt8173.h b/mtkclient/src/stage1/targets/mt8173.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt8176.h b/mtkclient/src/stage1/targets/mt8176.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt8512.h b/mtkclient/src/stage1/targets/mt8512.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt8590.h b/mtkclient/src/stage1/targets/mt8590.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage1/targets/mt8695.h b/mtkclient/src/stage1/targets/mt8695.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/Makefile b/mtkclient/src/stage2/Makefile old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/common/io.h b/mtkclient/src/stage2/common/io.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/common/libc.c b/mtkclient/src/stage2/common/libc.c old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/common/libc.h b/mtkclient/src/stage2/common/libc.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/common/printf.c b/mtkclient/src/stage2/common/printf.c old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/common/printf.h b/mtkclient/src/stage2/common/printf.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/common/stage2.c b/mtkclient/src/stage2/common/stage2.c old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/common/stage2.ld b/mtkclient/src/stage2/common/stage2.ld old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/common/start.S b/mtkclient/src/stage2/common/start.S old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/common/tools.c b/mtkclient/src/stage2/common/tools.c old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/common/tools.h b/mtkclient/src/stage2/common/tools.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/crypto/hmac-sha256.c b/mtkclient/src/stage2/crypto/hmac-sha256.c old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/crypto/hmac-sha256.h b/mtkclient/src/stage2/crypto/hmac-sha256.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/crypto/rotate-bits.h b/mtkclient/src/stage2/crypto/rotate-bits.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/crypto/sha256.c b/mtkclient/src/stage2/crypto/sha256.c old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/crypto/sha256.h b/mtkclient/src/stage2/crypto/sha256.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/drivers/core.h b/mtkclient/src/stage2/drivers/core.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/drivers/errno-base.h b/mtkclient/src/stage2/drivers/errno-base.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/drivers/errno.h b/mtkclient/src/stage2/drivers/errno.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/drivers/mmc.c b/mtkclient/src/stage2/drivers/mmc.c old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/drivers/mmc.h b/mtkclient/src/stage2/drivers/mmc.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/drivers/mt_sd.h b/mtkclient/src/stage2/drivers/mt_sd.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/drivers/read.h b/mtkclient/src/stage2/drivers/read.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/drivers/sd.c b/mtkclient/src/stage2/drivers/sd.c old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/drivers/sd.h b/mtkclient/src/stage2/drivers/sd.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/drivers/sdio.h b/mtkclient/src/stage2/drivers/sdio.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/drivers/sleepy.c b/mtkclient/src/stage2/drivers/sleepy.c old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/drivers/sleepy.h b/mtkclient/src/stage2/drivers/sleepy.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/drivers/sync_write.h b/mtkclient/src/stage2/drivers/sync_write.h old mode 100644 new mode 100755 diff --git a/mtkclient/src/stage2/drivers/types.h b/mtkclient/src/stage2/drivers/types.h old mode 100644 new mode 100755 diff --git a/pyproject.toml b/pyproject.toml index 37c745b..37d4e7c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,7 @@ maintainers = [ ] readme = "README.md" license = {file = "LICENSE"} -version = "1.6.3" +version = "2.0.0" requires-python = ">= 3.8" dependencies = [ "pyusb",