From 2564f24e4a087f8a66775a07947920a40d2d2dd1 Mon Sep 17 00:00:00 2001 From: Strong Recommend Date: Wed, 3 Jan 2024 19:45:32 +0700 Subject: [PATCH] V25F --- HuaweiUnlock/DIAGNOS/DataS.cs | 77 +++ HuaweiUnlock/English.ini | 29 +- HuaweiUnlock/FlashTool/FlashToolQClegacy.cs | 46 +- HuaweiUnlock/HuaweiUnlock.csproj | 2 +- HuaweiUnlock/LangProc.cs | 258 +--------- HuaweiUnlock/Russian.ini | 26 +- HuaweiUnlock/TOOLS/Fastboot.cs | 2 +- HuaweiUnlock/TOOLS/HISI.cs | 73 ++- HuaweiUnlock/TOOLS/UpdateApp.cs | 97 ++-- HuaweiUnlock/Window.Designer.cs | 512 +++++++++----------- HuaweiUnlock/Window.cs | 47 +- HuaweiUnlock/Window.resx | 403 ++++----------- 12 files changed, 576 insertions(+), 996 deletions(-) diff --git a/HuaweiUnlock/DIAGNOS/DataS.cs b/HuaweiUnlock/DIAGNOS/DataS.cs index 7767d7c..93a09de 100644 --- a/HuaweiUnlock/DIAGNOS/DataS.cs +++ b/HuaweiUnlock/DIAGNOS/DataS.cs @@ -62,5 +62,82 @@ public static string GetStatusStr(byte[] buff) if (buff[0] == 19 || buff[0] == 21) return "[ERROR] Acces Denied or Command Wrong"; return "[INFO] Success"; } + public static string IdentifyCPUbyID(string id) + { + switch (id) + { + case "009F00E1": return "APQ8056"; + case "009710E1": return "APQ8056"; + case "007190E1": return "APQ8056"; + case "009830E1": return "APQ8076"; + case "009D00E1": return "APQ8076"; + case "009000E1": return "APQ8084"; + case "009010E1": return "APQ8084"; + case "009300E1": return "APQ8092"; + case "009630E1": return "APQ8092"; + case "008000E1": return "MSM8226"; + case "009150E1": return "MSM8226"; + case "007210E1": return "MSM8930"; + case "0072C0E1": return "MSM8930"; + case "0090B0E1": return "MSM8939"; + case "050E10E1": return "MSM8939"; + case "000460E1": return "MSM8953"; + case "F00460E1": return "MSM8953"; + case "009700E1": return "MSM8956"; + case "009B00E1": return "MSM8956"; + case "007B00E1": return "MSM8974"; + case "007B20E1": return "MSM8974"; + case "007B40E1": return "MSM8974AB"; + case "007BA0E1": return "MSM8974AB"; + case "006B10E1": return "MSM8974AC"; + case "007B60E1": return "MSM8974AC"; + case "009640E1": return "MSM8992"; + case "009690E1": return "MSM8992"; + case "000630E1": return "MSM8996AU"; + case "0006F0E1": return "MSM8996AU"; + case "1006F0E1": return "MSM8996AU"; + case "4006F0E1": return "MSM8996AU"; + case "30020000": return "MSM8998"; + case "0005E0E1": return "MSM8998"; + case "00FFF0E1": return "MSM8998"; + case "000020E1": return "MSM8998"; + case "30070000": return "SDM630"; + case "0007E0E1": return "SDM630"; + case "000AC0E1": return "SDM636"; + case "000CC0E1": return "SDM636"; + case "F00CC0E1": return "SDM636"; + case "30060000": return "SDM660"; + case "0008C0E1": return "SDM660"; + case "0009C0E1": return "SDM660"; + case "0007D0E1": return "SDM660"; + case "001080E1": return "SDM712"; + case "60040000": return "SDM712"; + case "60000000": return "SDM845"; + case "0008B0E1": return "SDM845"; + //MAIN HUAWEI + case "0x009600e1": return "MSM8909"; + case "0x000460e1": return "MSM8953"; + case "0x0091b0e1": return "MSM8929"; + case "0x006220e1": return "MSM7227A"; + case "0x009470e1": return "MSM8996"; + case "0x009900e1": return "MSM8976"; + case "0x009b00e1": return "MSM8976"; + case "0x008A30E1": return "MSM8930"; + case "0x0004f0e1": return "MSM8937"; + case "0x0090b0e1": return "MSM8936"; + case "0x009180e1": return "MSM8928"; + case "0x008140e1": return "MSM8x10"; + case "0x008050e2": return "MSM8926"; + case "0x0005f0e1": return "MSM8996"; + case "0x007B80E1": return "MSM8974"; + case "0x009400e1": return "MSM8994"; + case "0x008150e1": return "MSM8x10"; + case "0x008050e1": return "MSM8926"; + case "0x000560e1": return "MSM8917"; + case "0x007050e1": return "MSM8916"; + case "0x008110e1": return "MSM8210"; + default: return "Unknown"; + } + } } } diff --git a/HuaweiUnlock/English.ini b/HuaweiUnlock/English.ini index d60030d..41e4e80 100644 --- a/HuaweiUnlock/English.ini +++ b/HuaweiUnlock/English.ini @@ -14,7 +14,7 @@ MAIN1,IT'S FREE NO NEED PAY FOR THIS MAIN2,Author: moongamer MAIN3,This tool uses Board bootloader! Tutr,Connect device via EDL (9008 mode) -Tutr2,1. Checked Raw Image -> Select DUMP.bin/n2. If Unchecked Raw Image -> Select Folder with rawprogram0.xml / patch0.xml and firmware data./n4. For easy repair gpt. Select gpt_both0.bin and flash it as Raw Image file. +Tutr2,1. Checked Raw Image -> Select DUMP.bin/n2. If Unchecked Raw Image -> Select any file in firmware directory. Xmls will be filled automatically./n4. For easy repair gpt. Select gpt_both0.bin and flash it as Raw Image file. SMAIN1,Qualcomm Huawei Flash Tool + Diag (c) SMAIN2,This tool can Flash Firmware SMAIN3,Select Files @@ -25,7 +25,6 @@ NoFirmPath,Please select path to firmware! PrcsUnl,Started unlock process DPort,Device Disconnected and unavailable now! CPort,Connected PORT: -CLabel,Connect Your Device SelDev,SELECT DEVICE FIRST DownloadFor,Downloading Unlock Files for: SelPathToFGB,Select Path To Firmware: @@ -37,11 +36,12 @@ DdBtnE,Unlock Dev FlBtn,Flash Firmware UnpBtn,Extract Firmware FlashUnpBtn,Extract and Flash -DuBtn,Dump Firmware +DuBtn,Dump Firmware Memory RdGPTBtn,Read GPT -WrRRGPTXMLBtn,Read from file rawprogram0.xml -RrRRGPTXMLBtn,Read from device rawprogram0.xml +WrRRGPTXMLBtn,Read from GPT-XXXXXX.bin File +RrRRGPTXMLBtn,Read from GPT of device RrGPTXMLE,Error while writing rawprogram0.xml: +RrGPTXMLSPR,Creating rawprogram0.xml...: RrGPTXMLS,Successfull written rawprogram0.xml: ReadPA,Read Partition WritePA,Write Partition @@ -81,8 +81,11 @@ Unlocker,Trying to unlock: Eraser,Trying to Erase: EraserD,Trying to Erase UserData! Writer,Trying to Write: +MarkUpGPT,Markup partition 0 as bootable EwRGPT,Failed to write gpt: +EwRGPT2,Failed to Markup partition 0 as bootable. Maybe EMMC broken IwRGPT,GPT Successfull rewritten! +IwRGPT2,GPT Set active partition 0 successfully! ErPS,Erasing Partition: EwPS,Partition Writing please wait: EdPS,Started Partition Read: @@ -113,7 +116,7 @@ ERR_ReadGPTFile,you selected wrong or unsupported GPT.bin. ERR_ReadGPTFile2,please select path to save .xml or to GPT_####0.BIN. SUCC_ReadGPT,GPT READED! SUCC_FrpUnlock,FRP should be unlocked, no matter what is showed in fastboot! -sl,Selected: +PartSled,Selected: Action,What to do with: AreY,Вы хотите стереть этот раздел? RbQC1,Reboot To 3-POINT Recovery Sucessfull! @@ -132,12 +135,10 @@ TrRb,Trying to reboot to: HomeTag,Home BackupRestoreTag,Backup/restore BackupRestoreTagSimpl,Backup/Restore -DiagTag,Diag tool DiagTagRead,Read INFO DiagTagUpgradeMode,Upgrade Mode DiagTagReboot,Reboot or (board->FB) DiagTagFactoryReset,Factory Reset -DiagTagSimpl,Diagnostic UnlockTag,Unlock QCOM UnlockSimpl,Unlock QCOM UnlockTagHISI,Unlock KIRIN @@ -155,7 +156,6 @@ ModelTag,Model: BuildIdTag,Build number: FBLOCK-Tag,FBLOCK state: FBLOCKSetTag,Failed to set the FBLOCK prop. using the alternative method. -KEYTag,USERLOCK KEY: WritingPropTAG,Writing prop: WarnLarge,Reading file... It can take 5 or more minutes! WarnUnl,Unlocked kernel for this device not compiled or not used. Your device may be partitionaly unlocked! @@ -163,7 +163,12 @@ WarnUnl,Unlocked kernel for this device not compiled or not used. Your device ma HISISelectCpu,Please select CPU HISIReadFB,Read Info (FASTBOOT) HISIWriteKirinFB,Write USERLOCK(FASTBOOT) -HISIWriteKirinBL,Read Unlock KEY from Device(TESTPOINT) -HISIWriteKirinBLD,Download unlock package of device +HISIWriteKirinBL,Read/Write Unlock KEY from Device(TESTPOINT) +HISIWriteKirinBLD,Download unlock package of device(TESTPOINT) HISIWriteKirinFBL,Write FBLOCK state -HISIInfoS,*** FBLOCK is locked! *** \n In this FBLOCK State Not Allowed To do this \ No newline at end of file +HISIInfoS,*** FBLOCK is locked! ***\nIn this FBLOCK State Not Allowed To do this +HISINewKey,[FASTBOOT] New USERLOCK key: +HISIOldKey,[FASTBOOT] Old USERLOCK code: +HISINewKeyErr,[Fastboot] Error while Writting/Reading Unlock code +HISINewKeyErr2,[Fastboot] Trying a second method... +HISIVerifyHash,Verifying images... \ No newline at end of file diff --git a/HuaweiUnlock/FlashTool/FlashToolQClegacy.cs b/HuaweiUnlock/FlashTool/FlashToolQClegacy.cs index d52c522..1b348b4 100644 --- a/HuaweiUnlock/FlashTool/FlashToolQClegacy.cs +++ b/HuaweiUnlock/FlashTool/FlashToolQClegacy.cs @@ -207,14 +207,28 @@ public static bool UnlockFrp(string loader) return false; } } + public static async void FromEDLReboot() + { + Progress(2); + string command = "Tools\\fh_loader.exe"; + string subcommandr = "--port=\\\\.\\" + DeviceInfo.Port.ComName + " --reset --showpercentagecomplete --zlpawarehost=1 --noprompt --noprompt"; + //final set active + LOG(0, "MarkUpGPT"); + if (!SyncRUN(command, subcommandr)) + LOG(2, "EwRGPT2"); + else + LOG(0, "IwRGPT2"); + } public static async void FlashPartsXml(string rawxml, string patchxml, string loader, string path) { CurTask = Task.Run(() => { Progress(2); string command = "Tools\\fh_loader.exe"; - string subcommand = "--port=\\\\.\\" + DeviceInfo.Port.ComName + " --sendxml=" + '"' + rawxml + '"' + " --search_path=" + '"' + path + '"'; - string subcommandp = "--port=\\\\.\\" + DeviceInfo.Port.ComName + " --sendxml=" + '"' + patchxml + '"' + " --search_path=" + '"' + path + '"'; + string subcommandr = "--port=\\\\.\\" + DeviceInfo.Port.ComName + " --showpercentagecomplete --zlpawarehost=1 --noprompt --reset"; + string subcommand = "--port=\\\\.\\" + DeviceInfo.Port.ComName + " --showpercentagecomplete --zlpawarehost=1 --noprompt --sendxml=" + '"' + rawxml + '"' + " --search_path=" + '"' + path + '"'; + string subcommandp = "--port=\\\\.\\" + DeviceInfo.Port.ComName + " --showpercentagecomplete --zlpawarehost=1 --noprompt --sendxml=" + '"' + patchxml + '"' + " --search_path=" + '"' + path + '"'; + string subcommandf = "--port=\\\\.\\" + DeviceInfo.Port.ComName + " --showpercentagecomplete --zlpawarehost=1 --noprompt --setactivepartition=0"; if (debug) LOG(-1, "===Flash Partitions XML===" + newline + newline); if (!LoadLoader(loader)) { DeviceInfo.loadedhose = false; LOG(2, "Fail"); CurTask.Dispose(); } try @@ -222,27 +236,21 @@ public static async void FlashPartsXml(string rawxml, string patchxml, string lo Progress(0); LOG(0, "Flasher", path); LOG(0, "Info: ", patchxml); - if (!String.IsNullOrEmpty(patchxml)) + if (!String.IsNullOrEmpty(patchxml) & File.Exists(patchxml)) { - if (!File.Exists(patchxml)) - LOG(1, "NotFoundF", patchxml); - else if (!SyncRUN(command, subcommandp)) LOG(2, "EwRGPT", patchxml); - else - LOG(0, "IwRGPT"); - } - LOG(0, "Info", rawxml); - if (!String.IsNullOrEmpty(rawxml)) - { - if (!File.Exists(rawxml)) - LOG(1, "NotFoundF", rawxml); else - if (!SyncRUN(command, subcommand)) - LOG(2, "ErrXML2", rawxml); - else - LOG(0, "RrGPTXMLS"); + LOG(0, "IwRGPT"); } + + if (String.IsNullOrEmpty(rawxml) || !File.Exists(rawxml)) + return !LOG(1, "NotFoundF", rawxml); + + if (!SyncRUN(command, subcommand)) + LOG(2, "ErrXML2", rawxml); + else + LOG(0, "RrGPTXMLS"); return true; } catch (Exception e) @@ -277,7 +285,7 @@ public static async void FlashPartsRaw(string loader, string file) { Progress(2); string command = "Tools\\fh_loader.exe"; - string subcommand = " --port=\\\\.\\" + DeviceInfo.Port.ComName + " --sendimage=" + '"' + file + '"' + " --noprompt --showpercentagecomplete --zlpawarehost=1 --memoryname=eMMC"; + string subcommand = " --port=\\\\.\\" + DeviceInfo.Port.ComName + " --sendimage=" + '"' + file + '"' + " --showpercentagecomplete --zlpawarehost=1 --noprompt --memoryname=eMMC"; if (debug) LOG(-1, "===Flash Partitions RAW===" + newline + newline); if (!LoadLoader(loader)) { DeviceInfo.loadedhose = false; LOG(2, "Fail"); CurTask.Dispose(); } try diff --git a/HuaweiUnlock/HuaweiUnlock.csproj b/HuaweiUnlock/HuaweiUnlock.csproj index aebf264..632f675 100644 --- a/HuaweiUnlock/HuaweiUnlock.csproj +++ b/HuaweiUnlock/HuaweiUnlock.csproj @@ -103,10 +103,10 @@ - + diff --git a/HuaweiUnlock/LangProc.cs b/HuaweiUnlock/LangProc.cs index b788945..de92784 100644 --- a/HuaweiUnlock/LangProc.cs +++ b/HuaweiUnlock/LangProc.cs @@ -20,7 +20,7 @@ namespace HuaweiUnlocker { public static class LangProc { - public const string APP_VERSION = "24F"; + public const string APP_VERSION = "25F"; public static TextBox LOGGBOX; public static string log, loge, newline = Environment.NewLine, PrevFolder = "c:\\"; private static StreamWriter se = new StreamWriter("log.txt"); @@ -121,7 +121,7 @@ public static bool SyncRUN(string command, string subcommand) if (outtext.StartsWith("SerialNumber")) DeviceInfo.SerialNum = outtext.Split(' ')[1]; if (outtext.StartsWith("MSM_HW_ID")) - DeviceInfo.CPUName = IdentifyCPUbyID(DeviceInfo.HWID = outtext.Split(' ')[1]); + DeviceInfo.CPUName = DataS.IdentifyCPUbyID(DeviceInfo.HWID = outtext.Split(' ')[1]); if (outtext.StartsWith("OEM_PK_HASH")) DeviceInfo.PK_HASH = outtext.Split(' ')[1]; if (outtext.Contains("SBL SW Version")) @@ -239,194 +239,6 @@ public static string PickLoader(string dev) if (a.EndsWith(".mbn") || a.EndsWith(".elf") || a.EndsWith(".hex")) return a; return ""; } - public static string CertExtr(string SFDump) - { - int rootcert = 0; - string pattern = "3082.{4}3082"; - MatchCollection matchs = Regex.Matches(SFDump, pattern); - List certs = new List(); - StringBuilder SHAstr = new StringBuilder(string.Empty); - SHA256 mysha256 = SHA256.Create(); - SHA384 rsaPSS = SHA384.Create(); - byte[] hashbytes = null; - if (matchs.Count >= 2) - { - string certl = SFDump.Substring(matchs[0].Index + 4, 4); - int certlen = int.Parse(certl, NumberStyles.HexNumber); - if ((matchs[0].Index + certlen * 2 + 8) == matchs[1].Index) - { - rootcert = 2; - if (matchs.Count >= 3) rootcert = 3; - } - } - if (rootcert > 0) - { - for (int i = 0; i < rootcert; i++) - { - string certl = SFDump.Substring(matchs[i].Index + 4, 4); - int certlen = Int32.Parse(certl, NumberStyles.HexNumber); - certs.Insert(i, matchs[i].Value + SFDump.Substring(matchs[i].Index + 12, certlen * 2 - 4)); - } - Guide guide = new Guide(); - foreach (KeyValuePair correct_SHA in guide.SHA_magic_numbers) - { - if (certs[rootcert - 1].Contains(correct_SHA.Key)) - { - switch (correct_SHA.Value) - { - case 0://SHA384 - старые серты - hashbytes = rsaPSS.ComputeHash(CRC.HexStringToBytes(certs[rootcert - 1])); - break; - case 1://SHA256 - старые серты - hashbytes = mysha256.ComputeHash(CRC.HexStringToBytes(certs[rootcert - 1])); - break; - case 2://SHA256 - нормальные серты - hashbytes = mysha256.ComputeHash(CRC.HexStringToBytes(certs[rootcert - 1])); - break; - case 3://SHA384 - новые серты - hashbytes = rsaPSS.ComputeHash(CRC.HexStringToBytes(certs[rootcert - 1])); - break; - case 4://SHA384 - паченый старый программер - hashbytes = rsaPSS.ComputeHash(CRC.HexStringToBytes(certs[rootcert - 1])); - break; - default: - //hashbytes = mysha256.ComputeHash(StringToByteArray(certs[rootcert - 1])); - hashbytes = null; - break; - } - } - } - if (hashbytes != null) - { - SHAstr.Append(BitConverter.ToString(hashbytes)); - SHAstr.Replace("-", string.Empty); - while (SHAstr.Length < 64) SHAstr.Insert(0, '0'); - } - } - return SHAstr.ToString(); - } - public static string[] IDs(string dumpfile) - { - string[] certarray = new string[6] { "-", "-", "-", "-", "-", "-" }; - int HWIDstrInd = dumpfile.IndexOf("2048575F4944"); // HW_ID - int SWIDstrInd = dumpfile.IndexOf("2053575F4944"); // SW_ID - string HWID = "3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F"; // Для неопределённого HWID ставим ?? - string SWID = "3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F"; // Для неопределённого SWID ставим ?? - //Выбираем новый или старый способ поиска идентификаторов - if (dumpfile.Length > 8600 && dumpfile.Substring(8200, 2).Equals("06")) //Новый шланг - { - StringBuilder hw_res = new StringBuilder(string.Empty); - for (int i = 0; i < 4; i++) - { - hw_res.Insert(0, dumpfile.Substring(8312 + i * 2, 2)); //103C, 4byte, HW_ID -идентификатор процессора - } - certarray[0] = hw_res.ToString(); - certarray[1] = dumpfile.Substring(8322, 2) + dumpfile.Substring(8320, 2); //1040, 2byte, OEM_ID -идентификатор OEM - certarray[2] = dumpfile.Substring(8330, 2) + dumpfile.Substring(8328, 2); //1043 (1044 корректно), 2byte, MODEL_ID -идентификатор модели - if (string.IsNullOrEmpty(CertExtr(dumpfile))) certarray[3] = "?"; else certarray[3] = CertExtr(dumpfile); //хеш - certarray[4] = dumpfile.Substring(8304, 2).TrimStart('0'); //1038, 1byte, SW_ID -идентификатор образа - if (dumpfile.Substring(8520, 2) == "00") certarray[5] = string.Empty; - else certarray[5] = "(" + dumpfile.Substring(8520, 2).TrimStart('0') + ")"; //10A4, 1byte, SW_VER -версия образа - } - else //Старый шланг 5 или 3 или ещё что-то - { - if (HWIDstrInd >= 32 && SWIDstrInd >= 32) - { - HWID = dumpfile.Substring(HWIDstrInd - 32, 32); - SWID = dumpfile.Substring(SWIDstrInd - 32, 32); - } - for (int i = 0; i < certarray.Length; i++) - { - switch (i) - { - case 0: // Вытягиваем процессор - string[] HStr = new string[8]; - int counth = 0; - for (int j = 0; j < 16; j += 2) - { - HStr[counth] = Convert.ToString((char)int.Parse(HWID.Substring(j, 2), NumberStyles.HexNumber)); - counth++; - } - certarray[i] = string.Join(string.Empty, HStr); - break; - case 1: // Вытягиваем производителя - string[] OStr = new string[4]; - int counto = 0; - for (int j = 16; j < 24; j += 2) - { - OStr[counto] = Convert.ToString((char)int.Parse(HWID.Substring(j, 2), NumberStyles.HexNumber)); - counto++; - } - certarray[i] = string.Join(string.Empty, OStr); - break; - case 2: // Вытягиваем номер модели - string[] MStr = new string[4]; - int countm = 0; - for (int j = 24; j < 32; j += 2) - { - MStr[countm] = Convert.ToString((char)int.Parse(HWID.Substring(j, 2), NumberStyles.HexNumber)); - countm++; - } - certarray[i] = string.Join(string.Empty, MStr); - break; - case 3: // Расчитываем хеш - if (string.IsNullOrEmpty(CertExtr(dumpfile))) certarray[i] = "?"; else certarray[i] = CertExtr(dumpfile); - break; - case 4: // Формируем тип софтвера - string[] SNStr = new string[8]; - int countn = 0; - for (int j = 16; j < 32; j += 2) - { - SNStr[countn] = Convert.ToString((char)int.Parse(SWID.Substring(j, 2), NumberStyles.HexNumber)); - countn++; - } - string nstr = string.Join(string.Empty, SNStr); - string nend; - switch (nstr) - { - case "????????": - nend = "?"; - break; - case "00000000": - nend = "0"; - break; - default: - nend = nstr.TrimStart('0'); - break; - } - certarray[i] = nend; - break; - case 5: // Формируем версию софтвера - string[] SWStr = new string[8]; - int countv = 0; - for (int j = 0; j < 16; j += 2) - { - SWStr[countv] = Convert.ToString((char)int.Parse(SWID.Substring(j, 2), NumberStyles.HexNumber)); - countv++; - } - string verstr = string.Join(string.Empty, SWStr); - string verend; - switch (verstr) - { - case "????????": - verend = string.Empty; - break; - case "00000000": - verend = string.Empty; - break; - default: - verend = "(" + verstr.TrimStart('0') + ")"; - break; - } - certarray[i] = verend; - break; - default: - break; - } - } - } - return certarray; - } public static Dictionary GET_GPT_FROM_FILE(string GPT_File, int block_size) { Dictionary GPT = new Dictionary(); @@ -540,69 +352,21 @@ public static bool CheckDevice(string path, string DeviceName = "") } return false; } - public static string IdentifyCPUbyID(string id) - { - switch (id) - { - case "0x009690e1": - return "MSM8992"; - case "0x009600e1": - return "MSM8909"; - case "0x000460e1": - return "MSM8953"; - case "0x0091b0e1": - return "MSM8929"; - case "0x006220e1": - return "MSM7227A"; - case "0x009470e1": - return "MSM8996"; - case "0x009900e1": - return "MSM8976"; - case "0x009b00e1": - return "MSM8976"; - case "0X008A30E1": - return "MSM8930"; - case "0x0004f0e1": - return "MSM8937"; - case "0x0090b0e1": - return "MSM8936"; - case "0x009180e1": - return "MSM8928"; - case "0x008140e1": - return "MSM8x10"; - case "0x008050e2": - return "MSM8926"; - case "0x0005f0e1": - return "MSM8996"; - case "0x007B80E1": - return "MSM8974"; - case "0x009400e1": - return "MSM8994"; - case "0x008150e1": - return "MSM8x10"; - case "0x008050e1": - return "MSM8926"; - case "0x000560e1": - return "MSM8917"; - case "0x007050e1": - return "MSM8916"; - case "0x008110e1": - return "MSM8210"; - default: - return "Unknown"; - } - } - public static bool WriteGPT_TO_XML(string papthto, Dictionary partbI) + public static bool WriteGPT_TO_XML(string papthto, Dictionary partbI, bool verify) { StreamWriter writer = new StreamWriter(papthto); writer.WriteLine(""); writer.WriteLine(""); + writer.WriteLine(" "); + writer.WriteLine(" "); + foreach (var i in partbI) { if (string.IsNullOrEmpty(i.Key)) continue; - string line = ""; + if (verify && !File.Exists("UnlockFiles/UpdateAPP/" + i.Key + ".img")) continue; + string line = " "; if (i.Key.ToLower() == "userdata") - line = ""; + line = " "; writer.WriteLine(line); if (debug) LOG(0, line); } @@ -613,9 +377,9 @@ public static bool WriteGPT_TO_XML(string papthto, Dictionary writer.Dispose(); return partbI.Count > 0; } - public static void Progress(int v) + public static void Progress(int v, int max=100) { - action = () => PRG.Value = v; + action = () => { PRG.Value = v; PRG.ValueMaximum = max; }; if (PRG.InvokeRequired) PRG.Invoke(action); else diff --git a/HuaweiUnlock/Russian.ini b/HuaweiUnlock/Russian.ini index 5059cb2..d2c8b23 100644 --- a/HuaweiUnlock/Russian.ini +++ b/HuaweiUnlock/Russian.ini @@ -14,7 +14,7 @@ MAIN1,Это бесплатно! Не нужно за это платить! MAIN2,Author: moongamer MAIN3,Эта программа использует BOARD загрузчики! Tutr,Подключите устройство через EDL (режим 9008) -Tutr2,1. Если включен режим образа памяти(raw image) -> Выберите DIUMP.bin/n2. Если не включен режим образа памяти -> Выберите папку с прошивкой и rawprogram0.xml/n3. Чтобы восстановить gpt разметку небходимо выбрать gpt_both0.bin и прошить как raw image. +Tutr2,1. Если включен режим образа памяти(raw image) -> Выберите DIUMP.bin/n2. Если не включен режим образа памяти -> Выберите любой файл в папке с прошивкой и автоматически заполнятся .xmls/n3. Чтобы восстановить gpt разметку небходимо выбрать gpt_both0.bin и прошить как raw image. SMAIN1,Qualcomm Huawei Flash Tool + Diag (c) SMAIN2,Этот инструмент может прошивать прошивку SMAIN3,Выбор файлов @@ -24,7 +24,6 @@ NoFirmPath,Пожалуйста выберите путь к прошивке! PrcsUnl,Запущен процесс разблокировки DPort,Устройство было отключено и более не доступно! CPort,Подключенный Порт: -CLabel,Подключить устройство SelDev,Сначала Выберите устройство ERmINFO,После этого IMEI/BSN/BUILD_ID будет потеряно. Сделайте резервную копию! После этого устройство может перестать работать! Это форматирует память! DownloadFor,Загрузка файлов разблокировки для: @@ -38,10 +37,10 @@ DdBtnE,Разблокировать устройство FlBtn,Прошить прошивку UnpBtn,Распаковать FlashUnpBtn,Распаковать и прошить -DuBtn,Скопировать прошивку +DuBtn,Считать дамп прошивки RdGPTBtn,Прочитать разделы -WrRRGPTXMLBtn,Прочитать с файла rawprogram0.xml -RrRRGPTXMLBtn,Считать с устройства rawprogram0.xml +WrRRGPTXMLBtn,Прочитать с файла GPT-XXXXX.bin File +RrRRGPTXMLBtn,Считать с GPT устройства RrGPTXMLE,Произошла ошибка при создании xml файла: RrGPTXMLSPR,Создание rawprogram0.xml...: RrGPTXMLS,Успешно создан rawprogram0.xml: @@ -81,8 +80,11 @@ Unlocker,Попытка разблокировки: Eraser,Попытка стереть: EraserD,Попытка стереть UserData! Writer,Попытка записи: +MarkUpGPT,Попытка отметить раздел 0 как загрузчный EwRGPT,Ошибка переразметки GPT: IwRGPT,Переразметка GPT успешна! +EwRGPT2,Ошибка маркировки раздела 0 как загрузочного +IwRGPT2,Раздел 0 помечен как загрузчный. ErPS,Стирание раздела: EwPS,Запись раздела, Пожалуйста подождите: EdPS,Начато чтение раздела: @@ -113,7 +115,7 @@ ERR_ReadGPTFile,вы выбрали поврежденный либо непод ERR_ReadGPTFile2,выберите путь к сохранению .xml или к файлу GPT_####0.bin!. SUCC_ReadGPT,GPT ПРОЧИТАН! SUCC_FrpUnlock,FRP должен быть разблокирован и не важно locked или unlocked в fastboot! -sl,Выбрано: +PartSled,Выбрано: Action,Действия: CZdmg,ПРЕДУПРЕЖДЕНИЕ: AreY,Вы хотите стереть этот раздел? @@ -133,12 +135,10 @@ TrRb,Попытка перезагрузки: HomeTag,Домой BackupRestoreTag,Резервное Копирование/nВосстановление BackupRestoreTagSimpl,Резервные копии -DiagTag,Диаг DiagTagRead,Прочитать информацию DiagTagUpgradeMode,Режим обновления по usb DiagTagReboot,Перезагрузить DiagTagFactoryReset,Сбросить настройки -DiagTagSimpl,Диагностика UnlockTag,QCOM UnlockSimpl,РазблокировкаQC UnlockTagHISI,KIRIN @@ -156,7 +156,6 @@ ModelTag,Модель: BuildIdTag,Номер сборки: FBLOCK-Tag,Состояние FBLock: FBLOCKSetTag,Не удалось задать FBLOCK значение. Попытка использовать другой способ -KEYTag,Ключ загрузчика: WritingPropTAG,Запись prop: WarnLarge,Чтение файла... Это может занять более 5 минут! Зависит от HDD/SSD. WarnUnl,Разблокированное ядро для этого устройства не скомпилировано или не используется! В случае не рабочей разблокировки запросите помощь. @@ -165,6 +164,11 @@ HISISelectCpu,Выберите процессор HISIReadFB,Прочитать Информацию (FASTBOOT) HISIWriteKirinFB,Записать Ключ Разблокировки(FASTBOOT) HISIWriteKirinBL,Прочитать Ключ разблокировки(TESTPOINT) -HISIWriteKirinBLD,Скачать пакет разблокировки устройства +HISIWriteKirinBLD,Скачать пакет разблокировки устройства(TESTPOINT) HISIWriteKirinFBL,Изменить состояние FBLOCK -HISIInfoS,*** FBLOCK Заблокирован! *** \n В данном состояние, вы не сможете ничего сделать! \ No newline at end of file +HISIInfoS,*** FBLOCK Заблокирован! *** \n В данном состояние, вы не сможете ничего сделать! +HISINewKey,[FASTBOOT] Новый код разблокировки: +HISIOldKey,[FASTBOOT] Старый код разблокировки: +HISINewKeyErr,[Fastboot] Ошибка во время Записи/Чтения кода разблокировки +HISINewKeyErr2,[Fastboot] Попытка использовать второй метод... +HISIVerifyHash,Проверка хеша файлов... \ No newline at end of file diff --git a/HuaweiUnlock/TOOLS/Fastboot.cs b/HuaweiUnlock/TOOLS/Fastboot.cs index 97604f6..7f7b4eb 100644 --- a/HuaweiUnlock/TOOLS/Fastboot.cs +++ b/HuaweiUnlock/TOOLS/Fastboot.cs @@ -17,7 +17,7 @@ public class Fastboot private const int BLOCK_SIZE = 512 * 1024; // 512 KB public int Timeout = 3000; - public int TimeoutWait = 1000; + public int TimeoutWait = 100; private UsbDevice device; public enum FastbootStatus diff --git a/HuaweiUnlock/TOOLS/HISI.cs b/HuaweiUnlock/TOOLS/HISI.cs index 8e2e2f6..78800df 100644 --- a/HuaweiUnlock/TOOLS/HISI.cs +++ b/HuaweiUnlock/TOOLS/HISI.cs @@ -2,6 +2,7 @@ using Microsoft.VisualBasic.Logging; using System; using System.Collections.Generic; +using System.Runtime.Remoting.Messaging; using System.Security.Cryptography; using System.Text; using System.Text.RegularExpressions; @@ -25,7 +26,7 @@ public void FlashBootloader(Bootloader bootloader, string port) { var flasher = new ImageFlasher(); - LOG(0, "Verifying images..."); + LOG(0, "HISIVerifyHash"); int asize = 0, dsize = 0; @@ -39,20 +40,19 @@ public void FlashBootloader(Bootloader bootloader, string port) asize += image.Size; } - if(debug) LOG(0, ($"Opening {port}...")); - + LOG(0, "CPort", port); flasher.Open(port); - LOG(0, $"Uploading {bootloader.Name}..."); + LOG(0, "Writer", bootloader.Name); foreach (var image in bootloader.Images) { var size = image.Size; - LOG(0, $"- {image.Role}"); + LOG(0, "EwPS", image.Role); flasher.Write(image.Path, (int)image.Address, x => { - Progress(dsize + (int)(size / 100f * x)); + Progress(dsize + (int)(size / 100f * x), asize); }); dsize += size; @@ -63,7 +63,7 @@ public void FlashBootloader(Bootloader bootloader, string port) public bool ReadInfo() { - if (fb.Connect()) + if (IsConnected()) { string serial = fb.GetSerialNumber(); LOG(0, "SerialnTag", serial); @@ -104,7 +104,7 @@ public bool ReadInfo() string factoryKey = ReadFactoryKey(); if (factoryKey != null) { - LOG(0, "KEYTag", factoryKey); + LOG(0, "HISIOldKey", factoryKey); BLKEY = factoryKey; } } @@ -120,7 +120,9 @@ public void UnlockFRP() string subcommand2 = "flash frp Tools\\frpPartition.img"; fb.Command("oem erase frp"); fb.Command("oem unlock-frp"); + fb.Command("oem frp-erase"); fb.Command("oem frp-unlock"); + fb.Command("oem format cache"); LOG(1, "THIS IS BETA!"); SyncRUN(command, subcommand); SyncRUN(command, subcommand2); @@ -178,6 +180,11 @@ public string ReadFactoryKey() return match.Success ? match.Value : null; } + public string ReadUnlockCodeMethod2() + { + var res = fb.Command("oem get_identifier_token"); + return res.ToString(); + } public void WriteBOOTLOADERKEY(string key) { @@ -205,7 +212,30 @@ public void WriteBOOTLOADERKEY(string key) if(debug) LOG(2, ex.Message); } } - + public string UnlockSec_Method2() + { + if(fb.Connect()) + { + var res = fb.Command("oem sec_unlock"); + LOG(0, res.ToString()); + return res.ToString(); + } + return "NaN"; + } + public bool IsConnected() + { + return fb.Connect(); + } + public string Reboot() + { + if (IsConnected()) + { + var res = fb.Command("reboot"); + LOG(0, res.ToString()); + return res.ToString(); + } + return "NaN"; + } public void StartUnlockPRCS(bool frp, string key, Bootloader d, string port) { fb = new Fastboot(); @@ -216,17 +246,26 @@ public void StartUnlockPRCS(bool frp, string key, Bootloader d, string port) if (frp) { - LOG(1, "Unlocking frp only"); - if (ReadInfo()) - UnlockFRP(); - return; + LOG(1, "Unlocker", "(KIRIN FRP)"); + if (ReadInfo()) UnlockFRP(); } LOG(0, "[Fastboot] ", "CheckCon"); - if (ReadInfo()) + if (IsConnected()) { - WriteBOOTLOADERKEY(key); - LOG(0, $"New unlock code:"); - fb.Disconnect(); + if (ReadInfo()) + { + ReadFactoryKey(); + WriteBOOTLOADERKEY(key); + LOG(0, "HISINewKey", key); + } + else + { + LOG(1, "HISINewKeyErr"); + LOG(0, "HISINewKeyErr2"); + UnlockSec_Method2(); + BLKEY = ReadUnlockCodeMethod2(); + } + fb.Disconnect(); } } catch (Exception ex) diff --git a/HuaweiUnlock/TOOLS/UpdateApp.cs b/HuaweiUnlock/TOOLS/UpdateApp.cs index cf0a43b..93d11f6 100644 --- a/HuaweiUnlock/TOOLS/UpdateApp.cs +++ b/HuaweiUnlock/TOOLS/UpdateApp.cs @@ -12,15 +12,16 @@ namespace HuaweiUnlocker.TOOLS public class UpdateApp { private const string pathxml = "UnlockFiles/UpdateAPP/rawprogram0.xml"; + private const string pathxmlE = "UnlockFiles/UpdateAPP/rawprogram01.xml"; public static bool unpacked = false; - public static async void Unpack(string path, int state, string loader = "") + public static async void Unpack(string path, int state) { - CurTask = Task.Run(() => + var i = 0; + if (!Directory.Exists("/UnlockFiles/UpdateAPP/")) Directory.CreateDirectory("UnlockFiles/UpdateAPP"); + UpdateFile UpdFile = UpdateFile.Open(path, false); + if (state > 0) { - var i = 0; - if (!Directory.Exists("/UnlockFiles/UpdateAPP/")) Directory.CreateDirectory("UnlockFiles/UpdateAPP"); - UpdateFile UpdFile = UpdateFile.Open(path, false); - if (state > 0) + CurTask = Task.Run(() => { Directory.Delete("UnlockFiles/UpdateAPP", true); if (!Directory.Exists("/UnlockFiles/UpdateAPP/")) Directory.CreateDirectory("UnlockFiles/UpdateAPP"); @@ -28,72 +29,52 @@ public static async void Unpack(string path, int state, string loader = "") { if (!unpacked) { - if (a.FileType.ToString().ToUpper() == "ERECOVERY_RAMDIS") + if (a.FileType.ToString().ToUpper().Equals("ERECOVERY_RAMDIS")) a.FileType = "ERECOVERY_RAMDISK"; - if (a.FileType.ToString().ToUpper() == "RECOVERY_RAMDIS") + if (a.FileType.ToString().ToUpper().Equals("RECOVERY_RAMDIS")) a.FileType = "RECOVERY_RAMDISK"; LOG(0, "Extracting", a.FileType); UpdFile.Extract(i, "UnlockFiles/UpdateAPP/" + a.FileType.ToLower() + ".img"); i++; } - Progress(i / UpdFile.Count * 100); + Progress(i / UpdFile.Count * 100, 100); } //Set 0 unpacked = true; - i = 0; CreateRWProgram0xml(); - - if (state == 2) + }); + await CurTask; + if (state == 2) + { + Progress(0);//0(STAGE FLASHING DLOAD 9008 MODE) + DirectoryInfo hdDirectoryInWhichToSearch = new DirectoryInfo("UnlockFiles/UpdateAPP/"); + FileInfo[] filesInDir = hdDirectoryInWhichToSearch.GetFiles("*" + "gpt" + "*.*"); + if (filesInDir.Length == 0) { - Progress(0);//0(STAGE FLASHING DLOAD 9008 MODE) - DirectoryInfo hdDirectoryInWhichToSearch = new DirectoryInfo("UnlockFiles/UpdateAPP/"); - FileInfo[] filesInDir = hdDirectoryInWhichToSearch.GetFiles("*" + "gpt" + "*.*"); - if (filesInDir.Length == 0) - { - LOG(2, "RrGPTXMLE"); - LOG(2, "NotFoundF", "GPT.img"); - return false; - } - var gpttable = GET_GPT_FROM_FILE(filesInDir[0].FullName, 512); - gpttable.Remove("system"); - foreach (var a in UpdFile) - { - if (a.FileType.ToString().ToUpper() == "ERECOVERY_RAMDIS") - a.FileType = "ERECOVERY_RAMDISK"; - if (a.FileType.ToString().ToUpper() == "RECOVERY_RAMDIS") - a.FileType = "RECOVERY_RAMDISK"; - if (gpttable.ContainsKey(a.FileType.ToLower())) - { - FlashToolQClegacy.CurPartLenght = (int)a.FileSize; - string command = "Tools\\emmcdl.exe"; - string subcommand = "-p " + DeviceInfo.Port.ComName + " -f " + '"' + loader + '"' + " -b " + a.FileType.ToLower() + " " + '"' + "UnlockFiles/UpdateAPP/" + a.FileType.ToLower() + ".img" + '"'; - SyncRUN(command, subcommand); - i++; - } - Progress(i / gpttable.Count * 100); - } - LOG(2, "system.img is to big for emmcdl maybe. I don't know how to fix it"); + LOG(2, "RrGPTXMLE"); + LOG(2, "NotFoundF", "GPT.img"); + return; } + + FlashToolQClegacy.FlashPartsXml(pathxmlE, "", GuessMbn(), "UnlockFiles/UpdateAPP"); } - else + } + else + { + LOG(0, "Searching GPT.bin in file:", path); + foreach (var a in UpdFile) { - LOG(0, "Searching GPT.bin in file:", path); - foreach (var a in UpdFile) + if (a.FileType.ToLower().Contains("gpt")) { - if (a.FileType.ToLower().Contains("gpt")) - { - LOG(0, "Extracting", a.FileType); - LOG(0, a.BlockSize.ToString(), " " + a.FileSequence + " " + a.DataOffset); - UpdFile.Extract(i, "UnlockFiles/UpdateAPP/" + a.FileType.ToLower() + ".img"); - break; - } - i++; + LOG(0, "Extracting", a.FileType); + LOG(0, a.BlockSize.ToString(), " " + a.FileSequence + " " + a.DataOffset); + UpdFile.Extract(i, "UnlockFiles/UpdateAPP/" + a.FileType.ToLower() + ".img"); + break; } - CreateRWProgram0xml(); + i++; } - return true; - }); - await CurTask; + CreateRWProgram0xml(); + } Progress(100); LOG(0, "Done", DateTime.Now); } @@ -113,9 +94,13 @@ private static void CreateRWProgram0xml() return; } LOG(0, "RrGPTXMLSPR", " -> ~/" + pathxml); + LOG(0, "RrGPTXMLSPR", " -> ~/" + pathxmlE); var gpttable = GET_GPT_FROM_FILE(filesInDir[0].FullName, 512); if (gpttable.Count > 0) - WriteGPT_TO_XML(pathxml, gpttable); + { + WriteGPT_TO_XML(pathxml, gpttable, false); + WriteGPT_TO_XML(pathxmlE, gpttable, true); + } } } } diff --git a/HuaweiUnlock/Window.Designer.cs b/HuaweiUnlock/Window.Designer.cs index 279ee79..8590cc8 100644 --- a/HuaweiUnlock/Window.Designer.cs +++ b/HuaweiUnlock/Window.Designer.cs @@ -18,9 +18,9 @@ protected override void Dispose(bool disposing) private void InitializeComponent() { this.components = new System.ComponentModel.Container(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle13 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle14 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle15 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle19 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle20 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle21 = new System.Windows.Forms.DataGridViewCellStyle(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Window)); this.pather = new System.Windows.Forms.TextBox(); this.DETECTED = new System.Windows.Forms.Label(); @@ -81,38 +81,33 @@ private void InitializeComponent() this.button7 = new System.Windows.Forms.Button(); this.WritePA = new System.Windows.Forms.Button(); this.ErasePA = new System.Windows.Forms.Button(); - this.RdGPT = new HuaweiUnlocker.UI.NButton(); this.PARTLIST = new System.Windows.Forms.DataGridView(); this.P = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.O = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.L = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.Diag = new System.Windows.Forms.TabPage(); - this.groupBox5 = new System.Windows.Forms.GroupBox(); - this.CLEARDD = new System.Windows.Forms.Button(); - this.SendCMDtestBTN = new System.Windows.Forms.Button(); - this.CMDbox = new System.Windows.Forms.TextBox(); + this.RdGPT = new HuaweiUnlocker.UI.NButton(); this.NC = new System.Windows.Forms.TabPage(); this.groupBox3 = new System.Windows.Forms.GroupBox(); - this.FRPchk = new System.Windows.Forms.CheckBox(); + this.RebootFB = new HuaweiUnlocker.UI.NButton(); + this.groupBox8 = new System.Windows.Forms.GroupBox(); + this.BLkeyHI = new System.Windows.Forms.TextBox(); + this.isVCOM = new System.Windows.Forms.CheckBox(); this.FrpHISIUnlock = new HuaweiUnlocker.UI.NButton(); this.UNLOCKHISI = new HuaweiUnlocker.UI.NButton(); this.HISI_board_FB = new HuaweiUnlocker.UI.NButton(); - this.EnDisFBLOCK = new System.Windows.Forms.CheckBox(); this.FBLstHISI = new HuaweiUnlocker.UI.NButton(); this.RdHISIinfo = new HuaweiUnlocker.UI.NButton(); - this.isVCOM = new System.Windows.Forms.CheckBox(); - this.DSGSDG = new System.Windows.Forms.TextBox(); this.groupBox2 = new System.Windows.Forms.GroupBox(); this.label11 = new System.Windows.Forms.Label(); - this.groupBox8 = new System.Windows.Forms.GroupBox(); - this.BLkeyHI = new System.Windows.Forms.TextBox(); this.BLKEYTXT = new System.Windows.Forms.TextBox(); + this.FRPchk = new System.Windows.Forms.CheckBox(); this.label2 = new System.Windows.Forms.Label(); this.VersionIdTxt = new System.Windows.Forms.TextBox(); this.label3 = new System.Windows.Forms.Label(); this.FblockStateTxt = new System.Windows.Forms.TextBox(); this.label12 = new System.Windows.Forms.Label(); this.ModelIdTxt = new System.Windows.Forms.TextBox(); + this.EnDisFBLOCK = new System.Windows.Forms.CheckBox(); this.label13 = new System.Windows.Forms.Label(); this.BuildIdTxt = new System.Windows.Forms.TextBox(); this.CpuHISIBox = new System.Windows.Forms.GroupBox(); @@ -138,9 +133,7 @@ private void InitializeComponent() this.BURG = new System.Windows.Forms.Panel(); this.MtkLBL = new System.Windows.Forms.Label(); this.button2 = new System.Windows.Forms.Button(); - this.DiagTag = new System.Windows.Forms.Label(); this.button8 = new System.Windows.Forms.Button(); - this.button10 = new System.Windows.Forms.Button(); this.HISItag = new System.Windows.Forms.Label(); this.button9 = new System.Windows.Forms.Button(); this.GPTtag = new System.Windows.Forms.Label(); @@ -155,6 +148,8 @@ private void InitializeComponent() this.PortFindUpd = new System.Windows.Forms.Timer(this.components); this.IdentifyBTN = new System.Windows.Forms.Button(); this.PGG = new HuaweiUnlocker.UI.NProgressBar(); + this.button1 = new System.Windows.Forms.Button(); + this.OemDCLBL = new System.Windows.Forms.Label(); this.panel1.SuspendLayout(); this.Tab.SuspendLayout(); this.MA.SuspendLayout(); @@ -174,12 +169,10 @@ private void InitializeComponent() this.QCOM2.SuspendLayout(); this.WHAT.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.PARTLIST)).BeginInit(); - this.Diag.SuspendLayout(); - this.groupBox5.SuspendLayout(); this.NC.SuspendLayout(); this.groupBox3.SuspendLayout(); - this.groupBox2.SuspendLayout(); this.groupBox8.SuspendLayout(); + this.groupBox2.SuspendLayout(); this.CpuHISIBox.SuspendLayout(); this.MTK.SuspendLayout(); this.groupBox14.SuspendLayout(); @@ -443,7 +436,6 @@ private void InitializeComponent() this.Tab.Controls.Add(this.QCOM1); this.Tab.Controls.Add(this.Board); this.Tab.Controls.Add(this.QCOM2); - this.Tab.Controls.Add(this.Diag); this.Tab.Controls.Add(this.NC); this.Tab.Controls.Add(this.MTK); this.Tab.Controls.Add(this.OeRrd); @@ -677,7 +669,7 @@ private void InitializeComponent() this.groupBox10.ForeColor = System.Drawing.Color.AliceBlue; this.groupBox10.Location = new System.Drawing.Point(368, 159); this.groupBox10.Name = "groupBox10"; - this.groupBox10.Size = new System.Drawing.Size(357, 115); + this.groupBox10.Size = new System.Drawing.Size(357, 112); this.groupBox10.TabIndex = 36; this.groupBox10.TabStop = false; this.groupBox10.Text = "GPT_####0.bin -> rawprogram0.xml"; @@ -695,7 +687,7 @@ private void InitializeComponent() this.CrtGPTBtn.Cursor = System.Windows.Forms.Cursors.Hand; this.CrtGPTBtn.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); this.CrtGPTBtn.ForeColor = System.Drawing.Color.White; - this.CrtGPTBtn.Location = new System.Drawing.Point(7, 21); + this.CrtGPTBtn.Location = new System.Drawing.Point(6, 16); this.CrtGPTBtn.Name = "CrtGPTBtn"; this.CrtGPTBtn.RippleColor = System.Drawing.Color.Black; this.CrtGPTBtn.RoundingEnable = false; @@ -722,7 +714,7 @@ private void InitializeComponent() this.CrtGPTBtn2.Cursor = System.Windows.Forms.Cursors.Hand; this.CrtGPTBtn2.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); this.CrtGPTBtn2.ForeColor = System.Drawing.Color.White; - this.CrtGPTBtn2.Location = new System.Drawing.Point(7, 66); + this.CrtGPTBtn2.Location = new System.Drawing.Point(6, 63); this.CrtGPTBtn2.Name = "CrtGPTBtn2"; this.CrtGPTBtn2.RippleColor = System.Drawing.Color.Black; this.CrtGPTBtn2.RoundingEnable = false; @@ -1195,8 +1187,8 @@ private void InitializeComponent() this.QCOM2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; this.QCOM2.Controls.Add(this.ClearS); this.QCOM2.Controls.Add(this.WHAT); - this.QCOM2.Controls.Add(this.RdGPT); this.QCOM2.Controls.Add(this.PARTLIST); + this.QCOM2.Controls.Add(this.RdGPT); this.QCOM2.ForeColor = System.Drawing.Color.Snow; this.QCOM2.Location = new System.Drawing.Point(4, 25); this.QCOM2.Name = "QCOM2"; @@ -1301,35 +1293,6 @@ private void InitializeComponent() this.ErasePA.UseVisualStyleBackColor = false; this.ErasePA.Click += new System.EventHandler(this.ERASEevent_Click); // - // RdGPT - // - this.RdGPT.BackColor = System.Drawing.SystemColors.MenuHighlight; - this.RdGPT.BackColorAdditional = System.Drawing.Color.Gray; - this.RdGPT.BackColorGradientEnabled = false; - this.RdGPT.BackColorGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Horizontal; - this.RdGPT.BorderColor = System.Drawing.Color.Tomato; - this.RdGPT.BorderColorEnabled = false; - this.RdGPT.BorderColorOnHover = System.Drawing.Color.Tomato; - this.RdGPT.BorderColorOnHoverEnabled = false; - this.RdGPT.Cursor = System.Windows.Forms.Cursors.Hand; - this.RdGPT.Dock = System.Windows.Forms.DockStyle.Bottom; - this.RdGPT.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.RdGPT.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.RdGPT.ForeColor = System.Drawing.Color.White; - this.RdGPT.Location = new System.Drawing.Point(3, 454); - this.RdGPT.Name = "RdGPT"; - this.RdGPT.RippleColor = System.Drawing.Color.Black; - this.RdGPT.RoundingEnable = false; - this.RdGPT.Size = new System.Drawing.Size(725, 42); - this.RdGPT.TabIndex = 3; - this.RdGPT.Text = "Read GPT"; - this.RdGPT.TextHover = null; - this.RdGPT.UseDownPressEffectOnClick = false; - this.RdGPT.UseRippleEffect = true; - this.RdGPT.UseVisualStyleBackColor = false; - this.RdGPT.UseZoomEffectOnHover = false; - this.RdGPT.Click += new System.EventHandler(this.RdGPT_Click); - // // PARTLIST // this.PARTLIST.AllowUserToAddRows = false; @@ -1339,46 +1302,48 @@ private void InitializeComponent() this.PARTLIST.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; this.PARTLIST.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders; this.PARTLIST.BackgroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(38)))), ((int)(((byte)(49))))); + this.PARTLIST.BorderStyle = System.Windows.Forms.BorderStyle.None; this.PARTLIST.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Sunken; - dataGridViewCellStyle13.Alignment = System.Windows.Forms.DataGridViewContentAlignment.TopCenter; - dataGridViewCellStyle13.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(3)))), ((int)(((byte)(42)))), ((int)(((byte)(80))))); - dataGridViewCellStyle13.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Bold); - dataGridViewCellStyle13.ForeColor = System.Drawing.SystemColors.Menu; - dataGridViewCellStyle13.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle13.SelectionForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(5)))), ((int)(((byte)(42)))), ((int)(((byte)(80))))); - dataGridViewCellStyle13.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.PARTLIST.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle13; + dataGridViewCellStyle19.Alignment = System.Windows.Forms.DataGridViewContentAlignment.TopCenter; + dataGridViewCellStyle19.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(3)))), ((int)(((byte)(42)))), ((int)(((byte)(80))))); + dataGridViewCellStyle19.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Bold); + dataGridViewCellStyle19.ForeColor = System.Drawing.SystemColors.Menu; + dataGridViewCellStyle19.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle19.SelectionForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(5)))), ((int)(((byte)(42)))), ((int)(((byte)(80))))); + dataGridViewCellStyle19.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.PARTLIST.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle19; this.PARTLIST.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.PARTLIST.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.P, this.O, this.L}); - dataGridViewCellStyle14.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle14.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(44)))), ((int)(((byte)(62)))), ((int)(((byte)(80))))); - dataGridViewCellStyle14.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Bold); - dataGridViewCellStyle14.ForeColor = System.Drawing.Color.Snow; - dataGridViewCellStyle14.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle14.SelectionForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(5)))), ((int)(((byte)(47)))), ((int)(((byte)(60))))); - dataGridViewCellStyle14.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.PARTLIST.DefaultCellStyle = dataGridViewCellStyle14; + dataGridViewCellStyle20.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle20.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(44)))), ((int)(((byte)(62)))), ((int)(((byte)(80))))); + dataGridViewCellStyle20.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Bold); + dataGridViewCellStyle20.ForeColor = System.Drawing.Color.Snow; + dataGridViewCellStyle20.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle20.SelectionForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(5)))), ((int)(((byte)(47)))), ((int)(((byte)(60))))); + dataGridViewCellStyle20.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.PARTLIST.DefaultCellStyle = dataGridViewCellStyle20; + this.PARTLIST.Dock = System.Windows.Forms.DockStyle.Fill; this.PARTLIST.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(38)))), ((int)(((byte)(49))))); this.PARTLIST.ImeMode = System.Windows.Forms.ImeMode.Close; - this.PARTLIST.Location = new System.Drawing.Point(-2, -2); + this.PARTLIST.Location = new System.Drawing.Point(3, 3); this.PARTLIST.Name = "PARTLIST"; this.PARTLIST.ReadOnly = true; - dataGridViewCellStyle15.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle15.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(47)))), ((int)(((byte)(60))))); - dataGridViewCellStyle15.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Bold); - dataGridViewCellStyle15.ForeColor = System.Drawing.SystemColors.Info; - dataGridViewCellStyle15.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle15.SelectionForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(47)))), ((int)(((byte)(60))))); - dataGridViewCellStyle15.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.PARTLIST.RowHeadersDefaultCellStyle = dataGridViewCellStyle15; + dataGridViewCellStyle21.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle21.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(47)))), ((int)(((byte)(60))))); + dataGridViewCellStyle21.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Bold); + dataGridViewCellStyle21.ForeColor = System.Drawing.SystemColors.Info; + dataGridViewCellStyle21.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle21.SelectionForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(47)))), ((int)(((byte)(60))))); + dataGridViewCellStyle21.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.PARTLIST.RowHeadersDefaultCellStyle = dataGridViewCellStyle21; this.PARTLIST.RowHeadersVisible = false; this.PARTLIST.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders; this.PARTLIST.RowTemplate.ReadOnly = true; this.PARTLIST.RowTemplate.Resizable = System.Windows.Forms.DataGridViewTriState.True; - this.PARTLIST.Size = new System.Drawing.Size(735, 503); + this.PARTLIST.Size = new System.Drawing.Size(725, 451); this.PARTLIST.TabIndex = 0; this.PARTLIST.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.PARTLIST_CellDoubleClick); // @@ -1403,80 +1368,39 @@ private void InitializeComponent() this.L.Name = "L"; this.L.ReadOnly = true; // - // Diag - // - this.Diag.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(52)))), ((int)(((byte)(73)))), ((int)(((byte)(94))))); - this.Diag.Controls.Add(this.groupBox5); - this.Diag.Controls.Add(this.CMDbox); - this.Diag.Location = new System.Drawing.Point(4, 25); - this.Diag.Name = "Diag"; - this.Diag.Size = new System.Drawing.Size(735, 503); - this.Diag.TabIndex = 4; - this.Diag.Text = "Diag_TEST"; - // - // groupBox5 - // - this.groupBox5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(38)))), ((int)(((byte)(49))))); - this.groupBox5.Controls.Add(this.CLEARDD); - this.groupBox5.Controls.Add(this.SendCMDtestBTN); - this.groupBox5.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Bold); - this.groupBox5.ForeColor = System.Drawing.Color.Cornsilk; - this.groupBox5.Location = new System.Drawing.Point(0, 457); - this.groupBox5.Name = "groupBox5"; - this.groupBox5.Size = new System.Drawing.Size(735, 46); - this.groupBox5.TabIndex = 23; - this.groupBox5.TabStop = false; - this.groupBox5.Text = "Action"; - // - // CLEARDD - // - this.CLEARDD.BackColor = System.Drawing.Color.LightCoral; - this.CLEARDD.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.CLEARDD.ForeColor = System.Drawing.Color.Brown; - this.CLEARDD.Location = new System.Drawing.Point(701, 16); - this.CLEARDD.Margin = new System.Windows.Forms.Padding(2); - this.CLEARDD.Name = "CLEARDD"; - this.CLEARDD.Size = new System.Drawing.Size(29, 25); - this.CLEARDD.TabIndex = 1; - this.CLEARDD.Text = "❌"; - this.CLEARDD.UseVisualStyleBackColor = false; - this.CLEARDD.Click += new System.EventHandler(this.CLEARDD_Click); - // - // SendCMDtestBTN - // - this.SendCMDtestBTN.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(47)))), ((int)(((byte)(60))))); - this.SendCMDtestBTN.FlatStyle = System.Windows.Forms.FlatStyle.Popup; - this.SendCMDtestBTN.ForeColor = System.Drawing.SystemColors.GradientInactiveCaption; - this.SendCMDtestBTN.Location = new System.Drawing.Point(5, 16); - this.SendCMDtestBTN.Margin = new System.Windows.Forms.Padding(2); - this.SendCMDtestBTN.Name = "SendCMDtestBTN"; - this.SendCMDtestBTN.Size = new System.Drawing.Size(692, 25); - this.SendCMDtestBTN.TabIndex = 0; - this.SendCMDtestBTN.Text = "AUTHTEST"; - this.SendCMDtestBTN.UseVisualStyleBackColor = false; - this.SendCMDtestBTN.Click += new System.EventHandler(this.SendCMDtestBTN_Click); - // - // CMDbox - // - this.CMDbox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.CMDbox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(47)))), ((int)(((byte)(61))))); - this.CMDbox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.CMDbox.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.CMDbox.ForeColor = System.Drawing.Color.Beige; - this.CMDbox.Location = new System.Drawing.Point(0, 0); - this.CMDbox.Margin = new System.Windows.Forms.Padding(2); - this.CMDbox.Multiline = true; - this.CMDbox.Name = "CMDbox"; - this.CMDbox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.CMDbox.Size = new System.Drawing.Size(739, 457); - this.CMDbox.TabIndex = 32; + // RdGPT + // + this.RdGPT.BackColor = System.Drawing.SystemColors.MenuHighlight; + this.RdGPT.BackColorAdditional = System.Drawing.Color.Gray; + this.RdGPT.BackColorGradientEnabled = false; + this.RdGPT.BackColorGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Horizontal; + this.RdGPT.BorderColor = System.Drawing.Color.Tomato; + this.RdGPT.BorderColorEnabled = false; + this.RdGPT.BorderColorOnHover = System.Drawing.Color.Tomato; + this.RdGPT.BorderColorOnHoverEnabled = false; + this.RdGPT.Cursor = System.Windows.Forms.Cursors.Hand; + this.RdGPT.Dock = System.Windows.Forms.DockStyle.Bottom; + this.RdGPT.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.RdGPT.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.RdGPT.ForeColor = System.Drawing.Color.White; + this.RdGPT.Location = new System.Drawing.Point(3, 454); + this.RdGPT.Name = "RdGPT"; + this.RdGPT.RippleColor = System.Drawing.Color.Black; + this.RdGPT.RoundingEnable = false; + this.RdGPT.Size = new System.Drawing.Size(725, 42); + this.RdGPT.TabIndex = 3; + this.RdGPT.Text = "Read GPT"; + this.RdGPT.TextHover = null; + this.RdGPT.UseDownPressEffectOnClick = false; + this.RdGPT.UseRippleEffect = true; + this.RdGPT.UseVisualStyleBackColor = false; + this.RdGPT.UseZoomEffectOnHover = false; + this.RdGPT.Click += new System.EventHandler(this.RdGPT_Click); // // NC // this.NC.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(38)))), ((int)(((byte)(49))))); this.NC.Controls.Add(this.groupBox3); - this.NC.Controls.Add(this.DSGSDG); this.NC.Controls.Add(this.groupBox2); this.NC.Controls.Add(this.CpuHISIBox); this.NC.Location = new System.Drawing.Point(4, 25); @@ -1488,31 +1412,83 @@ private void InitializeComponent() // // groupBox3 // - this.groupBox3.Controls.Add(this.FRPchk); + this.groupBox3.Controls.Add(this.RebootFB); + this.groupBox3.Controls.Add(this.groupBox8); this.groupBox3.Controls.Add(this.FrpHISIUnlock); this.groupBox3.Controls.Add(this.UNLOCKHISI); this.groupBox3.Controls.Add(this.HISI_board_FB); - this.groupBox3.Controls.Add(this.EnDisFBLOCK); this.groupBox3.Controls.Add(this.FBLstHISI); this.groupBox3.Controls.Add(this.RdHISIinfo); - this.groupBox3.Controls.Add(this.isVCOM); this.groupBox3.ForeColor = System.Drawing.Color.Cornsilk; this.groupBox3.Location = new System.Drawing.Point(315, 3); this.groupBox3.Name = "groupBox3"; - this.groupBox3.Size = new System.Drawing.Size(417, 469); + this.groupBox3.Size = new System.Drawing.Size(417, 294); this.groupBox3.TabIndex = 14; this.groupBox3.TabStop = false; - this.groupBox3.Text = "Fastboot"; + this.groupBox3.Text = "Actions"; + // + // RebootFB + // + this.RebootFB.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(47)))), ((int)(((byte)(70))))); + this.RebootFB.BackColorAdditional = System.Drawing.Color.Gray; + this.RebootFB.BackColorGradientEnabled = false; + this.RebootFB.BackColorGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Horizontal; + this.RebootFB.BorderColor = System.Drawing.Color.Tomato; + this.RebootFB.BorderColorEnabled = false; + this.RebootFB.BorderColorOnHover = System.Drawing.Color.Tomato; + this.RebootFB.BorderColorOnHoverEnabled = false; + this.RebootFB.Cursor = System.Windows.Forms.Cursors.Hand; + this.RebootFB.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.RebootFB.ForeColor = System.Drawing.Color.White; + this.RebootFB.Location = new System.Drawing.Point(6, 100); + this.RebootFB.Name = "RebootFB"; + this.RebootFB.RippleColor = System.Drawing.Color.Black; + this.RebootFB.RoundingEnable = false; + this.RebootFB.Size = new System.Drawing.Size(405, 35); + this.RebootFB.TabIndex = 26; + this.RebootFB.Text = "Reboot (FASTBOOT)"; + this.RebootFB.TextHover = null; + this.RebootFB.UseDownPressEffectOnClick = false; + this.RebootFB.UseRippleEffect = true; + this.RebootFB.UseVisualStyleBackColor = false; + this.RebootFB.UseZoomEffectOnHover = false; + this.RebootFB.Click += new System.EventHandler(this.RebootFB_Click); // - // FRPchk + // groupBox8 // - this.FRPchk.AutoSize = true; - this.FRPchk.Location = new System.Drawing.Point(129, 336); - this.FRPchk.Name = "FRPchk"; - this.FRPchk.Size = new System.Drawing.Size(132, 20); - this.FRPchk.TabIndex = 25; - this.FRPchk.Text = "FRP Unlock Only"; - this.FRPchk.UseVisualStyleBackColor = true; + this.groupBox8.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(38)))), ((int)(((byte)(49))))); + this.groupBox8.Controls.Add(this.BLkeyHI); + this.groupBox8.Controls.Add(this.isVCOM); + this.groupBox8.ForeColor = System.Drawing.Color.Cornsilk; + this.groupBox8.Location = new System.Drawing.Point(6, 136); + this.groupBox8.Name = "groupBox8"; + this.groupBox8.Size = new System.Drawing.Size(405, 51); + this.groupBox8.TabIndex = 21; + this.groupBox8.TabStop = false; + this.groupBox8.Text = "Bootloader Key"; + // + // BLkeyHI + // + this.BLkeyHI.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(47)))), ((int)(((byte)(60))))); + this.BLkeyHI.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.BLkeyHI.ForeColor = System.Drawing.SystemColors.Menu; + this.BLkeyHI.Location = new System.Drawing.Point(6, 21); + this.BLkeyHI.Name = "BLkeyHI"; + this.BLkeyHI.Size = new System.Drawing.Size(282, 22); + this.BLkeyHI.TabIndex = 10; + this.BLkeyHI.Text = "0000000000000000"; + // + // isVCOM + // + this.isVCOM.AutoSize = true; + this.isVCOM.Checked = true; + this.isVCOM.CheckState = System.Windows.Forms.CheckState.Checked; + this.isVCOM.Location = new System.Drawing.Point(294, 21); + this.isVCOM.Name = "isVCOM"; + this.isVCOM.Size = new System.Drawing.Size(105, 20); + this.isVCOM.TabIndex = 14; + this.isVCOM.Text = "VCOM mode"; + this.isVCOM.UseVisualStyleBackColor = true; // // FrpHISIUnlock // @@ -1527,7 +1503,7 @@ private void InitializeComponent() this.FrpHISIUnlock.Cursor = System.Windows.Forms.Cursors.Hand; this.FrpHISIUnlock.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); this.FrpHISIUnlock.ForeColor = System.Drawing.Color.White; - this.FrpHISIUnlock.Location = new System.Drawing.Point(6, 364); + this.FrpHISIUnlock.Location = new System.Drawing.Point(6, 192); this.FrpHISIUnlock.Name = "FrpHISIUnlock"; this.FrpHISIUnlock.RippleColor = System.Drawing.Color.Black; this.FrpHISIUnlock.RoundingEnable = false; @@ -1554,13 +1530,13 @@ private void InitializeComponent() this.UNLOCKHISI.Cursor = System.Windows.Forms.Cursors.Hand; this.UNLOCKHISI.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); this.UNLOCKHISI.ForeColor = System.Drawing.Color.White; - this.UNLOCKHISI.Location = new System.Drawing.Point(6, 398); + this.UNLOCKHISI.Location = new System.Drawing.Point(6, 226); this.UNLOCKHISI.Name = "UNLOCKHISI"; this.UNLOCKHISI.RippleColor = System.Drawing.Color.Black; this.UNLOCKHISI.RoundingEnable = false; this.UNLOCKHISI.Size = new System.Drawing.Size(405, 28); this.UNLOCKHISI.TabIndex = 23; - this.UNLOCKHISI.Text = "Download and Read Unlock code"; + this.UNLOCKHISI.Text = "Download and Read/Write Unlock code"; this.UNLOCKHISI.TextHover = null; this.UNLOCKHISI.UseDownPressEffectOnClick = false; this.UNLOCKHISI.UseRippleEffect = true; @@ -1595,16 +1571,6 @@ private void InitializeComponent() this.HISI_board_FB.UseZoomEffectOnHover = false; this.HISI_board_FB.Click += new System.EventHandler(this.HISI_board_FB_Click); // - // EnDisFBLOCK - // - this.EnDisFBLOCK.AutoSize = true; - this.EnDisFBLOCK.Location = new System.Drawing.Point(6, 338); - this.EnDisFBLOCK.Name = "EnDisFBLOCK"; - this.EnDisFBLOCK.Size = new System.Drawing.Size(79, 20); - this.EnDisFBLOCK.TabIndex = 20; - this.EnDisFBLOCK.Text = "FBLOCK"; - this.EnDisFBLOCK.UseVisualStyleBackColor = true; - // // FBLstHISI // this.FBLstHISI.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(37)))), ((int)(((byte)(90))))); @@ -1618,7 +1584,7 @@ private void InitializeComponent() this.FBLstHISI.Cursor = System.Windows.Forms.Cursors.Hand; this.FBLstHISI.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); this.FBLstHISI.ForeColor = System.Drawing.Color.White; - this.FBLstHISI.Location = new System.Drawing.Point(6, 432); + this.FBLstHISI.Location = new System.Drawing.Point(6, 260); this.FBLstHISI.Name = "FBLstHISI"; this.FBLstHISI.RippleColor = System.Drawing.Color.Black; this.FBLstHISI.RoundingEnable = false; @@ -1659,50 +1625,24 @@ private void InitializeComponent() this.RdHISIinfo.UseZoomEffectOnHover = false; this.RdHISIinfo.Click += new System.EventHandler(this.RdHISIinfo_Click); // - // isVCOM - // - this.isVCOM.AutoSize = true; - this.isVCOM.Checked = true; - this.isVCOM.CheckState = System.Windows.Forms.CheckState.Checked; - this.isVCOM.Location = new System.Drawing.Point(306, 336); - this.isVCOM.Name = "isVCOM"; - this.isVCOM.Size = new System.Drawing.Size(105, 20); - this.isVCOM.TabIndex = 14; - this.isVCOM.Text = "VCOM mode"; - this.isVCOM.UseVisualStyleBackColor = true; - // - // DSGSDG - // - this.DSGSDG.BackColor = System.Drawing.Color.DarkMagenta; - this.DSGSDG.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.DSGSDG.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; - this.DSGSDG.ForeColor = System.Drawing.Color.Yellow; - this.DSGSDG.Location = new System.Drawing.Point(3, 478); - this.DSGSDG.Multiline = true; - this.DSGSDG.Name = "DSGSDG"; - this.DSGSDG.ReadOnly = true; - this.DSGSDG.Size = new System.Drawing.Size(729, 22); - this.DSGSDG.TabIndex = 15; - this.DSGSDG.Text = "ALL RIGHTS OF METHOD TO HISI UNLOCKER BELONG TO POTATONV"; - this.DSGSDG.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; - // // groupBox2 // this.groupBox2.Controls.Add(this.label11); - this.groupBox2.Controls.Add(this.groupBox8); this.groupBox2.Controls.Add(this.BLKEYTXT); + this.groupBox2.Controls.Add(this.FRPchk); this.groupBox2.Controls.Add(this.label2); this.groupBox2.Controls.Add(this.VersionIdTxt); this.groupBox2.Controls.Add(this.label3); this.groupBox2.Controls.Add(this.FblockStateTxt); this.groupBox2.Controls.Add(this.label12); this.groupBox2.Controls.Add(this.ModelIdTxt); + this.groupBox2.Controls.Add(this.EnDisFBLOCK); this.groupBox2.Controls.Add(this.label13); this.groupBox2.Controls.Add(this.BuildIdTxt); this.groupBox2.ForeColor = System.Drawing.Color.Cornsilk; this.groupBox2.Location = new System.Drawing.Point(3, 62); this.groupBox2.Name = "groupBox2"; - this.groupBox2.Size = new System.Drawing.Size(322, 410); + this.groupBox2.Size = new System.Drawing.Size(322, 235); this.groupBox2.TabIndex = 3; this.groupBox2.TabStop = false; this.groupBox2.Text = "Device Info"; @@ -1717,29 +1657,6 @@ private void InitializeComponent() this.label11.TabIndex = 18; this.label11.Text = "BLKEY"; // - // groupBox8 - // - this.groupBox8.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(38)))), ((int)(((byte)(49))))); - this.groupBox8.Controls.Add(this.BLkeyHI); - this.groupBox8.ForeColor = System.Drawing.Color.Cornsilk; - this.groupBox8.Location = new System.Drawing.Point(8, 353); - this.groupBox8.Name = "groupBox8"; - this.groupBox8.Size = new System.Drawing.Size(298, 51); - this.groupBox8.TabIndex = 21; - this.groupBox8.TabStop = false; - this.groupBox8.Text = "Bootloader Key"; - // - // BLkeyHI - // - this.BLkeyHI.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(47)))), ((int)(((byte)(60))))); - this.BLkeyHI.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.BLkeyHI.ForeColor = System.Drawing.SystemColors.Menu; - this.BLkeyHI.Location = new System.Drawing.Point(8, 20); - this.BLkeyHI.Name = "BLkeyHI"; - this.BLkeyHI.Size = new System.Drawing.Size(284, 22); - this.BLkeyHI.TabIndex = 10; - this.BLkeyHI.Text = "0000000000000000"; - // // BLKEYTXT // this.BLKEYTXT.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(47)))), ((int)(((byte)(60))))); @@ -1751,6 +1668,16 @@ private void InitializeComponent() this.BLKEYTXT.Size = new System.Drawing.Size(232, 22); this.BLKEYTXT.TabIndex = 17; // + // FRPchk + // + this.FRPchk.AutoSize = true; + this.FRPchk.Location = new System.Drawing.Point(8, 188); + this.FRPchk.Name = "FRPchk"; + this.FRPchk.Size = new System.Drawing.Size(132, 20); + this.FRPchk.TabIndex = 25; + this.FRPchk.Text = "FRP Unlock Only"; + this.FRPchk.UseVisualStyleBackColor = true; + // // label2 // this.label2.AutoSize = true; @@ -1814,6 +1741,16 @@ private void InitializeComponent() this.ModelIdTxt.Size = new System.Drawing.Size(232, 22); this.ModelIdTxt.TabIndex = 4; // + // EnDisFBLOCK + // + this.EnDisFBLOCK.AutoSize = true; + this.EnDisFBLOCK.Location = new System.Drawing.Point(8, 162); + this.EnDisFBLOCK.Name = "EnDisFBLOCK"; + this.EnDisFBLOCK.Size = new System.Drawing.Size(199, 20); + this.EnDisFBLOCK.TabIndex = 20; + this.EnDisFBLOCK.Text = "FBLOCK state(default false)"; + this.EnDisFBLOCK.UseVisualStyleBackColor = true; + // // label13 // this.label13.AutoSize = true; @@ -1856,7 +1793,7 @@ private void InitializeComponent() this.HISIbootloaders.Location = new System.Drawing.Point(5, 20); this.HISIbootloaders.Margin = new System.Windows.Forms.Padding(2); this.HISIbootloaders.Name = "HISIbootloaders"; - this.HISIbootloaders.Size = new System.Drawing.Size(296, 24); + this.HISIbootloaders.Size = new System.Drawing.Size(298, 24); this.HISIbootloaders.TabIndex = 16; this.HISIbootloaders.SelectedIndexChanged += new System.EventHandler(this.HISIbootloaders_SelectedIndexChanged); // @@ -2144,11 +2081,11 @@ private void InitializeComponent() // this.BURG.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(38)))), ((int)(((byte)(49))))); this.BURG.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.BURG.Controls.Add(this.OemDCLBL); + this.BURG.Controls.Add(this.button1); this.BURG.Controls.Add(this.MtkLBL); this.BURG.Controls.Add(this.button2); - this.BURG.Controls.Add(this.DiagTag); this.BURG.Controls.Add(this.button8); - this.BURG.Controls.Add(this.button10); this.BURG.Controls.Add(this.HISItag); this.BURG.Controls.Add(this.button9); this.BURG.Controls.Add(this.GPTtag); @@ -2159,13 +2096,14 @@ private void InitializeComponent() this.BURG.Controls.Add(this.HomeTag); this.BURG.Controls.Add(this.button5); this.BURG.Controls.Add(this.BURGBTN); + this.BURG.Dock = System.Windows.Forms.DockStyle.Left; this.BURG.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(64)))), ((int)(((byte)(83))))); - this.BURG.Location = new System.Drawing.Point(1, 1); + this.BURG.Location = new System.Drawing.Point(0, 0); this.BURG.Margin = new System.Windows.Forms.Padding(2); this.BURG.MaximumSize = new System.Drawing.Size(244, 600); this.BURG.MinimumSize = new System.Drawing.Size(72, 346); this.BURG.Name = "BURG"; - this.BURG.Size = new System.Drawing.Size(72, 564); + this.BURG.Size = new System.Drawing.Size(72, 569); this.BURG.TabIndex = 30; // // MtkLBL @@ -2175,7 +2113,7 @@ private void InitializeComponent() this.MtkLBL.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); this.MtkLBL.ForeColor = System.Drawing.Color.MintCream; this.MtkLBL.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.MtkLBL.Location = new System.Drawing.Point(72, 422); + this.MtkLBL.Location = new System.Drawing.Point(67, 357); this.MtkLBL.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); this.MtkLBL.Name = "MtkLBL"; this.MtkLBL.RightToLeft = System.Windows.Forms.RightToLeft.No; @@ -2192,7 +2130,7 @@ private void InitializeComponent() this.button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.button2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(38)))), ((int)(((byte)(49))))); this.button2.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.button2.Location = new System.Drawing.Point(2, 422); + this.button2.Location = new System.Drawing.Point(-2, 357); this.button2.Margin = new System.Windows.Forms.Padding(2); this.button2.Name = "button2"; this.button2.Size = new System.Drawing.Size(67, 49); @@ -2200,22 +2138,6 @@ private void InitializeComponent() this.button2.UseVisualStyleBackColor = false; this.button2.Click += new System.EventHandler(this.button2_Click); // - // DiagTag - // - this.DiagTag.Cursor = System.Windows.Forms.Cursors.Default; - this.DiagTag.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.DiagTag.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.DiagTag.ForeColor = System.Drawing.Color.MintCream; - this.DiagTag.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.DiagTag.Location = new System.Drawing.Point(72, 305); - this.DiagTag.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.DiagTag.Name = "DiagTag"; - this.DiagTag.RightToLeft = System.Windows.Forms.RightToLeft.No; - this.DiagTag.Size = new System.Drawing.Size(165, 49); - this.DiagTag.TabIndex = 40; - this.DiagTag.Text = "Diag Test"; - this.DiagTag.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // // button8 // this.button8.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(38)))), ((int)(((byte)(49))))); @@ -2224,7 +2146,7 @@ private void InitializeComponent() this.button8.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.button8.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(38)))), ((int)(((byte)(49))))); this.button8.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.button8.Location = new System.Drawing.Point(3, 247); + this.button8.Location = new System.Drawing.Point(0, 246); this.button8.Margin = new System.Windows.Forms.Padding(2); this.button8.Name = "button8"; this.button8.Size = new System.Drawing.Size(64, 54); @@ -2232,22 +2154,6 @@ private void InitializeComponent() this.button8.UseVisualStyleBackColor = false; this.button8.Click += new System.EventHandler(this.button8_Click); // - // button10 - // - this.button10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(38)))), ((int)(((byte)(49))))); - this.button10.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("button10.BackgroundImage"))); - this.button10.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.button10.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.button10.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(38)))), ((int)(((byte)(49))))); - this.button10.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.button10.Location = new System.Drawing.Point(2, 305); - this.button10.Margin = new System.Windows.Forms.Padding(2); - this.button10.Name = "button10"; - this.button10.Size = new System.Drawing.Size(67, 49); - this.button10.TabIndex = 39; - this.button10.UseVisualStyleBackColor = false; - this.button10.Click += new System.EventHandler(this.button10_Click); - // // HISItag // this.HISItag.Cursor = System.Windows.Forms.Cursors.Default; @@ -2255,7 +2161,7 @@ private void InitializeComponent() this.HISItag.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); this.HISItag.ForeColor = System.Drawing.Color.MintCream; this.HISItag.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.HISItag.Location = new System.Drawing.Point(72, 362); + this.HISItag.Location = new System.Drawing.Point(67, 300); this.HISItag.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); this.HISItag.Name = "HISItag"; this.HISItag.RightToLeft = System.Windows.Forms.RightToLeft.No; @@ -2272,7 +2178,7 @@ private void InitializeComponent() this.button9.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.button9.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(38)))), ((int)(((byte)(49))))); this.button9.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.button9.Location = new System.Drawing.Point(2, 362); + this.button9.Location = new System.Drawing.Point(-2, 304); this.button9.Margin = new System.Windows.Forms.Padding(2); this.button9.Name = "button9"; this.button9.Size = new System.Drawing.Size(67, 49); @@ -2287,7 +2193,7 @@ private void InitializeComponent() this.GPTtag.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); this.GPTtag.ForeColor = System.Drawing.Color.MintCream; this.GPTtag.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.GPTtag.Location = new System.Drawing.Point(72, 247); + this.GPTtag.Location = new System.Drawing.Point(67, 246); this.GPTtag.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); this.GPTtag.Name = "GPTtag"; this.GPTtag.RightToLeft = System.Windows.Forms.RightToLeft.No; @@ -2303,7 +2209,7 @@ private void InitializeComponent() this.UnlockTag.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); this.UnlockTag.ForeColor = System.Drawing.Color.MintCream; this.UnlockTag.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.UnlockTag.Location = new System.Drawing.Point(72, 189); + this.UnlockTag.Location = new System.Drawing.Point(67, 188); this.UnlockTag.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); this.UnlockTag.Name = "UnlockTag"; this.UnlockTag.RightToLeft = System.Windows.Forms.RightToLeft.No; @@ -2320,7 +2226,7 @@ private void InitializeComponent() this.BackupRestoreTag.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); this.BackupRestoreTag.ForeColor = System.Drawing.Color.MintCream; this.BackupRestoreTag.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.BackupRestoreTag.Location = new System.Drawing.Point(72, 128); + this.BackupRestoreTag.Location = new System.Drawing.Point(67, 127); this.BackupRestoreTag.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); this.BackupRestoreTag.Name = "BackupRestoreTag"; this.BackupRestoreTag.RightToLeft = System.Windows.Forms.RightToLeft.No; @@ -2337,7 +2243,7 @@ private void InitializeComponent() this.button6.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.button6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(38)))), ((int)(((byte)(49))))); this.button6.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.button6.Location = new System.Drawing.Point(2, 68); + this.button6.Location = new System.Drawing.Point(-1, 67); this.button6.Margin = new System.Windows.Forms.Padding(2); this.button6.Name = "button6"; this.button6.Size = new System.Drawing.Size(67, 49); @@ -2353,7 +2259,7 @@ private void InitializeComponent() this.button4.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.button4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(38)))), ((int)(((byte)(49))))); this.button4.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.button4.Location = new System.Drawing.Point(3, 189); + this.button4.Location = new System.Drawing.Point(0, 188); this.button4.Margin = new System.Windows.Forms.Padding(2); this.button4.Name = "button4"; this.button4.Size = new System.Drawing.Size(64, 49); @@ -2368,7 +2274,7 @@ private void InitializeComponent() this.HomeTag.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); this.HomeTag.ForeColor = System.Drawing.Color.MintCream; this.HomeTag.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.HomeTag.Location = new System.Drawing.Point(72, 68); + this.HomeTag.Location = new System.Drawing.Point(67, 67); this.HomeTag.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); this.HomeTag.Name = "HomeTag"; this.HomeTag.RightToLeft = System.Windows.Forms.RightToLeft.No; @@ -2385,7 +2291,7 @@ private void InitializeComponent() this.button5.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.button5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(38)))), ((int)(((byte)(49))))); this.button5.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.button5.Location = new System.Drawing.Point(2, 128); + this.button5.Location = new System.Drawing.Point(-1, 127); this.button5.Margin = new System.Windows.Forms.Padding(2); this.button5.Name = "button5"; this.button5.Size = new System.Drawing.Size(67, 49); @@ -2462,6 +2368,38 @@ private void InitializeComponent() this.PGG.ValueMaximum = 100; this.PGG.ValueMinimum = 0; // + // button1 + // + this.button1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(38)))), ((int)(((byte)(49))))); + this.button1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("button1.BackgroundImage"))); + this.button1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(38)))), ((int)(((byte)(49))))); + this.button1.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.button1.Location = new System.Drawing.Point(2, 410); + this.button1.Margin = new System.Windows.Forms.Padding(2); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(61, 49); + this.button1.TabIndex = 43; + this.button1.UseVisualStyleBackColor = false; + this.button1.Click += new System.EventHandler(this.button1_Click_1); + // + // OemDCLBL + // + this.OemDCLBL.Cursor = System.Windows.Forms.Cursors.Default; + this.OemDCLBL.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.OemDCLBL.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.OemDCLBL.ForeColor = System.Drawing.Color.MintCream; + this.OemDCLBL.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.OemDCLBL.Location = new System.Drawing.Point(67, 406); + this.OemDCLBL.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.OemDCLBL.Name = "OemDCLBL"; + this.OemDCLBL.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.OemDCLBL.Size = new System.Drawing.Size(165, 49); + this.OemDCLBL.TabIndex = 44; + this.OemDCLBL.Text = "Oeminfo D/C"; + this.OemDCLBL.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // // Window // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -2507,17 +2445,12 @@ private void InitializeComponent() this.QCOM2.ResumeLayout(false); this.WHAT.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.PARTLIST)).EndInit(); - this.Diag.ResumeLayout(false); - this.Diag.PerformLayout(); - this.groupBox5.ResumeLayout(false); this.NC.ResumeLayout(false); - this.NC.PerformLayout(); this.groupBox3.ResumeLayout(false); - this.groupBox3.PerformLayout(); - this.groupBox2.ResumeLayout(false); - this.groupBox2.PerformLayout(); this.groupBox8.ResumeLayout(false); this.groupBox8.PerformLayout(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); this.CpuHISIBox.ResumeLayout(false); this.MTK.ResumeLayout(false); this.groupBox14.ResumeLayout(false); @@ -2554,7 +2487,6 @@ private void InitializeComponent() private System.Windows.Forms.Button button7; private System.Windows.Forms.Button ReadPA; private System.Windows.Forms.TabPage Board; - private System.Windows.Forms.TabPage Diag; private System.Windows.Forms.ComboBox DEVICER; private System.Windows.Forms.GroupBox ACTBOX; private System.Windows.Forms.GroupBox SLDEV; @@ -2563,7 +2495,6 @@ private void InitializeComponent() private System.Windows.Forms.Label PTOFIRM; private System.Windows.Forms.GroupBox GLOADER; private System.Windows.Forms.TabPage NC; - private System.Windows.Forms.Button SendCMDtestBTN; private System.Windows.Forms.Panel BURG; private System.Windows.Forms.Button BURGBTN; private System.Windows.Forms.Button button5; @@ -2590,11 +2521,6 @@ private void InitializeComponent() private UI.NButton ReBbtn; private UI.NButton RdGPT; private UI.NProgressBar PGG; - private System.Windows.Forms.Label DiagTag; - private System.Windows.Forms.Button button10; - private System.Windows.Forms.TextBox CMDbox; - private System.Windows.Forms.GroupBox groupBox5; - private System.Windows.Forms.Button CLEARDD; private System.Windows.Forms.GroupBox groupBox6; private System.Windows.Forms.ComboBox LBOX; private System.Windows.Forms.CheckBox DBB; @@ -2610,7 +2536,6 @@ private void InitializeComponent() private System.Windows.Forms.TextBox ModelIdTxt; private System.Windows.Forms.Label label13; private System.Windows.Forms.TextBox BuildIdTxt; - private System.Windows.Forms.TextBox DSGSDG; private System.Windows.Forms.GroupBox groupBox3; private UI.NButton RdHISIinfo; private System.Windows.Forms.GroupBox CpuHISIBox; @@ -2669,5 +2594,8 @@ private void InitializeComponent() public System.Windows.Forms.ComboBox IndexiesOEMdata; private UI.NButton FrpHISIUnlock; private System.Windows.Forms.CheckBox FRPchk; + private UI.NButton RebootFB; + private System.Windows.Forms.Label OemDCLBL; + private System.Windows.Forms.Button button1; } } \ No newline at end of file diff --git a/HuaweiUnlock/Window.cs b/HuaweiUnlock/Window.cs index d90615f..ff5358d 100644 --- a/HuaweiUnlock/Window.cs +++ b/HuaweiUnlock/Window.cs @@ -153,8 +153,7 @@ public void Lang() Tab.TabPages[1].Text = Language.Get("BackupRestoreTagSimpl"); Tab.TabPages[2].Text = Language.Get("UnlockSimpl"); Tab.TabPages[3].Text = Language.Get("GPTtagSimpl"); - Tab.TabPages[4].Text = Language.Get("DiagTagSimpl"); - Tab.TabPages[5].Text = Language.Get("UnlockSimplHISI"); + Tab.TabPages[4].Text = Language.Get("UnlockSimplHISI"); PARTLIST.Columns[0].HeaderText = Language.Get("NameTABLE0"); PARTLIST.Columns[1].HeaderText = Language.Get("NameTABLE1"); @@ -162,7 +161,7 @@ public void Lang() groupBox2.Text = DevInfoQCBox.Text = Language.Get("DeviceInfoTag"); TUTR2.Text = Language.Get("Tutr2"); - ACTBOX.Text = Language.Get("Action"); + groupBox13.Text = groupBox3.Text = ACTBOX.Text = Language.Get("Action"); RDinf.Text = Language.Get("DiagTagRead"); UpgradMDbtn.Text = Language.Get("DiagTagUpgradeMode"); ReBbtn.Text = Language.Get("DiagTagReboot"); @@ -330,7 +329,7 @@ private void PARTLIST_CellDoubleClick(object sender, DataGridViewCellEventArgs e string partition = PARTLIST.CurrentRow.Cells[0].Value.ToString(); WHAT.Text = Language.Get("Action") + partition; Temp = partition; - LOG(0, "sl", partition); + LOG(0, "PartSled", partition); } } @@ -555,24 +554,21 @@ private void button8_Click(object sender, EventArgs e) Tab.SelectTab(3); } - private void button10_Click(object sender, EventArgs e) + private void button9_Click(object sender, EventArgs e) { Tab.SelectTab(4); } - - private void button9_Click(object sender, EventArgs e) + private void button2_Click(object sender, EventArgs e) { Tab.SelectTab(5); } - - private void DebugE_ch(object sender, EventArgs e) + private void button1_Click_1(object sender, EventArgs e) { - debug = DBB.Checked; + Tab.SelectTab(6); } - - private void CLEARDD_Click(object sender, EventArgs e) + private void DebugE_ch(object sender, EventArgs e) { - CMDbox.Text = ""; + debug = DBB.Checked; } private void SelLanguage_Click(object sender, EventArgs e) @@ -823,12 +819,6 @@ private void ClearS_Click(object sender, EventArgs e) RdGPT.Visible = RdGPT.Enabled = true; WHAT.Enabled = WHAT.Visible; } - - private void button2_Click(object sender, EventArgs e) - { - Tab.SelectTab(6); - } - private void button12_Click(object sender, EventArgs e) { //RESET CANCEL BTN @@ -854,7 +844,6 @@ private void button12_Click(object sender, EventArgs e) Tab.Enabled = true; UpdateApp.unpacked = false; LOG(1, "Canceled"); - CMDbox.Text = ""; } private void FlashUpdAppBTN_Click(object sender, EventArgs e) @@ -869,7 +858,7 @@ private void FlashUpdAppBTN_Click(object sender, EventArgs e) }; if (!CheckDevice(AutoLdr.Checked ? "" : LoaderBox.Text, PORTBOX.Text)) return; if (openFileDialog.ShowDialog() == DialogResult.OK) - UpdateApp.Unpack(openFileDialog.FileName, 2, AutoLdr.Checked ? "" : LoaderBox.Text); + UpdateApp.Unpack(openFileDialog.FileName, 2); } private void Searching(object sender, EventArgs e) @@ -928,7 +917,7 @@ private void CrtGptBTN2_Click(object sender, EventArgs e) Progress(50); LOG(0, "RrGPTXMLSPR", saveFileDialog.FileName); LOG(0, "File", openFileDialog.FileName + "<==-"); - WriteGPT_TO_XML(saveFileDialog.FileName, gpttable); + WriteGPT_TO_XML(saveFileDialog.FileName, gpttable, false); Progress(100); } else @@ -979,7 +968,7 @@ private void CrtGPTBtn_Click(object sender, EventArgs e) Progress(50); LOG(0, "SUCC_ReadGPT"); LOG(0, "RrGPTXMLSPR", papthto); - WriteGPT_TO_XML(papthto, LangProc.DeviceInfo.Partitions); + WriteGPT_TO_XML(papthto, LangProc.DeviceInfo.Partitions, false); Progress(100); } else @@ -1058,13 +1047,6 @@ private async void CompileOemInfBTN_Click(object sender, EventArgs e) LOG(0, "Done"); } - private void SendCMDtestBTN_Click(object sender, EventArgs e) - { - if (!Find()) return; - var ss = DIAG.AUTH_PHONE(Base64.Decode("OQMhzRP7Zu8zw6pDsPKf2ZZdlqWT1rgMo5tHxV0GgWnWPM9gKsxOiZMmNHqC7GafDII17P9mOcsZ8Km862fzag==")); - CMDbox.Text = "[ANSWER]" + CRC.HexDump(ss); - } - private void RDinf_Click(object sender, EventArgs e) { if (!Find()) return; @@ -1123,5 +1105,10 @@ private void FrpHISIUnlock_Click(object sender, EventArgs e) FRPchk.Checked = true; UNLOCKHISI_Click(sender, e); } + + private void RebootFB_Click(object sender, EventArgs e) + { + HISI.Reboot(); + } } } diff --git a/HuaweiUnlock/Window.resx b/HuaweiUnlock/Window.resx index 6d41bd7..d2a33e9 100644 --- a/HuaweiUnlock/Window.resx +++ b/HuaweiUnlock/Window.resx @@ -127,6 +127,99 @@ True + + + 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 + RU5ErkJggg== + + iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -737,316 +830,6 @@ aPmXnfWcz6gv/xrPUvhL+gRlf0B2A9WBnBPwV0KEPgpmChsAEKDNNcL8ZnCf9hbkQs8xLQCCR0GqB0P4 KM6weoJoEU67gI0AsgARxgQOQn0scX31c3e0fI/1l7AAoSBYDG050/+Jy+npqzwZNDPz/wHESCG1QCDs GgAAAABJRU5ErkJggg== - - - - - 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 - GDrX+nXvh/f8pDny1LPC8wYAgK0hACQQABgy1/p169Enn27OPO/S5o17HBKeNwAAbC0BIIEAwBC51q9b - 5ccm/vzzX2l22f+oV5w1AABMhQCQQABgSFzr173rbrylWbz6lPC8AQBgqgSABAIAQ3HcGec09z74aLjE - Mnl33v9Qc8w7PxieNQAATJcAkEAAoO9c69etx9eua87++Ceb7fdYFZ43AAB0QQBIIADQVxuv9fu8a/26 - sv6FF5tPXXVts+uBR4fnDQAAXRIAEggA9I1r/bp3w823NQccdVp43gAAkEEASCAA0Ceu9evWPQ880hx/ - xrnhWQMAQCYBIIEAQB+41q9ba9Y923zows80O+x56CvOGgAAZoIAkEAAYJS51q9b5ef8L7/m+mbB0mPC - 8wYAgJkiACQQABhVrvXr1o233tEse/u7wrMGAICZJgAkEAAYNa7169aPH36sOfnM88OzBgCA2SIAJBAA - GBWu9etW+bGJ8y65vHnT3oeH5w0AALNJAEggAFA71/p174vX3tC8dcVx4XkDAEANBIAEAgA1c61ft26+ - /a7moOPOCM8aAABqIgAkEACoUfm30671684Dj61pTjv7go1/myI6bwAAqI0AkEAAoCblWr9z/+xzrvXr - yNPrNzQXXHZl8+Z9VofnDQAAtRIAEggA1MK1ft368vXfafY4+ITwrAEAoHYCQAIBgNm23xGnNt+86Qfh - Esvk3Xrnfc2hJ50ZnjUAAIwKASCBAMBsca1ftx5+4qmNtyX4OX8AAPpAAEggADDTyoJ6xjkXu9avI+s2 - PN9c9Nmrm532PTI8bwAAGEUCQAIBgJm06sT3udavQ1+94aZmr1UnhWcNAACjTABIIAAwEzZe6/f1b4dL - LJP3w3t+0hx56lnhWQMAQB8IAAkEADK51q9bjz75dPO+8y5p3rjHIeF5AwBAXwgACQQAsrjWrzvlixLL - Fybusv9R4VkDAEDfCAAJBAC65lq/bl134y3N4tWnhGcNAAB9JQAkEADoyvi1fs8+71q/Ltz54webt7/z - g+FZAwBA3wkACQQApuufr/V7cm24yDI5j69d15z18U822++xKjxvAAAYAgEggQDAdJRr/W69875wkWVy - 1r/wYvOpq65tdj3w6PCsAQBgSASABAIAU+Fav27dcPNtzQFHnRaeNQAADJEAkEAAYDJc69etex54ZONt - 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 - 0QIDTJ0AADBMAkACAQCgW9ECA0ydAAAwTAJAAgEAoFtlWQG6s9vK48LPGgD9JgAkEAAAAACojQCQQAAA - AACgNgJAAgEAAACA2ggACQQAAAAAaiMAJBAAAAAAqI0AkEAAAAAAoDYCQAIBAAAAgNoIAAkEAAAAAGoj - ACQQAAAAAKiNAJBAAAAAAKA2AkACAQAAAIDaCAAJBAAAAABqIwAkEAAAAACojQCQQAAAAACgNgJAAgEA - AACA2ggACQQAAAAAaiMAJBAAAAAAqI0AkEAAAAAAoDYCQAIBAAAAgNoIAAkEAAAAAGojACQQAAAAAKiN - AJBAAAAAAKA2AkACAQAAAIDaCAAJBAAAAABqIwAkEAAAAACojQCQQAAAAACgNgJAAgEAAACA2ggACQQA - AAAAaiMAJBAAAAAAqI0AkEAAAAAAoDYCQAIBAAAAgNoIAAkEAAAAAGojACQQAAAAAKiNAJBAAAAAAKA2 - AkACAQAAAIDaCAAJBAAAAABqIwAkEAAAAACojQCQQAAAAACgNgJAAgEAAACA2ggACQQAAAAAaiMAJBAA - AAAAqI0AkEAAAAAAoDYCQAIBAAAAgNoIAAkEAAAAAGojACQQAAAAAKiNAJBAAAAAAKA2AkACAQAAAIDa - CAAJBAAAAABqIwAkEAAAAACojQCQQAAAAACgNgJAAgEAAACA2ggACQQAAAAAaiMAJBAAAAAAqI0AkEAA - AAAAoDYCQAIBAAAAgNoIAAkEAAAAAGojACQQAAAAAKiNAJBAAAAAAKA2AkACAQAAAIDaCAAJBAAAAABq - IwAkEAAAAACojQCQQAAAAACgNgJAAgEAAACA2ggACQQAAAAAaiMAJBAAAAAAqI0AkEAAAAAAoDYCQAIB - AAAAgNoIAAkEAAAAAGojACQQAAAAAKiNAJBAAAAAAKA2AkACAQAAAIDaCAAJBAAAAABqIwAkEAAAAACo - jQCQQAAAAACgNgJAAgEAAACA2ggACQQAAAAAaiMAJBAAAAAAqI0AkEAAAAAAoDYCQAIBAAAAgNoIAAkE - AAAAAGojACQQAAAAAKiNAJBAAAAAAKA2AkACAQAAAIDaCAAJBAAAAABqIwAkEAAAAACojQCQQAAAAACg - NgJAAgEAAACA2ggACQQAAAAAaiMAJBAAAAAAqI0AkEAAAAAAoDYCQAIBAAAAgNoIAAkEAAAAAGojACQQ - AAAAAKiNAJBAAAAAAKA2AkACAQAAAIDaCAAJBAAAAABqIwAkEAAAAACojQCQQAAAAACgNgJAAgEAAACA - 2ggACQQAAAAAaiMAJBAAAAAAqI0AkEAAAAAAoDYCQAIBAAAAgNoIAAkEAAAAAGojACQQAAAAAKiNAJBA - AAAAAKA2AkACAQAAAIDaCAAJBAAAAABqIwAkEAAAAACojQCQQAAAAACgNgJAAgEAAACA2ggACQQAAAAA - aiMAJBAAAAAAqI0AkEAAAAAAoDYCQAIBAAAAgNoIAAkEAAAAAGojACQQAAAAAKiNAJBAAAAAAKA2AkAC - AQAAAIDaCAAJBAAAAABqIwAkEAAAAACojQCQQAAAAACgNgJAAgEAAACA2ggACQQAAAAAaiMAJBAAAAAA - qI0AkEAAAAAAoDYCQAIBAAAAgNoIAAkEAAAAAGojACQQAAAAAKiNAJBAAAAAAKA2AkACAQAAAIDaCAAJ - BAAAAABqIwAkEAAAAACojQCQQAAAAACgNgJAAgEAAACA2ggACQQAAAAAaiMAJBAAAAAAqI0AkEAAAAAA - oDYCQAIBAAAAgNoIAAkEAAAAAGojACQQAAAAAKiNAJBAAAAAAKA2AkACAQAAAIDaCAAJBAAAAABqIwAk - EAAAAACojQCQQAAAAACgNgJAAgEAAACA2ggACQQAAAAAaiMAJBAAAAAAqI0AkEAAAAAAoDYCQAIBAAAA - gNoIAAkEAAAAAGojACQQAAAAAKiNAJBAAAAAAKA2AkACAQAAAIDaCAAJBAAAAABqIwAkEAAAAACojQCQ - QAAAAACgNgJAAgEAAACA2ggACQQAAAAAaiMAJBAAAAAAqI0AkEAAAAAAoDYCQAIBAAAAgNoIAAkEAAAA - AGojACQQAAAAAKiNAJBAAAAAAKA2AkACAQAAAIDaCAAJBAAAAABqIwAkEAAAAACojQCQQAAAAACgNgJA - AgEAAACA2ggACQQAAAAAaiMAJBAAAAAAqI0AkEAAAAAAoDYCQAIBAAAAgNoIAAkEAAAAAGojACQQAAAA - AKiNAJBAAAAAAKA2AkACAQAAAIDaCAAJBAAAAABqIwAkEAAAAACojQCQQAAAAACgNgJAAgEAAACA2ggA - CQQAAAAAaiMAJBAAAAAAqI0AkEAAAAAAoDYCQAIBAAAAgNoIAAkEAAAAAGojACQQAAAAAKiNAJBAAAAA - AKA2AkACAQAAAIDaCAAJBAAAAABqIwAkEAAAAACojQCQQAAAAACgNgJAAgEAAACA2ggACQQAAAAAaiMA - JBAAAAAAqI0AkEAAAAAAoDYCQAIBAAAAgNoIAAkEAAAAAGojACQQAAAAAKiNAJBAAAAAAKA2AkACAQAA - AIDaCAAJBAAAAABqIwAkEAAAAACojQCQQAAAAACgNgJAAgEAAACA2ggACQQAAAAAaiMAJBAAAAAAqI0A - kEAAAAAAoDYCQAIBAAAAgNoIAAkEAAAAAGojACQQAAAAAKiNAJBAAAAAAKA2AkACAQAAAIDaCAAJBAAA - AABqIwAkEAAAAACojQCQQAAAAACgNgJAAgEAAACA2ggACQQAAAAAaiMAJBAAAAAAqI0AkEAAAAAAoDYC - QAIBAAAAgNoIAAkEAAAAAGojACQQAAAAAKiNAJBAAAAAAKA2AkACAQAAAIDaCAAJBAAAAABqIwAkEAAA - AACojQCQQAAAAACgNgJAAgEAAACA2ggACQQAAAAAaiMAJBAAAAAAqI0AkEAAAAAAoDYCQAIBAAAAgNoI - AAkEAAAAAGojACQQAAAAAKiNAJBAAAAAAKA2AkACAQAAAIDaCAAJBAAAAABqIwAkEAAAAACojQCQQAAA - AACgNgJAAgEAAACA2ggACQQAAAAAaiMAJBAAAAAAqI0AkEAAAAAAoDYCQAIBAAAAgNoIAAkEAAAAAGoj - ACQQAAAAAKiNAJBAAAAAAKA2AkACAQAAAIDaCAAJBAAAAABqIwAkEAAAAACojQCQQAAAAACgNgJAAgEA - AACA2ggACQQAAAAAaiMAJBAAAAAAqI0AkEAAAAAAoDYCQAIBAAAAgNoIAAkEAAAAAGojACQQAAAAAKiN - AJBAAAAAAKA2AkACAQAAAIDaCAAJBAAAAABqIwAkEAAAAACojQCQQAAAAACgNgJAAgEAAACA2ggACQQA - AAAAaiMAJBAAAAAAqI0AkEAAAAAAoDYCQAIBAAAAgNoIAAkEAAAAAGojACQQAAAAAKiNAJBAAAAAAKA2 - AkACAQAAAIDaCAAJBAAAAABqIwAkEAAAAACojQCQQAAAAACgNgJAAgEAAACA2ggACQQAAAAAaiMAJBAA - AAAAqI0AkEAAAAAAoDYCQAIBAAAAgNoIAAkEAAAAAGojACQQAAAAAKiNAJBAAAAAAKA2AkACAQAAAIDa - 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 - E2kNAAAAAElFTkSuQmCC