From 75659177005745c32de0b8810c13fecbbb3c73d6 Mon Sep 17 00:00:00 2001 From: s0uthwest <42713499+s0uthwest@users.noreply.github.com> Date: Sat, 5 Jan 2019 01:04:36 -0800 Subject: [PATCH 01/82] Remove unused makefile --- Makefile.static | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 Makefile.static diff --git a/Makefile.static b/Makefile.static deleted file mode 100644 index 77ff68e2..00000000 --- a/Makefile.static +++ /dev/null @@ -1,22 +0,0 @@ -TARGET = tsschecker_tool -INSTALLTARGET = tsschecker -CFLAGS += -Wall -std=c11 -LDFLAGS += -l:libplist.a -l:libxml2.a -l:liblzma.a -l:libfragmentzip.a -lcurl -lm -lcrypto -lz -SRC_DIR += tsschecker -OBJECTS += $(SRC_DIR)/main.o $(SRC_DIR)/download.o $(SRC_DIR)/jsmn.o $(SRC_DIR)/tss.o $(SRC_DIR)/tsschecker.o - - -all : $(TARGET) - -$(TARGET) : $(OBJECTS) - $(CC) $(CFLAGS) $(OBJECTS) $(LDFLAGS) -o $(TARGET) - @echo "Successfully built $(TARGET)" - -$(SRC_DIR)/%.o : $(SRC_DIR)/%.c - $(CC) $(CFLAGS) $< -c -o $@ - -install : $(TARGET) - cp $(TARGET) /usr/local/bin/$(INSTALLTARGET) - @echo "Installed $(INSTALLTARGET)" -clean : - rm -rf tsschecker/*.o $(TARGET) From fbed468f2a1bf7272423364e1de47cb51a9acd68 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 5 Jan 2019 01:09:58 -0800 Subject: [PATCH 02/82] Updated jssy submodule --- .gitignore | 10 +++++++--- external/jssy | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 245a6c54..52fc3f97 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ -*.patch +.DS_Store +.patch *.diff .*.swp Makefile @@ -14,12 +15,15 @@ config.status config.guess config.sub configure +devices.txt +external/.DS_Store install-sh libtool ltmain.sh m4 missing -tsschecker/all_tsschecker.h +tsschecker/.DS_Store +tsschecker/all.h.bak tsschecker/*.a tsschecker/*.o tsschecker/*.la @@ -28,4 +32,4 @@ tsschecker/tsschecker tsschecker/tsschecker.exe tsschecker/.libs tsschecker/.deps -stamp-h1 +stamp-h1 \ No newline at end of file diff --git a/external/jssy b/external/jssy index ba625644..daf9a67d 160000 --- a/external/jssy +++ b/external/jssy @@ -1 +1 @@ -Subproject commit ba6256448344799247d2c858cf2db879e62043f6 +Subproject commit daf9a67d906087ddd3217d6c8ac8ecd5c6116d4f From 272bdb9c37d58ee5867734ae12d350f74092ffe2 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 5 Jan 2019 01:12:48 -0800 Subject: [PATCH 03/82] Added file with specific generators / ApNonces --- LICENSE => LICENSE.txt | 0 devices.txt | 4 ---- nonces.txt | 18 ++++++++++++++++++ 3 files changed, 18 insertions(+), 4 deletions(-) rename LICENSE => LICENSE.txt (100%) delete mode 100644 devices.txt create mode 100644 nonces.txt diff --git a/LICENSE b/LICENSE.txt similarity index 100% rename from LICENSE rename to LICENSE.txt diff --git a/devices.txt b/devices.txt deleted file mode 100644 index c9bd370e..00000000 --- a/devices.txt +++ /dev/null @@ -1,4 +0,0 @@ -iPhone8,2-n66ap 123456789 -iPhone7,2 123456789 -iPhone6,2 123456789 :603be133ff0bdfa0f83f21e74191cf6770ea43bb:352dfad1713834f4f94c5ff3c3e5e99477347b95:42c88f5a7b75bc944c288a7215391dc9c73b6e9f:0dc448240696866b0cc1b2ac3eca4ce22af11cb3:9804d99e85bbafd4bb1135a1044773b4df9f1ba3 - diff --git a/nonces.txt b/nonces.txt new file mode 100644 index 00000000..5f1d9031 --- /dev/null +++ b/nonces.txt @@ -0,0 +1,18 @@ +Recommmended save blobs with this generators: +0x9d0b5b5ff92fff23 +0xbd34a880be0b53f3 +0x4bb8834ba6444b50 +0x698337f5a79c3292 +0xedeeb72d7575e360 +0x0000000000000000 + +Recovery collision APNonces: +9e4c518009d00df190a450b3b47691768812360c +9f4aeec726e7c682339ddb3c6c2dec52662dc517 + +DFU collision APNonces (not for all devices/firmwares, some collisioned): +6b83f831a6305ae90d57a78ba8eb9d81e7a9058f +6b81a2c3cdf87404dee28330f7fcb0ee62c425a1 +778282f0cf6e5234446d88ebc5dcfde81f415b57 +7ce1657233867e988e1b48988ef98fc28ddf20f5 +198365e19ea223bd73ee27faa555ca24ac6ed65d \ No newline at end of file From c3c56851545dec5e8b4213364c84678271a646df Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 5 Jan 2019 01:27:09 -0800 Subject: [PATCH 04/82] More simplier versioning Thanks tihmstar for original commit on img4tool project: https://github.com/tihmstar/img4tool/commit/f6ff5aa0b63f8346917c8330b502d6b4729cb663 --- Makefile.am | 2 +- autogen.sh | 1 - configure.ac | 10 +++++----- saveblobs.sh | 4 ++-- setBuildVersion.sh | 3 --- tsschecker/Makefile.am | 4 ++-- tsschecker/{all_tsschecker.h => all.h} | 12 +++++++----- tsschecker/download.h | 2 +- tsschecker/main.c | 5 ++--- tsschecker/tss.h | 2 +- tsschecker/tsschecker.h | 2 +- 11 files changed, 22 insertions(+), 25 deletions(-) delete mode 100755 setBuildVersion.sh rename tsschecker/{all_tsschecker.h => all.h} (76%) diff --git a/Makefile.am b/Makefile.am index b2075c20..200089d5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1 +1 @@ -SUBDIRS = tsschecker +SUBDIRS = tsschecker \ No newline at end of file diff --git a/autogen.sh b/autogen.sh index 4ec16f0b..9a1f8a28 100755 --- a/autogen.sh +++ b/autogen.sh @@ -13,4 +13,3 @@ autoconf if [ -z "$NOCONFIGURE" ]; then ./configure "$@" fi -./setBuildVersion.sh diff --git a/configure.ac b/configure.ac index f38ad840..3f65cba7 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,5 @@ AC_PREREQ([2.69]) -AC_INIT([tsschecker], [1.0], [https://github.com/encounter/tsschecker/issues],, [https://github.com/encounter/tsschecker]) -# prepare for automake +AC_INIT([tsschecker], [1.0], [https://github.com/s0uthwest/tsschecker/issues]) AM_INIT_AUTOMAKE([foreign]) AC_CONFIG_SRCDIR([tsschecker/tsschecker.h]) @@ -14,8 +13,11 @@ AC_PROG_LIBTOOL AC_CONFIG_MACRO_DIRS([m4]) -# Checks for libraries. +# Version bump +CFLAGS+=" -D TSSCHECKER_VERSION_COMMIT_COUNT=\\\"$(git rev-list --count HEAD | tr -d '\n')\\\"" +CFLAGS+=" -D TSSCHECKER_VERSION_COMMIT_SHA=\\\"$(git rev-parse HEAD | tr -d '\n')\\\"" +# Checks for libraries. AC_CANONICAL_HOST AC_ARG_WITH( @@ -42,7 +44,6 @@ AS_IF([test "x$with_libcrypto" != xno], ) PKG_CHECK_MODULES(libirecovery, libirecovery >= 0.2.0) - # Checks for header files. AC_CHECK_HEADERS([stddef.h stdlib.h string.h unistd.h]) @@ -85,4 +86,3 @@ AM_CONDITIONAL(WIN32, test x$win32 = xtrue) AC_CONFIG_FILES([Makefile tsschecker/Makefile]) AC_OUTPUT - diff --git a/saveblobs.sh b/saveblobs.sh index 5f18e454..f4b25c76 100644 --- a/saveblobs.sh +++ b/saveblobs.sh @@ -52,12 +52,12 @@ while read device; do if [ $code -eq 0 ]; then echo " ok"; else echo " failed"; echo $ret;fi done - echo -n "saving ota blob ... " + echo -n "saving OTA blob ... " ret=$(tsschecker -d $model -e $ecid -s --save-path shsh_ota -l -o $hw);code=$? echo "$ret" >>/tmp/tsschecker_saveblobs_fullog.log echo -n $(echo $ret | grep -o "iOS .* for device" | rev | cut -c 12- | rev ) if [ $code -eq 0 ]; then echo " ok"; else echo " failed"; echo $ret;fi - echo -n "saving beta ota blob ... " + echo -n "saving OTA blob for beta version... " ret=$(tsschecker -d $model -e $ecid -s --save-path shsh_beta_ota -l -o --beta $hw);code=$? echo "$ret" >>/tmp/tsschecker_saveblobs_fullog.log echo -n $(echo $ret | grep -o "iOS .* for device" | rev | cut -c 12- | rev ) diff --git a/setBuildVersion.sh b/setBuildVersion.sh deleted file mode 100755 index feb64c09..00000000 --- a/setBuildVersion.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -sed -i '.bak' "s/.*VERSION_COMMIT_COUNT.*/#define VERSION_COMMIT_COUNT \"$(git rev-list --count HEAD)\"/" ./tsschecker/all_tsschecker.h 2>/dev/null || sed -i "s/.*VERSION_COMMIT_COUNT.*/#define VERSION_COMMIT_COUNT \"$(git rev-list --count HEAD)\"/" ./tsschecker/all_tsschecker.h 2>/dev/null -sed -i '.bak' "s/.*VERSION_COMMIT_SHA.*/#define VERSION_COMMIT_SHA \"$(git rev-parse HEAD)\"/" ./tsschecker/all_tsschecker.h 2>/dev/null || sed -i "s/.*VERSION_COMMIT_SHA.*/#define VERSION_COMMIT_SHA \"$(git rev-parse HEAD)\"/" ./tsschecker/all_tsschecker.h 2>/dev/null diff --git a/tsschecker/Makefile.am b/tsschecker/Makefile.am index acf75188..56f83ae0 100644 --- a/tsschecker/Makefile.am +++ b/tsschecker/Makefile.am @@ -15,11 +15,11 @@ libtsschecker_la_SOURCES = tsschecker.c tss.c download.c libtsschecker_la_CFLAGS = $(AM_CFLAGS) libtsschecker_la_LIBADD = $(AM_LDFLAGS) libjssy.a else -bin_PROGRAMS = tsschecker +bin_PROGRAMS = tsschecker tsschecker_CFLAGS = $(AM_CFLAGS) if WIN32 tsschecker_LDFLAGS = -all-static -static-libgcc -static-libstdc++ $(AM_LDFLAGS) endif tsschecker_LDADD = $(AM_LDFLAGS) libjssy.a -tsschecker_SOURCES = tsschecker.c tss.c download.c main.c +tsschecker_SOURCES = tsschecker.c tss.c download.c main.c endif diff --git a/tsschecker/all_tsschecker.h b/tsschecker/all.h similarity index 76% rename from tsschecker/all_tsschecker.h rename to tsschecker/all.h index 424f4af3..486f6190 100644 --- a/tsschecker/all_tsschecker.h +++ b/tsschecker/all.h @@ -10,18 +10,20 @@ #define all_h extern int idevicerestore_debug; - #define info(a ...) printf(a) #define log(a ...) if (dbglog) printf(a) #define warning(a ...) if (dbglog) printf("[WARNING] "), printf(a) #define debug(a ...) if (idevicerestore_debug) printf(a) #define error(a ...) printf("[Error] "),printf(a) -#define VERSION_COMMIT_COUNT "UNDEFINED_COMMIT_COUNT" -#define VERSION_COMMIT_SHA "UNDEFINED_COMMIT_SHA" - +// version bump +#ifdef DEBUG // this is for developing with Xcode +#define TSSCHECKER_VERSION_COMMIT_COUNT "Debug" +#define TSSCHECKER_VERSION_COMMIT_SHA "Build: " __DATE__ " " __TIME__ +#else +#endif -//statis assert +// statis assert #define CASSERT(predicate, file) _impl_CASSERT_LINE(predicate,__LINE__,file) #define _impl_PASTE(a,b) a##b diff --git a/tsschecker/download.h b/tsschecker/download.h index 52821e6e..0eca6893 100644 --- a/tsschecker/download.h +++ b/tsschecker/download.h @@ -10,7 +10,7 @@ #define download_h #include -#include "all_tsschecker.h" +#include "all.h" int downloadFile(const char *url, const char *dstPath); diff --git a/tsschecker/main.c b/tsschecker/main.c index 1cc4b648..f689b4a6 100644 --- a/tsschecker/main.c +++ b/tsschecker/main.c @@ -20,7 +20,7 @@ #include #include "download.h" #include "tsschecker.h" -#include "all_tsschecker.h" +#include "all.h" #define FLAG_LIST_IOS 1 << 0 #define FLAG_LIST_DEVICES 1 << 1 @@ -30,7 +30,6 @@ int idevicerestore_debug; #define reterror(code,a ...) {error(a); err = code; goto error;} - static struct option longopts[] = { { "build-manifest", required_argument, NULL, 'm' }, { "device", required_argument, NULL, 'd' }, @@ -151,7 +150,7 @@ char *parseNonce(const char *nonce, size_t *parsedLen){ int main(int argc, const char * argv[]) { int err = 0; int isSigned = 0; - printf("Version: "VERSION_COMMIT_SHA" - "VERSION_COMMIT_COUNT"\n"); + printf("Version: "TSSCHECKER_VERSION_COMMIT_SHA" - "TSSCHECKER_VERSION_COMMIT_COUNT"\n"); // versioning dbglog = 1; idevicerestore_debug = 0; diff --git a/tsschecker/tss.h b/tsschecker/tss.h index a422e7e7..0d866b2e 100644 --- a/tsschecker/tss.h +++ b/tsschecker/tss.h @@ -29,7 +29,7 @@ extern "C" { #endif #include -#include "all_tsschecker.h" +#include "all.h" extern int print_tss_request; diff --git a/tsschecker/tsschecker.h b/tsschecker/tsschecker.h index c39a639a..65ec64e4 100644 --- a/tsschecker/tsschecker.h +++ b/tsschecker/tsschecker.h @@ -17,7 +17,7 @@ extern "C" { #include "jssy.h" #include #include "tss.h" -#include "all_tsschecker.h" +#include "all.h" extern int dbglog; extern int print_tss_response; From 3ea462a91f5c42215c05a7ee9033e8e9d51aaa5a Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 5 Jan 2019 01:32:18 -0800 Subject: [PATCH 05/82] Added bbgcids for some older devices --- tsschecker/tsschecker.c | 156 +++++++++++++++++++++------------------- tsschecker/tsschecker.h | 7 +- 2 files changed, 85 insertions(+), 78 deletions(-) diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index 1312ef4b..f82b536c 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -1,5 +1,5 @@ // -// ipswme.c +// tsschecker.c // tsschecker // // Created by tihmstar on 07.01.16. @@ -36,8 +36,8 @@ #define FIRMWARE_JSON_URL "https://api.ipsw.me/v2.1/firmwares.json/condensed" #define FIRMWARE_OTA_JSON_URL "https://api.ipsw.me/v2.1/ota.json/condensed" -#define NONCELEN_BASEBAND 20 -#define NONCELEN_SEP 20 +#define NONCELEN_BASEBAND 20 // for devices with KTRR - 32 +#define NONCELEN_SEP 20 // for devices with KTRR - 32 #define swapchar(a,b) ((a) ^= (b),(b) ^= (a),(a) ^= (b)) //swaps a and b, unless they are the same variable #define printJString(str) printf("%.*s",(int)str->size,str->value) @@ -109,77 +109,87 @@ int nocache = 0; int save_shshblobs = 0; const char *shshSavePath = "."DIRECTORY_DELIMITER_STR; - +// iPhone & iPod touch (1st generations) doesn't have signing technology. static struct bbdevice bbdevices[] = { - {"iPod1,1", 0, 0}, - {"iPod2,1", 0, 0}, - {"iPod3,1", 0, 0}, - {"iPod4,1", 0, 0}, - {"iPod5,1", 0, 0}, - {"iPod7,1", 0, 0}, - - {"iPhone2,1", 0, 0}, - {"iPhone3,1", 257, 12}, - {"iPhone3,3", 2, 4}, - {"iPhone4,1", 2, 4}, - {"iPhone5,1", 3255536192, 4}, - {"iPhone5,2", 3255536192, 4}, - {"iPhone5,3", 3554301762, 4}, - {"iPhone5,4", 3554301762, 4}, - {"iPhone6,1", 3554301762, 4}, - {"iPhone6,2", 3554301762, 4}, - {"iPhone7,1", 3840149528, 4}, - {"iPhone7,2", 3840149528, 4}, - {"iPhone8,1", 3840149528, 4}, - {"iPhone8,2", 3840149528, 4}, - {"iPhone8,4", 3840149528, 4}, - {"iPhone9,1", 2315222105, 4}, - {"iPhone9,2", 2315222105, 4}, - {"iPhone9,3", 1421084145, 12}, - {"iPhone9,4", 1421084145, 12}, - {"iPhone10,1", 2315222105, 4}, - {"iPhone10,2", 2315222105, 4}, - {"iPhone10,3", 2315222105, 4}, - {"iPhone10,4", 524245983, 12}, - {"iPhone10,5", 524245983, 12}, - {"iPhone10,6", 524245983, 12}, - - {"iPad1,1", 0, 0}, - {"iPad2,1", 0, 0}, - {"iPad2,2", 257, 12}, - {"iPad2,4", 0, 0}, - {"iPad2,5", 0, 0}, - {"iPad3,1", 0, 0}, - {"iPad3,2", 4, 4}, - {"iPad3,3", 4, 4}, - {"iPad3,4", 0, 0}, - {"iPad3,6", 3255536192, 4}, - {"iPad4,1", 0, 0}, - {"iPad4,2", 3554301762, 4}, - {"iPad4,4", 0, 0}, - {"iPad4,5", 3554301762, 4}, - {"iPad4,7", 0, 0}, - {"iPad4,8", 3554301762, 4}, - {"iPad5,1", 0, 0}, - {"iPad5,2", 3840149528, 4}, - {"iPad5,3", 0, 0}, - {"iPad5,4", 3840149528, 4}, - {"iPad6,3", 0, 0}, - {"iPad6,4", 3840149528, 4}, - {"iPad6,7", 0, 0}, - {"iPad6,8", 3840149528, 4}, - {"iPad6,11", 0, 0}, - {"iPad6,12", 3840149528, 4}, - {"iPad7,1", 0, 0}, - {"iPad7,2", 2315222105, 4}, - {"iPad7,3", 0, 0}, - {"iPad7,4", 2315222105, 4}, - - {"AppleTV1,1", 0, 0}, - {"AppleTV2,1", 0, 0}, - {"AppleTV3,1", 0, 0}, - {"AppleTV3,2", 0, 0}, - {"AppleTV5,3", 0, 0}, + // iPod touches + {"iPod2,1", 0, 0}, // 2nd gen + {"iPod3,1", 0, 0}, // 3rd gen + {"iPod4,1", 0, 0}, // 4th gen + {"iPod5,1", 0, 0}, // 5th gen + {"iPod7,1", 0, 0}, // 6th gen + + // iPhones + {"iPhone1,2", 0, 0}, // iPhone 3G + {"iPhone2,1", 0, 0}, // iPhone 3Gs + {"iPhone3,1", 257, 12}, // iPhone 4 GSM + {"iPhone3,2", 257, 12}, // iPhone 4 GSM (2012, Rev A) + {"iPhone3,3", 2, 4}, // iPhone 4 CDMA + {"iPhone4,1", 2, 4}, // iPhone 4s + {"iPhone5,1", 3255536192, 4}, // iPhone 5 (GSM) + {"iPhone5,2", 3255536192, 4}, // iPhone 5 (Global) + {"iPhone5,3", 3554301762, 4}, // iPhone 5c + {"iPhone5,4", 3554301762, 4}, // iPhone 5c (Global) + {"iPhone6,1", 3554301762, 4}, // iPhone 5s + {"iPhone6,2", 3554301762, 4}, // iPhone 5s (Global) + {"iPhone7,1", 3840149528, 4}, // iPhone 6 Plus + {"iPhone7,2", 3840149528, 4}, // iPhone 6 + {"iPhone8,1", 3840149528, 4}, // iPhone 6s + {"iPhone8,2", 3840149528, 4}, // iPhone 6s Plus + {"iPhone8,4", 3840149528, 4}, // iPhone SE + {"iPhone9,1", 2315222105, 4}, // iPhone 7 (Global) + {"iPhone9,2", 2315222105, 4}, // iPhone 7 Plus (Global) + {"iPhone9,3", 1421084145, 12}, // iPhone 7 GSM + {"iPhone9,4", 1421084145, 12}, // iPhone 7 Plus (GSM) + {"iPhone10,1", 2315222105, 4}, // iPhone 8 (Global) + {"iPhone10,2", 2315222105, 4}, // iPhone 8 Plus (Global) + {"iPhone10,3", 2315222105, 4}, // iPhone X (Global) + {"iPhone10,4", 524245983, 12}, // iPhone 8 (GSM) + {"iPhone10,5", 524245983, 12}, // iPhone 8 Plus (GSM) + {"iPhone10,6", 524245983, 12}, // iPhone X GSM + + // iPads + {"iPad1,1", 0, 0}, // iPad (1st gen) + {"iPad2,1", 0, 0}, // iPad 2 Wi-Fi + {"iPad2,2", 257, 12}, // iPad 2 GSM + {"iPad2,3", 257, 12}, // iPad 2 CDMA + {"iPad2,4", 0, 0}, // iPad 2 Wi-Fi (2012) + {"iPad2,5", 0, 0}, // iPad mini (1st gen, Wi-Fi) + {"iPad3,1", 0, 0}, // the new iPad (3rd gen, Wi-Fi) + {"iPad3,2", 4, 4}, // the new iPad (3rd gen, CDMA) + {"iPad3,3", 4, 4}, // the new iPad (3rd gen, GSM) + {"iPad3,4", 0, 0}, // iPad with Retina Display (4th gen, Wi-Fi) + {"iPad3,5", 3255536192, 4}, // iPad with Retina Display (4th gen, Global) + {"iPad3,6", 3255536192, 4}, // iPad with Retina Display (4th gen, Global) + {"iPad4,1", 0, 0}, // iPad Air (Wi-Fi) + {"iPad4,2", 3554301762, 4}, // iPad Air (Cellular) + {"iPad4,3", 3554301762, 4}, // iPad Air (Cellular, China) + {"iPad4,4", 0, 0}, // iPad mini 2 (Wi-Fi) + {"iPad4,5", 3554301762, 4}, // iPad mini 2 (Cellular) + {"iPad4,6", 3554301762, 4}, // iPad mini 2 (Cellular, China) + {"iPad4,7", 0, 0}, // iPad mini 3 (Wi-Fi) + {"iPad4,8", 3554301762, 4}, // iPad mini 3 (Cellular) + {"iPad4,9", 3554301762, 4}, // iPad mini 3 (Cellular, China) + {"iPad5,1", 0, 0}, // iPad mini 4 (Wi-Fi) + {"iPad5,2", 3840149528, 4}, // iPad mini 4 (Cellular) + {"iPad5,3", 0, 0}, // iPad Air 2 (Wi-Fi) + {"iPad5,4", 3840149528, 4}, // iPad Air 2 (Cellular) + {"iPad6,3", 0, 0}, // iPad Pro (9,7", Wi-Fi) + {"iPad6,4", 3840149528, 4}, // iPad Pro (9,7", Cellular) + {"iPad6,7", 0, 0}, // iPad Pro (12.9", 1st gen, Wi-Fi) + {"iPad6,8", 3840149528, 4}, // iPad Pro (12.9", 1st gen, Cellular) + {"iPad6,11", 0, 0}, // iPad (5th gen, 2017, Wi-Fi) + {"iPad6,12", 3840149528, 4}, // iPad (5th gen, 2017, Cellular) + {"iPad7,1", 0, 0}, // iPad Pro (12.9", 2nd gen, Wi-Fi) + {"iPad7,2", 2315222105, 4}, // iPad Pro (12.9", 1st gen, Cellular) + {"iPad7,3", 0, 0}, // iPad Pro (10,5", Wi-Fi) + {"iPad7,4", 2315222105, 4}, // iPad Pro (10,5", Cellular) + {"iPad7,5", 0, 0}, // iPad (6th gen, 2018, Wi-Fi) + + // Apple TVs + {"AppleTV2,1", 0, 0}, // 2nd gen + {"AppleTV3,1", 0, 0}, // 3rd gen + {"AppleTV3,2", 0, 0}, // 3rd gen (2013) + {"AppleTV5,3", 0, 0}, // 4th gen {NULL, 0, 0} }; diff --git a/tsschecker/tsschecker.h b/tsschecker/tsschecker.h index 65ec64e4..462c47c6 100644 --- a/tsschecker/tsschecker.h +++ b/tsschecker/tsschecker.h @@ -1,5 +1,5 @@ // -// ipswme.h +// tsschecker.h // tsschecker // // Created by tihmstar on 07.01.16. @@ -100,10 +100,8 @@ int isManifestSignedForDevice(const char *buildManifestPath, t_devicevals *devVa int isManifestBufSignedForDevice(char *buildManifestBuffer, t_devicevals *devVals, t_basebandMode basebandMode); int isVersionSignedForDevice(jssytok_t *firmwareTokens, t_iosVersion *versVals, t_devicevals *devVals); - jssytok_t *getFirmwaresForDevice(const char *device, jssytok_t *tokens, int isOta); - int checkFirmwareForDeviceExists(t_devicevals *devVals, t_iosVersion *versVals, jssytok_t *tokens); int downloadPartialzip(const char *url, const char *file, const char *dst); @@ -114,9 +112,8 @@ plist_t getBuildidentity(plist_t buildManifest, const char *model, int isUpdateI plist_t getBuildidentityWithBoardconfig(plist_t buildManifest, const char *boardconfig, int isUpdateInstall); - #ifdef __cplusplus } #endif -#endif /* tsscheker_h */ +#endif /* tsschecker_h */ From 12b1d3750edc26899a91bdc89d9ee8bb8157ce2d Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 5 Jan 2019 01:34:03 -0800 Subject: [PATCH 06/82] Added bbgcids for some devices Wi-Fi versions for newest iPad Pro; Apple TV 4K Some Apple Watches --- tsschecker/tsschecker.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index f82b536c..6049aa8c 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -184,12 +184,23 @@ static struct bbdevice bbdevices[] = { {"iPad7,3", 0, 0}, // iPad Pro (10,5", Wi-Fi) {"iPad7,4", 2315222105, 4}, // iPad Pro (10,5", Cellular) {"iPad7,5", 0, 0}, // iPad (6th gen, 2018, Wi-Fi) + {"iPad8,1", 0, 0}, // iPad Pro (11", Wi-Fi) + {"iPad8,2", 0, 0}, // iPad Pro (11", 1 TB model, Wi-Fi) + {"iPad8,5", 0, 0}, // iPad Pro (12,9", 3rd gen, Wi-Fi) + {"iPad8,6", 0, 0}, // iPad Pro (12,9", 3rd gen, 1 TB model, Wi-Fi) + + // Apple Watches + {"Watch3,3", 0, 0}, // Apple Watch Series 3 (38mm) + {"Watch3,4", 0, 0}, // Apple Watch Series 3 (42mm) + {"Watch4,1", 0, 0}, // Apple Watch Series 4 (40mm) + {"Watch4,2", 0, 0}, // Apple Watch Series 4 (44mm) // Apple TVs {"AppleTV2,1", 0, 0}, // 2nd gen {"AppleTV3,1", 0, 0}, // 3rd gen {"AppleTV3,2", 0, 0}, // 3rd gen (2013) {"AppleTV5,3", 0, 0}, // 4th gen + {"AppleTV6,2", 0, 0}, // 4K {NULL, 0, 0} }; From 69759eae11d3e0391159d1f4e894892c7939b475 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 5 Jan 2019 01:39:01 -0800 Subject: [PATCH 07/82] Fixed warnings on compiling --- tsschecker/tsschecker.c | 47 ++++++++++++++--------------------------- 1 file changed, 16 insertions(+), 31 deletions(-) diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index 6049aa8c..e83c922e 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -94,14 +94,12 @@ static const char *win_path_get(enum paths path){ #define DIRECTORY_DELIMITER_STR "/" #define DIRECTORY_DELIMITER_CHR '/' - #include #define __mkdir(path, mode) mkdir(path, mode) #endif -#pragma mark getJson functions - +/* getJson functions */ int dbglog = 0; int print_tss_request = 0; int print_tss_response = 0; @@ -240,8 +238,7 @@ char *getOtaJson(){ return fJson; } -#pragma mark more get functions - +/* more get functions */ const char *getBoardconfigFromModel(const char *model){ const char *rt = NULL; irecv_device_t table = irecv_devices_get_all(); @@ -346,9 +343,7 @@ plist_t getBuildidentity(plist_t buildManifest, const char *model, int isUpdateI #undef reterror } - -#pragma mark json functions - +/* json functions */ long parseTokens(const char *json, jssytok_t **tokens){ log("[JSON] counting elements\n"); @@ -359,8 +354,7 @@ long parseTokens(const char *json, jssytok_t **tokens){ return jssy_parse(json, strlen(json), *tokens, sizeof(jssytok_t) * tokensCnt); } -#pragma mark get functions - +/* get functions (again) */ //returns NULL terminated array of t_versionURL objects t_versionURL *getFirmwareUrls(const char *deviceModel, t_iosVersion *versVals, jssytok_t *tokens){ t_versionURL *rets = NULL; @@ -545,16 +539,15 @@ void getRandNum(char *dst, size_t size, int base){ } } -#pragma mark tss functions - +/* TSS functions */ int tss_populate_devicevals(plist_t tssreq, uint64_t ecid, char *nonce, size_t nonce_size, char *sep_nonce, size_t sep_nonce_size, int image4supported){ - plist_dict_set_item(tssreq, "ApECID", plist_new_uint(ecid)); //0000000000000000 + plist_dict_set_item(tssreq, "ApECID", plist_new_uint(ecid)); if (nonce) { - plist_dict_set_item(tssreq, "ApNonce", plist_new_data(nonce, nonce_size));//aa aa aa aa bb cc dd ee ff 00 11 22 33 44 55 66 77 88 99 aa + plist_dict_set_item(tssreq, "ApNonce", plist_new_data(nonce, nonce_size)); } - if (sep_nonce) {//aa aa aa aa bb cc dd ee ff 00 11 22 33 44 55 66 77 88 99 aa + if (sep_nonce) { plist_dict_set_item(tssreq, "ApSepNonce", plist_new_data(sep_nonce, sep_nonce_size)); } @@ -591,7 +584,7 @@ int tss_populate_basebandvals(plist_t tssreq, plist_t tssparameters, int64_t BbG /* BasebandNonce not required */ -// plist_dict_set_item(parameters, "BbNonce", plist_new_data(bbnonce, NONCELEN_BASEBAND)); +// plist_dict_set_item(parameters, "BbNonce", plist_new_data(bbnonce, NONCELEN_BASEBAND)); plist_dict_set_item(parameters, "BbGoldCertId", plist_new_uint(BbGoldCertId)); plist_dict_set_item(parameters, "BbSNUM", plist_new_data((char *)BbSNUM, bbsnumSize)); @@ -663,7 +656,7 @@ int tss_populate_random(plist_t tssreq, int is64bit, t_devicevals *devVals){ }else{ devVals->apnonce = (char*)malloc((devVals->parsedApnonceLen = nonceLen)+1); if (nonceLen == 20) { - //this is a pre iPhone7 device + //this is a pre iPhone 7 device //nonce is derived from generator with SHA1 unsigned char zz[9] = {0}; @@ -726,8 +719,6 @@ int tss_populate_random(plist_t tssreq, int is64bit, t_devicevals *devVals){ return rt; } - - int tssrequest(plist_t *tssreqret, char *buildManifest, t_devicevals *devVals, t_basebandMode basebandMode){ #define reterror(a...) {error(a); error = -1; goto error;} int error = 0; @@ -784,12 +775,12 @@ int tssrequest(plist_t *tssreqret, char *buildManifest, t_devicevals *devVals, t plist_dict_set_item(tssreq, "@ApImg4Ticket", plist_new_bool(0)); if (plist_dict_get_item(tssreq, "@APTicket")) plist_dict_set_item(tssreq, "@APTicket", plist_new_bool(0)); - //TODO don't use .shsh2 ending and don't save generator when saving only baseband + //TO-DO don't use .shsh2 ending and don't save generator when saving only baseband info("[TSSR] User specified to request only a Baseband ticket.\n"); } if (basebandMode != kBasebandModeWithoutBaseband) { - //TODO: verify that this being int64_t instead of uint64_t doesn't actually break something + //TO-DO: verify that this being int64_t instead of uint64_t doesn't actually break something t_bbdevice bbinfo = getBBDeviceInfo(devVals->deviceModel); int64_t BbGoldCertId = devVals->bbgcid ? devVals->bbgcid : bbinfo->bbgcid; @@ -961,7 +952,7 @@ int isManifestSignedForDevice(const char *buildManifestPath, t_devicevals *devVa char *bufManifest = NULL; info("[TSSC] opening %s\n",buildManifestPath); - //filehandling + //file handling FILE *fmanifest = fopen(buildManifestPath, "r"); if (!fmanifest) reterror("[TSSC] ERROR: file %s not found!\n",buildManifestPath); fseek(fmanifest, 0, SEEK_END); @@ -1048,8 +1039,6 @@ int isVersionSignedForDevice(jssytok_t *firmwareTokens, t_iosVersion *versVals, } free(urls),urls = NULL; - - error: nocache = nocacheorig; if (buildManifest) free(buildManifest); @@ -1057,8 +1046,7 @@ int isVersionSignedForDevice(jssytok_t *firmwareTokens, t_iosVersion *versVals, #undef reterror } -#pragma mark print functions - +/* print functions */ char *getFirmwareUrl(const char *deviceModel, t_iosVersion *versVals, jssytok_t *tokens){ warning("FUNCTION IS DEPRECATED, USE getFirmwareUrls INSTEAD!\n"); t_versionURL *versions, *v; @@ -1080,7 +1068,7 @@ char *getFirmwareUrl(const char *deviceModel, t_iosVersion *versVals, jssytok_t return ret; } -#warning "print devices function doesn't actually check if devices are sorted. it assues they are sorted in json" +/* Print devices function doesn't actually check if devices are sorted. it assues they are sorted in json */ int printListOfDevices(jssytok_t *tokens){ #define MAX_PER_LINE 10 log("[JSON] printing device list\n"); @@ -1192,7 +1180,6 @@ int printListOfiOSForDevice(jssytok_t *tokens, char *device, int isOTA){ if (res == 0) continue; } - nextVer = atoi(versions[i]); if (currVer && currVer != nextVer) printf("\n"), rspn = 0; currVer = nextVer; @@ -1210,9 +1197,7 @@ int printListOfiOSForDevice(jssytok_t *tokens, char *device, int isOTA){ #undef MAX_PER_LINE } - -#pragma mark check functions - +/* check functions */ jssytok_t *getFirmwaresForDevice(const char *device, jssytok_t *tokens, int isOta){ jssytok_t *ctok = (isOta) ? tokens : jssy_dictGetValueForKey(tokens, "devices"); From f0bbc43fd9f2090843575420614aa97a9063fb57 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 5 Jan 2019 01:40:59 -0800 Subject: [PATCH 08/82] Undocumented bb: semi-fix error on compiling --- tsschecker/tsschecker.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index e83c922e..867cb92b 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -786,8 +786,7 @@ int tssrequest(plist_t *tssreqret, char *buildManifest, t_devicevals *devVals, t int64_t BbGoldCertId = devVals->bbgcid ? devVals->bbgcid : bbinfo->bbgcid; size_t bbsnumSize = devVals->bbsnumSize ? devVals->bbsnumSize : bbinfo->bbsnumSize; if (BbGoldCertId != bbinfo->bbgcid || bbsnumSize != bbinfo->bbsnumSize) { - info("\n[TSSR] Found undocumented baseband. Please file an issue at " PACKAGE_BUGREPORT - " with the following information:\n\t%s {\"%s\", " PRIi64 ", " PRIu64 "}\n\n", + info("\n[TSSR] Found undocumented baseband\n\n"), devVals->deviceBoard, devVals->deviceModel, BbGoldCertId, bbsnumSize); } @@ -830,7 +829,6 @@ int isManifestBufSignedForDevice(char *buildManifestBuffer, t_devicevals *devVal isSigned = ((apticket = tss_request_send(tssreq, NULL)) > 0); - if (print_tss_response) debug_plist(apticket); if (isSigned && save_shshblobs){ if (!devVals->installType){ From 831622caf17c78d0331774c11d7d2c64c0eab6ba Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 5 Jan 2019 01:44:40 -0800 Subject: [PATCH 09/82] Actualizing ReadMe Thanks @0x15f for pull request on original project: https://github.com/tihmstar/tsschecker/pull/128 --- README.md | 44 ++++++++++++++++---------------------------- 1 file changed, 16 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index f06c39af..8aea1b3a 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # tsschecker -_tsschecker is a powerful tool to check tss signing status of various devices and iOS versions._ +_tsschecker is a powerful tool to work with signing technology on iOS devices._ Latest compiled version can be found here: (macOS & Windows) @@ -22,35 +22,23 @@ By using all of its customization possibilities, you might discover a combinatio * [libcurl](https://curl.haxx.se/libcurl/) * [libplist](https://github.com/libimobiledevice/libplist) * [libfragmentzip](https://github.com/tihmstar/libfragmentzip) + * [openssl](https://github.com/openssl/openssl) or commonCrypto on macOS/OS X. * ## Submodules Make sure these projects compile on your system * [jssy](https://github.com/tihmstar/jssy) +## Compiling +Open terminal and execute the command: `./autogen.sh && make` or use Xcode project. -## tsschecker help -_(might become outdated):_ - -Usage: `tsschecker [OPTIONS]` - -| option (short) | option (long) | description | -|----------------|---------------------------|-----------------------------------------------------------------------------------| -| `-d` | `--device MODEL` | specify device by its MODEL (eg. `iPhone4,1`) | -| `-i` | `--ios VERSION` | specify iOS version (eg. `6.1.3`) | -| | `--buildid BUILDID` | specific buildid instead of iOS version (eg. `13C75`) | -| | `--boardconfig BOARD` | specific boardconfig instead of iPhone model (eg. `n61ap`) | -| `-h` | `--help` | prints usage information | -| `-o` | `--ota` | check OTA signing status, instead of normal restore | -| `-b` | `--no-baseband` | don't check baseband signing status. Request a ticket without baseband | -| `-m` |`--build-manifest MANIFEST`| manually specify buildmanifest. (can be used with `-d`) | -| `-s` | `--save` | save fetched shsh blobs (mostly makes sense with -e) | -| `-l` | `--latest` | use latest public iOS version instead of manually specifying one
especially useful with `-s` and `-e` for saving blobs | -| | `--apnonce NONCE` | manually specify APNONCE instead of using random one (not required for saving blobs)| -| | `--sepnonce NONCE` | manually specify SEPNONCE instead of using random one (not required for saving blobs) | -| | `--save-path PATH` | specify path for saving blobs | -| `-e`  | `--ecid ECID` | manually specify an ECID to be used for fetching blobs, instead of using random ones.
ECID must be either dec or hex eg. `5482657301265` or `ab46efcbf71` | -| | `--beta` | request ticket for beta instead of normal release (use with `-o`) | -| | `--list-devices` | list all known devices | -| |`--list-ios` | list all known iOS versions | -| |`--nocache` | ignore caches and re-download required files | -| |`--print-tss-request` | prints tss request that will be sent (plist) | -| |`--print-tss-response` | prints tss response that come from Apple (plist) | +### Some about curl for ubuntu +Follow [this guide](https://dev.to/jake/using-libcurl3-and-libcurl4-on-ubuntu-1804-bionic-184g) to use tsschecker on Ubuntu 18.04 (Bionic) as it requires libcurl3 which cannot coexist with libcurl4 on this OS. + +## Report an issue +You can do it [here](https://github.com/s0uthwest/igetnonce/issues). + +## Credits +Creator of [original project](https://github.com/tihmstar/tsschecker) - [tihmstar](https://github.com/tihmstar). + + +ReadMe updated on: + 2019-01-05 From 097b6067203cddd724fde74bb73420c7b35a6b46 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 5 Jan 2019 01:52:03 -0800 Subject: [PATCH 10/82] More TSS server's URLs --- tsschecker/main.c | 32 +++++++++++++++----------------- tsschecker/tss.c | 12 ++++++++---- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/tsschecker/main.c b/tsschecker/main.c index f689b4a6..838ab50d 100644 --- a/tsschecker/main.c +++ b/tsschecker/main.c @@ -61,37 +61,37 @@ static struct option longopts[] = { void cmd_help(){ printf("Usage: tsschecker [OPTIONS]\n"); - printf("Checks (real) signing status of device/firmware\n\n"); - - printf(" -d, --device MODEL\t\tspecific device by its MODEL (eg. iPhone4,1)\n"); - printf(" -i, --ios VERSION\t\tspecific iOS version (eg. 6.1.3)\n"); - printf(" --buildid BUILDID\t\tspecific buildid instead of iOS version (eg. 13C75)\n"); - printf(" -B, --boardconfig BOARD\tspecific boardconfig instead of iPhone model (eg. n61ap)\n"); + printf("Works with signing technology on iOS devices\n\n"); + printf(" -d, --device MODEL\t\tspecific device by its MODEL (eg. iPhone11,8)\n"); + printf(" -i, --ios VERSION\t\tspecific iOS version (eg. 12.1.2)\n"); + printf(" --buildid BUILDID\t\tspecific buildid instead of iOS version (eg. 16C404)\n"); + printf(" -B, --boardconfig BOARD\tspecific boardconfig instead of iPhone model (eg. n841ap)\n"); printf(" -h, --help\t\t\tprints usage information\n"); printf(" -o, --ota\t\t\tcheck OTA signing status, instead of normal restore\n"); printf(" -b, --no-baseband\t\tdon't check baseband signing status. Request a ticket without baseband\n"); - printf(" -m, --build-manifest\t\tmanually specify buildmanifest. (can be used with -d)\n"); - printf(" -s, --save\t\t\tsave fetched shsh blobs (mostly makes sense with -e)\n"); - printf(" -u, --update-install\t\t\trequest update ticket instead of erase\n"); + printf(" -m, --build-manifest\t\tmanually specify BuildManifest (can be used with -d)\n"); + printf(" -s, --save\t\t\tsave fetched signing blobs (mostly makes sense with -e)\n"); + printf(" -u, --update-install\t\t\trequest update blob instead of erase\n"); printf(" -l, --latest\t\t\tuse latest public iOS version instead of manually specifying one\n"); printf(" \t\tespecially useful with -s and -e for saving blobs\n"); printf(" -e, --ecid ECID\t\tmanually specify ECID to be used for fetching blobs, instead of using random ones\n"); printf(" \t\tECID must be either dec or hex eg. 5482657301265 or ab46efcbf71\n"); - printf(" --apnonce NONCE\t\tmanually specify APNONCE instead of using random one (not required for saving blobs)\n"); - printf(" --sepnonce NONCE\t\tmanually specify SEPNONCE instead of using random one (not required for saving blobs)\n"); + printf(" --apnonce NONCE\t\tmanually specify ApNonce instead of using random one (not required for saving blobs)\n"); + printf(" --sepnonce NONCE\t\tmanually specify sepNonce instead of using random one (not required for saving blobs)\n"); printf(" --bbsnum SNUM\t\tmanually specify BbSNUM, in hex, for saving valid BBTicket\n"); printf(" --save-path PATH\t\tspecify path for saving blobs\n"); printf(" --generator GEN\t\tmanually specify generator in format 0x%%16llx\n"); printf(" -h, --help\t\t\tprints usage information\n"); - printf(" --beta\t\t\trequest ticket for beta instead of normal relase (use with -o)\n"); + printf(" --beta\t\t\trequest ticket for beta instead of normal release (use with -o)\n"); printf(" --list-devices\t\tlist all known devices\n"); - printf(" --list-ios\t\tlist all known ios versions\n"); + printf(" --list-ios\t\tlist all known iOS versions\n"); printf(" --nocache \t\tignore caches and redownload required files\n"); printf(" --print-tss-request\n"); printf(" --print-tss-response\n"); - printf(" --raw\t\t\tsend raw file to Apple's tss server (useful for debugging)\n"); + printf(" --raw\t\t\tsend raw file to Apple's TSS server (useful for debugging)\n"); printf("\n"); - printf("Homepage: <" PACKAGE_URL ">\n"); + printf("Homepage: \n"); + printf("Original project: \n"); } int64_t parseECID(const char *ecid){ @@ -442,8 +442,6 @@ int main(int argc, const char * argv[]) { } } - - error: if (devVals.deviceBoard) free(devVals.deviceBoard); if (devVals.deviceModel) free(devVals.deviceModel); diff --git a/tsschecker/tss.c b/tsschecker/tss.c index c0d4d640..4e1689df 100644 --- a/tsschecker/tss.c +++ b/tsschecker/tss.c @@ -978,13 +978,17 @@ char* tss_request_send_raw(char* request, const char* server_url_string, int* re char curl_error_message[CURL_ERROR_SIZE]; if (response_lenth) *response_lenth = 0; - const char* urls[6] = { - "https://gs.apple.com/TSS/controller?action=2", + const char* urls[10] = { + "https://gs.apple.com/TSS/controller?action=2", // original TSS server's address "https://17.111.103.65/TSS/controller?action=2", "https://17.111.103.15/TSS/controller?action=2", - "http://gs.apple.com/TSS/controller?action=2", + "https://17.171.36.30/TSS/controller?action=2", + "https://17.151.36.30/TSS/controller?action=2", + "http://gs.apple.com/TSS/controller?action=2", // original TSS server's address "http://17.111.103.65/TSS/controller?action=2", - "http://17.111.103.15/TSS/controller?action=2" + "http://17.111.103.15/TSS/controller?action=2", + "http://17.171.36.30/TSS/controller?action=2", + "http://17.151.36.30/TSS/controller?action=2" }; tss_response* response = NULL; From 35590b28c53bc64fc5c62f87a8d789983d89f947 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 5 Jan 2019 01:56:31 -0800 Subject: [PATCH 11/82] Default to 32 noncelen Thanks @1Conan to pull request this on original project: https://github.com/tihmstar/tsschecker/pull/132 So, not required to update nonceLen for new devices in the future. --- README.md => ReadMe.md | 0 tsschecker/tsschecker.c | 35 +++++++++++++++++++++++++---------- 2 files changed, 25 insertions(+), 10 deletions(-) rename README.md => ReadMe.md (100%) diff --git a/README.md b/ReadMe.md similarity index 100% rename from README.md rename to ReadMe.md diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index 867cb92b..e7e37564 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -513,7 +513,6 @@ char *getBuildManifest(char *url, const char *device, const char *version, const buildmanifest[fsize] = '\0'; fclose(f); - free(fileDir); return buildmanifest; } @@ -577,11 +576,9 @@ int tss_populate_basebandvals(plist_t tssreq, plist_t tssparameters, int64_t BbG } int64_t BbChipID = 0; - getRandNum(bbnonce, NONCELEN_BASEBAND, 256); srand((unsigned int)time(NULL)); int n=0; for (int i=1; i<7; i++) BbChipID += (rand() % 10) * pow(10, ++n); - /* BasebandNonce not required */ // plist_dict_set_item(parameters, "BbNonce", plist_new_data(bbnonce, NONCELEN_BASEBAND)); @@ -633,16 +630,34 @@ int parseHex(const char *nonce, size_t *parsedLen, char *ret, size_t *retSize){ } int tss_populate_random(plist_t tssreq, int is64bit, t_devicevals *devVals){ - size_t nonceLen = 20; //valid for all devices up to iPhone7 + size_t nonceLen = 32; // valid for all devices after iPhone 7 if (!devVals->deviceModel) return error("[TSSR] internal error: devVals->deviceModel is missing\n"),-1; - // TODO how can we determine this better? - if (strncasecmp(devVals->deviceModel, "iPhone9,", strlen("iPhone9,")) == 0 || - strncasecmp(devVals->deviceModel, "iPhone10,", strlen("iPhone10,")) == 0 || - strncasecmp(devVals->deviceModel, "iPad7,", strlen("iPad7,")) == 0 || - strncasecmp(devVals->deviceModel, "AppleTV6,", strlen("AppleTV6,")) == 0) - nonceLen = 32; + if (strncasecmp(devVals->deviceModel, "AppleTV2,", strlen("AppleTV2,")) == 0 || + strncasecmp(devVals->deviceModel, "AppleTV3,", strlen("AppleTV3,")) == 0 || + strncasecmp(devVals->deviceModel, "AppleTV5,", strlen("AppleTV5,")) == 0 || + strncasecmp(devVals->deviceModel, "iPad1,", strlen("iPad1,")) == 0 || + strncasecmp(devVals->deviceModel, "iPad2,", strlen("iPad2,")) == 0 || + strncasecmp(devVals->deviceModel, "iPad3,", strlen("iPad3,")) == 0 || + strncasecmp(devVals->deviceModel, "iPad4,", strlen("iPad4,")) == 0 || + strncasecmp(devVals->deviceModel, "iPad5,", strlen("iPad5,")) == 0 || + strncasecmp(devVals->deviceModel, "iPad6,", strlen("iPad6,")) == 0 || + strncasecmp(devVals->deviceModel, "iPhone1,", strlen("iPhone1,")) == 0 || + strncasecmp(devVals->deviceModel, "iPhone2,", strlen("iPhone2,")) == 0 || + strncasecmp(devVals->deviceModel, "iPhone3,", strlen("iPhone3,")) == 0 || + strncasecmp(devVals->deviceModel, "iPhone4,", strlen("iPhone4,")) == 0 || + strncasecmp(devVals->deviceModel, "iPhone5,", strlen("iPhone5,")) == 0 || + strncasecmp(devVals->deviceModel, "iPhone6,", strlen("iPhone6,")) == 0 || + strncasecmp(devVals->deviceModel, "iPhone7,", strlen("iPhone7,")) == 0 || + strncasecmp(devVals->deviceModel, "iPhone8,", strlen("iPhone8,")) == 0 || + strncasecmp(devVals->deviceModel, "iPod1,", strlen("iPod1,")) == 0 || + strncasecmp(devVals->deviceModel, "iPod2,", strlen("iPod2,")) == 0 || + strncasecmp(devVals->deviceModel, "iPod3,", strlen("iPod3,")) == 0 || + strncasecmp(devVals->deviceModel, "iPod4,", strlen("iPod4,")) == 0 || + strncasecmp(devVals->deviceModel, "iPod5,", strlen("iPod5,")) == 0 || + strncasecmp(devVals->deviceModel, "iPod7,", strlen("iPod7,")) == 0 ) + nonceLen = 20; //valid for devices up to iPhone7 int n=0; srand((unsigned int)time(NULL)); From 0c0cf588639fe94559812b1612e4feefc0df7fc6 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 5 Jan 2019 01:59:01 -0800 Subject: [PATCH 12/82] Actualizing Xcode project --- tsschecker.xcodeproj/project.pbxproj | 141 ++++++++++++++---- .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcschemes/xcschememanagement.plist | 14 ++ 3 files changed, 133 insertions(+), 30 deletions(-) create mode 100644 tsschecker.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 tsschecker.xcodeproj/xcuserdata/s0uthwest.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/tsschecker.xcodeproj/project.pbxproj b/tsschecker.xcodeproj/project.pbxproj index 34d11b26..17bdabd6 100644 --- a/tsschecker.xcodeproj/project.pbxproj +++ b/tsschecker.xcodeproj/project.pbxproj @@ -3,17 +3,21 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 47; objects = { /* Begin PBXBuildFile section */ - 87B93E861EE709A800709583 /* jssy.c in Sources */ = {isa = PBXBuildFile; fileRef = 87B93E841EE709A800709583 /* jssy.c */; }; - 87CD9A3D1E0F35FE00E566B7 /* libfragmentzip.0.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 87CD9A3C1E0F35FE00E566B7 /* libfragmentzip.0.dylib */; }; + 563DA63021BBC5AA00844624 /* libcrypto.3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 563DA62F21BBC5AA00844624 /* libcrypto.3.dylib */; }; + 56520C1421B2693F005BD3F7 /* jssy.c in Sources */ = {isa = PBXBuildFile; fileRef = 56520C0C21B2693E005BD3F7 /* jssy.c */; }; + 56520C1521B2693F005BD3F7 /* jssy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 56520C0D21B2693E005BD3F7 /* jssy.cpp */; }; + 56520C1721B2693F005BD3F7 /* cmain.c in Sources */ = {isa = PBXBuildFile; fileRef = 56520C1021B2693F005BD3F7 /* cmain.c */; }; + 56931F5C21D900D200A88574 /* all.h in Sources */ = {isa = PBXBuildFile; fileRef = 563DA62E21BBC58900844624 /* all.h */; }; + 56EF4C0121B1A2D10056D405 /* libcurl.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 56EF4C0021B1A2D10056D405 /* libcurl.tbd */; }; + 56EF4C0321B1A2E10056D405 /* libirecovery.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 56EF4C0221B1A2E10056D405 /* libirecovery.2.dylib */; }; + 56EF4C0521B1A2F40056D405 /* libfragmentzip.0.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 56EF4C0421B1A2F40056D405 /* libfragmentzip.0.dylib */; }; + 56EF4C0721B1A3040056D405 /* libplist.3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 56EF4C0621B1A3040056D405 /* libplist.3.dylib */; }; 87CEC4C91C576BD9006E75FC /* tss.c in Sources */ = {isa = PBXBuildFile; fileRef = 87CEC4C81C576BD9006E75FC /* tss.c */; }; 87EB90A31C2940CD002CEE70 /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 87EB90A21C2940CD002CEE70 /* main.c */; }; - 87EB90AC1C2940FB002CEE70 /* libplist.3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 87EB90AB1C2940FB002CEE70 /* libplist.3.dylib */; }; - 87EB90AE1C294108002CEE70 /* libcurl.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 87EB90AD1C294108002CEE70 /* libcurl.tbd */; }; - 87F1F6791E168ABE00301726 /* libirecovery.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 87F1F6781E168ABE00301726 /* libirecovery.2.dylib */; }; 87F927AC1C3E44CE00343510 /* tsschecker.c in Sources */ = {isa = PBXBuildFile; fileRef = 87F927AA1C3E44CE00343510 /* tsschecker.c */; }; 87F927AF1C3E455200343510 /* download.c in Sources */ = {isa = PBXBuildFile; fileRef = 87F927AD1C3E455200343510 /* download.c */; }; /* End PBXBuildFile section */ @@ -31,18 +35,23 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 8747AC521D83006100349BB9 /* libcrypto.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libcrypto.dylib; path = usr/lib/libcrypto.dylib; sourceTree = SDKROOT; }; - 87AD68BB1D8ACE7F0094A99F /* all_tsschecker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = all_tsschecker.h; sourceTree = ""; }; - 87B93E841EE709A800709583 /* jssy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jssy.c; path = external/jssy/jssy/jssy.c; sourceTree = SOURCE_ROOT; }; - 87B93E851EE709A800709583 /* jssy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jssy.h; path = external/jssy/jssy/jssy.h; sourceTree = SOURCE_ROOT; }; - 87CD9A3C1E0F35FE00E566B7 /* libfragmentzip.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libfragmentzip.0.dylib; path = ../../../../usr/local/lib/libfragmentzip.0.dylib; sourceTree = ""; }; + 563DA62E21BBC58900844624 /* all.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = all.h; sourceTree = ""; }; + 563DA62F21BBC5AA00844624 /* libcrypto.3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libcrypto.3.dylib; path = ../../../../../usr/local/lib/libcrypto.3.dylib; sourceTree = ""; }; + 56520C0C21B2693E005BD3F7 /* jssy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jssy.c; path = external/jssy/jssy/jssy.c; sourceTree = SOURCE_ROOT; }; + 56520C0D21B2693E005BD3F7 /* jssy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = jssy.cpp; path = external/jssy/jssy/jssy.cpp; sourceTree = SOURCE_ROOT; }; + 56520C0E21B2693E005BD3F7 /* jssy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jssy.h; path = external/jssy/jssy/jssy.h; sourceTree = SOURCE_ROOT; }; + 56520C1021B2693F005BD3F7 /* cmain.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmain.c; path = external/jssy/jssy/cmain.c; sourceTree = SOURCE_ROOT; }; + 56520C1121B2693F005BD3F7 /* jssy.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = jssy.hpp; path = external/jssy/jssy/jssy.hpp; sourceTree = SOURCE_ROOT; }; + 56520C1221B2693F005BD3F7 /* ptr_smart.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ptr_smart.hpp; path = external/jssy/jssy/ptr_smart.hpp; sourceTree = SOURCE_ROOT; }; + 56520C1321B2693F005BD3F7 /* helper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = helper.h; path = external/jssy/jssy/helper.h; sourceTree = SOURCE_ROOT; }; + 56EF4C0021B1A2D10056D405 /* libcurl.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libcurl.tbd; path = usr/lib/libcurl.tbd; sourceTree = SDKROOT; }; + 56EF4C0221B1A2E10056D405 /* libirecovery.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libirecovery.2.dylib; path = ../../../../../usr/local/lib/libirecovery.2.dylib; sourceTree = ""; }; + 56EF4C0421B1A2F40056D405 /* libfragmentzip.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libfragmentzip.0.dylib; path = ../../../../../usr/local/lib/libfragmentzip.0.dylib; sourceTree = ""; }; + 56EF4C0621B1A3040056D405 /* libplist.3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libplist.3.dylib; path = ../../../../../usr/local/lib/libplist.3.dylib; sourceTree = ""; }; 87CEC4C81C576BD9006E75FC /* tss.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tss.c; sourceTree = ""; }; 87CEC4CA1C576BE0006E75FC /* tss.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tss.h; sourceTree = ""; }; 87EB909F1C2940CD002CEE70 /* tsschecker */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = tsschecker; sourceTree = BUILT_PRODUCTS_DIR; }; 87EB90A21C2940CD002CEE70 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; - 87EB90AB1C2940FB002CEE70 /* libplist.3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libplist.3.dylib; path = ../../../../../usr/local/lib/libplist.3.dylib; sourceTree = ""; }; - 87EB90AD1C294108002CEE70 /* libcurl.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libcurl.tbd; path = usr/lib/libcurl.tbd; sourceTree = SDKROOT; }; - 87F1F6781E168ABE00301726 /* libirecovery.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libirecovery.2.dylib; path = ../../../../usr/local/lib/libirecovery.2.dylib; sourceTree = ""; }; 87F927AA1C3E44CE00343510 /* tsschecker.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tsschecker.c; sourceTree = ""; }; 87F927AB1C3E44CE00343510 /* tsschecker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tsschecker.h; sourceTree = ""; }; 87F927AD1C3E455200343510 /* download.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = download.c; sourceTree = ""; }; @@ -54,10 +63,11 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 87F1F6791E168ABE00301726 /* libirecovery.2.dylib in Frameworks */, - 87CD9A3D1E0F35FE00E566B7 /* libfragmentzip.0.dylib in Frameworks */, - 87EB90AE1C294108002CEE70 /* libcurl.tbd in Frameworks */, - 87EB90AC1C2940FB002CEE70 /* libplist.3.dylib in Frameworks */, + 563DA63021BBC5AA00844624 /* libcrypto.3.dylib in Frameworks */, + 56EF4C0521B1A2F40056D405 /* libfragmentzip.0.dylib in Frameworks */, + 56EF4C0721B1A3040056D405 /* libplist.3.dylib in Frameworks */, + 56EF4C0121B1A2D10056D405 /* libcurl.tbd in Frameworks */, + 56EF4C0321B1A2E10056D405 /* libirecovery.2.dylib in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -75,8 +85,13 @@ 87B93E831EE7099A00709583 /* jssy */ = { isa = PBXGroup; children = ( - 87B93E851EE709A800709583 /* jssy.h */, - 87B93E841EE709A800709583 /* jssy.c */, + 56520C1021B2693F005BD3F7 /* cmain.c */, + 56520C1321B2693F005BD3F7 /* helper.h */, + 56520C0C21B2693E005BD3F7 /* jssy.c */, + 56520C0D21B2693E005BD3F7 /* jssy.cpp */, + 56520C0E21B2693E005BD3F7 /* jssy.h */, + 56520C1121B2693F005BD3F7 /* jssy.hpp */, + 56520C1221B2693F005BD3F7 /* ptr_smart.hpp */, ); name = jssy; sourceTree = ""; @@ -84,8 +99,11 @@ 87CD9A3B1E0F35FE00E566B7 /* Frameworks */ = { isa = PBXGroup; children = ( - 87F1F6781E168ABE00301726 /* libirecovery.2.dylib */, - 87CD9A3C1E0F35FE00E566B7 /* libfragmentzip.0.dylib */, + 56EF4C0021B1A2D10056D405 /* libcurl.tbd */, + 56EF4C0221B1A2E10056D405 /* libirecovery.2.dylib */, + 563DA62F21BBC5AA00844624 /* libcrypto.3.dylib */, + 56EF4C0421B1A2F40056D405 /* libfragmentzip.0.dylib */, + 56EF4C0621B1A3040056D405 /* libplist.3.dylib */, ); name = Frameworks; sourceTree = ""; @@ -102,9 +120,6 @@ 87EB90961C2940CD002CEE70 = { isa = PBXGroup; children = ( - 8747AC521D83006100349BB9 /* libcrypto.dylib */, - 87EB90AD1C294108002CEE70 /* libcurl.tbd */, - 87EB90AB1C2940FB002CEE70 /* libplist.3.dylib */, 87EB90A11C2940CD002CEE70 /* tsschecker */, 87EB90A01C2940CD002CEE70 /* Products */, 87CD9A3B1E0F35FE00E566B7 /* Frameworks */, @@ -122,7 +137,7 @@ 87EB90A11C2940CD002CEE70 /* tsschecker */ = { isa = PBXGroup; children = ( - 87AD68BB1D8ACE7F0094A99F /* all_tsschecker.h */, + 563DA62E21BBC58900844624 /* all.h */, 87B93E821EE7098900709583 /* external */, 87CEC4CB1C576BE8006E75FC /* libs */, 87F927AE1C3E455200343510 /* download.h */, @@ -144,6 +159,7 @@ 87EB909B1C2940CD002CEE70 /* Sources */, 87EB909C1C2940CD002CEE70 /* Frameworks */, 87EB909D1C2940CD002CEE70 /* CopyFiles */, + 561C73F1219738750030617C /* Version bump */, ); buildRules = ( ); @@ -160,7 +176,7 @@ 87EB90971C2940CD002CEE70 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0720; + LastUpgradeCheck = 1010; ORGANIZATIONNAME = tihmstar; TargetAttributes = { 87EB909E1C2940CD002CEE70 = { @@ -169,11 +185,10 @@ }; }; buildConfigurationList = 87EB909A1C2940CD002CEE70 /* Build configuration list for PBXProject "tsschecker" */; - compatibilityVersion = "Xcode 3.2"; + compatibilityVersion = "Xcode 6.3"; developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( - en, ); mainGroup = 87EB90961C2940CD002CEE70; productRefGroup = 87EB90A01C2940CD002CEE70 /* Products */; @@ -185,16 +200,40 @@ }; /* End PBXProject section */ +/* Begin PBXShellScriptBuildPhase section */ + 561C73F1219738750030617C /* Version bump */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Version bump"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "sed -i '.bak' \"s/.*TSSCHECKER_VERSION_COMMIT_COUNT.*/#define TSSCHECKER_VERSION_COMMIT_COUNT \\\"$(git rev-list --count HEAD)\\\"/\" ./tsschecker/all.h 2>/dev/null || sed -i \"s/.*TSSCHECKER_VERSION_COMMIT_COUNT.*/#define TSSCHECKER_VERSION_COMMIT_COUNT \\\"$(git rev-list --count HEAD)\\\"/\" ./tsschecker/all.h 2>/dev/null\nsed -i '.bak' \"s/.*TSSCHECKER_VERSION_COMMIT_SHA.*/#define TSSCHECKER_VERSION_COMMIT_SHA \\\"$(git rev-parse HEAD)\\\"/\" ./tsschecker/all.h 2>/dev/null || sed -i \"s/.*TSSCHECKER_VERSION_COMMIT_SHA.*/#define TSSCHECKER_VERSION_COMMIT_SHA \\\"$(git rev-parse HEAD)\\\"/\" ./tsschecker/all.h 2>/dev/null\n"; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ 87EB909B1C2940CD002CEE70 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 56520C1721B2693F005BD3F7 /* cmain.c in Sources */, + 56520C1421B2693F005BD3F7 /* jssy.c in Sources */, 87F927AC1C3E44CE00343510 /* tsschecker.c in Sources */, + 56520C1521B2693F005BD3F7 /* jssy.cpp in Sources */, 87CEC4C91C576BD9006E75FC /* tss.c in Sources */, 87F927AF1C3E455200343510 /* download.c in Sources */, 87EB90A31C2940CD002CEE70 /* main.c in Sources */, - 87B93E861EE709A800709583 /* jssy.c in Sources */, + 56931F5C21D900D200A88574 /* all.h in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -209,13 +248,23 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "-"; @@ -237,10 +286,19 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + /usr/local/include, + /opt/local/include, + ); + INSTALL_PATH = /usr/local/bin; + LIBRARY_SEARCH_PATHS = /usr/local/lib; MACOSX_DEPLOYMENT_TARGET = 10.11; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; + PRODUCT_BUNDLE_IDENTIFIER = net.tihmstar.tsschecker; + PRODUCT_NAME = tsschecker; SDKROOT = macosx; + USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/external/jssy\""; }; name = Debug; }; @@ -252,13 +310,23 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "-"; @@ -274,9 +342,18 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + /usr/local/include, + /opt/local/include, + ); + INSTALL_PATH = /usr/local/bin; + LIBRARY_SEARCH_PATHS = /usr/local/lib; MACOSX_DEPLOYMENT_TARGET = 10.11; MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = net.tihmstar.tsschecker; + PRODUCT_NAME = tsschecker; SDKROOT = macosx; + USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/external/jssy\""; }; name = Release; }; @@ -291,7 +368,9 @@ ); LIBRARY_SEARCH_PATHS = /usr/local/lib; OTHER_CFLAGS = "-std=c11"; + PRODUCT_BUNDLE_IDENTIFIER = net.tihmstar.tsschecker; PRODUCT_NAME = "$(TARGET_NAME)"; + USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/external/jssy\""; }; name = Debug; }; @@ -306,7 +385,9 @@ ); LIBRARY_SEARCH_PATHS = /usr/local/lib; OTHER_CFLAGS = "-std=c11"; + PRODUCT_BUNDLE_IDENTIFIER = net.tihmstar.tsschecker; PRODUCT_NAME = "$(TARGET_NAME)"; + USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/external/jssy\""; }; name = Release; }; diff --git a/tsschecker.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/tsschecker.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/tsschecker.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/tsschecker.xcodeproj/xcuserdata/s0uthwest.xcuserdatad/xcschemes/xcschememanagement.plist b/tsschecker.xcodeproj/xcuserdata/s0uthwest.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 00000000..02a11371 --- /dev/null +++ b/tsschecker.xcodeproj/xcuserdata/s0uthwest.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + tsschecker.xcscheme_^#shared#^_ + + orderHint + 0 + + + + From 9ca46a2b04380174a8c608136c976d36c53426f2 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 5 Jan 2019 02:21:53 -0800 Subject: [PATCH 13/82] TSS: add 'Yonkers' for getting fully A12 blobs Thanks blefish for pull request in original idevicerestore project: https://github.com/libimobiledevice/idevicerestore/pull/234 --- tsschecker/main.c | 2 +- tsschecker/tss.c | 119 ++++++++++++++++++++++++++++++++++++---- tsschecker/tsschecker.c | 2 +- 3 files changed, 110 insertions(+), 13 deletions(-) diff --git a/tsschecker/main.c b/tsschecker/main.c index 838ab50d..deb78d97 100644 --- a/tsschecker/main.c +++ b/tsschecker/main.c @@ -64,7 +64,7 @@ void cmd_help(){ printf("Works with signing technology on iOS devices\n\n"); printf(" -d, --device MODEL\t\tspecific device by its MODEL (eg. iPhone11,8)\n"); printf(" -i, --ios VERSION\t\tspecific iOS version (eg. 12.1.2)\n"); - printf(" --buildid BUILDID\t\tspecific buildid instead of iOS version (eg. 16C404)\n"); + printf(" --buildid BUILDID\t\tspecific buildid instead of iOS version (eg. 16C104)\n"); printf(" -B, --boardconfig BOARD\tspecific boardconfig instead of iPhone model (eg. n841ap)\n"); printf(" -h, --help\t\t\tprints usage information\n"); printf(" -o, --ota\t\t\tcheck OTA signing status, instead of normal restore\n"); diff --git a/tsschecker/tss.c b/tsschecker/tss.c index 4e1689df..2cfbdb6b 100644 --- a/tsschecker/tss.c +++ b/tsschecker/tss.c @@ -103,7 +103,6 @@ char* ecid_to_string(uint64_t ecid) { } plist_t tss_request_new(plist_t overrides) { - plist_t request = plist_new_dict(); plist_dict_set_item(request, "@Locality", plist_new_string("en_US")); @@ -218,6 +217,7 @@ int tss_parameters_add_from_manifest(plist_t parameters, plist_t build_identity) } node = NULL; + /* BbCalibrationManifestKeyHash */ node = plist_dict_get_item(build_identity, "BbCalibrationManifestKeyHash"); if (node && plist_get_node_type(node) == PLIST_DATA) { plist_dict_set_item(parameters, "BbCalibrationManifestKeyHash", plist_copy(node)); @@ -297,6 +297,51 @@ int tss_parameters_add_from_manifest(plist_t parameters, plist_t build_identity) } } node = NULL; + + /* Yonkers,BoardID - Used for Yonkers firmware request */ + node = plist_dict_get_item(build_identity, "Yonkers,BoardID"); + if (node) { + if (plist_get_node_type(node) == PLIST_STRING) { + char *strval = NULL; + int intval = 0; + plist_get_string_val(node, &strval); + sscanf(strval, "%x", &intval); + plist_dict_set_item(parameters, "Yonkers,BoardID", plist_new_uint(intval)); + } else { + plist_dict_set_item(parameters, "Yonkers,BoardID", plist_copy(node)); + } + } + node = NULL; + + /* Yonkers,ChipID - Used for Yonkers firmware request */ + node = plist_dict_get_item(build_identity, "Yonkers,ChipID"); + if (node) { + if (plist_get_node_type(node) == PLIST_STRING) { + char *strval = NULL; + int intval = 0; + plist_get_string_val(node, &strval); + sscanf(strval, "%x", &intval); + plist_dict_set_item(parameters, "Yonkers,ChipID", plist_new_uint(intval)); + } else { + plist_dict_set_item(parameters, "Yonkers,ChipID", plist_copy(node)); + } + } + node = NULL; + + /* add Yonkers,PatchEpoch - Used for Yonkers firmware request */ + node = plist_dict_get_item(build_identity, "Yonkers,PatchEpoch"); + if (node) { + if (plist_get_node_type(node) == PLIST_STRING) { + char *strval = NULL; + int intval = 0; + plist_get_string_val(node, &strval); + sscanf(strval, "%x", &intval); + plist_dict_set_item(parameters, "Yonkers,PatchEpoch", plist_new_uint(intval)); + } else { + plist_dict_set_item(parameters, "Yonkers,PatchEpoch", plist_copy(node)); + } + } + node = NULL; /* add build identity manifest dictionary */ node = plist_dict_get_item(build_identity, "Manifest"); @@ -325,7 +370,7 @@ int tss_request_add_ap_img4_tags(plist_t request, plist_t parameters) { return -1; } plist_dict_set_item(request, "ApNonce", plist_copy(node)); - }else + } else plist_dict_set_item(request, "ApNonce", plist_new_data(NULL, 0)); node = NULL; @@ -581,7 +626,7 @@ int tss_request_add_ap_tags(plist_t request, plist_t parameters, plist_t overrid continue; } - /* FIXME: only used with diagnostics firmware */ + /* only used with diagnostics firmware */ if ((strcmp(key, "Diags") == 0)) { free(key); continue; @@ -650,6 +695,7 @@ int tss_request_add_baseband_tags(plist_t request, plist_t parameters, plist_t o } node = NULL; + /* BbCalibrationManifestKeyHash */ node = plist_dict_get_item(parameters, "BbCalibrationManifestKeyHash"); if (node) { plist_dict_set_item(request, "BbCalibrationManifestKeyHash", plist_copy(node)); @@ -781,12 +827,10 @@ int tss_request_add_se_tags(plist_t request, plist_t parameters, plist_t overrid node = NULL; /* 'IsDev' determines whether we have Production or Development */ - const char *removing_cmac_key = "DevelopmentCMAC"; - node = plist_dict_get_item(parameters, "SE,IsDev"); - if (node && plist_get_node_type(node) == PLIST_BOOLEAN) { - uint8_t is_dev = 0; - plist_get_bool_val(node, &is_dev); - removing_cmac_key = (is_dev) ? "ProductionCMAC" : "DevelopmentCMAC"; + uint8_t is_dev = 0; + plist_get_bool_val(node, &is_dev); + if (node && plist_get_node_type(node) == PLIST_BOOLEAN) { + plist_get_bool_val(node, &is_dev); } /* add SE,* components from build manifest to request */ @@ -817,8 +861,16 @@ int tss_request_add_se_tags(plist_t request, plist_t parameters, plist_t overrid plist_dict_remove_item(tss_entry, "Info"); /* remove 'DevelopmentCMAC' (or 'ProductionCMAC') node */ - if (plist_dict_get_item(tss_entry, removing_cmac_key)) { - plist_dict_remove_item(tss_entry, removing_cmac_key); + if (is_dev) { + if (plist_dict_get_item(tss_entry, "ProductionCMAC")) + plist_dict_remove_item(tss_entry, "ProductionCMAC"); + if (plist_dict_get_item(tss_entry, "ProductionUpdatePayloadHash")) + plist_dict_remove_item(tss_entry, "ProductionUpdatePayloadHash"); + } else { + if (plist_dict_get_item(tss_entry, "DevelopmentCMAC")) + plist_dict_remove_item(tss_entry, "DevelopmentCMAC"); + if (plist_dict_get_item(tss_entry, "DevelopmentUpdatePayloadHash")) + plist_dict_remove_item(tss_entry, "DevelopmentUpdatePayloadHash"); } /* add entry to request */ @@ -958,6 +1010,51 @@ int tss_request_add_savage_tags(plist_t request, plist_t parameters, plist_t ove return 0; } +int tss_request_add_yonkers_tags(plist_t request, plist_t parameters, plist_t overrides) +{ + plist_t node = NULL; + + plist_t manifest_node = plist_dict_get_item(parameters, "Manifest"); + if (!manifest_node || plist_get_node_type(manifest_node) != PLIST_DICT) { + error("ERROR: %s: Unable to get restore manifest from parameters\n", __func__); + return -1; + } + + /* add tags indicating we want to get the Savage,Ticket */ + plist_dict_set_item(request, "@BBTicket", plist_new_bool(1)); + plist_dict_set_item(request, "@Yonkers,Ticket", plist_new_bool(1)); + + /* add SEP */ + node = plist_access_path(manifest_node, 2, "SEP", "Digest"); + if (!node) { + error("ERROR: Unable to get SEP digest from manifest\n"); + return -1; + } + plist_t dict = plist_new_dict(); + plist_dict_set_item(dict, "Digest", plist_copy(node)); + plist_dict_set_item(request, "SEP", dict); + + { + static const char *keys[] = {"Yonkers,AllowOfflineBoot", "Yonkers,BoardID", "Yonkers,ChipID", "Yonkers,ECID", "Yonkers,Nonce", "Yonkers,PatchEpoch", "Yonkers,ProductionMode", "Yonkers,ReadECKey", "Yonkers,ReadFWKey", }; + int i; + for (i = 0; i < (int)(sizeof(keys) / sizeof(keys[0])); ++i) { + node = plist_dict_get_item(parameters, keys[i]); + if (!node) { + error("ERROR: %s: Unable to find required %sin parameters\n", __func__, keys[i]); + } + plist_dict_set_item(request, keys[i], plist_copy(node)); + node = NULL; + } + } + + /* apply overrides */ + if (overrides) { + plist_dict_merge(&request, overrides); + } + + return 0; +} + static size_t tss_write_callback(char* data, size_t size, size_t nmemb, tss_response* response) { size_t total = size * nmemb; if (total != 0) { diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index e7e37564..a0ec02bb 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -801,7 +801,7 @@ int tssrequest(plist_t *tssreqret, char *buildManifest, t_devicevals *devVals, t int64_t BbGoldCertId = devVals->bbgcid ? devVals->bbgcid : bbinfo->bbgcid; size_t bbsnumSize = devVals->bbsnumSize ? devVals->bbsnumSize : bbinfo->bbsnumSize; if (BbGoldCertId != bbinfo->bbgcid || bbsnumSize != bbinfo->bbsnumSize) { - info("\n[TSSR] Found undocumented baseband\n\n"), + info("\n[TSSR] Found undocumented baseband\n\n", devVals->deviceBoard, devVals->deviceModel, BbGoldCertId, bbsnumSize); } From bab1ff2954c2bbacdc3b5ab8860dea803e51c0e9 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 5 Jan 2019 03:42:15 -0800 Subject: [PATCH 14/82] fix Yonkers --- tsschecker/tss.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tsschecker/tss.h b/tsschecker/tss.h index 0d866b2e..106bb60f 100644 --- a/tsschecker/tss.h +++ b/tsschecker/tss.h @@ -21,8 +21,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef IDEVICERESTORE_TSS_H -#define IDEVICERESTORE_TSS_H +#ifndef TSS_H +#define TSS_H #ifdef __cplusplus extern "C" { @@ -32,7 +32,6 @@ extern "C" { #include "all.h" extern int print_tss_request; - /* parameters */ int tss_parameters_add_from_manifest(plist_t parameters, plist_t build_identity); @@ -46,6 +45,7 @@ int tss_request_add_ap_tags(plist_t request, plist_t parameters, plist_t overrid int tss_request_add_baseband_tags(plist_t request, plist_t parameters, plist_t overrides); int tss_request_add_se_tags(plist_t request, plist_t parameters, plist_t overrides); int tss_request_add_savage_tags(plist_t request, plist_t parameters, plist_t overrides); +int tss_request_add_yonkers_tags(plist_t request, plist_t parameters, plist_t overrides); int tss_request_add_ap_img4_tags(plist_t request, plist_t parameters); int tss_request_add_ap_img3_tags(plist_t request, plist_t parameters); From 2edcfb9f721f65096ed0913ee17eb05bf9a35be6 Mon Sep 17 00:00:00 2001 From: s0uthwest <42713499+s0uthwest@users.noreply.github.com> Date: Sat, 5 Jan 2019 06:52:20 -0800 Subject: [PATCH 15/82] returned AppleTV1,1 bbgcid --- tsschecker/tsschecker.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index a0ec02bb..fc3233d5 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -194,6 +194,7 @@ static struct bbdevice bbdevices[] = { {"Watch4,2", 0, 0}, // Apple Watch Series 4 (44mm) // Apple TVs + {"AppleTV1,1", 0, 0}, // 1st gen {"AppleTV2,1", 0, 0}, // 2nd gen {"AppleTV3,1", 0, 0}, // 3rd gen {"AppleTV3,2", 0, 0}, // 3rd gen (2013) From 0cf91b2b4abc205eaa68e3159ebae81196d06352 Mon Sep 17 00:00:00 2001 From: s0uthwest <42713499+s0uthwest@users.noreply.github.com> Date: Sun, 6 Jan 2019 10:16:13 +0300 Subject: [PATCH 16/82] ReadMe: supporting --- ReadMe.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ReadMe.md b/ReadMe.md index 8aea1b3a..895a2dc6 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -2,8 +2,8 @@ _tsschecker is a powerful tool to work with signing technology on iOS devices._ Latest compiled version can be found here: -(macOS & Windows) -https://github.com/encounter/tsschecker/releases +(macOS). Linux version goes later. Windows version is supported, but I will not compile it. +https://github.com/s0uthwest/tsschecker/releases ## Features * Allows you to get lists of all devices and all iOS/OTA versions for a specific device. From 0aac6d1c5f9fae56bcded3022c33917ffb828c53 Mon Sep 17 00:00:00 2001 From: s0uthwest <42713499+s0uthwest@users.noreply.github.com> Date: Sun, 6 Jan 2019 12:20:55 +0300 Subject: [PATCH 17/82] Help: fix link to original project --- tsschecker/main.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tsschecker/main.c b/tsschecker/main.c index deb78d97..5311a4b5 100644 --- a/tsschecker/main.c +++ b/tsschecker/main.c @@ -91,7 +91,7 @@ void cmd_help(){ printf(" --raw\t\t\tsend raw file to Apple's TSS server (useful for debugging)\n"); printf("\n"); printf("Homepage: \n"); - printf("Original project: \n"); + printf("Original project: \n"); } int64_t parseECID(const char *ecid){ @@ -304,12 +304,10 @@ int main(int argc, const char * argv[]) { return 0; } - if (devVals.deviceBoard) for (int i=0; i Date: Sun, 6 Jan 2019 12:32:06 +0300 Subject: [PATCH 18/82] NonceLen not required for iPhone1,x/iPod2,x APTicket with nonce added only on iOS 5.x, so not required nonceLen. --- tsschecker/tsschecker.c | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index fc3233d5..aa1c7382 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -321,7 +321,6 @@ plist_t getBuildidentityWithBoardconfig(plist_t buildManifest, const char *board rt = NULL; else break; - } error: @@ -373,7 +372,6 @@ t_versionURL *getFirmwareUrls(const char *deviceModel, t_iosVersion *versVals, j memset(rets = (t_versionURL*)malloc(sizeof(t_versionURL)*(retcounter+1)), 0, sizeof(t_versionURL)*(retcounter+1)); rets_base = rets; - jssytok_t *tmp = firmwares->subval; for (size_t i=0; isize; tmp=tmp->next, i++) { jssytok_t *ios = jssy_dictGetValueForKey(tmp, (versVals->buildID) ? "buildid" : "version"); @@ -397,7 +395,6 @@ t_versionURL *getFirmwareUrls(const char *deviceModel, t_iosVersion *versVals, j versVals->version[i_vers->size] = '\0'; } - if (!rets) retcounter++; else{ for (int i=0; rets_base[i].buildID; i++) { @@ -425,11 +422,9 @@ t_versionURL *getFirmwareUrls(const char *deviceModel, t_iosVersion *versVals, j } } - if (!retcounter) return NULL; else if (!rets) goto malloc_rets; - return (t_versionURL*)rets_base; } @@ -495,7 +490,6 @@ char *getBuildManifest(char *url, const char *device, const char *version, const info("[TSSC] using cached Buildmanifest for %s\n",name); }else info("[TSSC] opening Buildmanifest for %s\n",name); - if (!f || nocache){ //download if it isn't there if (downloadPartialzip(url, (isOta) ? "AssetData/boot/BuildManifest.plist" : "BuildManifest.plist", fileDir)){ @@ -519,7 +513,6 @@ char *getBuildManifest(char *url, const char *device, const char *version, const } t_bbdevice getBBDeviceInfo(const char *deviceModel){ - t_bbdevice bbdevs = bbdevices_get_all(); while (bbdevs->deviceModel && strcasecmp(bbdevs->deviceModel, deviceModel) != 0) @@ -644,7 +637,6 @@ int tss_populate_random(plist_t tssreq, int is64bit, t_devicevals *devVals){ strncasecmp(devVals->deviceModel, "iPad4,", strlen("iPad4,")) == 0 || strncasecmp(devVals->deviceModel, "iPad5,", strlen("iPad5,")) == 0 || strncasecmp(devVals->deviceModel, "iPad6,", strlen("iPad6,")) == 0 || - strncasecmp(devVals->deviceModel, "iPhone1,", strlen("iPhone1,")) == 0 || strncasecmp(devVals->deviceModel, "iPhone2,", strlen("iPhone2,")) == 0 || strncasecmp(devVals->deviceModel, "iPhone3,", strlen("iPhone3,")) == 0 || strncasecmp(devVals->deviceModel, "iPhone4,", strlen("iPhone4,")) == 0 || @@ -652,8 +644,6 @@ int tss_populate_random(plist_t tssreq, int is64bit, t_devicevals *devVals){ strncasecmp(devVals->deviceModel, "iPhone6,", strlen("iPhone6,")) == 0 || strncasecmp(devVals->deviceModel, "iPhone7,", strlen("iPhone7,")) == 0 || strncasecmp(devVals->deviceModel, "iPhone8,", strlen("iPhone8,")) == 0 || - strncasecmp(devVals->deviceModel, "iPod1,", strlen("iPod1,")) == 0 || - strncasecmp(devVals->deviceModel, "iPod2,", strlen("iPod2,")) == 0 || strncasecmp(devVals->deviceModel, "iPod3,", strlen("iPod3,")) == 0 || strncasecmp(devVals->deviceModel, "iPod4,", strlen("iPod4,")) == 0 || strncasecmp(devVals->deviceModel, "iPod5,", strlen("iPod5,")) == 0 || @@ -728,7 +718,7 @@ int tss_populate_random(plist_t tssreq, int is64bit, t_devicevals *devVals){ devVals->sepnonce[NONCELEN_SEP] = '\0'; debug("[TSSR] ecid=%llu\n",devVals->ecid); - debug("[TSSR] nonce=%s\n",devVals->apnonce); + debug("[TSSR] apnonce=%s\n",devVals->apnonce); debug("[TSSR] sepnonce=%s\n",devVals->sepnonce); int rt = tss_populate_devicevals(tssreq, devVals->ecid, devVals->apnonce, devVals->parsedApnonceLen, devVals->sepnonce, devVals->parsedSepnonceLen, is64bit); @@ -890,7 +880,6 @@ int isManifestBufSignedForDevice(char *buildManifestBuffer, t_devicevals *devVal plist_get_uint_val(pecid, &devVals->ecid); char *cecid = ecid_to_string(devVals->ecid); - uint32_t size = 0; char* data = NULL; if (*devVals->generator) @@ -901,7 +890,6 @@ int isManifestBufSignedForDevice(char *buildManifestBuffer, t_devicevals *devVal plist_dict_set_item(apticket, "noNonce", apticket3); plist_to_xml(apticket, &data, &size); - char *apnonce = ""; size_t apnonceLen = 0; @@ -931,7 +919,6 @@ int isManifestBufSignedForDevice(char *buildManifestBuffer, t_devicevals *devVal snprintf(fname+prePathLen, fnamelen, DIRECTORY_DELIMITER_STR"%s_%s_%s-%s_%s.shsh%s",cecid,tmpDevicename,cpvers,cbuild, apnonce, (*devVals->generator || apticket2) ? "2" : ""); - FILE *shshfile = fopen(fname, "w"); if (!shshfile) error("[Error] can't save shsh at %s\n",fname); else{ @@ -1177,10 +1164,8 @@ char **getListOfiOSForDevice(jssytok_t *tokens, const char *device, int isOTA, i return versions; } - int printListOfiOSForDevice(jssytok_t *tokens, char *device, int isOTA){ #define MAX_PER_LINE 10 - int versionsCnt; char **versions = getListOfiOSForDevice(tokens, device, isOTA, &versionsCnt); @@ -1224,7 +1209,6 @@ jssytok_t *getFirmwaresForDevice(const char *device, jssytok_t *tokens, int isOt } int checkFirmwareForDeviceExists(t_devicevals *devVals, t_iosVersion *versVals, jssytok_t *tokens){ - jssytok_t *firmwares = getFirmwaresForDevice(devVals->deviceModel, tokens, versVals->isOta); if (!firmwares) return 0; From 2d573e4fdc7a6c36ac00ecfbf59486a9cd6df771 Mon Sep 17 00:00:00 2001 From: s0uthwest <42713499+s0uthwest@users.noreply.github.com> Date: Sun, 6 Jan 2019 12:34:41 +0300 Subject: [PATCH 19/82] fix 'tsscheker' --- tsschecker/tsschecker.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tsschecker/tsschecker.h b/tsschecker/tsschecker.h index 462c47c6..dd342c06 100644 --- a/tsschecker/tsschecker.h +++ b/tsschecker/tsschecker.h @@ -6,8 +6,8 @@ // Copyright © 2016 tihmstar. All rights reserved. // -#ifndef tsscheker_h -#define tsscheker_h +#ifndef tsschecker_h +#define tsschecker_h #ifdef __cplusplus extern "C" { @@ -111,7 +111,6 @@ const char *getModelFromBoardconfig(const char *boardconfig); plist_t getBuildidentity(plist_t buildManifest, const char *model, int isUpdateInstall); plist_t getBuildidentityWithBoardconfig(plist_t buildManifest, const char *boardconfig, int isUpdateInstall); - #ifdef __cplusplus } #endif From 29639608574a16ecf210906b1e60789701927ffa Mon Sep 17 00:00:00 2001 From: s0uthwest <42713499+s0uthwest@users.noreply.github.com> Date: Sun, 6 Jan 2019 16:41:05 +0300 Subject: [PATCH 20/82] ApNonces: more recommended for DFU collision --- nonces.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/nonces.txt b/nonces.txt index 5f1d9031..caadf37c 100644 --- a/nonces.txt +++ b/nonces.txt @@ -15,4 +15,7 @@ DFU collision APNonces (not for all devices/firmwares, some collisioned): 6b81a2c3cdf87404dee28330f7fcb0ee62c425a1 778282f0cf6e5234446d88ebc5dcfde81f415b57 7ce1657233867e988e1b48988ef98fc28ddf20f5 -198365e19ea223bd73ee27faa555ca24ac6ed65d \ No newline at end of file +198365e19ea223bd73ee27faa555ca24ac6ed65d +994bf71da4fd4ba758a8ec6c943a5a610be02edb +8f760412c8653de657e8ea2352f706de2e9ca85c +63e81aabb8e9e45cc756c347e8cdfd9ae7c796ad From 363694f661d664c2f96b2b5ec4493a31ec0cc1a0 Mon Sep 17 00:00:00 2001 From: s0uthwest <42713499+s0uthwest@users.noreply.github.com> Date: Sun, 6 Jan 2019 16:43:40 +0300 Subject: [PATCH 21/82] ReadMe: info about recommended ApNonce --- ReadMe.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ReadMe.md b/ReadMe.md index 895a2dc6..1469bf71 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -9,6 +9,7 @@ https://github.com/s0uthwest/tsschecker/releases * Allows you to get lists of all devices and all iOS/OTA versions for a specific device. * Can check signing status for default iOS versions and beta ipsws (by specifying a `BuildManifest.plist`) * Works without specifying any device relevant values to check signing status, but can be used to save blobs when given an ECID and the option `--print-tss-response` (although there are better tools to do this). +* If you want to save blobs with recommended ApNonce, please, see [this file](https://github.com/s0uthwest/tsschecker/blob/master/nonces.txt). tsschecker is not only meant to be used to check signing status, but also to explore Apple's tss servers. By using all of its customization possibilities, you might discover a combination of devices and iOS versions that is now getting signed but wasn't getting signed before. From 8ca27c4802ae0e6ab4d32b20879c7fdb7b67e42a Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Mon, 7 Jan 2019 00:23:39 -0800 Subject: [PATCH 22/82] ReadMe & Xcode: actualizing Updated latest depends, fix links --- ReadMe.md | 13 ++++++------- tsschecker.xcodeproj/project.pbxproj | 6 ++++-- .../UserInterfaceState.xcuserstate | Bin 0 -> 12828 bytes 3 files changed, 10 insertions(+), 9 deletions(-) create mode 100644 tsschecker.xcodeproj/project.xcworkspace/xcuserdata/s0uthwest.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/ReadMe.md b/ReadMe.md index 1469bf71..88437392 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -1,13 +1,11 @@ # tsschecker _tsschecker is a powerful tool to work with signing technology on iOS devices._ -Latest compiled version can be found here: -(macOS). Linux version goes later. Windows version is supported, but I will not compile it. -https://github.com/s0uthwest/tsschecker/releases +Latest compiled version can be found [here](https://github.com/s0uthwest/tsschecker/releases). Linux version goes later. Windows version is supported, but I will not compile it. ## Features * Allows you to get lists of all devices and all iOS/OTA versions for a specific device. -* Can check signing status for default iOS versions and beta ipsws (by specifying a `BuildManifest.plist`) +* Can check signing status for default iOS versions and beta iPSW's (by specifying a `BuildManifest.plist`) * Works without specifying any device relevant values to check signing status, but can be used to save blobs when given an ECID and the option `--print-tss-response` (although there are better tools to do this). * If you want to save blobs with recommended ApNonce, please, see [this file](https://github.com/s0uthwest/tsschecker/blob/master/nonces.txt). @@ -22,8 +20,9 @@ By using all of its customization possibilities, you might discover a combinatio Make sure these are installed * [libcurl](https://curl.haxx.se/libcurl/) * [libplist](https://github.com/libimobiledevice/libplist) - * [libfragmentzip](https://github.com/tihmstar/libfragmentzip) + * [libfragmentzip](https://github.com/encounter/libfragmentzip) * [openssl](https://github.com/openssl/openssl) or commonCrypto on macOS/OS X. + * [libirecovery](https://github.com/libimobiledevice/libirecovery) * ## Submodules Make sure these projects compile on your system * [jssy](https://github.com/tihmstar/jssy) @@ -35,11 +34,11 @@ Open terminal and execute the command: `./autogen.sh && make` or use Xcode proje Follow [this guide](https://dev.to/jake/using-libcurl3-and-libcurl4-on-ubuntu-1804-bionic-184g) to use tsschecker on Ubuntu 18.04 (Bionic) as it requires libcurl3 which cannot coexist with libcurl4 on this OS. ## Report an issue -You can do it [here](https://github.com/s0uthwest/igetnonce/issues). +You can do it [here](https://github.com/s0uthwest/tsschecker/issues). ## Credits Creator of [original project](https://github.com/tihmstar/tsschecker) - [tihmstar](https://github.com/tihmstar). ReadMe updated on: - 2019-01-05 + 2019-01-06 diff --git a/tsschecker.xcodeproj/project.pbxproj b/tsschecker.xcodeproj/project.pbxproj index 17bdabd6..8b09df24 100644 --- a/tsschecker.xcodeproj/project.pbxproj +++ b/tsschecker.xcodeproj/project.pbxproj @@ -12,6 +12,8 @@ 56520C1521B2693F005BD3F7 /* jssy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 56520C0D21B2693E005BD3F7 /* jssy.cpp */; }; 56520C1721B2693F005BD3F7 /* cmain.c in Sources */ = {isa = PBXBuildFile; fileRef = 56520C1021B2693F005BD3F7 /* cmain.c */; }; 56931F5C21D900D200A88574 /* all.h in Sources */ = {isa = PBXBuildFile; fileRef = 563DA62E21BBC58900844624 /* all.h */; }; + 56DA633E21E3412400821A21 /* ptr_smart.hpp in Sources */ = {isa = PBXBuildFile; fileRef = 56520C1221B2693F005BD3F7 /* ptr_smart.hpp */; }; + 56DA633F21E3412900821A21 /* helper.h in Sources */ = {isa = PBXBuildFile; fileRef = 56520C1321B2693F005BD3F7 /* helper.h */; }; 56EF4C0121B1A2D10056D405 /* libcurl.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 56EF4C0021B1A2D10056D405 /* libcurl.tbd */; }; 56EF4C0321B1A2E10056D405 /* libirecovery.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 56EF4C0221B1A2E10056D405 /* libirecovery.2.dylib */; }; 56EF4C0521B1A2F40056D405 /* libfragmentzip.0.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 56EF4C0421B1A2F40056D405 /* libfragmentzip.0.dylib */; }; @@ -188,8 +190,6 @@ compatibilityVersion = "Xcode 6.3"; developmentRegion = English; hasScannedForEncodings = 0; - knownRegions = ( - ); mainGroup = 87EB90961C2940CD002CEE70; productRefGroup = 87EB90A01C2940CD002CEE70 /* Products */; projectDirPath = ""; @@ -228,12 +228,14 @@ files = ( 56520C1721B2693F005BD3F7 /* cmain.c in Sources */, 56520C1421B2693F005BD3F7 /* jssy.c in Sources */, + 56DA633F21E3412900821A21 /* helper.h in Sources */, 87F927AC1C3E44CE00343510 /* tsschecker.c in Sources */, 56520C1521B2693F005BD3F7 /* jssy.cpp in Sources */, 87CEC4C91C576BD9006E75FC /* tss.c in Sources */, 87F927AF1C3E455200343510 /* download.c in Sources */, 87EB90A31C2940CD002CEE70 /* main.c in Sources */, 56931F5C21D900D200A88574 /* all.h in Sources */, + 56DA633E21E3412400821A21 /* ptr_smart.hpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/tsschecker.xcodeproj/project.xcworkspace/xcuserdata/s0uthwest.xcuserdatad/UserInterfaceState.xcuserstate b/tsschecker.xcodeproj/project.xcworkspace/xcuserdata/s0uthwest.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..481b9e4cb029113f149316c4cbe84cf547b55a29 GIT binary patch literal 12828 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 L(=`yuIR5_t Date: Mon, 7 Jan 2019 05:04:22 -0800 Subject: [PATCH 23/82] Add latest Savage tags to TSS request --- tsschecker/tss.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) diff --git a/tsschecker/tss.c b/tsschecker/tss.c index 2cfbdb6b..9627dd3c 100644 --- a/tsschecker/tss.c +++ b/tsschecker/tss.c @@ -968,7 +968,37 @@ int tss_request_add_savage_tags(plist_t request, plist_t parameters, plist_t ove uint8_t isprod = 0; plist_get_bool_val(node, &isprod); node = NULL; + + /* add Savage,B0-*-Patch */ + if (isprod) { + comp_name = "Savage,B0-Prod-Patch"; + } else { + comp_name = "Savage,B0-Dev-Patch"; + } + node = plist_access_path(manifest_node, 2, comp_name, "Digest"); + if (!node) { + tsserror("ERROR: Unable to get %s digest from manifest\n", comp_name); + return -1; + } + dict = plist_new_dict(); + plist_dict_set_item(dict, "Digest", plist_copy(node)); + plist_dict_set_item(request, comp_name, dict); + /* add Savage,B0-*-Patch */ + if (isprod) { + comp_name = "Savage,B0-Prod-PatchVT"; + } else { + comp_name = "Savage,B0-Dev-PatchVT"; + } + node = plist_access_path(manifest_node, 2, comp_name, "Digest"); + if (!node) { + tsserror("ERROR: Unable to get %s digest from manifest\n", comp_name); + return -1; + } + dict = plist_new_dict(); + plist_dict_set_item(dict, "Digest", plist_copy(node)); + plist_dict_set_item(request, comp_name, dict); + /* add Savage,B2-*-Patch */ if (isprod) { comp_name = "Savage,B2-Prod-Patch"; @@ -983,8 +1013,53 @@ int tss_request_add_savage_tags(plist_t request, plist_t parameters, plist_t ove dict = plist_new_dict(); plist_dict_set_item(dict, "Digest", plist_copy(node)); plist_dict_set_item(request, comp_name, dict); + + /* add Savage,B2-*-PatchVT */ + if (isprod) { + comp_name = "Savage,B2-Prod-PatchVT"; + } else { + comp_name = "Savage,B2-Dev-PatchVT"; + } + node = plist_access_path(manifest_node, 2, comp_name, "Digest"); + if (!node) { + tsserror("ERROR: Unable to get %s digest from manifest\n", comp_name); + return -1; + } + dict = plist_new_dict(); + plist_dict_set_item(dict, "Digest", plist_copy(node)); + plist_dict_set_item(request, comp_name, dict); + + /* add Savage,BA-*-Patch */ + if (isprod) { + comp_name = "Savage,BA-Prod-Patch"; + } else { + comp_name = "Savage,BA-Dev-Patch"; + } + node = plist_access_path(manifest_node, 2, comp_name, "Digest"); + if (!node) { + tsserror("ERROR: Unable to get %s digest from manifest\n", comp_name); + return -1; + } + dict = plist_new_dict(); + plist_dict_set_item(dict, "Digest", plist_copy(node)); + plist_dict_set_item(request, comp_name, dict); - /* add Savage,Nonce */ + /* add Savage,BA-*-PatchVT */ + if (isprod) { + comp_name = "Savage,BA-Prod-PatchVT"; + } else { + comp_name = "Savage,BA-Dev-PatchVT"; + } + node = plist_access_path(manifest_node, 2, comp_name, "Digest"); + if (!node) { + tsserror("ERROR: Unable to get %s digest from manifest\n", comp_name); + return -1; + } + dict = plist_new_dict(); + plist_dict_set_item(dict, "Digest", plist_copy(node)); + plist_dict_set_item(request, comp_name, dict); + + /* add Savage,Nonce */ node = plist_dict_get_item(parameters, "Savage,Nonce"); if (!node) { tsserror("ERROR: Unable to find required Savage,Nonce in parameters\n"); From 0d4ce82094bd26166319983cbbfce1e5d2ff2f81 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Mon, 7 Jan 2019 05:08:02 -0800 Subject: [PATCH 24/82] Add latest iOS 12 tag for SE - OSUPubKeyID --- tsschecker/tss.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tsschecker/tss.c b/tsschecker/tss.c index 9627dd3c..b36fe2a5 100644 --- a/tsschecker/tss.c +++ b/tsschecker/tss.c @@ -816,6 +816,15 @@ int tss_request_add_se_tags(plist_t request, plist_t parameters, plist_t overrid } plist_dict_set_item(request, "SE,Nonce", plist_copy(node)); node = NULL; + + /* add SE,OSUPubKeyID */ + node = plist_dict_get_item(parameters, "SE,OSUPubKeyID"); + if (!node) { + tsserror("ERROR: %s: Unable to find required SE,OSUPubKeyID in parameters\n", __func__); + return -1; + } + plist_dict_set_item(request, "SE,OSUPubKeyID", plist_copy(node)); + node = NULL; /* add SE,RootKeyIdentifier */ node = plist_dict_get_item(parameters, "SE,RootKeyIdentifier"); From a2efb688c00d4f0bf8c61b7a43082362d5f68592 Mon Sep 17 00:00:00 2001 From: s0uthwest <42713499+s0uthwest@users.noreply.github.com> Date: Mon, 7 Jan 2019 23:53:03 +0300 Subject: [PATCH 25/82] ApNonces: more for dfu collision --- nonces.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nonces.txt b/nonces.txt index caadf37c..70635414 100644 --- a/nonces.txt +++ b/nonces.txt @@ -17,5 +17,8 @@ DFU collision APNonces (not for all devices/firmwares, some collisioned): 7ce1657233867e988e1b48988ef98fc28ddf20f5 198365e19ea223bd73ee27faa555ca24ac6ed65d 994bf71da4fd4ba758a8ec6c943a5a610be02edb +ee4b7f9b2d7d41bfde4c8390734a83d63c2fe997 8f760412c8653de657e8ea2352f706de2e9ca85c 63e81aabb8e9e45cc756c347e8cdfd9ae7c796ad +99a7b1ba5977d6c112717cc208a41785aaa7a313 +b05a70468054cfe94251b34b58f28450054f1aa9 From 98bdcf6db74c4ffa4495da9d40c9fcc61a4dc44e Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Tue, 8 Jan 2019 07:32:37 -0800 Subject: [PATCH 26/82] repack libs --- tsschecker/all.h | 14 -------------- tsschecker/debug.h | 26 ++++++++++++++++++++++++++ tsschecker/download.h | 2 +- tsschecker/tss.h | 2 +- tsschecker/tsschecker.h | 2 +- 5 files changed, 29 insertions(+), 17 deletions(-) create mode 100644 tsschecker/debug.h diff --git a/tsschecker/all.h b/tsschecker/all.h index 486f6190..17dada46 100644 --- a/tsschecker/all.h +++ b/tsschecker/all.h @@ -9,13 +9,6 @@ #ifndef all_h #define all_h -extern int idevicerestore_debug; -#define info(a ...) printf(a) -#define log(a ...) if (dbglog) printf(a) -#define warning(a ...) if (dbglog) printf("[WARNING] "), printf(a) -#define debug(a ...) if (idevicerestore_debug) printf(a) -#define error(a ...) printf("[Error] "),printf(a) - // version bump #ifdef DEBUG // this is for developing with Xcode #define TSSCHECKER_VERSION_COMMIT_COUNT "Debug" @@ -23,11 +16,4 @@ extern int idevicerestore_debug; #else #endif -// statis assert -#define CASSERT(predicate, file) _impl_CASSERT_LINE(predicate,__LINE__,file) - -#define _impl_PASTE(a,b) a##b -#define _impl_CASSERT_LINE(predicate, line, file) \ -typedef char _impl_PASTE(assertion_failed_##file##_,line)[2*!!(predicate)-1]; - #endif /* all_h */ diff --git a/tsschecker/debug.h b/tsschecker/debug.h new file mode 100644 index 00000000..2cd2c898 --- /dev/null +++ b/tsschecker/debug.h @@ -0,0 +1,26 @@ +// +// debug.h +// tsschecker +// +// Created by s0uthwest on 08.01.19. +// Copyright © 2016 tihmstar. All rights reserved. +// + +#ifndef debug_h +#define debug_h + +extern int idevicerestore_debug; +#define info(a ...) printf(a) +#define log(a ...) if (dbglog) printf(a) +#define warning(a ...) if (dbglog) printf("[WARNING] "), printf(a) +#define debug(a ...) if (idevicerestore_debug) printf(a) +#define error(a ...) printf("[Error] "),printf(a) + +// statis assert +#define CASSERT(predicate, file) _impl_CASSERT_LINE(predicate,__LINE__,file) + +#define _impl_PASTE(a,b) a##b +#define _impl_CASSERT_LINE(predicate, line, file) \ +typedef char _impl_PASTE(assertion_failed_##file##_,line)[2*!!(predicate)-1]; + +#endif /* debug_h */ diff --git a/tsschecker/download.h b/tsschecker/download.h index 0eca6893..0218d285 100644 --- a/tsschecker/download.h +++ b/tsschecker/download.h @@ -10,7 +10,7 @@ #define download_h #include -#include "all.h" +#include "debug.h" int downloadFile(const char *url, const char *dstPath); diff --git a/tsschecker/tss.h b/tsschecker/tss.h index 106bb60f..eb337859 100644 --- a/tsschecker/tss.h +++ b/tsschecker/tss.h @@ -29,7 +29,7 @@ extern "C" { #endif #include -#include "all.h" +#include "debug.h" extern int print_tss_request; diff --git a/tsschecker/tsschecker.h b/tsschecker/tsschecker.h index dd342c06..0112ca12 100644 --- a/tsschecker/tsschecker.h +++ b/tsschecker/tsschecker.h @@ -17,7 +17,7 @@ extern "C" { #include "jssy.h" #include #include "tss.h" -#include "all.h" +#include "debug.h" extern int dbglog; extern int print_tss_response; From 89c075ca6be053645b62a40f0667e6afb09c4cc6 Mon Sep 17 00:00:00 2001 From: s0uthwest <42713499+s0uthwest@users.noreply.github.com> Date: Tue, 8 Jan 2019 07:34:34 -0800 Subject: [PATCH 27/82] removed unrequired script --- saveblobs.sh | 65 ---------------------------------------------------- 1 file changed, 65 deletions(-) delete mode 100644 saveblobs.sh diff --git a/saveblobs.sh b/saveblobs.sh deleted file mode 100644 index f4b25c76..00000000 --- a/saveblobs.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/bash -cd /var/shsh -declare -a DIRS=("shsh" "shsh_ota" "shsh_beta_ota") -for dir in "${DIRS[@]}" -do - mkdir $dir 2>/dev/null -done - -rm /tmp/ota.json 2>/dev/null -rm /tmp/firmware.json 2>/dev/null -rm /tmp/bbgcid.json 2>/dev/null - -while read device; do - if [ -z "$device" ]; then - continue - fi - modelWithBoard=$(echo $device | cut -d ' ' -f 1) - model=$(echo $modelWithBoard | cut -d '-' -f 1) - board=$(echo $modelWithBoard | cut -d '-' -f 2) - ecid=$(echo $device | cut -d ' ' -f 2) - - i=2 - ap="" - sp="" - hw="" - - if [ "$board" != "$model" ] && [ -n "$board" ]; then - hw="--boardconfig $board" - fi - - cnt="true"; - while [ "$cnt" == "true" ]; - do - cnt="false" - apnonce=$(echo $device | cut -d ':' -f $i) - apn="" - sp="" - if [ "$apnonce" != "$device" ] && [ -n "$apnonce" ]; then - apn=$apnonce - sp="/$apnonce" - ap="--apnonce $apnonce" - i=$(($i+1)) - mkdir "shsh$sp" 2>/dev/null - cnt="true" - fi - - echo saving blobs for $modelWithBoard $ecid $apn - echo -n "saving normal blob ... " - ret=$(tsschecker -d $model -e $ecid -s --save-path "shsh$sp" -l $ap $hw);code=$? - echo "$ret" >>/tmp/tsschecker_saveblobs_fullog.log - echo -n $(echo $ret | grep -o "iOS .* for device" | rev | cut -c 12- | rev ) - if [ $code -eq 0 ]; then echo " ok"; else echo " failed"; echo $ret;fi - done - - echo -n "saving OTA blob ... " - ret=$(tsschecker -d $model -e $ecid -s --save-path shsh_ota -l -o $hw);code=$? - echo "$ret" >>/tmp/tsschecker_saveblobs_fullog.log - echo -n $(echo $ret | grep -o "iOS .* for device" | rev | cut -c 12- | rev ) - if [ $code -eq 0 ]; then echo " ok"; else echo " failed"; echo $ret;fi - echo -n "saving OTA blob for beta version... " - ret=$(tsschecker -d $model -e $ecid -s --save-path shsh_beta_ota -l -o --beta $hw);code=$? - echo "$ret" >>/tmp/tsschecker_saveblobs_fullog.log - echo -n $(echo $ret | grep -o "iOS .* for device" | rev | cut -c 12- | rev ) - if [ $code -eq 0 ]; then echo " ok"; else echo " failed"; echo $ret;fi -done Date: Tue, 8 Jan 2019 07:46:12 -0800 Subject: [PATCH 28/82] Actualize Xcode project --- .gitignore | 3 +-- ReadMe.md | 6 +++--- tsschecker.xcodeproj/project.pbxproj | 6 ++++++ .../UserInterfaceState.xcuserstate | Bin 12828 -> 30743 bytes tsschecker/main.c | 1 + 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 52fc3f97..cd73b7e3 100644 --- a/.gitignore +++ b/.gitignore @@ -6,8 +6,8 @@ Makefile Makefile.in aclocal.m4 autom4te.cache -depcomp compile +depcomp config.h config.h.in config.log @@ -15,7 +15,6 @@ config.status config.guess config.sub configure -devices.txt external/.DS_Store install-sh libtool diff --git a/ReadMe.md b/ReadMe.md index 88437392..c33e8cb7 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -7,9 +7,9 @@ Latest compiled version can be found [here](https://github.com/s0uthwest/tsschec * Allows you to get lists of all devices and all iOS/OTA versions for a specific device. * Can check signing status for default iOS versions and beta iPSW's (by specifying a `BuildManifest.plist`) * Works without specifying any device relevant values to check signing status, but can be used to save blobs when given an ECID and the option `--print-tss-response` (although there are better tools to do this). -* If you want to save blobs with recommended ApNonce, please, see [this file](https://github.com/s0uthwest/tsschecker/blob/master/nonces.txt). +* __If you want to save blobs with recommended ApNonce, please, see [this file](https://github.com/s0uthwest/tsschecker/blob/master/nonces.txt).__ -tsschecker is not only meant to be used to check signing status, but also to explore Apple's tss servers. +tsschecker is not only meant to be used to check signing status, but also to explore Apple's TSS servers. By using all of its customization possibilities, you might discover a combination of devices and iOS versions that is now getting signed but wasn't getting signed before. # Dependencies @@ -41,4 +41,4 @@ Creator of [original project](https://github.com/tihmstar/tsschecker) - [tihmsta ReadMe updated on: - 2019-01-06 + 2019-01-08 diff --git a/tsschecker.xcodeproj/project.pbxproj b/tsschecker.xcodeproj/project.pbxproj index 8b09df24..f6be5402 100644 --- a/tsschecker.xcodeproj/project.pbxproj +++ b/tsschecker.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 56163B0A21E4FCB00069A0B0 /* debug.h in Sources */ = {isa = PBXBuildFile; fileRef = 56163B0921E4FB980069A0B0 /* debug.h */; }; 563DA63021BBC5AA00844624 /* libcrypto.3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 563DA62F21BBC5AA00844624 /* libcrypto.3.dylib */; }; 56520C1421B2693F005BD3F7 /* jssy.c in Sources */ = {isa = PBXBuildFile; fileRef = 56520C0C21B2693E005BD3F7 /* jssy.c */; }; 56520C1521B2693F005BD3F7 /* jssy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 56520C0D21B2693E005BD3F7 /* jssy.cpp */; }; @@ -37,6 +38,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 56163B0921E4FB980069A0B0 /* debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = debug.h; sourceTree = ""; }; 563DA62E21BBC58900844624 /* all.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = all.h; sourceTree = ""; }; 563DA62F21BBC5AA00844624 /* libcrypto.3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libcrypto.3.dylib; path = ../../../../../usr/local/lib/libcrypto.3.dylib; sourceTree = ""; }; 56520C0C21B2693E005BD3F7 /* jssy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jssy.c; path = external/jssy/jssy/jssy.c; sourceTree = SOURCE_ROOT; }; @@ -140,6 +142,7 @@ isa = PBXGroup; children = ( 563DA62E21BBC58900844624 /* all.h */, + 56163B0921E4FB980069A0B0 /* debug.h */, 87B93E821EE7098900709583 /* external */, 87CEC4CB1C576BE8006E75FC /* libs */, 87F927AE1C3E455200343510 /* download.h */, @@ -190,6 +193,8 @@ compatibilityVersion = "Xcode 6.3"; developmentRegion = English; hasScannedForEncodings = 0; + knownRegions = ( + ); mainGroup = 87EB90961C2940CD002CEE70; productRefGroup = 87EB90A01C2940CD002CEE70 /* Products */; projectDirPath = ""; @@ -234,6 +239,7 @@ 87CEC4C91C576BD9006E75FC /* tss.c in Sources */, 87F927AF1C3E455200343510 /* download.c in Sources */, 87EB90A31C2940CD002CEE70 /* main.c in Sources */, + 56163B0A21E4FCB00069A0B0 /* debug.h in Sources */, 56931F5C21D900D200A88574 /* all.h in Sources */, 56DA633E21E3412400821A21 /* ptr_smart.hpp in Sources */, ); diff --git a/tsschecker.xcodeproj/project.xcworkspace/xcuserdata/s0uthwest.xcuserdatad/UserInterfaceState.xcuserstate b/tsschecker.xcodeproj/project.xcworkspace/xcuserdata/s0uthwest.xcuserdatad/UserInterfaceState.xcuserstate index 481b9e4cb029113f149316c4cbe84cf547b55a29..4a96305575677ca7424cc40778c880b76dedd6d9 100644 GIT binary patch literal 30743 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 E2eK)Z;s5{u delta 7425 zcmZ`-2V7Lg^WSpSyW`&7aphfaDA;=ejS{gTB7&%B6e*{m2nyKC&BYRH)SS_%G19ED zMU5Iw)EJGi$KDcKV(hW^82@{RC`tZ5-Ur@e-|XynX1_B#Z|2>@pJ&d}3Iqy4$ZS5` zi)$h=k{}HVMOqYrs-qgHCaQ&MqdKTAs)y>M=BNdF54A)cQ5TemdY}(bZw>(AQ`y+J?SGyU>qlFFK9R zptI;4I*+`+pkL7i^gFtWZlXu%F?xcYqG#widV&7JA}q!dEW>il;ZSVAR&2x7a5#>@ z)o~467dOStaSI%c-^cN|Gfu!=a3b!8d*eR1AMTH{@Iah{N8pio6dsMoV89>YnRphS zjpyOd@O-=)ufc1*cpd%|NXOF&bSj-m z=hFprAzeb3(q(itT~EKI-_h;#C%TXBr-$h&dWrr)Z_+>MU3!l`qR;6o0Tu`aQvYi~ z3jurzvHobGF9e3eD3}aWU>Zz^F#jpxj>sk`yc9J=jZkAy0tc#6)D$&Ck)Vb~&hh(S|ibtJMLihNj+UaQpo?h&p@5xCk%pT?e1X>79<*NEG zH{<;+n<-+Bp(NB5C8KUV-5EJ)1qHcjgFHRTA3X)h@kz;vaV6|^_a5;{ozn++G72lN z(JQD=?@w)3Q}u4;zQIx6e>tj-rm}ST>L!0$^IH6IBt=yi)+{stg%_i2uoR<#U}Zk5 z8tLeU^3afCG#G5)K7k5QAsWg=hoRwU1R9xAm_5i-P?$Doa4M&Z>DKkF>k`uXd*X)< zO84aV%FN3cI>?h-$iRaGoL~o6C7VNC(L3)KEgtC_$)R%d$04u(Mx;$#iU9dgclO+< zdHI|1Xae(Nbbfx?$PzRjbuS;Cgg#2;H1SEDh8Cu!=XheWGYYfwa?|ohmZC{$GE=b5 ztc{$CroT0922_KvV?m2&1x%X_;gwCB!%UltMnZLlH3D4BpVj@dqPQru5G{JE;|r)+ zp`$pUqXcSI*0F@?SjKeJVLECv9hak8Mxj+`&D;5Fp~%-;@;i_uPK`cH=K3GQ zkq`yVp#{9R6#a~jGG`x0C(ub~39X;hOR?v=m_x@!ne>}q%K9b(H-r~ZeG{4{QjQ8a?8AL*1-xKg2Ic60mZ5kCFWVMuu#E9 zY(jgmC8fZV!`#KF3CYkEnn2GW^S}G-#rO(kcI-moCD?(T&<(nmU^fnf9*_cIExNyP zcDHgoJqrs8GO|1w13mev-2d8+pr>$6wt3^4Iz+fOuESzsTvNMW5@o4{>*0ohwd&&r z@B#EG!HsZZ=nI4XK`I;-Bvo&Jz4v0@r4-yMIGXDJyv6uBRzItz(7bgY0)D`-HyWDHt(U3Am_~6Cl$}hKT$GzZ& zF`kyMl8V!jx&-&dX^;&AN^l0wgn^I)vB~}Naxx40R3w@>Pj3Ihta8=aXh;#bRk52Z zlnlbv@&j0NaULFwhd?gm!C)9th6{pNhe3W2YheY}u>q{(pr8V)@BhVGp?xx*Rt|A0 zgE%w*aR!4p3}XKUP9@H$nDPmpgVe>?49|WKjWkL7(Nb-VFt{E+3*SYVGg(}oj~|ZkVYS;a&7wg8@<=I62X2A zzL^yunD^aDwk0^)ppptSH#ihgd1zU1sCMO{5y2sQh4=2^XDECbzK*XD}ZYz(V+Z8GepmFwgykA7}$EghlWLwD;laOeo;NuniO2*l;gWg|OgXMr1@z z6eNTw2}e}07>b}6N}v?VV97E@YCF*q9nrHp�|{rLY~oXZJ&adP5goP>{_I(A+nf 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 ZI23U#;!Jsql92MdKvjOP_#1KV{{VH<%S8YH diff --git a/tsschecker/main.c b/tsschecker/main.c index 5311a4b5..717d288d 100644 --- a/tsschecker/main.c +++ b/tsschecker/main.c @@ -21,6 +21,7 @@ #include "download.h" #include "tsschecker.h" #include "all.h" +#include "debug.h" #define FLAG_LIST_IOS 1 << 0 #define FLAG_LIST_DEVICES 1 << 1 From 692a6fb20f79d47a38c40eb46f8dec60b8fa3e3a Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Tue, 8 Jan 2019 07:56:57 -0800 Subject: [PATCH 29/82] added iPhone11,6 bbgcid thabks Puro_SinCorte in Twitter --- configure.ac | 1 - tsschecker/tsschecker.c | 16 +++++++--------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/configure.ac b/configure.ac index 3f65cba7..f89fb227 100644 --- a/configure.ac +++ b/configure.ac @@ -10,7 +10,6 @@ AC_PROG_CC CFLAGS+=" -std=c11" AC_PROG_INSTALL AC_PROG_LIBTOOL - AC_CONFIG_MACRO_DIRS([m4]) # Version bump diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index aa1c7382..47d5de03 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -144,6 +144,7 @@ static struct bbdevice bbdevices[] = { {"iPhone10,4", 524245983, 12}, // iPhone 8 (GSM) {"iPhone10,5", 524245983, 12}, // iPhone 8 Plus (GSM) {"iPhone10,6", 524245983, 12}, // iPhone X GSM + {"iPhone11,6", 165673526, 12}, // iPhone XS Max // iPads {"iPad1,1", 0, 0}, // iPad (1st gen) @@ -243,8 +244,8 @@ char *getOtaJson(){ const char *getBoardconfigFromModel(const char *model){ const char *rt = NULL; irecv_device_t table = irecv_devices_get_all(); - //iterate through table until find correct entry - //table is terminated with {NULL, NULL, -1, -1} entry, return that if device not found + /* iterate through table until find correct entry + table is terminated with {NULL, NULL, -1, -1} entry, return that if device not found */ while (table->product_type){ if (strcasecmp(model, table->product_type) == 0){ if (rt){ @@ -263,8 +264,8 @@ const char *getBoardconfigFromModel(const char *model){ const char *getModelFromBoardconfig(const char *boardconfig){ const char *rt = NULL; irecv_device_t table = irecv_devices_get_all(); - //iterate through table until find correct entry - //table is terminated with {NULL, NULL, -1, -1} entry, return that if device not found + /* iterate through table until find correct entry + table is terminated with {NULL, NULL, -1, -1} entry, return that if device not found */ while (table->product_type){ if (strcasecmp(boardconfig, table->hardware_model) == 0){ if (rt){ @@ -303,11 +304,9 @@ plist_t getBuildidentityWithBoardconfig(plist_t buildManifest, const char *board } char *string = NULL; plist_get_string_val(RestoreBehavior, &string); - //assuming there are only Erase and Update. If it's not Erase it must be Update - //also converting isUpdateInstall to bool (1 or 0) + //assuming there are only Erase and Update. If it's not Erase it must be Update also converting isUpdateInstall to bool (1 or 0) if ((strncmp(string, "Erase", strlen(string)) != 0) == !isUpdateInstall){ - //continue when Erase found but isUpdateInstall is true - //or Update found and isUpdateInstall is false + //continue when Erase found but isUpdateInstall is true or Update found and isUpdateInstall is false rt = NULL; continue; } @@ -575,7 +574,6 @@ int tss_populate_basebandvals(plist_t tssreq, plist_t tssparameters, int64_t BbG int n=0; for (int i=1; i<7; i++) BbChipID += (rand() % 10) * pow(10, ++n); /* BasebandNonce not required */ -// plist_dict_set_item(parameters, "BbNonce", plist_new_data(bbnonce, NONCELEN_BASEBAND)); plist_dict_set_item(parameters, "BbGoldCertId", plist_new_uint(BbGoldCertId)); plist_dict_set_item(parameters, "BbSNUM", plist_new_data((char *)BbSNUM, bbsnumSize)); From 248e6f60155540db3c4950f6abcdd0d2869fe92a Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Tue, 8 Jan 2019 07:59:28 -0800 Subject: [PATCH 30/82] added iPhone11,2 bbgcid Thanks @opa334 --- tsschecker/tsschecker.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index 47d5de03..616523a1 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -144,6 +144,7 @@ static struct bbdevice bbdevices[] = { {"iPhone10,4", 524245983, 12}, // iPhone 8 (GSM) {"iPhone10,5", 524245983, 12}, // iPhone 8 Plus (GSM) {"iPhone10,6", 524245983, 12}, // iPhone X GSM + {"iPhone11,2", 165673526, 12}, // iPhone XS {"iPhone11,6", 165673526, 12}, // iPhone XS Max // iPads From 8ae1b753becad8d4745b7796771134b14b1a0573 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Tue, 8 Jan 2019 08:00:50 -0800 Subject: [PATCH 31/82] added iPhone11,4 bbgcid --- ...f48fd2fb00741f2cc01a25f6d6b726bdec57.shsh2 | 1254 +++++++++++++++++ ...0fce80c973d3a51496306b6a96e3b53db4a5.shsh2 | 1246 ++++++++++++++++ tsschecker/tsschecker.c | 1 + 3 files changed, 2501 insertions(+) create mode 100644 1111111111_iPhone11,2_12.1.1-16C50_7e7ea79d0a57b00bbf821c271a2cf48fd2fb00741f2cc01a25f6d6b726bdec57.shsh2 create mode 100644 1111111111_iPhone11,4_12.1.1-16C50_7b5d84c4129841819489fd6a4d680fce80c973d3a51496306b6a96e3b53db4a5.shsh2 diff --git a/1111111111_iPhone11,2_12.1.1-16C50_7e7ea79d0a57b00bbf821c271a2cf48fd2fb00741f2cc01a25f6d6b726bdec57.shsh2 b/1111111111_iPhone11,2_12.1.1-16C50_7e7ea79d0a57b00bbf821c271a2cf48fd2fb00741f2cc01a25f6d6b726bdec57.shsh2 new file mode 100644 index 00000000..b8e59408 --- /dev/null +++ b/1111111111_iPhone11,2_12.1.1-16C50_7e7ea79d0a57b00bbf821c271a2cf48fd2fb00741f2cc01a25f6d6b726bdec57.shsh2 @@ -0,0 +1,1254 @@ + + + + + @ServerVersion + 2.1.0 + ApImg4Ticket + + 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 + + BBTicket + + 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 + + BasebandFirmware + + PSI-Blob + + uAdSkmHpcSwVWKDzygWmqnvYDxYX3xxyYntTLpR7VvXpYCQ7x1jt1RtO7MX2 + sip1M2DjxotbX8kJS5EaokP0Yft9/DDUmdhEaSBs3GSEkif///////////// + ////////////////////////////////////////0uvN9ALaO4MHpZVDMGQC + MC4AP6o6bzlBePelOkRp8odQqIzN6EVJqCgSJ6ckzHzje9gvI27It3yZYRya + gm5Y/QIwK4W/Rt8cVngDYjokjZVC0hbQVVFddreJ+069HZPg7QrunAHhO5IF + md5tBJVVjn5I//8wggIiMIIBqKADAgECAggft56T3kZN5TAKBggqhkjOPQQD + AzBDMRcwFQYDVQQDDA5JQ0UgUm9vdCBDQSAyNjETMBEGA1UECgwKQXBwbGUg + SW5jLjETMBEGA1UECAwKQ2FsaWZvcm5pYTAeFw0xNzAzMjMwMDMzNTlaFw0x + NzAzMjMyMjM4MjFaMEwxIDAeBgNVBAMMF0lDRS1Sb290Q0EyNi1EYXRhQ2Vu + dGVyMRMwEQYDVQQKDApBcHBsZSBJbmMuMRMwEQYDVQQIDApDYWxpZm9ybmlh + MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEm6v8kfnQdiJOJ8EVqGybx1LPF6vE + Y5+//BmiIF637fYZRD4qmMw0LOvaxVf9hLZVnxb8/Z+RQ8uIpTqGkImaqNz0 + 9XG6Ngljbw1MdewuRpy3Klp92Cj77IyU+hHofL/Mo2AwXjAMBgNVHRMBAf8E + AjAAMB8GA1UdIwQYMBaAFGxr4GslWxQI73tCWbDHMmSKsBbGMB0GA1UdDgQW + BBTkTMdD3aGst2h1cHW59+PiRGFvdzAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZI + zj0EAwMDaAAwZQIxAMehHNdobAMi4G1fhLC0WkRzw28WwBnYdTSZmcJhD8aS + xvsCJPZNVEVPzGB/vne+BAIwVbNVr0vKDfp+A//Fe7q0bFSmH/vmPuv8gsIA + uTu4xGisbIjxM4HdCgl0aHeje2flMIIB+jCCAYGgAwIBAgIINKgm1LOyGeEw + CgYIKoZIzj0EAwMwQzEXMBUGA1UEAwwOSUNFIFJvb3QgQ0EgMjYxEzARBgNV + BAoMCkFwcGxlIEluYy4xEzARBgNVBAgMCkNhbGlmb3JuaWEwHhcNMTcwMzIy + MjIzODIxWhcNMTcwMzIzMjIzODIxWjBDMRcwFQYDVQQDDA5JQ0UgUm9vdCBD + QSAyNjETMBEGA1UECgwKQXBwbGUgSW5jLjETMBEGA1UECAwKQ2FsaWZvcm5p + YTB2MBAGByqGSM49AgEGBSuBBAAiA2IABGJZBDAT6/nOgy1VGm9V4ml0Uzv7 + Vx8KPNCdKk6iDu8+CvMDhF+AVSs6RfhUK0v7qu9/ycSZvbzB0e8MUDgsYgm8 + tkega+5mZd12RuywBLXMKV8yXKZgrS5inn8oVHRGaqNCMEAwDwYDVR0TAQH/ + BAUwAwEB/zAdBgNVHQ4EFgQUbGvgayVbFAjve0JZsMcyZIqwFsYwDgYDVR0P + AQH/BAQDAgIEMAoGCCqGSM49BAMDA2cAMGQCMHIFi0/ZrNShP/26LBgFRumV + eHjYUwEQkCwKMbRmgLnNfOvzVbBc+odylRPSFYClwwIwPoXOlNkO+KVx2IJZ + Fz1WNk5hCGDb4kmL4A5gT366PQ+AqEXFO4hiW7Hw+wzVfUJb//////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////8= + + PSI-PartialDigest + + hAAAAAAXBgDlCXSUM5CIHQNQxTVPJs8Q3F2zW+Ld1p9Q8aM2dCAQ4jlLkL9V + 1Y6MJV5LmCyyc+0+MsTg5CZpbfsNEr3HQXGU + + RestorePSI-Blob + + uAdSkmHpcSwVWKDzygWmqnvYDxYX3xxyYntTLpR7VvXpYCQ7x1jt1RtO7MX2 + sip1d4KTlLV3ONxv05H4z7E6YKFHAAbzeARGsdAAI6NqaWL///////////// + ////////////////////////////////////////0uvN9ALaO4MHpZVDMGQC + MFv+RHWchBUM5AjcK/4Lv6W2VbM9seJnokqQHJH9sK3wzeC9/W7IOjyXd5SA + oITwNwIwMnchqXrdOi1XkjJMPCZn+H00ZKi721hXMdkt+o1qwWAFnC4JP7a0 + APMLR4EmN2/P//8wggIiMIIBqKADAgECAggft56T3kZN5TAKBggqhkjOPQQD + AzBDMRcwFQYDVQQDDA5JQ0UgUm9vdCBDQSAyNjETMBEGA1UECgwKQXBwbGUg + SW5jLjETMBEGA1UECAwKQ2FsaWZvcm5pYTAeFw0xNzAzMjMwMDMzNTlaFw0x + NzAzMjMyMjM4MjFaMEwxIDAeBgNVBAMMF0lDRS1Sb290Q0EyNi1EYXRhQ2Vu + dGVyMRMwEQYDVQQKDApBcHBsZSBJbmMuMRMwEQYDVQQIDApDYWxpZm9ybmlh + MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEm6v8kfnQdiJOJ8EVqGybx1LPF6vE + Y5+//BmiIF637fYZRD4qmMw0LOvaxVf9hLZVnxb8/Z+RQ8uIpTqGkImaqNz0 + 9XG6Ngljbw1MdewuRpy3Klp92Cj77IyU+hHofL/Mo2AwXjAMBgNVHRMBAf8E + AjAAMB8GA1UdIwQYMBaAFGxr4GslWxQI73tCWbDHMmSKsBbGMB0GA1UdDgQW + BBTkTMdD3aGst2h1cHW59+PiRGFvdzAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZI + zj0EAwMDaAAwZQIxAMehHNdobAMi4G1fhLC0WkRzw28WwBnYdTSZmcJhD8aS + xvsCJPZNVEVPzGB/vne+BAIwVbNVr0vKDfp+A//Fe7q0bFSmH/vmPuv8gsIA + uTu4xGisbIjxM4HdCgl0aHeje2flMIIB+jCCAYGgAwIBAgIINKgm1LOyGeEw + CgYIKoZIzj0EAwMwQzEXMBUGA1UEAwwOSUNFIFJvb3QgQ0EgMjYxEzARBgNV + BAoMCkFwcGxlIEluYy4xEzARBgNVBAgMCkNhbGlmb3JuaWEwHhcNMTcwMzIy + MjIzODIxWhcNMTcwMzIzMjIzODIxWjBDMRcwFQYDVQQDDA5JQ0UgUm9vdCBD + QSAyNjETMBEGA1UECgwKQXBwbGUgSW5jLjETMBEGA1UECAwKQ2FsaWZvcm5p + YTB2MBAGByqGSM49AgEGBSuBBAAiA2IABGJZBDAT6/nOgy1VGm9V4ml0Uzv7 + Vx8KPNCdKk6iDu8+CvMDhF+AVSs6RfhUK0v7qu9/ycSZvbzB0e8MUDgsYgm8 + tkega+5mZd12RuywBLXMKV8yXKZgrS5inn8oVHRGaqNCMEAwDwYDVR0TAQH/ + BAUwAwEB/zAdBgNVHQ4EFgQUbGvgayVbFAjve0JZsMcyZIqwFsYwDgYDVR0P + AQH/BAQDAgIEMAoGCCqGSM49BAMDA2cAMGQCMHIFi0/ZrNShP/26LBgFRumV + eHjYUwEQkCwKMbRmgLnNfOvzVbBc+odylRPSFYClwwIwPoXOlNkO+KVx2IJZ + Fz1WNk5hCGDb4kmL4A5gT366PQ+AqEXFO4hiW7Hw+wzVfUJb//////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////8= + + RestorePSI-PartialDigest + + hAAAAAAXBgChvpu100y61uQv82gvjQmqYsKffUbencBIlk967kfLID07mZb0 + Q0e33R9LVKu0BrHs6qhbgywkubV4J6JjGO4i + + + generator + 0x833bda02f4cdebd2 + updateInstall + + @ServerVersion + 2.1.0 + ApImg4Ticket + + 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 + + BBTicket + + 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 + + BasebandFirmware + + PSI-Blob + + uAdSkmHpcSwVWKDzygWmqnvYDxYX3xxyYntTLpR7VvXpYCQ7x1jt + 1RtO7MX2sip1x2BkgjYViWwHwCHwNXhXTkUMX9/P2CoMvYExn64L + aG3///////////////////////////////////////////////// + ////IM2ASQdr64COQcbuMGUCMHwWyxVA+XWUNd5GWOBQTDro6kz5 + KlSRGDGSlczEtkU02pmufM55Nokggb4bkGopFwIxAPoELBkwcuFa + 99tXKNR0DcJ6Q6Cc54/v41maeH6Qa+Giz/lyIe+SFJB1rAvVpdWf + vv8wggIiMIIBqKADAgECAggft56T3kZN5TAKBggqhkjOPQQDAzBD + MRcwFQYDVQQDDA5JQ0UgUm9vdCBDQSAyNjETMBEGA1UECgwKQXBw + bGUgSW5jLjETMBEGA1UECAwKQ2FsaWZvcm5pYTAeFw0xNzAzMjMw + MDMzNTlaFw0xNzAzMjMyMjM4MjFaMEwxIDAeBgNVBAMMF0lDRS1S + b290Q0EyNi1EYXRhQ2VudGVyMRMwEQYDVQQKDApBcHBsZSBJbmMu + MRMwEQYDVQQIDApDYWxpZm9ybmlhMHYwEAYHKoZIzj0CAQYFK4EE + ACIDYgAEm6v8kfnQdiJOJ8EVqGybx1LPF6vEY5+//BmiIF637fYZ + RD4qmMw0LOvaxVf9hLZVnxb8/Z+RQ8uIpTqGkImaqNz09XG6Nglj + bw1MdewuRpy3Klp92Cj77IyU+hHofL/Mo2AwXjAMBgNVHRMBAf8E + AjAAMB8GA1UdIwQYMBaAFGxr4GslWxQI73tCWbDHMmSKsBbGMB0G + A1UdDgQWBBTkTMdD3aGst2h1cHW59+PiRGFvdzAOBgNVHQ8BAf8E + BAMCB4AwCgYIKoZIzj0EAwMDaAAwZQIxAMehHNdobAMi4G1fhLC0 + WkRzw28WwBnYdTSZmcJhD8aSxvsCJPZNVEVPzGB/vne+BAIwVbNV + r0vKDfp+A//Fe7q0bFSmH/vmPuv8gsIAuTu4xGisbIjxM4HdCgl0 + aHeje2flMIIB+jCCAYGgAwIBAgIINKgm1LOyGeEwCgYIKoZIzj0E + AwMwQzEXMBUGA1UEAwwOSUNFIFJvb3QgQ0EgMjYxEzARBgNVBAoM + CkFwcGxlIEluYy4xEzARBgNVBAgMCkNhbGlmb3JuaWEwHhcNMTcw + MzIyMjIzODIxWhcNMTcwMzIzMjIzODIxWjBDMRcwFQYDVQQDDA5J + Q0UgUm9vdCBDQSAyNjETMBEGA1UECgwKQXBwbGUgSW5jLjETMBEG + A1UECAwKQ2FsaWZvcm5pYTB2MBAGByqGSM49AgEGBSuBBAAiA2IA + BGJZBDAT6/nOgy1VGm9V4ml0Uzv7Vx8KPNCdKk6iDu8+CvMDhF+A + VSs6RfhUK0v7qu9/ycSZvbzB0e8MUDgsYgm8tkega+5mZd12Ruyw + BLXMKV8yXKZgrS5inn8oVHRGaqNCMEAwDwYDVR0TAQH/BAUwAwEB + /zAdBgNVHQ4EFgQUbGvgayVbFAjve0JZsMcyZIqwFsYwDgYDVR0P + AQH/BAQDAgIEMAoGCCqGSM49BAMDA2cAMGQCMHIFi0/ZrNShP/26 + LBgFRumVeHjYUwEQkCwKMbRmgLnNfOvzVbBc+odylRPSFYClwwIw + PoXOlNkO+KVx2IJZFz1WNk5hCGDb4kmL4A5gT366PQ+AqEXFO4hi + W7Hw+wzVfUJb//////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////8= + + PSI-PartialDigest + + hAAAAAAXBgDlCXSUM5CIHQNQxTVPJs8Q3F2zW+Ld1p9Q8aM2dCAQ + 4jlLkL9V1Y6MJV5LmCyyc+0+MsTg5CZpbfsNEr3HQXGU + + RestorePSI-Blob + + uAdSkmHpcSwVWKDzygWmqnvYDxYX3xxyYntTLpR7VvXpYCQ7x1jt + 1RtO7MX2sip1cZMlWvv7ac3edDwfWvYszmBRtQqQSyfp7+lc24ei + tp7///////////////////////////////////////////////// + ////IM2ASQdr64COQcbuMGUCMQCjfbuqjq89riZMp8uQaMBRnmbx + RxzuV+4ntuJ2OYZlPBYtd3XG5b7cbN7De/7my+4CMDSjIFit456s + lJ2ekXMltASdQkBS9wlGbJSRa6zfDprTp0VAkys6EvBe/Am5Yt+t + OP8wggIiMIIBqKADAgECAggft56T3kZN5TAKBggqhkjOPQQDAzBD + MRcwFQYDVQQDDA5JQ0UgUm9vdCBDQSAyNjETMBEGA1UECgwKQXBw + bGUgSW5jLjETMBEGA1UECAwKQ2FsaWZvcm5pYTAeFw0xNzAzMjMw + MDMzNTlaFw0xNzAzMjMyMjM4MjFaMEwxIDAeBgNVBAMMF0lDRS1S + b290Q0EyNi1EYXRhQ2VudGVyMRMwEQYDVQQKDApBcHBsZSBJbmMu + MRMwEQYDVQQIDApDYWxpZm9ybmlhMHYwEAYHKoZIzj0CAQYFK4EE + ACIDYgAEm6v8kfnQdiJOJ8EVqGybx1LPF6vEY5+//BmiIF637fYZ + RD4qmMw0LOvaxVf9hLZVnxb8/Z+RQ8uIpTqGkImaqNz09XG6Nglj + bw1MdewuRpy3Klp92Cj77IyU+hHofL/Mo2AwXjAMBgNVHRMBAf8E + AjAAMB8GA1UdIwQYMBaAFGxr4GslWxQI73tCWbDHMmSKsBbGMB0G + A1UdDgQWBBTkTMdD3aGst2h1cHW59+PiRGFvdzAOBgNVHQ8BAf8E + BAMCB4AwCgYIKoZIzj0EAwMDaAAwZQIxAMehHNdobAMi4G1fhLC0 + WkRzw28WwBnYdTSZmcJhD8aSxvsCJPZNVEVPzGB/vne+BAIwVbNV + r0vKDfp+A//Fe7q0bFSmH/vmPuv8gsIAuTu4xGisbIjxM4HdCgl0 + aHeje2flMIIB+jCCAYGgAwIBAgIINKgm1LOyGeEwCgYIKoZIzj0E + AwMwQzEXMBUGA1UEAwwOSUNFIFJvb3QgQ0EgMjYxEzARBgNVBAoM + CkFwcGxlIEluYy4xEzARBgNVBAgMCkNhbGlmb3JuaWEwHhcNMTcw + MzIyMjIzODIxWhcNMTcwMzIzMjIzODIxWjBDMRcwFQYDVQQDDA5J + Q0UgUm9vdCBDQSAyNjETMBEGA1UECgwKQXBwbGUgSW5jLjETMBEG + A1UECAwKQ2FsaWZvcm5pYTB2MBAGByqGSM49AgEGBSuBBAAiA2IA + BGJZBDAT6/nOgy1VGm9V4ml0Uzv7Vx8KPNCdKk6iDu8+CvMDhF+A + VSs6RfhUK0v7qu9/ycSZvbzB0e8MUDgsYgm8tkega+5mZd12Ruyw + BLXMKV8yXKZgrS5inn8oVHRGaqNCMEAwDwYDVR0TAQH/BAUwAwEB + /zAdBgNVHQ4EFgQUbGvgayVbFAjve0JZsMcyZIqwFsYwDgYDVR0P + AQH/BAQDAgIEMAoGCCqGSM49BAMDA2cAMGQCMHIFi0/ZrNShP/26 + LBgFRumVeHjYUwEQkCwKMbRmgLnNfOvzVbBc+odylRPSFYClwwIw + PoXOlNkO+KVx2IJZFz1WNk5hCGDb4kmL4A5gT366PQ+AqEXFO4hi + W7Hw+wzVfUJb//////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////8= + + RestorePSI-PartialDigest + + hAAAAAAXBgChvpu100y61uQv82gvjQmqYsKffUbencBIlk967kfL + ID07mZb0Q0e33R9LVKu0BrHs6qhbgywkubV4J6JjGO4i + + + + noNonce + + @ServerVersion + 2.1.0 + ApImg4Ticket + + MIIduBYESU00TQIBADGCFPX/hOqFnEKCFOwwghToFgRNQU5CMYIU3v+E6oWc + UIHqMIHnFgRNQU5QMYHe/4SSuYZICjAIFgRCTkNIBAD/hJK9pEQLMAkWBEJP + UkQCAQ7/hJqVoE8LMAkWBENFUE8CAQH/hJqhklANMAsWBENISVACAwCAIP+E + msGkTwswCRYEQ1BSTwEB//+Ems2KQwswCRYEQ1NFQwEB//+Eqo2SRA4wDBYE + RUNJRAIEQjo1x/+FmpGeTQswCRYEU0RPTQIBAf+Hm7nebh4wHBYEc25vbgQU + 0uvN9ALaO4MHpZVDUlliylT8Usf/h5vJ7G4eMBwWBHNydm4EFPUdgKpyfYRq + 5pEWFnmR0ISZhtLx/4aLjcx3bzBtFgRhY2Z3MWX/hKKdplQ6MDgWBERHU1QE + MJBemBMaBJoS8rrggbOKtVJSr4Jph3TQNMAK4pBXlfqJvyAIFr5rImOShmJl + W/l7X/+EqsGkTwswCRYERVBSTwEB//+Eqs2KQwswCRYERVNFQwEB//+Gi7nK + ZoGBMH8WBGFuZWYxd/+Eop2mVDowOBYEREdTVAQwjxdSrRZZXHQzQPQdlZgc + ivpEIlFaom6Do9m1bMObl0JggBBAA2w659Pfm8M+oM7F/4SqrYpZCzAJFgRF + S0VZAQH//4SqwaRPCzAJFgRFUFJPAQH//4SqzYpDCzAJFgRFU0VDAQH//4aL + veBmgYEwfxYEYW9wZjF3/4SinaZUOjA4FgRER1NUBDBdflh6ein8MiWG1MqV + l6q55rinx753SKfrV7VA+qApCRMuEDPwSArX4jGVHz5S+ED/hKqtilkLMAkW + BEVLRVkBAf//hKrBpE8LMAkWBEVQUk8BAf//hKrNikMLMAkWBEVTRUMBAf// + hovZymaBgTB/FgRhdmVmMXf/hKKdplQ6MDgWBERHU1QEMPv1nSuGv4fsIsrh + 1glz9dmzFLcnN3uo272k2L/MYK6kADw0LSI8XCXZxxeF8EAFpf+Eqq2KWQsw + CRYERUtFWQEB//+EqsGkTwswCRYERVBSTwEB//+Eqs2KQwswCRYERVNFQwEB + //+Gk4XoMIGBMH8WBGJhdDAxd/+Eop2mVDowOBYEREdTVAQwYsFZefX76Gxz + SL+ktko8Fww6UFllMxlrpg1f0iH0CnSocyvcbsdueNj4Ng6oAct+/4SqrYpZ + CzAJFgRFS0VZAQH//4SqwaRPCzAJFgRFUFJPAQH//4SqzYpDCzAJFgRFU0VD + AQH//4aThegxgYEwfxYEYmF0MTF3/4SinaZUOjA4FgRER1NUBDBmCf9UAZvm + I9osQy8ksRK9zMcTrStoDe+AQlTn+4lqrfrU5aoLaPcOxfhiJAUjpKn/hKqt + ilkLMAkWBEVLRVkBAf//hKrBpE8LMAkWBEVQUk8BAf//hKrNikMLMAkWBEVT + RUMBAf//hpOF6EaBgTB/FgRiYXRGMXf/hKKdplQ6MDgWBERHU1QEMCUKeUoK + 2IQegkLHxWxEHY3RvwT+efnX0JQ/3qz8fo55iFkDZU9z9VL7/DksjTEdjP+E + qq2KWQswCRYERUtFWQEB//+EqsGkTwswCRYERVBSTwEB//+Eqs2KQwswCRYE + RVNFQwEB//+Gm6HOMIGBMH8WBGNoZzAxd/+Eop2mVDowOBYEREdTVAQw7Ah5 + yy9BU1J0gvX4iOIUawWbchMpfl/MEWpJIqhsezSeHQt/I9BnM1LHwy0/jILy + /4SqrYpZCzAJFgRFS0VZAQH//4SqwaRPCzAJFgRFUFJPAQH//4SqzYpDCzAJ + FgRFU0VDAQH//4aboc4xgYEwfxYEY2hnMTF3/4SinaZUOjA4FgRER1NUBDBb + CNaDCddH2gxonA4/DO7J70Ze9R04bDOe5vGfVnx40x07evi27Irq7TaHNrL4 + dKL/hKqtilkLMAkWBEVLRVkBAf//hKrBpE8LMAkWBEVQUk8BAf//hKrNikML + MAkWBEVTRUMBAf//hqPR5GWBgTB/FgRkdHJlMXf/hKKdplQ6MDgWBERHU1QE + MPZk1EBL+Mcw6jFbYCJ5i1xijSIEJybd2ogQLjN7NTdB7vjMJR7ieaFWku2d + g8rvrv+Eqq2KWQswCRYERUtFWQEB//+EqsGkTwswCRYERVBSTwEB//+Eqs2K + QwswCRYERVNFQwEB//+Gs9HCcHEwbxYEZnRhcDFn/4SinaZUKjAoFgRER1NU + BCBTQLagWb23MucV57sbKS7c1FwqjR0H5gOdPzONfEQoq/+Eqq2KWQswCRYE + RUtFWQEB//+EqsGkTwswCRYERVBSTwEB//+Eqs2KQwswCRYERVNFQwEB//+G + s9HmcHEwbxYEZnRzcDFn/4SinaZUKjAoFgRER1NUBCBTQLagWb23MucV57sb + KS7c1FwqjR0H5gOdPzONfEQoq/+Eqq2KWQswCRYERUtFWQEB//+EqsGkTwsw + CRYERVBSTwEB//+Eqs2KQwswCRYERVNFQwEB//+Gu5nwZoGBMH8WBGdmeGYx + d/+Eop2mVDowOBYEREdTVAQwrcYCEhdKjsj1hhM+M8OsCNZ0QPDmGgSmctW6 + I3+tx8+Y7/w+zs4fNikeyi7ADv/A/4SqrYpZCzAJFgRFS0VZAQH//4SqwaRP + CzAJFgRFUFJPAQH//4SqzYpDCzAJFgRFU0VDAQH//4a7sfJQgYEwfxYEZ2x5 + UDF3/4SinaZUOjA4FgRER1NUBDBLz+QJEu4ri5ebRNrqUpzj73Pu+HB9xFxS + GZDACMEYvAb/4d5KRTUa7K0jpRsXL2D/hKqtilkLMAkWBEVLRVkBAf//hKrB + pE8LMAkWBEVQUk8BAf//hKrNikMLMAkWBEVTRUMBAf//hsuJymOBgTB/FgRp + YmVjMXf/hKKdplQ6MDgWBERHU1QEMLiMw1O2hCd7D41AmuNNL0o3Sks2Pfay + zvY9DeFdxO7kqqMMHCuksp8uXfCumqMjmf+Eqq2KWQswCRYERUtFWQEB//+E + qsGkTwswCRYERVBSTwEB//+Eqs2KQwswCRYERVNFQwEB//+Gy4nedIGBMH8W + BGlib3Qxd/+Eop2mVDowOBYEREdTVAQwbwccAsbEs5GWXy49SPejNi/N0cH+ + 6hWez1laEiwZBLpsTq2+tShtE0WfqCANO5wj/4SqrYpZCzAJFgRFS0VZAQH/ + /4SqwaRPCzAJFgRFUFJPAQH//4SqzYpDCzAJFgRFU0VDAQH//4bLieZzgYEw + fxYEaWJzczF3/4SinaZUOjA4FgRER1NUBDA0CsRWG5iWvkWW7BJgj4uhCoZP + hJCdPAWQycc5+LuxZ19dw95/unBDKY+e2w0xJ83/hKqtilkLMAkWBEVLRVkB + Af//hKrBpE8LMAkWBEVQUk8BAf//hKrNikMLMAkWBEVTRUMBAf//hsux2GKB + gTB/FgRpbGxiMXf/hKKdplQ6MDgWBERHU1QEMOrS+2RsCuZH8n+5JSts1atC + acAcwM4xOF/f9eUwlV0jAEvtU4jvsZ46lnvNBiF7O/+Eqq2KWQswCRYERUtF + WQEB//+EqsGkTwswCRYERVBSTwEB//+Eqs2KQwswCRYERVNFQwEB//+Gy83g + ZoGBMH8WBGlzcGYxd/+Eop2mVDowOBYEREdTVAQwrbJGoybEqF5eHM8/pins + fT3ujM0Np+zBPkcy5M8DhGI2BfRzgUxmnDZ2ks2cAqvV/4SqrYpZCzAJFgRF + S0VZAQH//4SqwaRPCzAJFgRFUFJPAQH//4SqzYpDCzAJFgRFU0VDAQH//4bb + ydxsgYEwfxYEa3JubDF3/4SinaZUOjA4FgRER1NUBDDfOVf9iJTDX1SkmUHs + myzxlUpQrDGrpApgVPUoeAe/iwjrnTCx4nKxpoCvuwtY2Lb/hKqtilkLMAkW + BEVLRVkBAf//hKrBpE8LMAkWBEVQUk8BAf//hKrNikMLMAkWBEVTRUMBAf// + huOl4mSBgTB/FgRsaXFkMXf/hKKdplQ6MDgWBERHU1QEMPvi7TH7B7CysQJ+ + dgKhn4g0Pq1yzIEJjKtKSCQx6JujiyPPDNCZ6LaArq8w3gBRwv+Eqq2KWQsw + CRYERUtFWQEB//+EqsGkTwswCRYERVBSTwEB//+Eqs2KQwswCRYERVNFQwEB + //+G473Ob4GBMH8WBGxvZ28xd/+Eop2mVDowOBYEREdTVAQwkLA6Ucvbgfbq + FfTcOHAnBDOu0b1BQ/cyXPBP1P2ZfJW67/tbwpZiIBVxPBct1Ota/4SqrYpZ + CzAJFgRFS0VZAQH//4SqwaRPCzAJFgRFUFJPAQH//4SqzYpDCzAJFgRFU0VD + AQH//4bjwe4wgYEwfxYEbHB3MDF3/4SinaZUOjA4FgRER1NUBDAtpRAKFWfa + 9gAA07Ki4j9WGjkDQ41ZPSwBOLqcopQWWv25YYicxp379qw25YMncbH/hKqt + ilkLMAkWBEVLRVkBAf//hKrBpE8LMAkWBEVQUk8BAf//hKrNikMLMAkWBEVT + RUMBAf//huvRzHdvMG0WBG10ZncxZf+Eop2mVDowOBYEREdTVAQww69YbQJU + GbiuY/yZI7dZMj9BH1qOdW2JRrVyAT+xZ+6AXasBC1WbbGzocXq5ZgRW/4Sq + waRPCzAJFgRFUFJPAQH//4SqzYpDCzAJFgRFU0VDAQH//4eTkeZrgYEwfxYE + cmRzazF3/4SinaZUOjA4FgRER1NUBDBLoN5ec8NlF2VjPiEeeLxr8jkOifE8 + llowrlH5jFAdW7sHaPPQNaH9Sh1+9k+j1/T/hKqtilkLMAkWBEVLRVkBAf// + hKrBpE8LMAkWBEVQUk8BAf//hKrNikMLMAkWBEVTRUMBAf//h5OR6HKBgTB/ + FgRyZHRyMXf/hKKdplQ6MDgWBERHU1QEME6S6ffX9iIpViEP6cz6sXQxHMqL + +P13w8mFCz76Lpm4pK14huytBoVO7dpGewWKdv+Eqq2KWQswCRYERUtFWQEB + //+EqsGkTwswCRYERVBSTwEB//+Eqs2KQwswCRYERVNFQwEB//+Hk5XGbYGB + MH8WBHJlY20xd/+Eop2mVDowOBYEREdTVAQw8jp2rjZXnkzc0fO6M69xt2lz + 6ZAd8blaGBYxpz26pGaf7EszCrRnqoOcRYPDmH2W/4SqrYpZCzAJFgRFS0VZ + AQH//4SqwaRPCzAJFgRFUFJPAQH//4SqzYpDCzAJFgRFU0VDAQH//4eTmehh + cTBvFgRyZnRhMWf/hKKdplQqMCgWBERHU1QEIFNAtqBZvbcy5xXnuxspLtzU + XCqNHQfmA50/M418RCir/4SqrYpZCzAJFgRFS0VZAQH//4SqwaRPCzAJFgRF + UFJPAQH//4SqzYpDCzAJFgRFU0VDAQH//4eTmehzcTBvFgRyZnRzMWf/hKKd + plQqMCgWBERHU1QEIFNAtqBZvbcy5xXnuxspLtzUXCqNHQfmA50/M418RCir + /4SqrYpZCzAJFgRFS0VZAQH//4SqwaRPCzAJFgRFUFJPAQH//4SqzYpDCzAJ + FgRFU0VDAQH//4eTreRugYEwfxYEcmtybjF3/4SinaZUOjA4FgRER1NUBDDX + N0pGGpGiM/+Zk7VvOLKnRnbqy91v/SORTsF8ICc13clLap1D+h/21WtSyA4K + JrH/hKqtilkLMAkWBEVLRVkBAf//hKrBpE8LMAkWBEVQUk8BAf//hKrNikML + MAkWBEVTRUMBAf//h5Oxzm+BgTB/FgRybGdvMXf/hKKdplQ6MDgWBERHU1QE + MCRsyAJJe97KPp8tchtDGykJuEg2Sny1+2gX0Wj1ZslRcfNGkhFa06KTYS2X + yy0JYP+Eqq2KWQswCRYERUtFWQEB//+EqsGkTwswCRYERVBSTwEB//+Eqs2K + QwswCRYERVNFQwEB//+Hk73maYGBMH8WBHJvc2kxd/+Eop2mVDowOBYEREdT + VAQwEOIvkGV8W1F5DYs4l6sebRO/+20LuuqD//7t3ZCfp/Se9MLfpjiit0nB + ganpPD/U/4SqrYpZCzAJFgRFS0VZAQH//4SqwaRPCzAJFgRFUFJPAQH//4Sq + zYpDCzAJFgRFU0VDAQH//4eTzcpwgYEwfxYEcnNlcDF3/4SinaZUOjA4FgRE + R1NUBDAGlPGIksktSUfhr5ha9foJmM2kAtnaR1bsH26nJxkGwa268r8NRUre + FAtEpQLa5q7/hKqtilkLMAkWBEVLRVkBAf//hKrBpE8LMAkWBEVQUk8BAf// + hKrNikMLMAkWBEVTRUMBAf//h5PR5mOBgTB/FgRydHNjMXf/hKKdplQ6MDgW + BERHU1QEMGyC9n0jxGBoDeepJFZEjKz7xYG8o7AuFoZdGdMF+jzZ06t0WU6a + rrN48gKykzHuOP+Eqq2KWQswCRYERUtFWQEB//+EqsGkTwswCRYERVBSTwEB + //+Eqs2KQwswCRYERVNFQwEB//+Hm5XgaYGBMH8WBHNlcGkxd/+Eop2mVDow + OBYEREdTVAQwX1aB3bCI62g/IMV4ySFPeaQU0XL3FigKWrM1SrMj52Xvo93M + NGGfVmGkd31gGKMZ/4SqrYpZCzAJFgRFS0VZAQH//4SqwaRPCzAJFgRFUFJP + AQH//4SqzYpDCzAJFgRFU0VDAQH//4ebpd5mgYEwfxYEc2lvZjF3/4SinaZU + OjA4FgRER1NUBDANdVr1IVwXXqrMNcQl4KATvbnTDz4R4nEaEuoMDNYeEP60 + cJYx1WwY2wW4mKdNcn//hKqtilkLMAkWBEVLRVkBAf//hKrBpE8LMAkWBEVQ + Uk8BAf//hKrNikMLMAkWBEVTRUMBAf//h6PJ5nSBgTB/FgR0cnN0MXf/hKKd + plQ6MDgWBERHU1QEMK4j8iTlXZuis+bJAQ1EAZGfwKkJsz0Ilw92LedPnxLy + K4fxR1470Eupl1UTldah8v+Eqq2KWQswCRYERUtFWQEB//+EqsGkTwswCRYE + RVBSTwEB//+Eqs2KQwswCRYERVNFQwEB//+Hu43QZoGBMH8WBHdjaGYxd/+E + op2mVDowOBYEREdTVAQwsB2iTNNGhdjkJguts+qb0blA6Qv5t8tV/rlQRxJT + 8PcUOm33i7OULHPDiVA11ruK/4SqrYpZCzAJFgRFS0VZAQH//4SqwaRPCzAJ + FgRFUFJPAQH//4SqzYpDCzAJFgRFU0VDAQH/BIICAM0mQ9fB4IYWnaQuZwRz + LgX1KaYDJPwxlvOxS2WlrhpkJ7JHNKLUbPz2K5ndJ3moBH5j+tP85WXWmTIL + dZMVZLV5ceD5NFSK/x1gO9MrZC1y7Y04WWN5LHTdfM4I5j2lzuuj4lUDvtt2 + lga+YePzeZfQCQfJhIIpF9NeBg4CDi5qWWOxkyh8e+Yh7SoyTfuadX/zwjei + RwNvvrC8U0LzfU1u75gz0zipb5b1bOm9u27z8zYGK2NAT1KSgdXXonA2WYEB + k8FhQjGCyyRTZNUPBjmEdIShFbI17EXCCXuzsluYrkqzoBzL8DCo8VaS2xvm + 0jMtFhJKAe6pkdnxPeWytAvvVEhaDOOMiZeCV9HPeXeor4jOVEL3IonJW2X0 + EvoAsfJWxvjZo9Z7/GQ9JZHA83tmMN2cHcKYVCKA4e5NlC6GbESMY4W8YkdI + SjTQPey9IwUrRtMofU+EH+/ewYdTQqbOAFsuKm+b8dnD8pv9RQkY7A1SWG7C + Cr7osViwvPR9zLgqA6QhAZY0P+omoW1y03MDKM0PiTSUo9Jsw3IkkdI9x3jB + dS0T/JhqFJp6H6AApIAqXOr3EA4tKWrUXvR/6wTZ5i+XQqkeHfyBklwXGn5s + N8AIGCrf7foZeKX4+peOyTjj8piIlZDsLMX9ctzc4tlhFRHl20xANhdc8rY0 + eEUrMIIGrjCCBqowggSSoAMCAQICCHpTOh7TjDf6MA0GCSqGSIb3DQEBDAUA + MEsxJzAlBgNVBAMMHkFwcGxlIFNlY3VyZSBCb290IFJvb3QgQ0EgLSBHMjET + MBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwHhcNMTYxMDA1MTc1 + MTQ2WhcNMzQxMjE0MjAxMzEwWjBWMTIwMAYDVQQDDClUODAyMC1Uc3NMaXZl + LU1hbmlmZXN0S2V5LVJldkEtRGF0YUNlbnRlcjETMBEGA1UECgwKQXBwbGUg + SW5jLjELMAkGA1UEBhMCVVMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK + AoICAQDWb65FGC0FreNvUDMR8pG12PkpQe9kmT+H6CiWy/wtfc2q6ppGfZiq + lwafvJVskRcVGveyvWtlVAbqq51Vs+V5DG7yAMTrN0WI9L+Wp3Ryh651lXYq + ZIOItkmIn416lSnj0RfKp5lDgUT2sSeGMGfKYBk/06GlAIwzKPLLohFv2E8d + Ks8DZUf15xwDkyjf5yDO/c53fpE/npZ21y11MDXzKM0ZouC5QAogYZqzhrcO + HUg7KPJr2xJ81rOZo8VbmMCjIpwxUXV1s9pWF26LYVZPKzoMPZ89Vlk/B7Ay + iUsrq09c2bGXLIx/r68hckBOs+b2b1us0BW9StGwOjiopddeJab4s+B7vJOA + bDc/8w4pLRQGqpNKLjHXggUaJYbTToV0bQZFkJaBZp7+nnYJyqrhNeQrsVOf + qefCK8VZtMa/UZT7WYn0KU2P1JtV0pP4tqxOg7JucsSfE9IpxuEhcD6r+ehn + LT7pitgLEQLyfjzJ1zwwJeFK8CXckQeeDazr4jQdC5sDd71jawBjtuLbznO6 + 7vwczhSLSNT5h1D7AVUG7vUw1yIWqKGSPVMDcuXksOKpjwMXZKLRORvFXfzc + yTFz53uf3MJLj2AOYgMj0kXaFZ5TDciogXhAENiV8vWOaBcfehTe1L2XJB1K + TYwOvXKErHrtZ4uDYPEhc6OPZvu6WwIDAQABo4IBhTCCAYEwHQYDVR0OBBYE + FNSpyx3zBapq22F1k8dTaG+LvV5YMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgw + FoAUaOlZUEXxXQf5P8Qm/BwnYn2eE5QwDgYDVR0PAQH/BAQDAgeAMIIBHwYK + KoZIhvdjZAYBDwEB/wSCAQwxggEI/4TqhZxQgbYwgbMWBE1BTlAxgar/hJK5 + hkgMMAoWBEJOQ0igAgUA/4SSvaREDDAKFgRCT1JEoAIFAP+EmpWgTwswCRYE + Q0VQTwIBAf+EmqGSUA0wCxYEQ0hJUAIDAIAg/4SawaRPDDAKFgRDUFJPoAIF + AP+Ems2KQwwwChYEQ1NFQ6ACBQD/hKqNkkQMMAoWBEVDSUSgAgUA/4WakZ5N + CzAJFgRTRE9NAgEB/4ebud5uDDAKFgRzbm9uoAIFAP+E+omUUEMwQRYET0JK + UDE5/4SinaZUDDAKFgRER1NUoAIFAP+EqsGkTwwwChYERVBST6ACBQD/hKrN + ikMMMAoWBEVTRUOgAgUAMA0GCSqGSIb3DQEBDAUAA4ICAQC7EwBPS9I4vpL8 + DScZ3NcFD0ciTJTsWsuZHvUn+Qz9xO0zWTmxLlI6BH1+SfWwc1Ms7tMJkRjW + x6JoEuMiGSUAkVXJEfMfT3MTDE9dOYNy5791WIDNxYfoZLlVVxxWorTtgSXi + wBdfGg/vh3C5noSbkGaZ4FfakpsKAm4KPOgFciPT2pjxgprzEwAyAjxw3PBk + SOrJApRLYG8ERfhNBN4pnG07ARYAeOaMUMXLEkgEGo6S0nIWqmQ7pCDa7/HR + TajmuyfxHjdPVoNHmh+yTB6QexHP8ro7j2sFUHwkAU4dX4pX01FeLeKPULEE + ixQTzSKLniaxwYL7kZoJb3amx+SZt1nNazWj/U2zaYHORM0cabHFH/uryPHX + 7UsXXydrIlAp8yC+v4+QRttKVLdjww3h7+uiYb1Z9lNOP5PL0VbTrMFLVO6m + wY1qkBbZRhTnRazaRLQ2TgpNcwyTAch/O3NL5a0xdn4Cw6M9MPIWjJ5geJP0 + KV02lcVBMKiVzT7mBCRfi/VokS1aikiVrl/MjtLHHWlkTjGIpiW6/vmUZ+yj + NGgDyDGyVrddCPvoSzff+WZbc6Qzgh99JHIzY9KOGDyQNCaKWo6HlmI2SS3I + K05AMslylVrTA4j37Rx2xXbNXsQ5O0wBgL7CuAo8Bo2b/ly4tNeqOOFUPXCj + ErFco2w+oA== + + + + diff --git a/1111111111_iPhone11,4_12.1.1-16C50_7b5d84c4129841819489fd6a4d680fce80c973d3a51496306b6a96e3b53db4a5.shsh2 b/1111111111_iPhone11,4_12.1.1-16C50_7b5d84c4129841819489fd6a4d680fce80c973d3a51496306b6a96e3b53db4a5.shsh2 new file mode 100644 index 00000000..8877fcda --- /dev/null +++ b/1111111111_iPhone11,4_12.1.1-16C50_7b5d84c4129841819489fd6a4d680fce80c973d3a51496306b6a96e3b53db4a5.shsh2 @@ -0,0 +1,1246 @@ + + + + + @ServerVersion + 2.1.0 + ApImg4Ticket + + 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 + 4VQ9cKMSsVyjbD6g + + BBTicket + + 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 + + BasebandFirmware + + PSI-Blob + + uAdSkmHpcSwVWKDzygWmqnvYDxYX3xxyYntTLpR7VvXpYCQ7x1jt1RtO7MX2 + sip151EagGm0REG+OKPsnHMX67H58l5BWZHrCJ2/TvVf7Rb///////////// + ////////////////////////////////////////pY5xIWZA85EeSwmWMGYC + MQCWOqezBKXi62eAanj8FhGPgTAQl3n6cP1PISXtoSnzE4L2aXHkhdTEEYCa + SRWE3L0CMQCz+7CsjaMP2TLEiY9CtcFXsLy7/MG/5xpfj2WmsA2jDt6S+lbu + rrHrRsoLG0WlS48wggIiMIIBqKADAgECAggft56T3kZN5TAKBggqhkjOPQQD + AzBDMRcwFQYDVQQDDA5JQ0UgUm9vdCBDQSAyNjETMBEGA1UECgwKQXBwbGUg + SW5jLjETMBEGA1UECAwKQ2FsaWZvcm5pYTAeFw0xNzAzMjMwMDMzNTlaFw0x + NzAzMjMyMjM4MjFaMEwxIDAeBgNVBAMMF0lDRS1Sb290Q0EyNi1EYXRhQ2Vu + dGVyMRMwEQYDVQQKDApBcHBsZSBJbmMuMRMwEQYDVQQIDApDYWxpZm9ybmlh + MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEm6v8kfnQdiJOJ8EVqGybx1LPF6vE + Y5+//BmiIF637fYZRD4qmMw0LOvaxVf9hLZVnxb8/Z+RQ8uIpTqGkImaqNz0 + 9XG6Ngljbw1MdewuRpy3Klp92Cj77IyU+hHofL/Mo2AwXjAMBgNVHRMBAf8E + AjAAMB8GA1UdIwQYMBaAFGxr4GslWxQI73tCWbDHMmSKsBbGMB0GA1UdDgQW + BBTkTMdD3aGst2h1cHW59+PiRGFvdzAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZI + zj0EAwMDaAAwZQIxAMehHNdobAMi4G1fhLC0WkRzw28WwBnYdTSZmcJhD8aS + xvsCJPZNVEVPzGB/vne+BAIwVbNVr0vKDfp+A//Fe7q0bFSmH/vmPuv8gsIA + uTu4xGisbIjxM4HdCgl0aHeje2flMIIB+jCCAYGgAwIBAgIINKgm1LOyGeEw + CgYIKoZIzj0EAwMwQzEXMBUGA1UEAwwOSUNFIFJvb3QgQ0EgMjYxEzARBgNV + BAoMCkFwcGxlIEluYy4xEzARBgNVBAgMCkNhbGlmb3JuaWEwHhcNMTcwMzIy + MjIzODIxWhcNMTcwMzIzMjIzODIxWjBDMRcwFQYDVQQDDA5JQ0UgUm9vdCBD + QSAyNjETMBEGA1UECgwKQXBwbGUgSW5jLjETMBEGA1UECAwKQ2FsaWZvcm5p + YTB2MBAGByqGSM49AgEGBSuBBAAiA2IABGJZBDAT6/nOgy1VGm9V4ml0Uzv7 + Vx8KPNCdKk6iDu8+CvMDhF+AVSs6RfhUK0v7qu9/ycSZvbzB0e8MUDgsYgm8 + tkega+5mZd12RuywBLXMKV8yXKZgrS5inn8oVHRGaqNCMEAwDwYDVR0TAQH/ + BAUwAwEB/zAdBgNVHQ4EFgQUbGvgayVbFAjve0JZsMcyZIqwFsYwDgYDVR0P + AQH/BAQDAgIEMAoGCCqGSM49BAMDA2cAMGQCMHIFi0/ZrNShP/26LBgFRumV + eHjYUwEQkCwKMbRmgLnNfOvzVbBc+odylRPSFYClwwIwPoXOlNkO+KVx2IJZ + Fz1WNk5hCGDb4kmL4A5gT366PQ+AqEXFO4hiW7Hw+wzVfUJb//////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////8= + + PSI-PartialDigest + + hAAAAAAXBgDlCXSUM5CIHQNQxTVPJs8Q3F2zW+Ld1p9Q8aM2dCAQ4jlLkL9V + 1Y6MJV5LmCyyc+0+MsTg5CZpbfsNEr3HQXGU + + RestorePSI-Blob + + uAdSkmHpcSwVWKDzygWmqnvYDxYX3xxyYntTLpR7VvXpYCQ7x1jt1RtO7MX2 + sip1aAp0e1GWwUaWQpQK6QMabeGuEuN66mDKmwpZ1QbYGTv///////////// + ////////////////////////////////////////pY5xIWZA85EeSwmWMGYC + MQDQIM961eDM0LCPwP9eOVo6SYGumZ5YbFFC0s5742SgJwxuxvwcf3rsdmb8 + tM4G/pUCMQDmb+Nqfayu4OfJC+HTPnckghV4/5KOyCTF2Zv/DfnLz6xLOMFj + yN58WOB2WdwOpKUwggIiMIIBqKADAgECAggft56T3kZN5TAKBggqhkjOPQQD + AzBDMRcwFQYDVQQDDA5JQ0UgUm9vdCBDQSAyNjETMBEGA1UECgwKQXBwbGUg + SW5jLjETMBEGA1UECAwKQ2FsaWZvcm5pYTAeFw0xNzAzMjMwMDMzNTlaFw0x + NzAzMjMyMjM4MjFaMEwxIDAeBgNVBAMMF0lDRS1Sb290Q0EyNi1EYXRhQ2Vu + dGVyMRMwEQYDVQQKDApBcHBsZSBJbmMuMRMwEQYDVQQIDApDYWxpZm9ybmlh + MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEm6v8kfnQdiJOJ8EVqGybx1LPF6vE + Y5+//BmiIF637fYZRD4qmMw0LOvaxVf9hLZVnxb8/Z+RQ8uIpTqGkImaqNz0 + 9XG6Ngljbw1MdewuRpy3Klp92Cj77IyU+hHofL/Mo2AwXjAMBgNVHRMBAf8E + AjAAMB8GA1UdIwQYMBaAFGxr4GslWxQI73tCWbDHMmSKsBbGMB0GA1UdDgQW + BBTkTMdD3aGst2h1cHW59+PiRGFvdzAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZI + zj0EAwMDaAAwZQIxAMehHNdobAMi4G1fhLC0WkRzw28WwBnYdTSZmcJhD8aS + xvsCJPZNVEVPzGB/vne+BAIwVbNVr0vKDfp+A//Fe7q0bFSmH/vmPuv8gsIA + uTu4xGisbIjxM4HdCgl0aHeje2flMIIB+jCCAYGgAwIBAgIINKgm1LOyGeEw + CgYIKoZIzj0EAwMwQzEXMBUGA1UEAwwOSUNFIFJvb3QgQ0EgMjYxEzARBgNV + BAoMCkFwcGxlIEluYy4xEzARBgNVBAgMCkNhbGlmb3JuaWEwHhcNMTcwMzIy + MjIzODIxWhcNMTcwMzIzMjIzODIxWjBDMRcwFQYDVQQDDA5JQ0UgUm9vdCBD + QSAyNjETMBEGA1UECgwKQXBwbGUgSW5jLjETMBEGA1UECAwKQ2FsaWZvcm5p + YTB2MBAGByqGSM49AgEGBSuBBAAiA2IABGJZBDAT6/nOgy1VGm9V4ml0Uzv7 + Vx8KPNCdKk6iDu8+CvMDhF+AVSs6RfhUK0v7qu9/ycSZvbzB0e8MUDgsYgm8 + tkega+5mZd12RuywBLXMKV8yXKZgrS5inn8oVHRGaqNCMEAwDwYDVR0TAQH/ + BAUwAwEB/zAdBgNVHQ4EFgQUbGvgayVbFAjve0JZsMcyZIqwFsYwDgYDVR0P + AQH/BAQDAgIEMAoGCCqGSM49BAMDA2cAMGQCMHIFi0/ZrNShP/26LBgFRumV + eHjYUwEQkCwKMbRmgLnNfOvzVbBc+odylRPSFYClwwIwPoXOlNkO+KVx2IJZ + Fz1WNk5hCGDb4kmL4A5gT366PQ+AqEXFO4hiW7Hw+wzVfUJb//////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// + //////////////////////////////////////////////8= + + RestorePSI-PartialDigest + + hAAAAAAXBgChvpu100y61uQv82gvjQmqYsKffUbencBIlk967kfLID07mZb0 + Q0e33R9LVKu0BrHs6qhbgywkubV4J6JjGO4i + + + generator + 0x91f3406621718ea5 + updateInstall + + @ServerVersion + 2.1.0 + ApImg4Ticket + + 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 + lNzGoIy2JpOEwbrAeEpj/cfeG2IJ66PdfCbmSuZ/QM8SXCOU2pQ7yHfG9hbK + xs4eIqhCqRYeJSBtryxC0nMuy5Cz5NF345E/gzn1I3aheBHfsliaI4VU6BMV + 661kUGQzn28GhN2LM4U1nbxcSNPNWeHEjuMAJYLJ8WgzU1LKLjSWJhRZNy1D + BAI6kj3VOGDOyTleRWr6WAuz4DPDG+78j+K5skEFB8gGnPaQ6uL+ulJf5a4w + I/+OPeaG1ZkrlYAUSS8cU2bffjTlCMirTm0uZHAx5sbq1F2twWLghQgOAkcY + huVaDIH4a5C3prUJpRUQx/wK8mwq5ALQ4eBxKnoQWNILcCeFDTrd2nsQCrdX + EdWWpTgPDaO02ZqfbaGgHTKBjkwy3pL0OFF3u6HcEMF4FV8/V8jCqTXxNUlP + j3sX7mmGMreCoqOF6JQzIuqDkKbCPnTivTVEBnS2ziB0VwvYV5oE4JT86fXN + lHyyUNDc5pngd7kEDPlv5reCK6ivtJMOKuDGwguB/BWzVbgwggauMIIGqjCC + BJKgAwIBAgIIelM6HtOMN/owDQYJKoZIhvcNAQEMBQAwSzEnMCUGA1UEAwwe + QXBwbGUgU2VjdXJlIEJvb3QgUm9vdCBDQSAtIEcyMRMwEQYDVQQKDApBcHBs + ZSBJbmMuMQswCQYDVQQGEwJVUzAeFw0xNjEwMDUxNzUxNDZaFw0zNDEyMTQy + MDEzMTBaMFYxMjAwBgNVBAMMKVQ4MDIwLVRzc0xpdmUtTWFuaWZlc3RLZXkt + UmV2QS1EYXRhQ2VudGVyMRMwEQYDVQQKDApBcHBsZSBJbmMuMQswCQYDVQQG + EwJVUzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANZvrkUYLQWt + 429QMxHykbXY+SlB72SZP4foKJbL/C19zarqmkZ9mKqXBp+8lWyRFxUa97K9 + a2VUBuqrnVWz5XkMbvIAxOs3RYj0v5andHKHrnWVdipkg4i2SYifjXqVKePR + F8qnmUOBRPaxJ4YwZ8pgGT/ToaUAjDMo8suiEW/YTx0qzwNlR/XnHAOTKN/n + IM79znd+kT+elnbXLXUwNfMozRmi4LlACiBhmrOGtw4dSDso8mvbEnzWs5mj + xVuYwKMinDFRdXWz2lYXbothVk8rOgw9nz1WWT8HsDKJSyurT1zZsZcsjH+v + ryFyQE6z5vZvW6zQFb1K0bA6OKil114lpviz4Hu8k4BsNz/zDiktFAaqk0ou + MdeCBRolhtNOhXRtBkWQloFmnv6edgnKquE15CuxU5+p58IrxVm0xr9RlPtZ + ifQpTY/Um1XSk/i2rE6Dsm5yxJ8T0inG4SFwPqv56GctPumK2AsRAvJ+PMnX + PDAl4UrwJdyRB54NrOviNB0LmwN3vWNrAGO24tvOc7ru/BzOFItI1PmHUPsB + VQbu9TDXIhaooZI9UwNy5eSw4qmPAxdkotE5G8Vd/NzJMXPne5/cwkuPYA5i + AyPSRdoVnlMNyKiBeEAQ2JXy9Y5oFx96FN7UvZckHUpNjA69coSseu1ni4Ng + 8SFzo49m+7pbAgMBAAGjggGFMIIBgTAdBgNVHQ4EFgQU1KnLHfMFqmrbYXWT + x1Nob4u9XlgwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRo6VlQRfFdB/k/ + xCb8HCdifZ4TlDAOBgNVHQ8BAf8EBAMCB4AwggEfBgoqhkiG92NkBgEPAQH/ + BIIBDDGCAQj/hOqFnFCBtjCBsxYETUFOUDGBqv+EkrmGSAwwChYEQk5DSKAC + BQD/hJK9pEQMMAoWBEJPUkSgAgUA/4SalaBPCzAJFgRDRVBPAgEB/4SaoZJQ + DTALFgRDSElQAgMAgCD/hJrBpE8MMAoWBENQUk+gAgUA/4SazYpDDDAKFgRD + U0VDoAIFAP+Eqo2SRAwwChYERUNJRKACBQD/hZqRnk0LMAkWBFNET00CAQH/ + h5u53m4MMAoWBHNub26gAgUA/4T6iZRQQzBBFgRPQkpQMTn/hKKdplQMMAoW + BERHU1SgAgUA/4SqwaRPDDAKFgRFUFJPoAIFAP+Eqs2KQwwwChYERVNFQ6AC + BQAwDQYJKoZIhvcNAQEMBQADggIBALsTAE9L0ji+kvwNJxnc1wUPRyJMlOxa + y5ke9Sf5DP3E7TNZObEuUjoEfX5J9bBzUyzu0wmRGNbHomgS4yIZJQCRVckR + 8x9PcxMMT105g3Lnv3VYgM3Fh+hkuVVXHFaitO2BJeLAF18aD++HcLmehJuQ + ZpngV9qSmwoCbgo86AVyI9PamPGCmvMTADICPHDc8GRI6skClEtgbwRF+E0E + 3imcbTsBFgB45oxQxcsSSAQajpLSchaqZDukINrv8dFNqOa7J/EeN09Wg0ea + H7JMHpB7Ec/yujuPawVQfCQBTh1filfTUV4t4o9QsQSLFBPNIoueJrHBgvuR + mglvdqbH5Jm3Wc1rNaP9TbNpgc5EzRxpscUf+6vI8dftSxdfJ2siUCnzIL6/ + j5BG20pUt2PDDeHv66JhvVn2U04/k8vRVtOswUtU7qbBjWqQFtlGFOdFrNpE + tDZOCk1zDJMByH87c0vlrTF2fgLDoz0w8haMnmB4k/QpXTaVxUEwqJXNPuYE + JF+L9WiRLVqKSJWuX8yO0scdaWROMYimJbr++ZRn7KM0aAPIMbJWt10I++hL + N9/5ZltzpDOCH30kcjNj0o4YPJA0JopajoeWYjZJLcgrTkAyyXKVWtMDiPft + HHbFds1exDk7TAGAvsK4CjwGjZv+XLi016o44VQ9cKMSsVyjbD6g + + BBTicket + + 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 + + BasebandFirmware + + PSI-Blob + + uAdSkmHpcSwVWKDzygWmqnvYDxYX3xxyYntTLpR7VvXpYCQ7x1jt + 1RtO7MX2sip1JQe25iiu3yp5m6PGajimZJ/px8+sasaJ7tGxvv3N + 1gL///////////////////////////////////////////////// + ////83AldmvQo4+m5zpBMGUCMQD1aokFdFmIioZ3rei28bASRjyz + 8q2bZLikSyYlP1Ip9zAZnbaLbncwaJ1y9WVAgecCMH5Lhxw6bMOZ + xulZ1Aoqw3IV708X1VxSjnuTgdH1z2DPl4cK9G++yhZztpJs2J80 + S/8wggIiMIIBqKADAgECAggft56T3kZN5TAKBggqhkjOPQQDAzBD + MRcwFQYDVQQDDA5JQ0UgUm9vdCBDQSAyNjETMBEGA1UECgwKQXBw + bGUgSW5jLjETMBEGA1UECAwKQ2FsaWZvcm5pYTAeFw0xNzAzMjMw + MDMzNTlaFw0xNzAzMjMyMjM4MjFaMEwxIDAeBgNVBAMMF0lDRS1S + b290Q0EyNi1EYXRhQ2VudGVyMRMwEQYDVQQKDApBcHBsZSBJbmMu + MRMwEQYDVQQIDApDYWxpZm9ybmlhMHYwEAYHKoZIzj0CAQYFK4EE + ACIDYgAEm6v8kfnQdiJOJ8EVqGybx1LPF6vEY5+//BmiIF637fYZ + RD4qmMw0LOvaxVf9hLZVnxb8/Z+RQ8uIpTqGkImaqNz09XG6Nglj + bw1MdewuRpy3Klp92Cj77IyU+hHofL/Mo2AwXjAMBgNVHRMBAf8E + AjAAMB8GA1UdIwQYMBaAFGxr4GslWxQI73tCWbDHMmSKsBbGMB0G + A1UdDgQWBBTkTMdD3aGst2h1cHW59+PiRGFvdzAOBgNVHQ8BAf8E + BAMCB4AwCgYIKoZIzj0EAwMDaAAwZQIxAMehHNdobAMi4G1fhLC0 + WkRzw28WwBnYdTSZmcJhD8aSxvsCJPZNVEVPzGB/vne+BAIwVbNV + r0vKDfp+A//Fe7q0bFSmH/vmPuv8gsIAuTu4xGisbIjxM4HdCgl0 + aHeje2flMIIB+jCCAYGgAwIBAgIINKgm1LOyGeEwCgYIKoZIzj0E + AwMwQzEXMBUGA1UEAwwOSUNFIFJvb3QgQ0EgMjYxEzARBgNVBAoM + CkFwcGxlIEluYy4xEzARBgNVBAgMCkNhbGlmb3JuaWEwHhcNMTcw + MzIyMjIzODIxWhcNMTcwMzIzMjIzODIxWjBDMRcwFQYDVQQDDA5J + Q0UgUm9vdCBDQSAyNjETMBEGA1UECgwKQXBwbGUgSW5jLjETMBEG + A1UECAwKQ2FsaWZvcm5pYTB2MBAGByqGSM49AgEGBSuBBAAiA2IA + BGJZBDAT6/nOgy1VGm9V4ml0Uzv7Vx8KPNCdKk6iDu8+CvMDhF+A + VSs6RfhUK0v7qu9/ycSZvbzB0e8MUDgsYgm8tkega+5mZd12Ruyw + BLXMKV8yXKZgrS5inn8oVHRGaqNCMEAwDwYDVR0TAQH/BAUwAwEB + /zAdBgNVHQ4EFgQUbGvgayVbFAjve0JZsMcyZIqwFsYwDgYDVR0P + AQH/BAQDAgIEMAoGCCqGSM49BAMDA2cAMGQCMHIFi0/ZrNShP/26 + LBgFRumVeHjYUwEQkCwKMbRmgLnNfOvzVbBc+odylRPSFYClwwIw + PoXOlNkO+KVx2IJZFz1WNk5hCGDb4kmL4A5gT366PQ+AqEXFO4hi + W7Hw+wzVfUJb//////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////8= + + PSI-PartialDigest + + hAAAAAAXBgDlCXSUM5CIHQNQxTVPJs8Q3F2zW+Ld1p9Q8aM2dCAQ + 4jlLkL9V1Y6MJV5LmCyyc+0+MsTg5CZpbfsNEr3HQXGU + + RestorePSI-Blob + + uAdSkmHpcSwVWKDzygWmqnvYDxYX3xxyYntTLpR7VvXpYCQ7x1jt + 1RtO7MX2sip1PNu/AgJ55Ih4Z6Ge/bYM5R5KJ8Jdymg6mYh7HGI2 + W4f///////////////////////////////////////////////// + ////83AldmvQo4+m5zpBMGQCMBEmHWWUzogrlCrI1Qxv9kScmk4n + AmJELR5NoMpNJRMLGAcNG8vT7gpyGmepzhBMPgIwGRShN3ht2FYE + sKgQMr26waPBDkSTGvKFPKuJXf3mPlw9wHiNfn6V5OSZW6mf/PLI + //8wggIiMIIBqKADAgECAggft56T3kZN5TAKBggqhkjOPQQDAzBD + MRcwFQYDVQQDDA5JQ0UgUm9vdCBDQSAyNjETMBEGA1UECgwKQXBw + bGUgSW5jLjETMBEGA1UECAwKQ2FsaWZvcm5pYTAeFw0xNzAzMjMw + MDMzNTlaFw0xNzAzMjMyMjM4MjFaMEwxIDAeBgNVBAMMF0lDRS1S + b290Q0EyNi1EYXRhQ2VudGVyMRMwEQYDVQQKDApBcHBsZSBJbmMu + MRMwEQYDVQQIDApDYWxpZm9ybmlhMHYwEAYHKoZIzj0CAQYFK4EE + ACIDYgAEm6v8kfnQdiJOJ8EVqGybx1LPF6vEY5+//BmiIF637fYZ + RD4qmMw0LOvaxVf9hLZVnxb8/Z+RQ8uIpTqGkImaqNz09XG6Nglj + bw1MdewuRpy3Klp92Cj77IyU+hHofL/Mo2AwXjAMBgNVHRMBAf8E + AjAAMB8GA1UdIwQYMBaAFGxr4GslWxQI73tCWbDHMmSKsBbGMB0G + A1UdDgQWBBTkTMdD3aGst2h1cHW59+PiRGFvdzAOBgNVHQ8BAf8E + BAMCB4AwCgYIKoZIzj0EAwMDaAAwZQIxAMehHNdobAMi4G1fhLC0 + WkRzw28WwBnYdTSZmcJhD8aSxvsCJPZNVEVPzGB/vne+BAIwVbNV + r0vKDfp+A//Fe7q0bFSmH/vmPuv8gsIAuTu4xGisbIjxM4HdCgl0 + aHeje2flMIIB+jCCAYGgAwIBAgIINKgm1LOyGeEwCgYIKoZIzj0E + AwMwQzEXMBUGA1UEAwwOSUNFIFJvb3QgQ0EgMjYxEzARBgNVBAoM + CkFwcGxlIEluYy4xEzARBgNVBAgMCkNhbGlmb3JuaWEwHhcNMTcw + MzIyMjIzODIxWhcNMTcwMzIzMjIzODIxWjBDMRcwFQYDVQQDDA5J + Q0UgUm9vdCBDQSAyNjETMBEGA1UECgwKQXBwbGUgSW5jLjETMBEG + A1UECAwKQ2FsaWZvcm5pYTB2MBAGByqGSM49AgEGBSuBBAAiA2IA + BGJZBDAT6/nOgy1VGm9V4ml0Uzv7Vx8KPNCdKk6iDu8+CvMDhF+A + VSs6RfhUK0v7qu9/ycSZvbzB0e8MUDgsYgm8tkega+5mZd12Ruyw + BLXMKV8yXKZgrS5inn8oVHRGaqNCMEAwDwYDVR0TAQH/BAUwAwEB + /zAdBgNVHQ4EFgQUbGvgayVbFAjve0JZsMcyZIqwFsYwDgYDVR0P + AQH/BAQDAgIEMAoGCCqGSM49BAMDA2cAMGQCMHIFi0/ZrNShP/26 + LBgFRumVeHjYUwEQkCwKMbRmgLnNfOvzVbBc+odylRPSFYClwwIw + PoXOlNkO+KVx2IJZFz1WNk5hCGDb4kmL4A5gT366PQ+AqEXFO4hi + W7Hw+wzVfUJb//////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////////////////////////// + //////////////////////////////8= + + RestorePSI-PartialDigest + + hAAAAAAXBgChvpu100y61uQv82gvjQmqYsKffUbencBIlk967kfL + ID07mZb0Q0e33R9LVKu0BrHs6qhbgywkubV4J6JjGO4i + + + + noNonce + + @ServerVersion + 2.1.0 + ApImg4Ticket + + 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 + /BKKwp7kKR82hQnjaIsm1N43tU6xhck9NQ8DwkWq3ZrPsAwy58Hci09prJlx + CbYOWSnA4CFaUB4O0LGEYfPOb3Av6M27YAjZb/uNzVADlwc7QmEX5EDA/y9l + +/ju1il6+OE3p/zEtoabmYN+vDHXMlvZ+HaTcW/la/t/yBVRNo3S7DK+EWX1 + ZIo8zQYh0cUYH740/IQ4+JvCcyjxNSQQ0mII3BfekOpRmmdlyCDYxIfctnwO + DIcT3Bgi87AuihDQgfCo2jPM/jDMmurDGn/eGMPMXyciZq9mWxbjYEmMUfCc + 0YZ63P4aXE6idiIh8lO7Kb3NXltJ6cwFZtZw3X7Md+N2pILRWLlHpdxdt/Oe + piu5oOsCjROoJF65AVG2vI5rPQZFQeoexbT8obt9i2fHyRgfmcXvCuim7AQd + UDA3w07S5TxnGTxRr5ZoItSZzTKfwTgxzbisL/rsvQZxh7KjocwSuyYEOIUA + EDCCBq4wggaqMIIEkqADAgECAgh6Uzoe04w3+jANBgkqhkiG9w0BAQwFADBL + MScwJQYDVQQDDB5BcHBsZSBTZWN1cmUgQm9vdCBSb290IENBIC0gRzIxEzAR + BgNVBAoMCkFwcGxlIEluYy4xCzAJBgNVBAYTAlVTMB4XDTE2MTAwNTE3NTE0 + NloXDTM0MTIxNDIwMTMxMFowVjEyMDAGA1UEAwwpVDgwMjAtVHNzTGl2ZS1N + YW5pZmVzdEtleS1SZXZBLURhdGFDZW50ZXIxEzARBgNVBAoMCkFwcGxlIElu + Yy4xCzAJBgNVBAYTAlVTMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC + AgEA1m+uRRgtBa3jb1AzEfKRtdj5KUHvZJk/h+golsv8LX3NquqaRn2YqpcG + n7yVbJEXFRr3sr1rZVQG6qudVbPleQxu8gDE6zdFiPS/lqd0coeudZV2KmSD + iLZJiJ+NepUp49EXyqeZQ4FE9rEnhjBnymAZP9OhpQCMMyjyy6IRb9hPHSrP + A2VH9eccA5Mo3+cgzv3Od36RP56WdtctdTA18yjNGaLguUAKIGGas4a3Dh1I + Oyjya9sSfNazmaPFW5jAoyKcMVF1dbPaVhdui2FWTys6DD2fPVZZPwewMolL + K6tPXNmxlyyMf6+vIXJATrPm9m9brNAVvUrRsDo4qKXXXiWm+LPge7yTgGw3 + P/MOKS0UBqqTSi4x14IFGiWG006FdG0GRZCWgWae/p52Ccqq4TXkK7FTn6nn + wivFWbTGv1GU+1mJ9ClNj9SbVdKT+LasToOybnLEnxPSKcbhIXA+q/noZy0+ + 6YrYCxEC8n48ydc8MCXhSvAl3JEHng2s6+I0HQubA3e9Y2sAY7bi285zuu78 + HM4Ui0jU+YdQ+wFVBu71MNciFqihkj1TA3Ll5LDiqY8DF2Si0TkbxV383Mkx + c+d7n9zCS49gDmIDI9JF2hWeUw3IqIF4QBDYlfL1jmgXH3oU3tS9lyQdSk2M + Dr1yhKx67WeLg2DxIXOjj2b7ulsCAwEAAaOCAYUwggGBMB0GA1UdDgQWBBTU + qcsd8wWqatthdZPHU2hvi71eWDAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaA + FGjpWVBF8V0H+T/EJvwcJ2J9nhOUMA4GA1UdDwEB/wQEAwIHgDCCAR8GCiqG + SIb3Y2QGAQ8BAf8EggEMMYIBCP+E6oWcUIG2MIGzFgRNQU5QMYGq/4SSuYZI + DDAKFgRCTkNIoAIFAP+Ekr2kRAwwChYEQk9SRKACBQD/hJqVoE8LMAkWBENF + UE8CAQH/hJqhklANMAsWBENISVACAwCAIP+EmsGkTwwwChYEQ1BST6ACBQD/ + hJrNikMMMAoWBENTRUOgAgUA/4SqjZJEDDAKFgRFQ0lEoAIFAP+FmpGeTQsw + CRYEU0RPTQIBAf+Hm7nebgwwChYEc25vbqACBQD/hPqJlFBDMEEWBE9CSlAx + Of+Eop2mVAwwChYEREdTVKACBQD/hKrBpE8MMAoWBEVQUk+gAgUA/4SqzYpD + DDAKFgRFU0VDoAIFADANBgkqhkiG9w0BAQwFAAOCAgEAuxMAT0vSOL6S/A0n + GdzXBQ9HIkyU7FrLmR71J/kM/cTtM1k5sS5SOgR9fkn1sHNTLO7TCZEY1sei + aBLjIhklAJFVyRHzH09zEwxPXTmDcue/dViAzcWH6GS5VVccVqK07YEl4sAX + XxoP74dwuZ6Em5BmmeBX2pKbCgJuCjzoBXIj09qY8YKa8xMAMgI8cNzwZEjq + yQKUS2BvBEX4TQTeKZxtOwEWAHjmjFDFyxJIBBqOktJyFqpkO6Qg2u/x0U2o + 5rsn8R43T1aDR5ofskwekHsRz/K6O49rBVB8JAFOHV+KV9NRXi3ij1CxBIsU + E80ii54mscGC+5GaCW92psfkmbdZzWs1o/1Ns2mBzkTNHGmxxR/7q8jx1+1L + F18nayJQKfMgvr+PkEbbSlS3Y8MN4e/romG9WfZTTj+Ty9FW06zBS1TupsGN + apAW2UYU50Ws2kS0Nk4KTXMMkwHIfztzS+WtMXZ+AsOjPTDyFoyeYHiT9Cld + NpXFQTColc0+5gQkX4v1aJEtWopIla5fzI7Sxx1pZE4xiKYluv75lGfsozRo + A8gxsla3XQj76Es33/lmW3OkM4IffSRyM2PSjhg8kDQmilqOh5ZiNkktyCtO + QDLJcpVa0wOI9+0cdsV2zV7EOTtMAYC+wrgKPAaNm/5cuLTXqjjhVD1woxKx + XKNsPqA= + + + + diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index 616523a1..0a1a17a6 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -145,6 +145,7 @@ static struct bbdevice bbdevices[] = { {"iPhone10,5", 524245983, 12}, // iPhone 8 Plus (GSM) {"iPhone10,6", 524245983, 12}, // iPhone X GSM {"iPhone11,2", 165673526, 12}, // iPhone XS + {"iPhone11,4", 165673526, 12}, // iPhone XS Max (China) {"iPhone11,6", 165673526, 12}, // iPhone XS Max // iPads From d3b4595d61afd8a6e3e08c40efee37cf1c7d6141 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Tue, 8 Jan 2019 08:04:06 -0800 Subject: [PATCH 32/82] added iPhone11,8 bbgcid --- ...f48fd2fb00741f2cc01a25f6d6b726bdec57.shsh2 | 1254 ----------------- ...0fce80c973d3a51496306b6a96e3b53db4a5.shsh2 | 1246 ---------------- tsschecker/tsschecker.c | 1 + 3 files changed, 1 insertion(+), 2500 deletions(-) delete mode 100644 1111111111_iPhone11,2_12.1.1-16C50_7e7ea79d0a57b00bbf821c271a2cf48fd2fb00741f2cc01a25f6d6b726bdec57.shsh2 delete mode 100644 1111111111_iPhone11,4_12.1.1-16C50_7b5d84c4129841819489fd6a4d680fce80c973d3a51496306b6a96e3b53db4a5.shsh2 diff --git a/1111111111_iPhone11,2_12.1.1-16C50_7e7ea79d0a57b00bbf821c271a2cf48fd2fb00741f2cc01a25f6d6b726bdec57.shsh2 b/1111111111_iPhone11,2_12.1.1-16C50_7e7ea79d0a57b00bbf821c271a2cf48fd2fb00741f2cc01a25f6d6b726bdec57.shsh2 deleted file mode 100644 index b8e59408..00000000 --- a/1111111111_iPhone11,2_12.1.1-16C50_7e7ea79d0a57b00bbf821c271a2cf48fd2fb00741f2cc01a25f6d6b726bdec57.shsh2 +++ /dev/null @@ -1,1254 +0,0 @@ - - - - - @ServerVersion - 2.1.0 - ApImg4Ticket - - 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 - - BBTicket - - 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 - - BasebandFirmware - - PSI-Blob - - uAdSkmHpcSwVWKDzygWmqnvYDxYX3xxyYntTLpR7VvXpYCQ7x1jt1RtO7MX2 - sip1M2DjxotbX8kJS5EaokP0Yft9/DDUmdhEaSBs3GSEkif///////////// - ////////////////////////////////////////0uvN9ALaO4MHpZVDMGQC - MC4AP6o6bzlBePelOkRp8odQqIzN6EVJqCgSJ6ckzHzje9gvI27It3yZYRya - gm5Y/QIwK4W/Rt8cVngDYjokjZVC0hbQVVFddreJ+069HZPg7QrunAHhO5IF - md5tBJVVjn5I//8wggIiMIIBqKADAgECAggft56T3kZN5TAKBggqhkjOPQQD - AzBDMRcwFQYDVQQDDA5JQ0UgUm9vdCBDQSAyNjETMBEGA1UECgwKQXBwbGUg - SW5jLjETMBEGA1UECAwKQ2FsaWZvcm5pYTAeFw0xNzAzMjMwMDMzNTlaFw0x - NzAzMjMyMjM4MjFaMEwxIDAeBgNVBAMMF0lDRS1Sb290Q0EyNi1EYXRhQ2Vu - dGVyMRMwEQYDVQQKDApBcHBsZSBJbmMuMRMwEQYDVQQIDApDYWxpZm9ybmlh - MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEm6v8kfnQdiJOJ8EVqGybx1LPF6vE - Y5+//BmiIF637fYZRD4qmMw0LOvaxVf9hLZVnxb8/Z+RQ8uIpTqGkImaqNz0 - 9XG6Ngljbw1MdewuRpy3Klp92Cj77IyU+hHofL/Mo2AwXjAMBgNVHRMBAf8E - AjAAMB8GA1UdIwQYMBaAFGxr4GslWxQI73tCWbDHMmSKsBbGMB0GA1UdDgQW - BBTkTMdD3aGst2h1cHW59+PiRGFvdzAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZI - zj0EAwMDaAAwZQIxAMehHNdobAMi4G1fhLC0WkRzw28WwBnYdTSZmcJhD8aS - xvsCJPZNVEVPzGB/vne+BAIwVbNVr0vKDfp+A//Fe7q0bFSmH/vmPuv8gsIA - uTu4xGisbIjxM4HdCgl0aHeje2flMIIB+jCCAYGgAwIBAgIINKgm1LOyGeEw - CgYIKoZIzj0EAwMwQzEXMBUGA1UEAwwOSUNFIFJvb3QgQ0EgMjYxEzARBgNV - BAoMCkFwcGxlIEluYy4xEzARBgNVBAgMCkNhbGlmb3JuaWEwHhcNMTcwMzIy - MjIzODIxWhcNMTcwMzIzMjIzODIxWjBDMRcwFQYDVQQDDA5JQ0UgUm9vdCBD - QSAyNjETMBEGA1UECgwKQXBwbGUgSW5jLjETMBEGA1UECAwKQ2FsaWZvcm5p - YTB2MBAGByqGSM49AgEGBSuBBAAiA2IABGJZBDAT6/nOgy1VGm9V4ml0Uzv7 - Vx8KPNCdKk6iDu8+CvMDhF+AVSs6RfhUK0v7qu9/ycSZvbzB0e8MUDgsYgm8 - tkega+5mZd12RuywBLXMKV8yXKZgrS5inn8oVHRGaqNCMEAwDwYDVR0TAQH/ - BAUwAwEB/zAdBgNVHQ4EFgQUbGvgayVbFAjve0JZsMcyZIqwFsYwDgYDVR0P - AQH/BAQDAgIEMAoGCCqGSM49BAMDA2cAMGQCMHIFi0/ZrNShP/26LBgFRumV - eHjYUwEQkCwKMbRmgLnNfOvzVbBc+odylRPSFYClwwIwPoXOlNkO+KVx2IJZ - Fz1WNk5hCGDb4kmL4A5gT366PQ+AqEXFO4hiW7Hw+wzVfUJb//////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////8= - - PSI-PartialDigest - - hAAAAAAXBgDlCXSUM5CIHQNQxTVPJs8Q3F2zW+Ld1p9Q8aM2dCAQ4jlLkL9V - 1Y6MJV5LmCyyc+0+MsTg5CZpbfsNEr3HQXGU - - RestorePSI-Blob - - uAdSkmHpcSwVWKDzygWmqnvYDxYX3xxyYntTLpR7VvXpYCQ7x1jt1RtO7MX2 - sip1d4KTlLV3ONxv05H4z7E6YKFHAAbzeARGsdAAI6NqaWL///////////// - ////////////////////////////////////////0uvN9ALaO4MHpZVDMGQC - MFv+RHWchBUM5AjcK/4Lv6W2VbM9seJnokqQHJH9sK3wzeC9/W7IOjyXd5SA - oITwNwIwMnchqXrdOi1XkjJMPCZn+H00ZKi721hXMdkt+o1qwWAFnC4JP7a0 - APMLR4EmN2/P//8wggIiMIIBqKADAgECAggft56T3kZN5TAKBggqhkjOPQQD - AzBDMRcwFQYDVQQDDA5JQ0UgUm9vdCBDQSAyNjETMBEGA1UECgwKQXBwbGUg - SW5jLjETMBEGA1UECAwKQ2FsaWZvcm5pYTAeFw0xNzAzMjMwMDMzNTlaFw0x - NzAzMjMyMjM4MjFaMEwxIDAeBgNVBAMMF0lDRS1Sb290Q0EyNi1EYXRhQ2Vu - dGVyMRMwEQYDVQQKDApBcHBsZSBJbmMuMRMwEQYDVQQIDApDYWxpZm9ybmlh - MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEm6v8kfnQdiJOJ8EVqGybx1LPF6vE - Y5+//BmiIF637fYZRD4qmMw0LOvaxVf9hLZVnxb8/Z+RQ8uIpTqGkImaqNz0 - 9XG6Ngljbw1MdewuRpy3Klp92Cj77IyU+hHofL/Mo2AwXjAMBgNVHRMBAf8E - AjAAMB8GA1UdIwQYMBaAFGxr4GslWxQI73tCWbDHMmSKsBbGMB0GA1UdDgQW - BBTkTMdD3aGst2h1cHW59+PiRGFvdzAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZI - zj0EAwMDaAAwZQIxAMehHNdobAMi4G1fhLC0WkRzw28WwBnYdTSZmcJhD8aS - xvsCJPZNVEVPzGB/vne+BAIwVbNVr0vKDfp+A//Fe7q0bFSmH/vmPuv8gsIA - uTu4xGisbIjxM4HdCgl0aHeje2flMIIB+jCCAYGgAwIBAgIINKgm1LOyGeEw - CgYIKoZIzj0EAwMwQzEXMBUGA1UEAwwOSUNFIFJvb3QgQ0EgMjYxEzARBgNV - BAoMCkFwcGxlIEluYy4xEzARBgNVBAgMCkNhbGlmb3JuaWEwHhcNMTcwMzIy - MjIzODIxWhcNMTcwMzIzMjIzODIxWjBDMRcwFQYDVQQDDA5JQ0UgUm9vdCBD - QSAyNjETMBEGA1UECgwKQXBwbGUgSW5jLjETMBEGA1UECAwKQ2FsaWZvcm5p - YTB2MBAGByqGSM49AgEGBSuBBAAiA2IABGJZBDAT6/nOgy1VGm9V4ml0Uzv7 - Vx8KPNCdKk6iDu8+CvMDhF+AVSs6RfhUK0v7qu9/ycSZvbzB0e8MUDgsYgm8 - tkega+5mZd12RuywBLXMKV8yXKZgrS5inn8oVHRGaqNCMEAwDwYDVR0TAQH/ - BAUwAwEB/zAdBgNVHQ4EFgQUbGvgayVbFAjve0JZsMcyZIqwFsYwDgYDVR0P - AQH/BAQDAgIEMAoGCCqGSM49BAMDA2cAMGQCMHIFi0/ZrNShP/26LBgFRumV - eHjYUwEQkCwKMbRmgLnNfOvzVbBc+odylRPSFYClwwIwPoXOlNkO+KVx2IJZ - Fz1WNk5hCGDb4kmL4A5gT366PQ+AqEXFO4hiW7Hw+wzVfUJb//////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////8= - - RestorePSI-PartialDigest - - hAAAAAAXBgChvpu100y61uQv82gvjQmqYsKffUbencBIlk967kfLID07mZb0 - Q0e33R9LVKu0BrHs6qhbgywkubV4J6JjGO4i - - - generator - 0x833bda02f4cdebd2 - updateInstall - - @ServerVersion - 2.1.0 - ApImg4Ticket - - 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 - - BBTicket - - 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 - - BasebandFirmware - - PSI-Blob - - uAdSkmHpcSwVWKDzygWmqnvYDxYX3xxyYntTLpR7VvXpYCQ7x1jt - 1RtO7MX2sip1x2BkgjYViWwHwCHwNXhXTkUMX9/P2CoMvYExn64L - aG3///////////////////////////////////////////////// - ////IM2ASQdr64COQcbuMGUCMHwWyxVA+XWUNd5GWOBQTDro6kz5 - KlSRGDGSlczEtkU02pmufM55Nokggb4bkGopFwIxAPoELBkwcuFa - 99tXKNR0DcJ6Q6Cc54/v41maeH6Qa+Giz/lyIe+SFJB1rAvVpdWf - vv8wggIiMIIBqKADAgECAggft56T3kZN5TAKBggqhkjOPQQDAzBD - MRcwFQYDVQQDDA5JQ0UgUm9vdCBDQSAyNjETMBEGA1UECgwKQXBw - bGUgSW5jLjETMBEGA1UECAwKQ2FsaWZvcm5pYTAeFw0xNzAzMjMw - MDMzNTlaFw0xNzAzMjMyMjM4MjFaMEwxIDAeBgNVBAMMF0lDRS1S - b290Q0EyNi1EYXRhQ2VudGVyMRMwEQYDVQQKDApBcHBsZSBJbmMu - MRMwEQYDVQQIDApDYWxpZm9ybmlhMHYwEAYHKoZIzj0CAQYFK4EE - ACIDYgAEm6v8kfnQdiJOJ8EVqGybx1LPF6vEY5+//BmiIF637fYZ - RD4qmMw0LOvaxVf9hLZVnxb8/Z+RQ8uIpTqGkImaqNz09XG6Nglj - bw1MdewuRpy3Klp92Cj77IyU+hHofL/Mo2AwXjAMBgNVHRMBAf8E - AjAAMB8GA1UdIwQYMBaAFGxr4GslWxQI73tCWbDHMmSKsBbGMB0G - A1UdDgQWBBTkTMdD3aGst2h1cHW59+PiRGFvdzAOBgNVHQ8BAf8E - BAMCB4AwCgYIKoZIzj0EAwMDaAAwZQIxAMehHNdobAMi4G1fhLC0 - WkRzw28WwBnYdTSZmcJhD8aSxvsCJPZNVEVPzGB/vne+BAIwVbNV - r0vKDfp+A//Fe7q0bFSmH/vmPuv8gsIAuTu4xGisbIjxM4HdCgl0 - aHeje2flMIIB+jCCAYGgAwIBAgIINKgm1LOyGeEwCgYIKoZIzj0E - AwMwQzEXMBUGA1UEAwwOSUNFIFJvb3QgQ0EgMjYxEzARBgNVBAoM - CkFwcGxlIEluYy4xEzARBgNVBAgMCkNhbGlmb3JuaWEwHhcNMTcw - MzIyMjIzODIxWhcNMTcwMzIzMjIzODIxWjBDMRcwFQYDVQQDDA5J - Q0UgUm9vdCBDQSAyNjETMBEGA1UECgwKQXBwbGUgSW5jLjETMBEG - A1UECAwKQ2FsaWZvcm5pYTB2MBAGByqGSM49AgEGBSuBBAAiA2IA - BGJZBDAT6/nOgy1VGm9V4ml0Uzv7Vx8KPNCdKk6iDu8+CvMDhF+A - VSs6RfhUK0v7qu9/ycSZvbzB0e8MUDgsYgm8tkega+5mZd12Ruyw - BLXMKV8yXKZgrS5inn8oVHRGaqNCMEAwDwYDVR0TAQH/BAUwAwEB - /zAdBgNVHQ4EFgQUbGvgayVbFAjve0JZsMcyZIqwFsYwDgYDVR0P - AQH/BAQDAgIEMAoGCCqGSM49BAMDA2cAMGQCMHIFi0/ZrNShP/26 - LBgFRumVeHjYUwEQkCwKMbRmgLnNfOvzVbBc+odylRPSFYClwwIw - PoXOlNkO+KVx2IJZFz1WNk5hCGDb4kmL4A5gT366PQ+AqEXFO4hi - W7Hw+wzVfUJb//////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////8= - - PSI-PartialDigest - - hAAAAAAXBgDlCXSUM5CIHQNQxTVPJs8Q3F2zW+Ld1p9Q8aM2dCAQ - 4jlLkL9V1Y6MJV5LmCyyc+0+MsTg5CZpbfsNEr3HQXGU - - RestorePSI-Blob - - uAdSkmHpcSwVWKDzygWmqnvYDxYX3xxyYntTLpR7VvXpYCQ7x1jt - 1RtO7MX2sip1cZMlWvv7ac3edDwfWvYszmBRtQqQSyfp7+lc24ei - tp7///////////////////////////////////////////////// - ////IM2ASQdr64COQcbuMGUCMQCjfbuqjq89riZMp8uQaMBRnmbx - RxzuV+4ntuJ2OYZlPBYtd3XG5b7cbN7De/7my+4CMDSjIFit456s - lJ2ekXMltASdQkBS9wlGbJSRa6zfDprTp0VAkys6EvBe/Am5Yt+t - OP8wggIiMIIBqKADAgECAggft56T3kZN5TAKBggqhkjOPQQDAzBD - MRcwFQYDVQQDDA5JQ0UgUm9vdCBDQSAyNjETMBEGA1UECgwKQXBw - bGUgSW5jLjETMBEGA1UECAwKQ2FsaWZvcm5pYTAeFw0xNzAzMjMw - MDMzNTlaFw0xNzAzMjMyMjM4MjFaMEwxIDAeBgNVBAMMF0lDRS1S - b290Q0EyNi1EYXRhQ2VudGVyMRMwEQYDVQQKDApBcHBsZSBJbmMu - MRMwEQYDVQQIDApDYWxpZm9ybmlhMHYwEAYHKoZIzj0CAQYFK4EE - ACIDYgAEm6v8kfnQdiJOJ8EVqGybx1LPF6vEY5+//BmiIF637fYZ - RD4qmMw0LOvaxVf9hLZVnxb8/Z+RQ8uIpTqGkImaqNz09XG6Nglj - bw1MdewuRpy3Klp92Cj77IyU+hHofL/Mo2AwXjAMBgNVHRMBAf8E - AjAAMB8GA1UdIwQYMBaAFGxr4GslWxQI73tCWbDHMmSKsBbGMB0G - A1UdDgQWBBTkTMdD3aGst2h1cHW59+PiRGFvdzAOBgNVHQ8BAf8E - BAMCB4AwCgYIKoZIzj0EAwMDaAAwZQIxAMehHNdobAMi4G1fhLC0 - WkRzw28WwBnYdTSZmcJhD8aSxvsCJPZNVEVPzGB/vne+BAIwVbNV - r0vKDfp+A//Fe7q0bFSmH/vmPuv8gsIAuTu4xGisbIjxM4HdCgl0 - aHeje2flMIIB+jCCAYGgAwIBAgIINKgm1LOyGeEwCgYIKoZIzj0E - AwMwQzEXMBUGA1UEAwwOSUNFIFJvb3QgQ0EgMjYxEzARBgNVBAoM - CkFwcGxlIEluYy4xEzARBgNVBAgMCkNhbGlmb3JuaWEwHhcNMTcw - MzIyMjIzODIxWhcNMTcwMzIzMjIzODIxWjBDMRcwFQYDVQQDDA5J - Q0UgUm9vdCBDQSAyNjETMBEGA1UECgwKQXBwbGUgSW5jLjETMBEG - A1UECAwKQ2FsaWZvcm5pYTB2MBAGByqGSM49AgEGBSuBBAAiA2IA - BGJZBDAT6/nOgy1VGm9V4ml0Uzv7Vx8KPNCdKk6iDu8+CvMDhF+A - VSs6RfhUK0v7qu9/ycSZvbzB0e8MUDgsYgm8tkega+5mZd12Ruyw - BLXMKV8yXKZgrS5inn8oVHRGaqNCMEAwDwYDVR0TAQH/BAUwAwEB - /zAdBgNVHQ4EFgQUbGvgayVbFAjve0JZsMcyZIqwFsYwDgYDVR0P - AQH/BAQDAgIEMAoGCCqGSM49BAMDA2cAMGQCMHIFi0/ZrNShP/26 - LBgFRumVeHjYUwEQkCwKMbRmgLnNfOvzVbBc+odylRPSFYClwwIw - PoXOlNkO+KVx2IJZFz1WNk5hCGDb4kmL4A5gT366PQ+AqEXFO4hi - W7Hw+wzVfUJb//////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////8= - - RestorePSI-PartialDigest - - hAAAAAAXBgChvpu100y61uQv82gvjQmqYsKffUbencBIlk967kfL - ID07mZb0Q0e33R9LVKu0BrHs6qhbgywkubV4J6JjGO4i - - - - noNonce - - @ServerVersion - 2.1.0 - ApImg4Ticket - - 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 - ErFco2w+oA== - - - - diff --git a/1111111111_iPhone11,4_12.1.1-16C50_7b5d84c4129841819489fd6a4d680fce80c973d3a51496306b6a96e3b53db4a5.shsh2 b/1111111111_iPhone11,4_12.1.1-16C50_7b5d84c4129841819489fd6a4d680fce80c973d3a51496306b6a96e3b53db4a5.shsh2 deleted file mode 100644 index 8877fcda..00000000 --- a/1111111111_iPhone11,4_12.1.1-16C50_7b5d84c4129841819489fd6a4d680fce80c973d3a51496306b6a96e3b53db4a5.shsh2 +++ /dev/null @@ -1,1246 +0,0 @@ - - - - - @ServerVersion - 2.1.0 - ApImg4Ticket - - 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 - 4VQ9cKMSsVyjbD6g - - BBTicket - - MIIHUzAKBggqhkjOPQQDAzGCBmOfPwyljnEhZkDzkR5LCZafQAReAAAAn0oUAdnrYA4s - ftwcYXCTGBNQhNe5RyufSxTu8VNtXKStMA8DPNKVKkJ0/3xvdJ9YBDb63wmfgUgwI4xR - GNuXmECWn7Tbo6stszaty57KPqB7p82dkcS7GIeN1zYVcPbxDBYp4qMOHfOSn4FJMBtB - YHZQ6/Ecazn0HLJn3GTBIam89E26XSj1WsyGNhu6NmVUzVe0xGYFWAPh74HIcJ+CWSBT - QLagWb23MucV57sbKS7c1FwqjR0H5gOdPzONfEQoq5+CZTCNSfor6LTZFN2NJV8ZyfFn - eLpa64B1LQdjG5EH0aS1dClXgn1+bsbJg2SL4XKVrHOfgw0Eogg1B5+DDgSjCDUHn4MP - MBosN+Ebudi7bmwfFYVoXku6RqnMjOPfHdlFLyXhh+uBCNggx0RdUpKJQeciEGfQFp+D - EDDqk9Q9fsgPh5mndmeFmxFudaC7supCbesfNRo9z4LionkRgoiT1TaF7gRj/7Mqho+f - gxEwzJVIyrRtLiCOoBAJgK3V6WuvdNnb5g31r9caPj6Wg86GJuYOT0sPei6t8oJhTlcE - n4MSMPW+BYWv8Evq2UzuUXfvXf8KTqODsCqMn2MG14BB8qEizwpxi+o4dweop2kR5kVX - OJ+DEzAWavcLcHE27fIW02iC/9eCKtkjWe4wmzymRxMrIt8rsOEVmXIHTFm8hnPylzGT - CUGfgxQw7fwMBjCbZ1mJ8anANNm0vlTuCpeQyPKjsxLh9yCEWBkyqEuImJ+w3wASfbjX - GYPun4MVMKFKMDPrAKrPNTklWIYqeiUzsmk9ElQeH22I7AYrYVB5uBWdSWsp2m0J556E - M6svPp+DFjALkJKKAH0LvBCV37cDy1CIjKX8RCeeWgnFExjPUklS7wnfXzLdd+wo2Hf/ - hz/1qnSfg3kwEiEhdRzvE25SixgbM9bGJBVhbmkMiUXBb+eE3h+U6qQ8HDGsvEVyxg2s - OvbQ5TvCn4N6MNlopT+flUr+XOfBOVuHbH83oonFRGxwadIHGaIFuId0n7Vy01xn03Sc - Vn8KOx0uDp+DezDopsMvTI/aOEGmb64vLh97bYTbTuAAbnVrA+jo/8QBD4zYD36D+hHN - f+N3Tg6EyWufg3wwSkZr8n1M6uQp4rG5/Th1e4zhRezWKYsZ2wd/7SxpRHmrebayvlMd - EpcxAJ5AN9wtn4N9MMBDchvlrF8KAExS26zvsDbloEbaFCREGvHJUQeDIV8naDITyz0H - VZ76alU4nfK2AZ+DfjD8kvSeBBY/WP0ZomxDz+hSWcYn1adtn7x3M7enf///wjNX3w4g - MWvqVh4TIbNsgXOfg38wilnXgdIxZ4uJCtazoDLrjjNBxpraVUw97rgvDyLSYiGUDlwD - rdLwb0Ge3kU1LGton4QAMI+/472dOADR5Xz0GU0Wlqj4NvDezOdk4kakimPI+jb1crAR - 7jNoYopvBPiOiKW5YJ+EATA6gh0weArKkeY5+QO9Fp5E2Jhu7ARD0Jyxb0IGsR7L2k1H - dPuOXFuhIyz0c3YTujWfhAIwi3NAxQBjKjBO/9eoxapu/JB3PcGazh+1AAy/uJP7MmSR - ABvyKGEEwKxxMTuQdFERn4VWMPdvrVJiYqS5U7MVMKFOKZbfKQAtfG1BkgTYIzUeRu0q - 1U1STTr9V0+3YZKzlYPo7Z+FVzB2AtusvS7oYkzOYJlPU05or+gyOz5gTkdYpsQfY5sP - 1tQs4jfyQlu4aNGJKJUFWmafhVgwVgVG4Sy29LrsWaOcAK8FqRzc9WfudRTimkJaJ45a - t7Nc61IiD/4zSO4Mu+Ng3MFPn4VZMIn+X+jaPsL0otuYc4BN/to7iti2KCNYPGECbiW7 - hq4J2YwT+3u2HvewTeNIu6iViJ+FWjBNzo7emsbgsloqDO3WfVv/F8vEdLc0PQKUQWxS - 5VO2ih766ilk5RsLcKSFwfxX9gCfhVswwdoUWyRPOTix1ua2eJiz5rVDxGOoQczyv+Ff - u64nurrP05XKInhG1R4/c7gKYDC1n4VsMBwFvc8Bsj4su+TIUlfWAq4BueNay950fiDa - ZkSCcCjbZxiox9KJC+xknz0DfHZylp+FbTBEJNIgbJdZKLGpsSRfJmCs1efrB4lycbOJ - uUwdHHENdb/SSn/vUsk3EcOVGDuvE1kEZjBkAjAKKSOao9I8Y3eGLUNL1EU+5xzJyfY4 - juH/DdQbCgPlNxfUU4FXFrQhUfOf9E6H+ysCMCIKZOaT69PIBg4+QalUnYCpF2AxljnJ - QArJsv1ty1pCmG06+ABaNTLtzJRLnUQwxqN2MBAGByqGSM49AgEGBSuBBAAiA2IABKjT - /4Essv5K0xuOPy82eD1/iIsz7jT66R4d7xEWjEnZ7Iis5jbfk4ymi5UrW8trg/6s+JS0 - Nw2kclY+21a0SJfM7LNcS7c17iu1OF0LjPxbIlSlMbc32E0GShGrNrx4nA== - - BasebandFirmware - - PSI-Blob - - uAdSkmHpcSwVWKDzygWmqnvYDxYX3xxyYntTLpR7VvXpYCQ7x1jt1RtO7MX2 - sip151EagGm0REG+OKPsnHMX67H58l5BWZHrCJ2/TvVf7Rb///////////// - ////////////////////////////////////////pY5xIWZA85EeSwmWMGYC - MQCWOqezBKXi62eAanj8FhGPgTAQl3n6cP1PISXtoSnzE4L2aXHkhdTEEYCa - SRWE3L0CMQCz+7CsjaMP2TLEiY9CtcFXsLy7/MG/5xpfj2WmsA2jDt6S+lbu - rrHrRsoLG0WlS48wggIiMIIBqKADAgECAggft56T3kZN5TAKBggqhkjOPQQD - AzBDMRcwFQYDVQQDDA5JQ0UgUm9vdCBDQSAyNjETMBEGA1UECgwKQXBwbGUg - SW5jLjETMBEGA1UECAwKQ2FsaWZvcm5pYTAeFw0xNzAzMjMwMDMzNTlaFw0x - NzAzMjMyMjM4MjFaMEwxIDAeBgNVBAMMF0lDRS1Sb290Q0EyNi1EYXRhQ2Vu - dGVyMRMwEQYDVQQKDApBcHBsZSBJbmMuMRMwEQYDVQQIDApDYWxpZm9ybmlh - MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEm6v8kfnQdiJOJ8EVqGybx1LPF6vE - Y5+//BmiIF637fYZRD4qmMw0LOvaxVf9hLZVnxb8/Z+RQ8uIpTqGkImaqNz0 - 9XG6Ngljbw1MdewuRpy3Klp92Cj77IyU+hHofL/Mo2AwXjAMBgNVHRMBAf8E - AjAAMB8GA1UdIwQYMBaAFGxr4GslWxQI73tCWbDHMmSKsBbGMB0GA1UdDgQW - BBTkTMdD3aGst2h1cHW59+PiRGFvdzAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZI - zj0EAwMDaAAwZQIxAMehHNdobAMi4G1fhLC0WkRzw28WwBnYdTSZmcJhD8aS - xvsCJPZNVEVPzGB/vne+BAIwVbNVr0vKDfp+A//Fe7q0bFSmH/vmPuv8gsIA - uTu4xGisbIjxM4HdCgl0aHeje2flMIIB+jCCAYGgAwIBAgIINKgm1LOyGeEw - CgYIKoZIzj0EAwMwQzEXMBUGA1UEAwwOSUNFIFJvb3QgQ0EgMjYxEzARBgNV - BAoMCkFwcGxlIEluYy4xEzARBgNVBAgMCkNhbGlmb3JuaWEwHhcNMTcwMzIy - MjIzODIxWhcNMTcwMzIzMjIzODIxWjBDMRcwFQYDVQQDDA5JQ0UgUm9vdCBD - QSAyNjETMBEGA1UECgwKQXBwbGUgSW5jLjETMBEGA1UECAwKQ2FsaWZvcm5p - YTB2MBAGByqGSM49AgEGBSuBBAAiA2IABGJZBDAT6/nOgy1VGm9V4ml0Uzv7 - Vx8KPNCdKk6iDu8+CvMDhF+AVSs6RfhUK0v7qu9/ycSZvbzB0e8MUDgsYgm8 - tkega+5mZd12RuywBLXMKV8yXKZgrS5inn8oVHRGaqNCMEAwDwYDVR0TAQH/ - BAUwAwEB/zAdBgNVHQ4EFgQUbGvgayVbFAjve0JZsMcyZIqwFsYwDgYDVR0P - AQH/BAQDAgIEMAoGCCqGSM49BAMDA2cAMGQCMHIFi0/ZrNShP/26LBgFRumV - eHjYUwEQkCwKMbRmgLnNfOvzVbBc+odylRPSFYClwwIwPoXOlNkO+KVx2IJZ - Fz1WNk5hCGDb4kmL4A5gT366PQ+AqEXFO4hiW7Hw+wzVfUJb//////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////8= - - PSI-PartialDigest - - hAAAAAAXBgDlCXSUM5CIHQNQxTVPJs8Q3F2zW+Ld1p9Q8aM2dCAQ4jlLkL9V - 1Y6MJV5LmCyyc+0+MsTg5CZpbfsNEr3HQXGU - - RestorePSI-Blob - - uAdSkmHpcSwVWKDzygWmqnvYDxYX3xxyYntTLpR7VvXpYCQ7x1jt1RtO7MX2 - sip1aAp0e1GWwUaWQpQK6QMabeGuEuN66mDKmwpZ1QbYGTv///////////// - ////////////////////////////////////////pY5xIWZA85EeSwmWMGYC - MQDQIM961eDM0LCPwP9eOVo6SYGumZ5YbFFC0s5742SgJwxuxvwcf3rsdmb8 - tM4G/pUCMQDmb+Nqfayu4OfJC+HTPnckghV4/5KOyCTF2Zv/DfnLz6xLOMFj - yN58WOB2WdwOpKUwggIiMIIBqKADAgECAggft56T3kZN5TAKBggqhkjOPQQD - AzBDMRcwFQYDVQQDDA5JQ0UgUm9vdCBDQSAyNjETMBEGA1UECgwKQXBwbGUg - SW5jLjETMBEGA1UECAwKQ2FsaWZvcm5pYTAeFw0xNzAzMjMwMDMzNTlaFw0x - NzAzMjMyMjM4MjFaMEwxIDAeBgNVBAMMF0lDRS1Sb290Q0EyNi1EYXRhQ2Vu - dGVyMRMwEQYDVQQKDApBcHBsZSBJbmMuMRMwEQYDVQQIDApDYWxpZm9ybmlh - MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEm6v8kfnQdiJOJ8EVqGybx1LPF6vE - Y5+//BmiIF637fYZRD4qmMw0LOvaxVf9hLZVnxb8/Z+RQ8uIpTqGkImaqNz0 - 9XG6Ngljbw1MdewuRpy3Klp92Cj77IyU+hHofL/Mo2AwXjAMBgNVHRMBAf8E - AjAAMB8GA1UdIwQYMBaAFGxr4GslWxQI73tCWbDHMmSKsBbGMB0GA1UdDgQW - BBTkTMdD3aGst2h1cHW59+PiRGFvdzAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZI - zj0EAwMDaAAwZQIxAMehHNdobAMi4G1fhLC0WkRzw28WwBnYdTSZmcJhD8aS - xvsCJPZNVEVPzGB/vne+BAIwVbNVr0vKDfp+A//Fe7q0bFSmH/vmPuv8gsIA - uTu4xGisbIjxM4HdCgl0aHeje2flMIIB+jCCAYGgAwIBAgIINKgm1LOyGeEw - CgYIKoZIzj0EAwMwQzEXMBUGA1UEAwwOSUNFIFJvb3QgQ0EgMjYxEzARBgNV - BAoMCkFwcGxlIEluYy4xEzARBgNVBAgMCkNhbGlmb3JuaWEwHhcNMTcwMzIy - MjIzODIxWhcNMTcwMzIzMjIzODIxWjBDMRcwFQYDVQQDDA5JQ0UgUm9vdCBD - QSAyNjETMBEGA1UECgwKQXBwbGUgSW5jLjETMBEGA1UECAwKQ2FsaWZvcm5p - YTB2MBAGByqGSM49AgEGBSuBBAAiA2IABGJZBDAT6/nOgy1VGm9V4ml0Uzv7 - Vx8KPNCdKk6iDu8+CvMDhF+AVSs6RfhUK0v7qu9/ycSZvbzB0e8MUDgsYgm8 - tkega+5mZd12RuywBLXMKV8yXKZgrS5inn8oVHRGaqNCMEAwDwYDVR0TAQH/ - BAUwAwEB/zAdBgNVHQ4EFgQUbGvgayVbFAjve0JZsMcyZIqwFsYwDgYDVR0P - AQH/BAQDAgIEMAoGCCqGSM49BAMDA2cAMGQCMHIFi0/ZrNShP/26LBgFRumV - eHjYUwEQkCwKMbRmgLnNfOvzVbBc+odylRPSFYClwwIwPoXOlNkO+KVx2IJZ - Fz1WNk5hCGDb4kmL4A5gT366PQ+AqEXFO4hiW7Hw+wzVfUJb//////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////// - //////////////////////////////////////////////8= - - RestorePSI-PartialDigest - - hAAAAAAXBgChvpu100y61uQv82gvjQmqYsKffUbencBIlk967kfLID07mZb0 - Q0e33R9LVKu0BrHs6qhbgywkubV4J6JjGO4i - - - generator - 0x91f3406621718ea5 - updateInstall - - @ServerVersion - 2.1.0 - ApImg4Ticket - - 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 - lNzGoIy2JpOEwbrAeEpj/cfeG2IJ66PdfCbmSuZ/QM8SXCOU2pQ7yHfG9hbK - xs4eIqhCqRYeJSBtryxC0nMuy5Cz5NF345E/gzn1I3aheBHfsliaI4VU6BMV - 661kUGQzn28GhN2LM4U1nbxcSNPNWeHEjuMAJYLJ8WgzU1LKLjSWJhRZNy1D - BAI6kj3VOGDOyTleRWr6WAuz4DPDG+78j+K5skEFB8gGnPaQ6uL+ulJf5a4w - I/+OPeaG1ZkrlYAUSS8cU2bffjTlCMirTm0uZHAx5sbq1F2twWLghQgOAkcY - huVaDIH4a5C3prUJpRUQx/wK8mwq5ALQ4eBxKnoQWNILcCeFDTrd2nsQCrdX - EdWWpTgPDaO02ZqfbaGgHTKBjkwy3pL0OFF3u6HcEMF4FV8/V8jCqTXxNUlP - j3sX7mmGMreCoqOF6JQzIuqDkKbCPnTivTVEBnS2ziB0VwvYV5oE4JT86fXN - lHyyUNDc5pngd7kEDPlv5reCK6ivtJMOKuDGwguB/BWzVbgwggauMIIGqjCC - BJKgAwIBAgIIelM6HtOMN/owDQYJKoZIhvcNAQEMBQAwSzEnMCUGA1UEAwwe - QXBwbGUgU2VjdXJlIEJvb3QgUm9vdCBDQSAtIEcyMRMwEQYDVQQKDApBcHBs - ZSBJbmMuMQswCQYDVQQGEwJVUzAeFw0xNjEwMDUxNzUxNDZaFw0zNDEyMTQy - MDEzMTBaMFYxMjAwBgNVBAMMKVQ4MDIwLVRzc0xpdmUtTWFuaWZlc3RLZXkt - UmV2QS1EYXRhQ2VudGVyMRMwEQYDVQQKDApBcHBsZSBJbmMuMQswCQYDVQQG - EwJVUzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANZvrkUYLQWt - 429QMxHykbXY+SlB72SZP4foKJbL/C19zarqmkZ9mKqXBp+8lWyRFxUa97K9 - a2VUBuqrnVWz5XkMbvIAxOs3RYj0v5andHKHrnWVdipkg4i2SYifjXqVKePR - F8qnmUOBRPaxJ4YwZ8pgGT/ToaUAjDMo8suiEW/YTx0qzwNlR/XnHAOTKN/n - IM79znd+kT+elnbXLXUwNfMozRmi4LlACiBhmrOGtw4dSDso8mvbEnzWs5mj - xVuYwKMinDFRdXWz2lYXbothVk8rOgw9nz1WWT8HsDKJSyurT1zZsZcsjH+v - ryFyQE6z5vZvW6zQFb1K0bA6OKil114lpviz4Hu8k4BsNz/zDiktFAaqk0ou - MdeCBRolhtNOhXRtBkWQloFmnv6edgnKquE15CuxU5+p58IrxVm0xr9RlPtZ - ifQpTY/Um1XSk/i2rE6Dsm5yxJ8T0inG4SFwPqv56GctPumK2AsRAvJ+PMnX - PDAl4UrwJdyRB54NrOviNB0LmwN3vWNrAGO24tvOc7ru/BzOFItI1PmHUPsB - VQbu9TDXIhaooZI9UwNy5eSw4qmPAxdkotE5G8Vd/NzJMXPne5/cwkuPYA5i - AyPSRdoVnlMNyKiBeEAQ2JXy9Y5oFx96FN7UvZckHUpNjA69coSseu1ni4Ng - 8SFzo49m+7pbAgMBAAGjggGFMIIBgTAdBgNVHQ4EFgQU1KnLHfMFqmrbYXWT - x1Nob4u9XlgwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRo6VlQRfFdB/k/ - xCb8HCdifZ4TlDAOBgNVHQ8BAf8EBAMCB4AwggEfBgoqhkiG92NkBgEPAQH/ - BIIBDDGCAQj/hOqFnFCBtjCBsxYETUFOUDGBqv+EkrmGSAwwChYEQk5DSKAC - BQD/hJK9pEQMMAoWBEJPUkSgAgUA/4SalaBPCzAJFgRDRVBPAgEB/4SaoZJQ - DTALFgRDSElQAgMAgCD/hJrBpE8MMAoWBENQUk+gAgUA/4SazYpDDDAKFgRD - U0VDoAIFAP+Eqo2SRAwwChYERUNJRKACBQD/hZqRnk0LMAkWBFNET00CAQH/ - h5u53m4MMAoWBHNub26gAgUA/4T6iZRQQzBBFgRPQkpQMTn/hKKdplQMMAoW - BERHU1SgAgUA/4SqwaRPDDAKFgRFUFJPoAIFAP+Eqs2KQwwwChYERVNFQ6AC - BQAwDQYJKoZIhvcNAQEMBQADggIBALsTAE9L0ji+kvwNJxnc1wUPRyJMlOxa - y5ke9Sf5DP3E7TNZObEuUjoEfX5J9bBzUyzu0wmRGNbHomgS4yIZJQCRVckR - 8x9PcxMMT105g3Lnv3VYgM3Fh+hkuVVXHFaitO2BJeLAF18aD++HcLmehJuQ - ZpngV9qSmwoCbgo86AVyI9PamPGCmvMTADICPHDc8GRI6skClEtgbwRF+E0E - 3imcbTsBFgB45oxQxcsSSAQajpLSchaqZDukINrv8dFNqOa7J/EeN09Wg0ea - H7JMHpB7Ec/yujuPawVQfCQBTh1filfTUV4t4o9QsQSLFBPNIoueJrHBgvuR - mglvdqbH5Jm3Wc1rNaP9TbNpgc5EzRxpscUf+6vI8dftSxdfJ2siUCnzIL6/ - j5BG20pUt2PDDeHv66JhvVn2U04/k8vRVtOswUtU7qbBjWqQFtlGFOdFrNpE - tDZOCk1zDJMByH87c0vlrTF2fgLDoz0w8haMnmB4k/QpXTaVxUEwqJXNPuYE - JF+L9WiRLVqKSJWuX8yO0scdaWROMYimJbr++ZRn7KM0aAPIMbJWt10I++hL - N9/5ZltzpDOCH30kcjNj0o4YPJA0JopajoeWYjZJLcgrTkAyyXKVWtMDiPft - HHbFds1exDk7TAGAvsK4CjwGjZv+XLi016o44VQ9cKMSsVyjbD6g - - BBTicket - - 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 - - BasebandFirmware - - PSI-Blob - - uAdSkmHpcSwVWKDzygWmqnvYDxYX3xxyYntTLpR7VvXpYCQ7x1jt - 1RtO7MX2sip1JQe25iiu3yp5m6PGajimZJ/px8+sasaJ7tGxvv3N - 1gL///////////////////////////////////////////////// - ////83AldmvQo4+m5zpBMGUCMQD1aokFdFmIioZ3rei28bASRjyz - 8q2bZLikSyYlP1Ip9zAZnbaLbncwaJ1y9WVAgecCMH5Lhxw6bMOZ - xulZ1Aoqw3IV708X1VxSjnuTgdH1z2DPl4cK9G++yhZztpJs2J80 - S/8wggIiMIIBqKADAgECAggft56T3kZN5TAKBggqhkjOPQQDAzBD - MRcwFQYDVQQDDA5JQ0UgUm9vdCBDQSAyNjETMBEGA1UECgwKQXBw - bGUgSW5jLjETMBEGA1UECAwKQ2FsaWZvcm5pYTAeFw0xNzAzMjMw - MDMzNTlaFw0xNzAzMjMyMjM4MjFaMEwxIDAeBgNVBAMMF0lDRS1S - b290Q0EyNi1EYXRhQ2VudGVyMRMwEQYDVQQKDApBcHBsZSBJbmMu - MRMwEQYDVQQIDApDYWxpZm9ybmlhMHYwEAYHKoZIzj0CAQYFK4EE - ACIDYgAEm6v8kfnQdiJOJ8EVqGybx1LPF6vEY5+//BmiIF637fYZ - RD4qmMw0LOvaxVf9hLZVnxb8/Z+RQ8uIpTqGkImaqNz09XG6Nglj - bw1MdewuRpy3Klp92Cj77IyU+hHofL/Mo2AwXjAMBgNVHRMBAf8E - AjAAMB8GA1UdIwQYMBaAFGxr4GslWxQI73tCWbDHMmSKsBbGMB0G - A1UdDgQWBBTkTMdD3aGst2h1cHW59+PiRGFvdzAOBgNVHQ8BAf8E - BAMCB4AwCgYIKoZIzj0EAwMDaAAwZQIxAMehHNdobAMi4G1fhLC0 - WkRzw28WwBnYdTSZmcJhD8aSxvsCJPZNVEVPzGB/vne+BAIwVbNV - r0vKDfp+A//Fe7q0bFSmH/vmPuv8gsIAuTu4xGisbIjxM4HdCgl0 - aHeje2flMIIB+jCCAYGgAwIBAgIINKgm1LOyGeEwCgYIKoZIzj0E - AwMwQzEXMBUGA1UEAwwOSUNFIFJvb3QgQ0EgMjYxEzARBgNVBAoM - CkFwcGxlIEluYy4xEzARBgNVBAgMCkNhbGlmb3JuaWEwHhcNMTcw - MzIyMjIzODIxWhcNMTcwMzIzMjIzODIxWjBDMRcwFQYDVQQDDA5J - Q0UgUm9vdCBDQSAyNjETMBEGA1UECgwKQXBwbGUgSW5jLjETMBEG - A1UECAwKQ2FsaWZvcm5pYTB2MBAGByqGSM49AgEGBSuBBAAiA2IA - BGJZBDAT6/nOgy1VGm9V4ml0Uzv7Vx8KPNCdKk6iDu8+CvMDhF+A - VSs6RfhUK0v7qu9/ycSZvbzB0e8MUDgsYgm8tkega+5mZd12Ruyw - BLXMKV8yXKZgrS5inn8oVHRGaqNCMEAwDwYDVR0TAQH/BAUwAwEB - /zAdBgNVHQ4EFgQUbGvgayVbFAjve0JZsMcyZIqwFsYwDgYDVR0P - AQH/BAQDAgIEMAoGCCqGSM49BAMDA2cAMGQCMHIFi0/ZrNShP/26 - LBgFRumVeHjYUwEQkCwKMbRmgLnNfOvzVbBc+odylRPSFYClwwIw - PoXOlNkO+KVx2IJZFz1WNk5hCGDb4kmL4A5gT366PQ+AqEXFO4hi - W7Hw+wzVfUJb//////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////8= - - PSI-PartialDigest - - hAAAAAAXBgDlCXSUM5CIHQNQxTVPJs8Q3F2zW+Ld1p9Q8aM2dCAQ - 4jlLkL9V1Y6MJV5LmCyyc+0+MsTg5CZpbfsNEr3HQXGU - - RestorePSI-Blob - - uAdSkmHpcSwVWKDzygWmqnvYDxYX3xxyYntTLpR7VvXpYCQ7x1jt - 1RtO7MX2sip1PNu/AgJ55Ih4Z6Ge/bYM5R5KJ8Jdymg6mYh7HGI2 - W4f///////////////////////////////////////////////// - ////83AldmvQo4+m5zpBMGQCMBEmHWWUzogrlCrI1Qxv9kScmk4n - AmJELR5NoMpNJRMLGAcNG8vT7gpyGmepzhBMPgIwGRShN3ht2FYE - sKgQMr26waPBDkSTGvKFPKuJXf3mPlw9wHiNfn6V5OSZW6mf/PLI - //8wggIiMIIBqKADAgECAggft56T3kZN5TAKBggqhkjOPQQDAzBD - MRcwFQYDVQQDDA5JQ0UgUm9vdCBDQSAyNjETMBEGA1UECgwKQXBw - bGUgSW5jLjETMBEGA1UECAwKQ2FsaWZvcm5pYTAeFw0xNzAzMjMw - MDMzNTlaFw0xNzAzMjMyMjM4MjFaMEwxIDAeBgNVBAMMF0lDRS1S - b290Q0EyNi1EYXRhQ2VudGVyMRMwEQYDVQQKDApBcHBsZSBJbmMu - MRMwEQYDVQQIDApDYWxpZm9ybmlhMHYwEAYHKoZIzj0CAQYFK4EE - ACIDYgAEm6v8kfnQdiJOJ8EVqGybx1LPF6vEY5+//BmiIF637fYZ - RD4qmMw0LOvaxVf9hLZVnxb8/Z+RQ8uIpTqGkImaqNz09XG6Nglj - bw1MdewuRpy3Klp92Cj77IyU+hHofL/Mo2AwXjAMBgNVHRMBAf8E - AjAAMB8GA1UdIwQYMBaAFGxr4GslWxQI73tCWbDHMmSKsBbGMB0G - A1UdDgQWBBTkTMdD3aGst2h1cHW59+PiRGFvdzAOBgNVHQ8BAf8E - BAMCB4AwCgYIKoZIzj0EAwMDaAAwZQIxAMehHNdobAMi4G1fhLC0 - WkRzw28WwBnYdTSZmcJhD8aSxvsCJPZNVEVPzGB/vne+BAIwVbNV - r0vKDfp+A//Fe7q0bFSmH/vmPuv8gsIAuTu4xGisbIjxM4HdCgl0 - aHeje2flMIIB+jCCAYGgAwIBAgIINKgm1LOyGeEwCgYIKoZIzj0E - AwMwQzEXMBUGA1UEAwwOSUNFIFJvb3QgQ0EgMjYxEzARBgNVBAoM - CkFwcGxlIEluYy4xEzARBgNVBAgMCkNhbGlmb3JuaWEwHhcNMTcw - MzIyMjIzODIxWhcNMTcwMzIzMjIzODIxWjBDMRcwFQYDVQQDDA5J - Q0UgUm9vdCBDQSAyNjETMBEGA1UECgwKQXBwbGUgSW5jLjETMBEG - A1UECAwKQ2FsaWZvcm5pYTB2MBAGByqGSM49AgEGBSuBBAAiA2IA - BGJZBDAT6/nOgy1VGm9V4ml0Uzv7Vx8KPNCdKk6iDu8+CvMDhF+A - VSs6RfhUK0v7qu9/ycSZvbzB0e8MUDgsYgm8tkega+5mZd12Ruyw - BLXMKV8yXKZgrS5inn8oVHRGaqNCMEAwDwYDVR0TAQH/BAUwAwEB - /zAdBgNVHQ4EFgQUbGvgayVbFAjve0JZsMcyZIqwFsYwDgYDVR0P - AQH/BAQDAgIEMAoGCCqGSM49BAMDA2cAMGQCMHIFi0/ZrNShP/26 - LBgFRumVeHjYUwEQkCwKMbRmgLnNfOvzVbBc+odylRPSFYClwwIw - PoXOlNkO+KVx2IJZFz1WNk5hCGDb4kmL4A5gT366PQ+AqEXFO4hi - W7Hw+wzVfUJb//////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////////////////////////// - //////////////////////////////8= - - RestorePSI-PartialDigest - - hAAAAAAXBgChvpu100y61uQv82gvjQmqYsKffUbencBIlk967kfL - ID07mZb0Q0e33R9LVKu0BrHs6qhbgywkubV4J6JjGO4i - - - - noNonce - - @ServerVersion - 2.1.0 - ApImg4Ticket - - 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 - /BKKwp7kKR82hQnjaIsm1N43tU6xhck9NQ8DwkWq3ZrPsAwy58Hci09prJlx - CbYOWSnA4CFaUB4O0LGEYfPOb3Av6M27YAjZb/uNzVADlwc7QmEX5EDA/y9l - +/ju1il6+OE3p/zEtoabmYN+vDHXMlvZ+HaTcW/la/t/yBVRNo3S7DK+EWX1 - ZIo8zQYh0cUYH740/IQ4+JvCcyjxNSQQ0mII3BfekOpRmmdlyCDYxIfctnwO - DIcT3Bgi87AuihDQgfCo2jPM/jDMmurDGn/eGMPMXyciZq9mWxbjYEmMUfCc - 0YZ63P4aXE6idiIh8lO7Kb3NXltJ6cwFZtZw3X7Md+N2pILRWLlHpdxdt/Oe - piu5oOsCjROoJF65AVG2vI5rPQZFQeoexbT8obt9i2fHyRgfmcXvCuim7AQd - UDA3w07S5TxnGTxRr5ZoItSZzTKfwTgxzbisL/rsvQZxh7KjocwSuyYEOIUA - EDCCBq4wggaqMIIEkqADAgECAgh6Uzoe04w3+jANBgkqhkiG9w0BAQwFADBL - MScwJQYDVQQDDB5BcHBsZSBTZWN1cmUgQm9vdCBSb290IENBIC0gRzIxEzAR - BgNVBAoMCkFwcGxlIEluYy4xCzAJBgNVBAYTAlVTMB4XDTE2MTAwNTE3NTE0 - NloXDTM0MTIxNDIwMTMxMFowVjEyMDAGA1UEAwwpVDgwMjAtVHNzTGl2ZS1N - YW5pZmVzdEtleS1SZXZBLURhdGFDZW50ZXIxEzARBgNVBAoMCkFwcGxlIElu - Yy4xCzAJBgNVBAYTAlVTMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC - AgEA1m+uRRgtBa3jb1AzEfKRtdj5KUHvZJk/h+golsv8LX3NquqaRn2YqpcG - n7yVbJEXFRr3sr1rZVQG6qudVbPleQxu8gDE6zdFiPS/lqd0coeudZV2KmSD - iLZJiJ+NepUp49EXyqeZQ4FE9rEnhjBnymAZP9OhpQCMMyjyy6IRb9hPHSrP - A2VH9eccA5Mo3+cgzv3Od36RP56WdtctdTA18yjNGaLguUAKIGGas4a3Dh1I - Oyjya9sSfNazmaPFW5jAoyKcMVF1dbPaVhdui2FWTys6DD2fPVZZPwewMolL - K6tPXNmxlyyMf6+vIXJATrPm9m9brNAVvUrRsDo4qKXXXiWm+LPge7yTgGw3 - P/MOKS0UBqqTSi4x14IFGiWG006FdG0GRZCWgWae/p52Ccqq4TXkK7FTn6nn - wivFWbTGv1GU+1mJ9ClNj9SbVdKT+LasToOybnLEnxPSKcbhIXA+q/noZy0+ - 6YrYCxEC8n48ydc8MCXhSvAl3JEHng2s6+I0HQubA3e9Y2sAY7bi285zuu78 - HM4Ui0jU+YdQ+wFVBu71MNciFqihkj1TA3Ll5LDiqY8DF2Si0TkbxV383Mkx - c+d7n9zCS49gDmIDI9JF2hWeUw3IqIF4QBDYlfL1jmgXH3oU3tS9lyQdSk2M - Dr1yhKx67WeLg2DxIXOjj2b7ulsCAwEAAaOCAYUwggGBMB0GA1UdDgQWBBTU - qcsd8wWqatthdZPHU2hvi71eWDAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaA - FGjpWVBF8V0H+T/EJvwcJ2J9nhOUMA4GA1UdDwEB/wQEAwIHgDCCAR8GCiqG - SIb3Y2QGAQ8BAf8EggEMMYIBCP+E6oWcUIG2MIGzFgRNQU5QMYGq/4SSuYZI - DDAKFgRCTkNIoAIFAP+Ekr2kRAwwChYEQk9SRKACBQD/hJqVoE8LMAkWBENF - UE8CAQH/hJqhklANMAsWBENISVACAwCAIP+EmsGkTwwwChYEQ1BST6ACBQD/ - hJrNikMMMAoWBENTRUOgAgUA/4SqjZJEDDAKFgRFQ0lEoAIFAP+FmpGeTQsw - CRYEU0RPTQIBAf+Hm7nebgwwChYEc25vbqACBQD/hPqJlFBDMEEWBE9CSlAx - Of+Eop2mVAwwChYEREdTVKACBQD/hKrBpE8MMAoWBEVQUk+gAgUA/4SqzYpD - DDAKFgRFU0VDoAIFADANBgkqhkiG9w0BAQwFAAOCAgEAuxMAT0vSOL6S/A0n - GdzXBQ9HIkyU7FrLmR71J/kM/cTtM1k5sS5SOgR9fkn1sHNTLO7TCZEY1sei - aBLjIhklAJFVyRHzH09zEwxPXTmDcue/dViAzcWH6GS5VVccVqK07YEl4sAX - XxoP74dwuZ6Em5BmmeBX2pKbCgJuCjzoBXIj09qY8YKa8xMAMgI8cNzwZEjq - yQKUS2BvBEX4TQTeKZxtOwEWAHjmjFDFyxJIBBqOktJyFqpkO6Qg2u/x0U2o - 5rsn8R43T1aDR5ofskwekHsRz/K6O49rBVB8JAFOHV+KV9NRXi3ij1CxBIsU - E80ii54mscGC+5GaCW92psfkmbdZzWs1o/1Ns2mBzkTNHGmxxR/7q8jx1+1L - F18nayJQKfMgvr+PkEbbSlS3Y8MN4e/romG9WfZTTj+Ty9FW06zBS1TupsGN - apAW2UYU50Ws2kS0Nk4KTXMMkwHIfztzS+WtMXZ+AsOjPTDyFoyeYHiT9Cld - NpXFQTColc0+5gQkX4v1aJEtWopIla5fzI7Sxx1pZE4xiKYluv75lGfsozRo - A8gxsla3XQj76Es33/lmW3OkM4IffSRyM2PSjhg8kDQmilqOh5ZiNkktyCtO - QDLJcpVa0wOI9+0cdsV2zV7EOTtMAYC+wrgKPAaNm/5cuLTXqjjhVD1woxKx - XKNsPqA= - - - - diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index 0a1a17a6..e0e3adc9 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -147,6 +147,7 @@ static struct bbdevice bbdevices[] = { {"iPhone11,2", 165673526, 12}, // iPhone XS {"iPhone11,4", 165673526, 12}, // iPhone XS Max (China) {"iPhone11,6", 165673526, 12}, // iPhone XS Max + {"iPhone11,8", 165673526, 12}, // iPhone XR // iPads {"iPad1,1", 0, 0}, // iPad (1st gen) From 976eca608fff411e20bc1c3a514d7ae03ebe35c8 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 19 Jan 2019 07:51:50 -0800 Subject: [PATCH 33/82] Added iPad7,6 bbgcid --- tsschecker/tsschecker.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index e0e3adc9..861ba6b8 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -186,6 +186,7 @@ static struct bbdevice bbdevices[] = { {"iPad7,3", 0, 0}, // iPad Pro (10,5", Wi-Fi) {"iPad7,4", 2315222105, 4}, // iPad Pro (10,5", Cellular) {"iPad7,5", 0, 0}, // iPad (6th gen, 2018, Wi-Fi) + {"iPad7,6", 3840149528, 4}, // iPad (6th gen, 2018, Cellular) {"iPad8,1", 0, 0}, // iPad Pro (11", Wi-Fi) {"iPad8,2", 0, 0}, // iPad Pro (11", 1 TB model, Wi-Fi) {"iPad8,5", 0, 0}, // iPad Pro (12,9", 3rd gen, Wi-Fi) From 1993bd89d1b69cc0b2cac28da050f22116d5da1e Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 19 Jan 2019 07:53:31 -0800 Subject: [PATCH 34/82] Added iPad8,3 bbgcid --- tsschecker/tsschecker.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index 861ba6b8..d2a04d23 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -189,6 +189,7 @@ static struct bbdevice bbdevices[] = { {"iPad7,6", 3840149528, 4}, // iPad (6th gen, 2018, Cellular) {"iPad8,1", 0, 0}, // iPad Pro (11", Wi-Fi) {"iPad8,2", 0, 0}, // iPad Pro (11", 1 TB model, Wi-Fi) + {"iPad8,3", 165673526, 12}, // iPad Pro 11", Cellular) {"iPad8,5", 0, 0}, // iPad Pro (12,9", 3rd gen, Wi-Fi) {"iPad8,6", 0, 0}, // iPad Pro (12,9", 3rd gen, 1 TB model, Wi-Fi) From c200e4d00ee0f492c6c29575d351dc1f765cd60d Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 19 Jan 2019 07:54:46 -0800 Subject: [PATCH 35/82] Added iPad8,7 bbgcid --- tsschecker/tsschecker.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index d2a04d23..236a0013 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -192,6 +192,7 @@ static struct bbdevice bbdevices[] = { {"iPad8,3", 165673526, 12}, // iPad Pro 11", Cellular) {"iPad8,5", 0, 0}, // iPad Pro (12,9", 3rd gen, Wi-Fi) {"iPad8,6", 0, 0}, // iPad Pro (12,9", 3rd gen, 1 TB model, Wi-Fi) + {"iPad8,7", 165673526, 12}, // iPad Pro 12,9", 3rd gen, Cellular) // Apple Watches {"Watch3,3", 0, 0}, // Apple Watch Series 3 (38mm) From 169f967bffc1126a9f7f4d52d6d36a4874527b86 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 19 Jan 2019 07:56:55 -0800 Subject: [PATCH 36/82] Added iPad8,4 bbgcid --- tsschecker/tsschecker.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index 236a0013..12b12d2a 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -190,6 +190,7 @@ static struct bbdevice bbdevices[] = { {"iPad8,1", 0, 0}, // iPad Pro (11", Wi-Fi) {"iPad8,2", 0, 0}, // iPad Pro (11", 1 TB model, Wi-Fi) {"iPad8,3", 165673526, 12}, // iPad Pro 11", Cellular) + {"iPad8,4", 165673526, 12}, // iPad Pro 11", 1 TB model, Cellular) {"iPad8,5", 0, 0}, // iPad Pro (12,9", 3rd gen, Wi-Fi) {"iPad8,6", 0, 0}, // iPad Pro (12,9", 3rd gen, 1 TB model, Wi-Fi) {"iPad8,7", 165673526, 12}, // iPad Pro 12,9", 3rd gen, Cellular) From 1085dd5e43b2561076394fd02ffa4874668a3c2d Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 19 Jan 2019 07:58:12 -0800 Subject: [PATCH 37/82] Added iPad8,8 bbgcid --- tsschecker/tsschecker.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index 12b12d2a..3b96a8c4 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -194,6 +194,7 @@ static struct bbdevice bbdevices[] = { {"iPad8,5", 0, 0}, // iPad Pro (12,9", 3rd gen, Wi-Fi) {"iPad8,6", 0, 0}, // iPad Pro (12,9", 3rd gen, 1 TB model, Wi-Fi) {"iPad8,7", 165673526, 12}, // iPad Pro 12,9", 3rd gen, Cellular) + {"iPad8,8", 165673526, 12}, // iPad Pro 12,9", 3rd gen, 1 TB model, Cellular) // Apple Watches {"Watch3,3", 0, 0}, // Apple Watch Series 3 (38mm) From 0c065126605371a21b318f6995aa7e92ad948c28 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 19 Jan 2019 07:58:49 -0800 Subject: [PATCH 38/82] removed Apple Watch bbgcids --- tsschecker/tsschecker.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index 3b96a8c4..7ee6dfaf 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -196,12 +196,6 @@ static struct bbdevice bbdevices[] = { {"iPad8,7", 165673526, 12}, // iPad Pro 12,9", 3rd gen, Cellular) {"iPad8,8", 165673526, 12}, // iPad Pro 12,9", 3rd gen, 1 TB model, Cellular) - // Apple Watches - {"Watch3,3", 0, 0}, // Apple Watch Series 3 (38mm) - {"Watch3,4", 0, 0}, // Apple Watch Series 3 (42mm) - {"Watch4,1", 0, 0}, // Apple Watch Series 4 (40mm) - {"Watch4,2", 0, 0}, // Apple Watch Series 4 (44mm) - // Apple TVs {"AppleTV1,1", 0, 0}, // 1st gen {"AppleTV2,1", 0, 0}, // 2nd gen From 8e942f75d234134344896952715438b64c498686 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 19 Jan 2019 07:59:40 -0800 Subject: [PATCH 39/82] Added zlib dependency Fix compiling with latest libfragmentzip --- configure.ac | 3 ++- tsschecker/Makefile.am | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index f89fb227..1d01bdbc 100644 --- a/configure.ac +++ b/configure.ac @@ -36,7 +36,8 @@ AC_ARG_WITH( ) PKG_CHECK_MODULES(libplist, libplist >= 1.0) -PKG_CHECK_MODULES(libcurl, libcurl >= 1.0) +PKG_CHECK_MODULES(curl, libcurl >= 1.0) +PKG_CHECK_MODULES(zlib, zlib >= 1.0) PKG_CHECK_MODULES(libfragmentzip, libfragmentzip >= 1.0) AS_IF([test "x$with_libcrypto" != xno], [PKG_CHECK_MODULES(libcrypto, libcrypto >= 1.0)] diff --git a/tsschecker/Makefile.am b/tsschecker/Makefile.am index 56f83ae0..afe0a478 100644 --- a/tsschecker/Makefile.am +++ b/tsschecker/Makefile.am @@ -1,5 +1,5 @@ -AM_CFLAGS = $(libplist_CFLAGS) $(libfragmentzip_CFLAGS) $(libcurl_CFLAGS) $(libcrypto_CFLAGS) $(libirecovery_CFLAGS) -I$(top_srcdir)/external/libfragmentzip/include -I$(top_srcdir)/external/jssy/jssy/ -AM_LDFLAGS = $(libplist_LIBS) $(libfragmentzip_LIBS) $(libcurl_LIBS) $(libcrypto_LIBS) $(libirecovery_LIBS) -lm +AM_CFLAGS = $(libplist_CFLAGS) $(zlib_CFLAGS) $(libfragmentzip_CFLAGS) $(libcurl_CFLAGS) $(libcrypto_CFLAGS) $(libirecovery_CFLAGS) -I$(top_srcdir)/external/libfragmentzip/include -I$(top_srcdir)/external/jssy/jssy/ +AM_LDFLAGS = $(libplist_LIBS) $(libcurl_LIBS) $(libcrypto_LIBS) $(libirecovery_LIBS) $(zlib_LIBS) $(libfragmentzip_LIBS) -lm noinst_LIBRARIES = libjssy.a libjssy_a_CFLAGS = $(AM_CFLAGS) From d38da53e2c5dc22185f69683c7bf5c1505189cc1 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Tue, 22 Jan 2019 12:05:13 -0800 Subject: [PATCH 40/82] ApNonces: recommendations --- nonces.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nonces.txt b/nonces.txt index 70635414..5a54a0f5 100644 --- a/nonces.txt +++ b/nonces.txt @@ -6,11 +6,11 @@ Recommmended save blobs with this generators: 0xedeeb72d7575e360 0x0000000000000000 -Recovery collision APNonces: +Recovery collision APNonces (some A7 devices with iOS 9.1-10.2): 9e4c518009d00df190a450b3b47691768812360c 9f4aeec726e7c682339ddb3c6c2dec52662dc517 -DFU collision APNonces (not for all devices/firmwares, some collisioned): +DFU collision APNonces (for some A7 / A8(X) devices, some collisioned): 6b83f831a6305ae90d57a78ba8eb9d81e7a9058f 6b81a2c3cdf87404dee28330f7fcb0ee62c425a1 778282f0cf6e5234446d88ebc5dcfde81f415b57 From 467c6d6a19ec1a5de8bd273aec92cb49aacb37a3 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Tue, 22 Jan 2019 12:17:30 -0800 Subject: [PATCH 41/82] Some changing localize --- configure.ac | 4 ++-- tsschecker/all.h | 4 ++-- tsschecker/main.c | 55 +++++++++++++++++++++++------------------------ 3 files changed, 31 insertions(+), 32 deletions(-) diff --git a/configure.ac b/configure.ac index 1d01bdbc..f6e5efd1 100644 --- a/configure.ac +++ b/configure.ac @@ -13,8 +13,8 @@ AC_PROG_LIBTOOL AC_CONFIG_MACRO_DIRS([m4]) # Version bump -CFLAGS+=" -D TSSCHECKER_VERSION_COMMIT_COUNT=\\\"$(git rev-list --count HEAD | tr -d '\n')\\\"" -CFLAGS+=" -D TSSCHECKER_VERSION_COMMIT_SHA=\\\"$(git rev-parse HEAD | tr -d '\n')\\\"" +CFLAGS+=" -D TSSCHECKER_VERSION_COUNT=\\\"$(git rev-list --count HEAD | tr -d '\n')\\\"" +CFLAGS+=" -D TSSCHECKER_VERSION_SHA=\\\"$(git rev-parse HEAD | tr -d '\n')\\\"" # Checks for libraries. AC_CANONICAL_HOST diff --git a/tsschecker/all.h b/tsschecker/all.h index 17dada46..295c7711 100644 --- a/tsschecker/all.h +++ b/tsschecker/all.h @@ -11,8 +11,8 @@ // version bump #ifdef DEBUG // this is for developing with Xcode -#define TSSCHECKER_VERSION_COMMIT_COUNT "Debug" -#define TSSCHECKER_VERSION_COMMIT_SHA "Build: " __DATE__ " " __TIME__ +#define TSSCHECKER_VERSION_COUNT "Debug" +#define TSSCHECKER_VERSION_SHA "Build: " __DATE__ " " __TIME__ #else #endif diff --git a/tsschecker/main.c b/tsschecker/main.c index 717d288d..804b81b5 100644 --- a/tsschecker/main.c +++ b/tsschecker/main.c @@ -44,19 +44,19 @@ static struct option longopts[] = { { "update-install", optional_argument, NULL, 'u' }, { "boardconfig", required_argument, NULL, 'B' }, { "buildid", required_argument, NULL, 'Z' }, - { "debug", no_argument, NULL, 0 }, - { "list-devices", no_argument, NULL, 1 }, - { "list-ios", no_argument, NULL, 2 }, - { "save-path", required_argument, NULL, 3 }, - { "print-tss-request", no_argument, NULL, 4 }, - { "print-tss-response", no_argument, NULL, 5 }, - { "beta", no_argument, NULL, 6 }, - { "nocache", no_argument, NULL, 7 }, - { "apnonce", required_argument, NULL, 8 }, - { "sepnonce", required_argument, NULL, 9 }, - { "raw", required_argument, NULL, 10 }, + { "debug", no_argument, NULL, 0 }, + { "list-devices", no_argument, NULL, 1 }, + { "list-ios", no_argument, NULL, 2 }, + { "save-path", required_argument, NULL, 3 }, + { "print-tss-request", no_argument, NULL, 4 }, + { "print-tss-response", no_argument, NULL, 5 }, + { "beta", no_argument, NULL, 6 }, + { "nocache", no_argument, NULL, 7 }, + { "apnonce", required_argument, NULL, 8 }, + { "sepnonce", required_argument, NULL, 9 }, + { "raw", required_argument, NULL, 10 }, { "generator", required_argument, NULL, 'g' }, - { "bbsnum", required_argument, NULL, 11 }, + { "bbsnum", required_argument, NULL, 11 }, { NULL, 0, NULL, 0 } }; @@ -64,15 +64,15 @@ void cmd_help(){ printf("Usage: tsschecker [OPTIONS]\n"); printf("Works with signing technology on iOS devices\n\n"); printf(" -d, --device MODEL\t\tspecific device by its MODEL (eg. iPhone11,8)\n"); - printf(" -i, --ios VERSION\t\tspecific iOS version (eg. 12.1.2)\n"); - printf(" --buildid BUILDID\t\tspecific buildid instead of iOS version (eg. 16C104)\n"); + printf(" -i, --ios VERSION\t\tspecific iOS version (eg. 12.1.3)\n"); + printf(" --buildid BUILDID\t\tspecific buildid instead of iOS version (eg. 16D40)\n"); printf(" -B, --boardconfig BOARD\tspecific boardconfig instead of iPhone model (eg. n841ap)\n"); printf(" -h, --help\t\t\tprints usage information\n"); printf(" -o, --ota\t\t\tcheck OTA signing status, instead of normal restore\n"); printf(" -b, --no-baseband\t\tdon't check baseband signing status. Request a ticket without baseband\n"); printf(" -m, --build-manifest\t\tmanually specify BuildManifest (can be used with -d)\n"); - printf(" -s, --save\t\t\tsave fetched signing blobs (mostly makes sense with -e)\n"); - printf(" -u, --update-install\t\t\trequest update blob instead of erase\n"); + printf(" -s, --save\t\t\tsave fetched signing tickets (mostly makes sense with -e)\n"); + printf(" -u, --update-install\t\t\request update ticket instead of erase\n"); printf(" -l, --latest\t\t\tuse latest public iOS version instead of manually specifying one\n"); printf(" \t\tespecially useful with -s and -e for saving blobs\n"); printf(" -e, --ecid ECID\t\tmanually specify ECID to be used for fetching blobs, instead of using random ones\n"); @@ -83,14 +83,13 @@ void cmd_help(){ printf(" --save-path PATH\t\tspecify path for saving blobs\n"); printf(" --generator GEN\t\tmanually specify generator in format 0x%%16llx\n"); printf(" -h, --help\t\t\tprints usage information\n"); - printf(" --beta\t\t\trequest ticket for beta instead of normal release (use with -o)\n"); + printf(" --beta\t\t\trequest signing tickets for beta instead of normal release (use with -o)\n"); printf(" --list-devices\t\tlist all known devices\n"); printf(" --list-ios\t\tlist all known iOS versions\n"); printf(" --nocache \t\tignore caches and redownload required files\n"); printf(" --print-tss-request\n"); printf(" --print-tss-response\n"); - printf(" --raw\t\t\tsend raw file to Apple's TSS server (useful for debugging)\n"); - printf("\n"); + printf(" --raw\t\t\tsend raw file to Apple's TSS server (useful for debugging)\n\n"); printf("Homepage: \n"); printf("Original project: \n"); } @@ -151,7 +150,7 @@ char *parseNonce(const char *nonce, size_t *parsedLen){ int main(int argc, const char * argv[]) { int err = 0; int isSigned = 0; - printf("Version: "TSSCHECKER_VERSION_COMMIT_SHA" - "TSSCHECKER_VERSION_COMMIT_COUNT"\n"); // versioning + printf("Version: "TSSCHECKER_VERSION_SHA" - "TSSCHECKER_VERSION_COUNT"\n"); // versioning dbglog = 1; idevicerestore_debug = 0; @@ -289,7 +288,7 @@ int main(int argc, const char * argv[]) { size_t bufSize = 0; FILE *f = fopen(rawFilePath, "rb"); if (!f) - reterror(-100, "[TSSC] failed to read rawfile at \"%s\"\n",rawFilePath); + reterror(-100, "[TSSC] failed to read raw file at \"%s\"\n",rawFilePath); fseek(f, 0, SEEK_END); bufSize = ftell(f); fseek(f, 0, SEEK_SET); @@ -315,7 +314,7 @@ int main(int argc, const char * argv[]) { if ((tmp = (char*)getModelFromBoardconfig(devVals.deviceBoard))) devVals.deviceModel = strdup(tmp); else - reterror(-25, "[TSSC] If you using --boardconfig please also specify devicemodel with -d\n"); + reterror(-25, "[TSSC] If you using --boardconfig please also specify device model with -d\n"); } } @@ -331,31 +330,31 @@ int main(int argc, const char * argv[]) { if (ecid) { if ((devVals.ecid = parseECID(ecid)) == 0){ - reterror(-7, "[TSSC] manually specified ecid=%s, but parsing failed\n",ecid); + reterror(-7, "[TSSC] manually specified ECID=%s, but parsing failed\n",ecid); }else{ - info("[TSSC] manually specified ecid to use, parsed \"%s\" to dec:%lld hex:%llx\n",ecid,devVals.ecid,devVals.ecid); + info("[TSSC] manually specified ECID to use, parsed \"%s\" to dec:%lld hex:%llx\n",ecid,devVals.ecid,devVals.ecid); } } if (apnonce) { if ((devVals.apnonce = parseNonce(apnonce,&devVals.parsedApnonceLen)) ){ - info("[TSSC] manually specified apnonce to use, parsed \"%s\" to hex:",apnonce); + info("[TSSC] manually specified ApNonce to use, parsed \"%s\" to hex:",apnonce); unsigned char *tmp = (unsigned char*)devVals.apnonce; for (int i=0; i< devVals.parsedApnonceLen; i++) info("%02x",*tmp++); info("\n"); }else{ - reterror(-7, "[TSSC] manually specified apnonce=%s, but parsing failed\n",apnonce); + reterror(-7, "[TSSC] manually specified ApNonce=%s, but parsing failed\n",apnonce); } } if (sepnonce) { if ((devVals.sepnonce = parseNonce(sepnonce,&devVals.parsedSepnonceLen)) ){ - info("[TSSC] manually specified sepnonce to use, parsed \"%s\" to hex:",sepnonce); + info("[TSSC] manually specified SepNonce to use, parsed \"%s\" to hex:",sepnonce); unsigned char *tmp = (unsigned char*)devVals.sepnonce; for (int i=0; i< devVals.parsedSepnonceLen; i++) info("%02x",*tmp++); info("\n"); }else{ - reterror(-7, "[TSSC] manually specified sepnonce=%s, but parsing failed\n",sepnonce); + reterror(-7, "[TSSC] manually specified SepNonce=%s, but parsing failed\n",sepnonce); } } From eba44caed65ae198362bda9febde666ef58ce73f Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Tue, 22 Jan 2019 12:22:08 -0800 Subject: [PATCH 42/82] fix cmd localize --- tsschecker/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tsschecker/main.c b/tsschecker/main.c index 804b81b5..a60b0028 100644 --- a/tsschecker/main.c +++ b/tsschecker/main.c @@ -72,7 +72,7 @@ void cmd_help(){ printf(" -b, --no-baseband\t\tdon't check baseband signing status. Request a ticket without baseband\n"); printf(" -m, --build-manifest\t\tmanually specify BuildManifest (can be used with -d)\n"); printf(" -s, --save\t\t\tsave fetched signing tickets (mostly makes sense with -e)\n"); - printf(" -u, --update-install\t\t\request update ticket instead of erase\n"); + printf(" -u, --update-install\t\trequest update ticket instead of erase\n"); printf(" -l, --latest\t\t\tuse latest public iOS version instead of manually specifying one\n"); printf(" \t\tespecially useful with -s and -e for saving blobs\n"); printf(" -e, --ecid ECID\t\tmanually specify ECID to be used for fetching blobs, instead of using random ones\n"); From 90bc41619dfac5a8b3efa015808d9c3008ea8a9e Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Tue, 22 Jan 2019 12:24:58 -0800 Subject: [PATCH 43/82] Added iPad2,6 bbgcid --- tsschecker/tsschecker.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index 7ee6dfaf..030ca51f 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -156,6 +156,7 @@ static struct bbdevice bbdevices[] = { {"iPad2,3", 257, 12}, // iPad 2 CDMA {"iPad2,4", 0, 0}, // iPad 2 Wi-Fi (2012) {"iPad2,5", 0, 0}, // iPad mini (1st gen, Wi-Fi) + {"iPad2,6", 3255536192, 4}, // iPad mini (1st gen, CDMA) {"iPad3,1", 0, 0}, // the new iPad (3rd gen, Wi-Fi) {"iPad3,2", 4, 4}, // the new iPad (3rd gen, CDMA) {"iPad3,3", 4, 4}, // the new iPad (3rd gen, GSM) From c5044ea60e039b9271c762299461abbce51d4d6b Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Tue, 22 Jan 2019 12:27:54 -0800 Subject: [PATCH 44/82] Added iPad2,7 bbgcid --- .gitignore | 2 +- tsschecker/tsschecker.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index cd73b7e3..ef62e5cd 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,6 @@ Makefile.in aclocal.m4 autom4te.cache compile -depcomp config.h config.h.in config.log @@ -15,6 +14,7 @@ config.status config.guess config.sub configure +depcomp external/.DS_Store install-sh libtool diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index 030ca51f..0ed36625 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -157,12 +157,13 @@ static struct bbdevice bbdevices[] = { {"iPad2,4", 0, 0}, // iPad 2 Wi-Fi (2012) {"iPad2,5", 0, 0}, // iPad mini (1st gen, Wi-Fi) {"iPad2,6", 3255536192, 4}, // iPad mini (1st gen, CDMA) + {"iPad2,7", 3255536192, 4}, // iPad mini (1st gen, GSM) {"iPad3,1", 0, 0}, // the new iPad (3rd gen, Wi-Fi) {"iPad3,2", 4, 4}, // the new iPad (3rd gen, CDMA) {"iPad3,3", 4, 4}, // the new iPad (3rd gen, GSM) {"iPad3,4", 0, 0}, // iPad with Retina Display (4th gen, Wi-Fi) - {"iPad3,5", 3255536192, 4}, // iPad with Retina Display (4th gen, Global) - {"iPad3,6", 3255536192, 4}, // iPad with Retina Display (4th gen, Global) + {"iPad3,5", 3255536192, 4}, // iPad with Retina Display (4th gen, CDMA) + {"iPad3,6", 3255536192, 4}, // iPad with Retina Display (4th gen, GSM) {"iPad4,1", 0, 0}, // iPad Air (Wi-Fi) {"iPad4,2", 3554301762, 4}, // iPad Air (Cellular) {"iPad4,3", 3554301762, 4}, // iPad Air (Cellular, China) From d187d6ec8ad8fcbe6eb6e25458aef25d989be38c Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 26 Jan 2019 07:47:10 -0800 Subject: [PATCH 45/82] removed unrequired zlib dependency --- configure.ac | 1 - tsschecker/Makefile.am | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index f6e5efd1..271033cd 100644 --- a/configure.ac +++ b/configure.ac @@ -37,7 +37,6 @@ AC_ARG_WITH( PKG_CHECK_MODULES(libplist, libplist >= 1.0) PKG_CHECK_MODULES(curl, libcurl >= 1.0) -PKG_CHECK_MODULES(zlib, zlib >= 1.0) PKG_CHECK_MODULES(libfragmentzip, libfragmentzip >= 1.0) AS_IF([test "x$with_libcrypto" != xno], [PKG_CHECK_MODULES(libcrypto, libcrypto >= 1.0)] diff --git a/tsschecker/Makefile.am b/tsschecker/Makefile.am index afe0a478..dd1a1c9f 100644 --- a/tsschecker/Makefile.am +++ b/tsschecker/Makefile.am @@ -1,5 +1,5 @@ -AM_CFLAGS = $(libplist_CFLAGS) $(zlib_CFLAGS) $(libfragmentzip_CFLAGS) $(libcurl_CFLAGS) $(libcrypto_CFLAGS) $(libirecovery_CFLAGS) -I$(top_srcdir)/external/libfragmentzip/include -I$(top_srcdir)/external/jssy/jssy/ -AM_LDFLAGS = $(libplist_LIBS) $(libcurl_LIBS) $(libcrypto_LIBS) $(libirecovery_LIBS) $(zlib_LIBS) $(libfragmentzip_LIBS) -lm +AM_CFLAGS = $(libplist_CFLAGS) $(libfragmentzip_CFLAGS) $(libcurl_CFLAGS) $(libcrypto_CFLAGS) $(libirecovery_CFLAGS) -I$(top_srcdir)/external/libfragmentzip/include -I$(top_srcdir)/external/jssy/jssy/ +AM_LDFLAGS = $(libplist_LIBS) $(libcurl_LIBS) $(libcrypto_LIBS) $(libirecovery_LIBS) $(libfragmentzip_LIBS) -lm noinst_LIBRARIES = libjssy.a libjssy_a_CFLAGS = $(AM_CFLAGS) From f7f6fa403ea0aa97fc5f4229a2276f5e05264449 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 26 Jan 2019 07:47:27 -0800 Subject: [PATCH 46/82] ApNonce: more collision for A7 devices --- nonces.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/nonces.txt b/nonces.txt index 5a54a0f5..6dfc77ae 100644 --- a/nonces.txt +++ b/nonces.txt @@ -12,13 +12,21 @@ Recovery collision APNonces (some A7 devices with iOS 9.1-10.2): DFU collision APNonces (for some A7 / A8(X) devices, some collisioned): 6b83f831a6305ae90d57a78ba8eb9d81e7a9058f +7d7bdc28e5eca36dc5bc20c791850f110dc28269 6b81a2c3cdf87404dee28330f7fcb0ee62c425a1 778282f0cf6e5234446d88ebc5dcfde81f415b57 7ce1657233867e988e1b48988ef98fc28ddf20f5 +8b9244eba18e07f3ad9d5eed4f972aa98f0c495e 198365e19ea223bd73ee27faa555ca24ac6ed65d 994bf71da4fd4ba758a8ec6c943a5a610be02edb ee4b7f9b2d7d41bfde4c8390734a83d63c2fe997 8f760412c8653de657e8ea2352f706de2e9ca85c 63e81aabb8e9e45cc756c347e8cdfd9ae7c796ad +1dedf288afea588e803be0737af7ae5ca87d107f 99a7b1ba5977d6c112717cc208a41785aaa7a313 +74f5bbf201cbdcb8a145220fdcc6d82c3ce3a9d8 b05a70468054cfe94251b34b58f28450054f1aa9 +93d5c7ba2844327ccb0a2a705fa8bb186021b459 +728a82a4bf7246939ea5db839ca782604cd97511 +99b5e22d771c0f1c81f70c394e9907993a2db435 +f5cce05e81a9be2ef66ec287f692ffdf20b13860 \ No newline at end of file From a51158cccfb7cd39a0e36586fef791a3353ec91d Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 26 Jan 2019 07:52:48 -0800 Subject: [PATCH 47/82] TSS: fix Savage firmware handling Original commit on idevicerestore: https://github.com/libimobiledevice/idevicerestore/commit/06a7cc2f23c25034183eec0cc9596f4284a4c3c9 --- tsschecker/tss.c | 105 +++++++++++------------------------------------ tsschecker/tss.h | 2 +- 2 files changed, 24 insertions(+), 83 deletions(-) diff --git a/tsschecker/tss.c b/tsschecker/tss.c index b36fe2a5..a88de997 100644 --- a/tsschecker/tss.c +++ b/tsschecker/tss.c @@ -897,7 +897,7 @@ int tss_request_add_se_tags(plist_t request, plist_t parameters, plist_t overrid return 0; } -int tss_request_add_savage_tags(plist_t request, plist_t parameters, plist_t overrides) +int tss_request_add_savage_tags(plist_t request, plist_t parameters, plist_t overrides, char **component_name) { plist_t node = NULL; @@ -978,95 +978,36 @@ int tss_request_add_savage_tags(plist_t request, plist_t parameters, plist_t ove plist_get_bool_val(node, &isprod); node = NULL; - /* add Savage,B0-*-Patch */ - if (isprod) { - comp_name = "Savage,B0-Prod-Patch"; - } else { - comp_name = "Savage,B0-Dev-Patch"; - } - node = plist_access_path(manifest_node, 2, comp_name, "Digest"); - if (!node) { - tsserror("ERROR: Unable to get %s digest from manifest\n", comp_name); - return -1; - } - dict = plist_new_dict(); - plist_dict_set_item(dict, "Digest", plist_copy(node)); - plist_dict_set_item(request, comp_name, dict); - - /* add Savage,B0-*-Patch */ - if (isprod) { - comp_name = "Savage,B0-Prod-PatchVT"; - } else { - comp_name = "Savage,B0-Dev-PatchVT"; - } - node = plist_access_path(manifest_node, 2, comp_name, "Digest"); - if (!node) { - tsserror("ERROR: Unable to get %s digest from manifest\n", comp_name); - return -1; - } - dict = plist_new_dict(); - plist_dict_set_item(dict, "Digest", plist_copy(node)); - plist_dict_set_item(request, comp_name, dict); - - /* add Savage,B2-*-Patch */ - if (isprod) { - comp_name = "Savage,B2-Prod-Patch"; - } else { - comp_name = "Savage,B2-Dev-Patch"; - } - node = plist_access_path(manifest_node, 2, comp_name, "Digest"); - if (!node) { - tsserror("ERROR: Unable to get %s digest from manifest\n", comp_name); - return -1; - } - dict = plist_new_dict(); - plist_dict_set_item(dict, "Digest", plist_copy(node)); - plist_dict_set_item(request, comp_name, dict); - - /* add Savage,B2-*-PatchVT */ - if (isprod) { - comp_name = "Savage,B2-Prod-PatchVT"; - } else { - comp_name = "Savage,B2-Dev-PatchVT"; - } - node = plist_access_path(manifest_node, 2, comp_name, "Digest"); - if (!node) { - tsserror("ERROR: Unable to get %s digest from manifest\n", comp_name); - return -1; + /* get the right Savage component name */ + comp_name = (isprod) ? "Savage,B0-Prod-Patch" : "Savage,B0-Dev-Patch"; + node = plist_dict_get_item(parameters, "Savage,Revision"); + if (node && (plist_get_node_type(node) == PLIST_DATA)) { + unsigned char *savage_rev = NULL; + uint64_t savage_rev_len = 0; + plist_get_data_val(node, (char**)&savage_rev, &savage_rev_len); + if (savage_rev_len > 0) { + if (((savage_rev[0] | 0x10) & 0xF0) == 0x30) { + comp_name = (isprod) ? "Savage,B2-Prod-Patch" : "Savage,B2-Dev-Patch"; + } else if ((savage_rev[0] & 0xF0) == 0xA0) { + comp_name = (isprod) ? "Savage,BA-Prod-Patch" : "Savage,BA-Dev-Patch"; + } + } + free(savage_rev); } - dict = plist_new_dict(); - plist_dict_set_item(dict, "Digest", plist_copy(node)); - plist_dict_set_item(request, comp_name, dict); - /* add Savage,BA-*-Patch */ - if (isprod) { - comp_name = "Savage,BA-Prod-Patch"; - } else { - comp_name = "Savage,BA-Dev-Patch"; - } - node = plist_access_path(manifest_node, 2, comp_name, "Digest"); + /* add Savage,B?-*-Patch */ + node = plist_dict_get_item(manifest_node, comp_name); if (!node) { - tsserror("ERROR: Unable to get %s digest from manifest\n", comp_name); + tsserror("ERROR: Unable to get %s entry from manifest\n", comp_name); return -1; } - dict = plist_new_dict(); - plist_dict_set_item(dict, "Digest", plist_copy(node)); + dict = plist_copy(node); + plist_dict_remove_item(dict, "Info");; plist_dict_set_item(request, comp_name, dict); - /* add Savage,BA-*-PatchVT */ - if (isprod) { - comp_name = "Savage,BA-Prod-PatchVT"; - } else { - comp_name = "Savage,BA-Dev-PatchVT"; - } - node = plist_access_path(manifest_node, 2, comp_name, "Digest"); - if (!node) { - tsserror("ERROR: Unable to get %s digest from manifest\n", comp_name); - return -1; + if (component_name) { + *component_name = strdup(comp_name); } - dict = plist_new_dict(); - plist_dict_set_item(dict, "Digest", plist_copy(node)); - plist_dict_set_item(request, comp_name, dict); /* add Savage,Nonce */ node = plist_dict_get_item(parameters, "Savage,Nonce"); diff --git a/tsschecker/tss.h b/tsschecker/tss.h index eb337859..428e06ab 100644 --- a/tsschecker/tss.h +++ b/tsschecker/tss.h @@ -44,7 +44,7 @@ int tss_request_add_common_tags(plist_t request, plist_t parameters, plist_t ove int tss_request_add_ap_tags(plist_t request, plist_t parameters, plist_t overrides); int tss_request_add_baseband_tags(plist_t request, plist_t parameters, plist_t overrides); int tss_request_add_se_tags(plist_t request, plist_t parameters, plist_t overrides); -int tss_request_add_savage_tags(plist_t request, plist_t parameters, plist_t overrides); +int tss_request_add_savage_tags(plist_t request, plist_t parameters, plist_t overrides, char **component_name); int tss_request_add_yonkers_tags(plist_t request, plist_t parameters, plist_t overrides); int tss_request_add_ap_img4_tags(plist_t request, plist_t parameters); From 30fc9c3b01be63344b4e34c3129300b097952eef Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 26 Jan 2019 07:55:30 -0800 Subject: [PATCH 48/82] TSS: Yonkers component selection Original commit on idevicerestore project: https://github.com/libimobiledevice/idevicerestore/commit/917f2ae4e3e6245a81e4b853ade240b7644f69f3 --- tsschecker/tss.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++- tsschecker/tss.h | 4 +-- 2 files changed, 68 insertions(+), 3 deletions(-) diff --git a/tsschecker/tss.c b/tsschecker/tss.c index a88de997..dc11316a 100644 --- a/tsschecker/tss.c +++ b/tsschecker/tss.c @@ -1035,7 +1035,7 @@ int tss_request_add_savage_tags(plist_t request, plist_t parameters, plist_t ove return 0; } -int tss_request_add_yonkers_tags(plist_t request, plist_t parameters, plist_t overrides) +int tss_request_add_yonkers_tags(plist_t request, plist_t parameters, plist_t overrides, char **component_name) { plist_t node = NULL; @@ -1072,6 +1072,71 @@ int tss_request_add_yonkers_tags(plist_t request, plist_t parameters, plist_t ov } } + char *comp_name = NULL; + plist_t comp_node = NULL; + uint8_t isprod = 1; + uint64_t fabrevision = (uint64_t)-1; + + node = plist_dict_get_item(parameters, "Yonkers,ProductionMode"); + if (node && (plist_get_node_type(node) == PLIST_BOOLEAN)) { + plist_get_bool_val(node, &isprod); + } + + node = plist_dict_get_item(parameters, "Yonkers,FabRevision"); + if (node && (plist_get_node_type(node) == PLIST_UINT)) { + plist_get_uint_val(node, &fabrevision); + } + + plist_dict_iter iter = NULL; + plist_dict_new_iter(manifest_node, &iter); + while (iter) { + node = NULL; + comp_name = NULL; + plist_dict_next_item(manifest_node, iter, &comp_name, &node); + if (comp_name == NULL) { + node = NULL; + break; + } + if (strncmp(comp_name, "Yonkers,", 8) == 0) { + int target_node = 1; + plist_t sub_node; + if ((sub_node = plist_dict_get_item(node, "EPRO")) != NULL && plist_get_node_type(sub_node) == PLIST_BOOLEAN) { + uint8_t b = 0; + plist_get_bool_val(sub_node, &b); + target_node &= ((isprod) ? b : !b); + } + if ((sub_node = plist_dict_get_item(node, "FabRevision")) != NULL && plist_get_node_type(sub_node) == PLIST_UINT) { + uint64_t v = 0; + plist_get_uint_val(sub_node, &v); + target_node &= (v == fabrevision); + } + if (target_node) { + comp_node = node; + break; + } + } + free(comp_name); + } + free(iter); + + if (comp_name == NULL) { + error("ERROR: No Yonkers node for %s/%lu\n", (isprod) ? "Production" : "Development", (unsigned long)fabrevision); + return -1; + } + + /* add Yonkers,SysTopPatch* */ + if (comp_node != NULL) { + plist_t comp_dict = plist_copy(comp_node); + plist_dict_remove_item(comp_dict, "Info"); + plist_dict_set_item(request, comp_name, comp_dict); + } + + if (component_name) { + *component_name = comp_name; + } else { + free(comp_name); + } + /* apply overrides */ if (overrides) { plist_dict_merge(&request, overrides); diff --git a/tsschecker/tss.h b/tsschecker/tss.h index 428e06ab..882d966f 100644 --- a/tsschecker/tss.h +++ b/tsschecker/tss.h @@ -45,7 +45,7 @@ int tss_request_add_ap_tags(plist_t request, plist_t parameters, plist_t overrid int tss_request_add_baseband_tags(plist_t request, plist_t parameters, plist_t overrides); int tss_request_add_se_tags(plist_t request, plist_t parameters, plist_t overrides); int tss_request_add_savage_tags(plist_t request, plist_t parameters, plist_t overrides, char **component_name); -int tss_request_add_yonkers_tags(plist_t request, plist_t parameters, plist_t overrides); +int tss_request_add_yonkers_tags(plist_t request, plist_t parameters, plist_t overrides, char **component_name); int tss_request_add_ap_img4_tags(plist_t request, plist_t parameters); int tss_request_add_ap_img3_tags(plist_t request, plist_t parameters); @@ -69,4 +69,4 @@ char* ecid_to_string(uint64_t ecid); } #endif -#endif +#endif /* tss_h */ From f5f66fdc0e69b79ce7cf043e2b7c2097d2574790 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 26 Jan 2019 08:00:36 -0800 Subject: [PATCH 49/82] TSSChecker: removed Apple TV 4K bbgcid --- tsschecker/tsschecker.c | 1 - 1 file changed, 1 deletion(-) diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index 0ed36625..9f28e922 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -204,7 +204,6 @@ static struct bbdevice bbdevices[] = { {"AppleTV3,1", 0, 0}, // 3rd gen {"AppleTV3,2", 0, 0}, // 3rd gen (2013) {"AppleTV5,3", 0, 0}, // 4th gen - {"AppleTV6,2", 0, 0}, // 4K {NULL, 0, 0} }; From d598017bb03c5d87307dbd133c68b02e89c8163a Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 26 Jan 2019 08:02:32 -0800 Subject: [PATCH 50/82] Update .gitignore --- .gitignore | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index ef62e5cd..63ba2da1 100644 --- a/.gitignore +++ b/.gitignore @@ -7,12 +7,7 @@ Makefile.in aclocal.m4 autom4te.cache compile -config.h -config.h.in -config.log -config.status -config.guess -config.sub +config.* configure depcomp external/.DS_Store From e7431bfa7cb480f77ecd8346c83d801ce1118d06 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 26 Jan 2019 08:25:54 -0800 Subject: [PATCH 51/82] Xcode: repack libs --- tsschecker.xcodeproj/project.pbxproj | 32 ++++++++++++++-------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/tsschecker.xcodeproj/project.pbxproj b/tsschecker.xcodeproj/project.pbxproj index f6be5402..c1f8f83c 100644 --- a/tsschecker.xcodeproj/project.pbxproj +++ b/tsschecker.xcodeproj/project.pbxproj @@ -8,7 +8,10 @@ /* Begin PBXBuildFile section */ 56163B0A21E4FCB00069A0B0 /* debug.h in Sources */ = {isa = PBXBuildFile; fileRef = 56163B0921E4FB980069A0B0 /* debug.h */; }; - 563DA63021BBC5AA00844624 /* libcrypto.3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 563DA62F21BBC5AA00844624 /* libcrypto.3.dylib */; }; + 5641589521FCC136005C62E9 /* libirecovery.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5641589421FCC135005C62E9 /* libirecovery.a */; }; + 5641589721FCC141005C62E9 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5641589621FCC141005C62E9 /* libcrypto.a */; }; + 5641589921FCC14E005C62E9 /* libfragmentzip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5641589821FCC14E005C62E9 /* libfragmentzip.a */; }; + 5641589B21FCC15B005C62E9 /* libplist.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5641589A21FCC15A005C62E9 /* libplist.a */; }; 56520C1421B2693F005BD3F7 /* jssy.c in Sources */ = {isa = PBXBuildFile; fileRef = 56520C0C21B2693E005BD3F7 /* jssy.c */; }; 56520C1521B2693F005BD3F7 /* jssy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 56520C0D21B2693E005BD3F7 /* jssy.cpp */; }; 56520C1721B2693F005BD3F7 /* cmain.c in Sources */ = {isa = PBXBuildFile; fileRef = 56520C1021B2693F005BD3F7 /* cmain.c */; }; @@ -16,9 +19,6 @@ 56DA633E21E3412400821A21 /* ptr_smart.hpp in Sources */ = {isa = PBXBuildFile; fileRef = 56520C1221B2693F005BD3F7 /* ptr_smart.hpp */; }; 56DA633F21E3412900821A21 /* helper.h in Sources */ = {isa = PBXBuildFile; fileRef = 56520C1321B2693F005BD3F7 /* helper.h */; }; 56EF4C0121B1A2D10056D405 /* libcurl.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 56EF4C0021B1A2D10056D405 /* libcurl.tbd */; }; - 56EF4C0321B1A2E10056D405 /* libirecovery.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 56EF4C0221B1A2E10056D405 /* libirecovery.2.dylib */; }; - 56EF4C0521B1A2F40056D405 /* libfragmentzip.0.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 56EF4C0421B1A2F40056D405 /* libfragmentzip.0.dylib */; }; - 56EF4C0721B1A3040056D405 /* libplist.3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 56EF4C0621B1A3040056D405 /* libplist.3.dylib */; }; 87CEC4C91C576BD9006E75FC /* tss.c in Sources */ = {isa = PBXBuildFile; fileRef = 87CEC4C81C576BD9006E75FC /* tss.c */; }; 87EB90A31C2940CD002CEE70 /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 87EB90A21C2940CD002CEE70 /* main.c */; }; 87F927AC1C3E44CE00343510 /* tsschecker.c in Sources */ = {isa = PBXBuildFile; fileRef = 87F927AA1C3E44CE00343510 /* tsschecker.c */; }; @@ -40,7 +40,10 @@ /* Begin PBXFileReference section */ 56163B0921E4FB980069A0B0 /* debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = debug.h; sourceTree = ""; }; 563DA62E21BBC58900844624 /* all.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = all.h; sourceTree = ""; }; - 563DA62F21BBC5AA00844624 /* libcrypto.3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libcrypto.3.dylib; path = ../../../../../usr/local/lib/libcrypto.3.dylib; sourceTree = ""; }; + 5641589421FCC135005C62E9 /* libirecovery.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libirecovery.a; path = ../../../../../usr/local/lib/libirecovery.a; sourceTree = ""; }; + 5641589621FCC141005C62E9 /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = ../../../../../usr/local/lib/libcrypto.a; sourceTree = ""; }; + 5641589821FCC14E005C62E9 /* libfragmentzip.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libfragmentzip.a; path = ../../../../../usr/local/lib/libfragmentzip.a; sourceTree = ""; }; + 5641589A21FCC15A005C62E9 /* libplist.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libplist.a; path = ../../../../../usr/local/lib/libplist.a; sourceTree = ""; }; 56520C0C21B2693E005BD3F7 /* jssy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jssy.c; path = external/jssy/jssy/jssy.c; sourceTree = SOURCE_ROOT; }; 56520C0D21B2693E005BD3F7 /* jssy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = jssy.cpp; path = external/jssy/jssy/jssy.cpp; sourceTree = SOURCE_ROOT; }; 56520C0E21B2693E005BD3F7 /* jssy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jssy.h; path = external/jssy/jssy/jssy.h; sourceTree = SOURCE_ROOT; }; @@ -49,9 +52,6 @@ 56520C1221B2693F005BD3F7 /* ptr_smart.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ptr_smart.hpp; path = external/jssy/jssy/ptr_smart.hpp; sourceTree = SOURCE_ROOT; }; 56520C1321B2693F005BD3F7 /* helper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = helper.h; path = external/jssy/jssy/helper.h; sourceTree = SOURCE_ROOT; }; 56EF4C0021B1A2D10056D405 /* libcurl.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libcurl.tbd; path = usr/lib/libcurl.tbd; sourceTree = SDKROOT; }; - 56EF4C0221B1A2E10056D405 /* libirecovery.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libirecovery.2.dylib; path = ../../../../../usr/local/lib/libirecovery.2.dylib; sourceTree = ""; }; - 56EF4C0421B1A2F40056D405 /* libfragmentzip.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libfragmentzip.0.dylib; path = ../../../../../usr/local/lib/libfragmentzip.0.dylib; sourceTree = ""; }; - 56EF4C0621B1A3040056D405 /* libplist.3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libplist.3.dylib; path = ../../../../../usr/local/lib/libplist.3.dylib; sourceTree = ""; }; 87CEC4C81C576BD9006E75FC /* tss.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tss.c; sourceTree = ""; }; 87CEC4CA1C576BE0006E75FC /* tss.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tss.h; sourceTree = ""; }; 87EB909F1C2940CD002CEE70 /* tsschecker */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = tsschecker; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -67,11 +67,11 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 563DA63021BBC5AA00844624 /* libcrypto.3.dylib in Frameworks */, - 56EF4C0521B1A2F40056D405 /* libfragmentzip.0.dylib in Frameworks */, - 56EF4C0721B1A3040056D405 /* libplist.3.dylib in Frameworks */, + 5641589721FCC141005C62E9 /* libcrypto.a in Frameworks */, + 5641589B21FCC15B005C62E9 /* libplist.a in Frameworks */, + 5641589521FCC136005C62E9 /* libirecovery.a in Frameworks */, + 5641589921FCC14E005C62E9 /* libfragmentzip.a in Frameworks */, 56EF4C0121B1A2D10056D405 /* libcurl.tbd in Frameworks */, - 56EF4C0321B1A2E10056D405 /* libirecovery.2.dylib in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -104,10 +104,10 @@ isa = PBXGroup; children = ( 56EF4C0021B1A2D10056D405 /* libcurl.tbd */, - 56EF4C0221B1A2E10056D405 /* libirecovery.2.dylib */, - 563DA62F21BBC5AA00844624 /* libcrypto.3.dylib */, - 56EF4C0421B1A2F40056D405 /* libfragmentzip.0.dylib */, - 56EF4C0621B1A3040056D405 /* libplist.3.dylib */, + 5641589421FCC135005C62E9 /* libirecovery.a */, + 5641589621FCC141005C62E9 /* libcrypto.a */, + 5641589821FCC14E005C62E9 /* libfragmentzip.a */, + 5641589A21FCC15A005C62E9 /* libplist.a */, ); name = Frameworks; sourceTree = ""; From 4eaf21c12b540b834f01c4eaebca2c80a5caa781 Mon Sep 17 00:00:00 2001 From: s0uthwest <42713499+s0uthwest@users.noreply.github.com> Date: Sat, 26 Jan 2019 20:23:56 +0300 Subject: [PATCH 52/82] ApNonces for A8 DFU collisioning --- nonces.txt | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/nonces.txt b/nonces.txt index 6dfc77ae..2c9b09fd 100644 --- a/nonces.txt +++ b/nonces.txt @@ -10,7 +10,8 @@ Recovery collision APNonces (some A7 devices with iOS 9.1-10.2): 9e4c518009d00df190a450b3b47691768812360c 9f4aeec726e7c682339ddb3c6c2dec52662dc517 -DFU collision APNonces (for some A7 / A8(X) devices, some collisioned): +DFU collision APNonces: +1) for some A7 devices, some collisioned): 6b83f831a6305ae90d57a78ba8eb9d81e7a9058f 7d7bdc28e5eca36dc5bc20c791850f110dc28269 6b81a2c3cdf87404dee28330f7fcb0ee62c425a1 @@ -29,4 +30,14 @@ b05a70468054cfe94251b34b58f28450054f1aa9 93d5c7ba2844327ccb0a2a705fa8bb186021b459 728a82a4bf7246939ea5db839ca782604cd97511 99b5e22d771c0f1c81f70c394e9907993a2db435 -f5cce05e81a9be2ef66ec287f692ffdf20b13860 \ No newline at end of file +f5cce05e81a9be2ef66ec287f692ffdf20b13860 + +2) for A8 devices, some collisioned +1a965b264168d077ad438546b09204e1d92d2c8b +7ba89ec4cb77a7aa3be826ea55196d333f444cce +b5992dc8a668fd474969111b9b1ff1997cf01bab +14b656ea957a73a54a406c536266c0102e8cac0a +d8befbd5b7c9543b3cc06e1fbfc660486494333f +e456e81cff61251f13f17a183b594d072c603adf +a424cfabe80ab6fac7ab11afe0c36ede4c65476d +44605d9daca26c6211e34d07617104da12bb31e4 From 9be4a1cd83ba0a38082b0634b3a0ade8526f2733 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sun, 27 Jan 2019 04:08:43 -0800 Subject: [PATCH 53/82] TSS: removed other links --- tsschecker/tss.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/tsschecker/tss.c b/tsschecker/tss.c index dc11316a..1359f464 100644 --- a/tsschecker/tss.c +++ b/tsschecker/tss.c @@ -1165,15 +1165,11 @@ char* tss_request_send_raw(char* request, const char* server_url_string, int* re char curl_error_message[CURL_ERROR_SIZE]; if (response_lenth) *response_lenth = 0; - const char* urls[10] = { + const char* urls[6] = { "https://gs.apple.com/TSS/controller?action=2", // original TSS server's address - "https://17.111.103.65/TSS/controller?action=2", - "https://17.111.103.15/TSS/controller?action=2", "https://17.171.36.30/TSS/controller?action=2", "https://17.151.36.30/TSS/controller?action=2", "http://gs.apple.com/TSS/controller?action=2", // original TSS server's address - "http://17.111.103.65/TSS/controller?action=2", - "http://17.111.103.15/TSS/controller?action=2", "http://17.171.36.30/TSS/controller?action=2", "http://17.151.36.30/TSS/controller?action=2" }; From bf173b662be47c7ca9323d24de0792e44819c350 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sun, 10 Feb 2019 07:09:41 -0800 Subject: [PATCH 54/82] Main: removed duplicated '-h' line --- tsschecker/main.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/tsschecker/main.c b/tsschecker/main.c index a60b0028..7fe9594a 100644 --- a/tsschecker/main.c +++ b/tsschecker/main.c @@ -18,15 +18,16 @@ #include #include #include + #include "download.h" #include "tsschecker.h" #include "all.h" #include "debug.h" -#define FLAG_LIST_IOS 1 << 0 -#define FLAG_LIST_DEVICES 1 << 1 -#define FLAG_BUILDMANIFEST 1 << 2 -#define FLAG_LATEST_IOS 1 << 3 +#define FLAG_LIST_IOS (1 << 0) +#define FLAG_LIST_DEVICES (1 << 1) +#define FLAG_BUILDMANIFEST (1 << 2) +#define FLAG_LATEST_IOS (1 << 3) int idevicerestore_debug; #define reterror(code,a ...) {error(a); err = code; goto error;} @@ -82,7 +83,6 @@ void cmd_help(){ printf(" --bbsnum SNUM\t\tmanually specify BbSNUM, in hex, for saving valid BBTicket\n"); printf(" --save-path PATH\t\tspecify path for saving blobs\n"); printf(" --generator GEN\t\tmanually specify generator in format 0x%%16llx\n"); - printf(" -h, --help\t\t\tprints usage information\n"); printf(" --beta\t\t\trequest signing tickets for beta instead of normal release (use with -o)\n"); printf(" --list-devices\t\tlist all known devices\n"); printf(" --list-ios\t\tlist all known iOS versions\n"); @@ -90,8 +90,8 @@ void cmd_help(){ printf(" --print-tss-request\n"); printf(" --print-tss-response\n"); printf(" --raw\t\t\tsend raw file to Apple's TSS server (useful for debugging)\n\n"); - printf("Homepage: \n"); - printf("Original project: \n"); + printf("Homepage: https://github.com/s0uthwest/tsschecker\n"); + printf("Original project: https://github.com/tihmstar/tsschecker\n"); } int64_t parseECID(const char *ecid){ @@ -197,7 +197,7 @@ int main(int argc, const char * argv[]) { case 'e': // long option: "ecid"; can be called as short option ecid = optarg; break; - case 'g': // long option: "ecid"; can be called as short option + case 'g': // long option: "generator"; can be called as short option if (optarg[0] != '0' && optarg[1] != 'x') goto failparse; devVals.generator[0] = '0'; @@ -274,7 +274,7 @@ int main(int argc, const char * argv[]) { rawFilePath = optarg; idevicerestore_debug = 1; break; - case 11: // --bbsnum + case 11: // only long option "bbsnum" bbsnum = optarg; break; default: @@ -296,10 +296,10 @@ int main(int argc, const char * argv[]) { fread(buf, 1, bufSize, f); fclose(f); - printf("Sending TSS Request:\n%s",buf); + printf("Sending TSS request:\n%s",buf); char *rsp = tss_request_send_raw(buf, NULL, (int*)&bufSize); - printf("TSS Server Returned:\n%s\n",rsp); + printf("TSS server Returned:\n%s\n",rsp); free(rsp); return 0; } @@ -402,7 +402,7 @@ int main(int argc, const char * argv[]) { int i = 0; char **versions = getListOfiOSForDevice(firmwareTokens, devVals.deviceModel, versVals.isOta, &versionCnt); - if (!versionCnt) reterror(-8, "[TSSC] failed finding latest iOS. If you using --boardconfig please also specify devicemodel with -d ota=%d\n",versVals.isOta); + if (!versionCnt) reterror(-8, "[TSSC] failed finding latest iOS. If you using --boardconfig please also specify device model with -d ota=%d\n",versVals.isOta); char *bpos = NULL; while((bpos = strstr(versVals.version = strdup(versions[i++]),"[B]")) != 0){ if (versVals.useBeta) break; @@ -436,7 +436,7 @@ int main(int argc, const char * argv[]) { if (isSigned >=0) printf("\n%s %s for device %s %s being signed!\n",(versVals.buildID) ? "Build" : "iOS" ,(versVals.buildID ? versVals.buildID : versVals.version),devVals.deviceModel, (isSigned) ? "IS" : "IS NOT"); else{ putchar('\n'); - reterror(-69, "[TSSC] checking tss status failed!\n"); + reterror(-69, "[TSSC] checking TSS status failed!\n"); } } From 8f25b738303ab75f773fa7ea0d3365f6455dd538 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sun, 10 Feb 2019 07:11:55 -0800 Subject: [PATCH 55/82] ApNonces: add recommended generator by @1Conan & @PsychoTea --- ReadMe.md | 2 +- nonces.txt | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ReadMe.md b/ReadMe.md index c33e8cb7..b2f2ab86 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -1,7 +1,7 @@ # tsschecker _tsschecker is a powerful tool to work with signing technology on iOS devices._ -Latest compiled version can be found [here](https://github.com/s0uthwest/tsschecker/releases). Linux version goes later. Windows version is supported, but I will not compile it. +Latest compiled version can be found [here](https://github.com/s0uthwest/tsschecker/releases). Windows version is supported, but I will not compile it. ## Features * Allows you to get lists of all devices and all iOS/OTA versions for a specific device. diff --git a/nonces.txt b/nonces.txt index 2c9b09fd..c5ca957b 100644 --- a/nonces.txt +++ b/nonces.txt @@ -4,13 +4,13 @@ Recommmended save blobs with this generators: 0x4bb8834ba6444b50 0x698337f5a79c3292 0xedeeb72d7575e360 -0x0000000000000000 +0x1111111111111111 -Recovery collision APNonces (some A7 devices with iOS 9.1-10.2): +Recovery collision ApNonces (some A7 devices with iOS 9.1-10.2): 9e4c518009d00df190a450b3b47691768812360c 9f4aeec726e7c682339ddb3c6c2dec52662dc517 -DFU collision APNonces: +DFU collision ApNonces: 1) for some A7 devices, some collisioned): 6b83f831a6305ae90d57a78ba8eb9d81e7a9058f 7d7bdc28e5eca36dc5bc20c791850f110dc28269 From 24151f9cb9326f9f5fb51485c4a88626263eac1c Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sun, 10 Feb 2019 07:22:33 -0800 Subject: [PATCH 56/82] TSSChecker: re-add bbgcids for Apple TV / Apple Watch --- tsschecker/tsschecker.c | 92 ++++++++++++++++++++++++----------------- 1 file changed, 55 insertions(+), 37 deletions(-) diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index 9f28e922..cbf784b1 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -19,10 +19,12 @@ #include #include #include -#include "tsschecker.h" -#include "download.h" + #include #include + +#include "tsschecker.h" +#include "download.h" #include "tss.h" #ifdef __APPLE__ @@ -155,18 +157,21 @@ static struct bbdevice bbdevices[] = { {"iPad2,2", 257, 12}, // iPad 2 GSM {"iPad2,3", 257, 12}, // iPad 2 CDMA {"iPad2,4", 0, 0}, // iPad 2 Wi-Fi (2012) - {"iPad2,5", 0, 0}, // iPad mini (1st gen, Wi-Fi) - {"iPad2,6", 3255536192, 4}, // iPad mini (1st gen, CDMA) - {"iPad2,7", 3255536192, 4}, // iPad mini (1st gen, GSM) {"iPad3,1", 0, 0}, // the new iPad (3rd gen, Wi-Fi) {"iPad3,2", 4, 4}, // the new iPad (3rd gen, CDMA) {"iPad3,3", 4, 4}, // the new iPad (3rd gen, GSM) {"iPad3,4", 0, 0}, // iPad with Retina Display (4th gen, Wi-Fi) {"iPad3,5", 3255536192, 4}, // iPad with Retina Display (4th gen, CDMA) {"iPad3,6", 3255536192, 4}, // iPad with Retina Display (4th gen, GSM) - {"iPad4,1", 0, 0}, // iPad Air (Wi-Fi) - {"iPad4,2", 3554301762, 4}, // iPad Air (Cellular) - {"iPad4,3", 3554301762, 4}, // iPad Air (Cellular, China) + {"iPad6,11", 0, 0}, // iPad (5th gen, 2017, Wi-Fi) + {"iPad6,12", 3840149528, 4}, // iPad (5th gen, 2017, Cellular) + {"iPad7,5", 0, 0}, // iPad (6th gen, 2018, Wi-Fi) + {"iPad7,6", 3840149528, 4}, // iPad (6th gen, 2018, Cellular) + + // iPad minis + {"iPad2,5", 0, 0}, // iPad mini (1st gen, Wi-Fi) + {"iPad2,6", 3255536192, 4}, // iPad mini (1st gen, CDMA) + {"iPad2,7", 3255536192, 4}, // iPad mini (1st gen, GSM) {"iPad4,4", 0, 0}, // iPad mini 2 (Wi-Fi) {"iPad4,5", 3554301762, 4}, // iPad mini 2 (Cellular) {"iPad4,6", 3554301762, 4}, // iPad mini 2 (Cellular, China) @@ -175,20 +180,23 @@ static struct bbdevice bbdevices[] = { {"iPad4,9", 3554301762, 4}, // iPad mini 3 (Cellular, China) {"iPad5,1", 0, 0}, // iPad mini 4 (Wi-Fi) {"iPad5,2", 3840149528, 4}, // iPad mini 4 (Cellular) + + // iPad Airs + {"iPad4,1", 0, 0}, // iPad Air (Wi-Fi) + {"iPad4,2", 3554301762, 4}, // iPad Air (Cellular) + {"iPad4,3", 3554301762, 4}, // iPad Air (Cellular, China) {"iPad5,3", 0, 0}, // iPad Air 2 (Wi-Fi) {"iPad5,4", 3840149528, 4}, // iPad Air 2 (Cellular) + + // iPad Pros {"iPad6,3", 0, 0}, // iPad Pro (9,7", Wi-Fi) {"iPad6,4", 3840149528, 4}, // iPad Pro (9,7", Cellular) {"iPad6,7", 0, 0}, // iPad Pro (12.9", 1st gen, Wi-Fi) {"iPad6,8", 3840149528, 4}, // iPad Pro (12.9", 1st gen, Cellular) - {"iPad6,11", 0, 0}, // iPad (5th gen, 2017, Wi-Fi) - {"iPad6,12", 3840149528, 4}, // iPad (5th gen, 2017, Cellular) {"iPad7,1", 0, 0}, // iPad Pro (12.9", 2nd gen, Wi-Fi) {"iPad7,2", 2315222105, 4}, // iPad Pro (12.9", 1st gen, Cellular) {"iPad7,3", 0, 0}, // iPad Pro (10,5", Wi-Fi) {"iPad7,4", 2315222105, 4}, // iPad Pro (10,5", Cellular) - {"iPad7,5", 0, 0}, // iPad (6th gen, 2018, Wi-Fi) - {"iPad7,6", 3840149528, 4}, // iPad (6th gen, 2018, Cellular) {"iPad8,1", 0, 0}, // iPad Pro (11", Wi-Fi) {"iPad8,2", 0, 0}, // iPad Pro (11", 1 TB model, Wi-Fi) {"iPad8,3", 165673526, 12}, // iPad Pro 11", Cellular) @@ -198,12 +206,25 @@ static struct bbdevice bbdevices[] = { {"iPad8,7", 165673526, 12}, // iPad Pro 12,9", 3rd gen, Cellular) {"iPad8,8", 165673526, 12}, // iPad Pro 12,9", 3rd gen, 1 TB model, Cellular) + // Apple Watches + {"Watch1,1", 0, 0}, // Apple Watch Series 0 (38 mm) + {"Watch1,2", 0, 0}, // Apple Watch Series 0 (42 mm) + {"Watch2,3", 0, 0}, // Apple Watch Series 2 (38 mm) + {"Watch2,4", 0, 0}, // Apple Watch Series 2 (42 mm) + {"Watch2,6", 0, 0}, // Apple Watch Series 1 (38 mm) + {"Watch2,7", 0, 0}, // Apple Watch Series 1 (42 mm) + {"Watch3,3", 0, 0}, // Apple Watch Series 3 (38 mm) + {"Watch3,4", 0, 0}, // Apple Watch Series 3 (42 mm) + {"Watch4,1", 0, 0}, // Apple Watch Series 4 (40 mm) + {"Watch4,2", 0, 0}, // Apple Watch Series 4 (44 mm) + // Apple TVs {"AppleTV1,1", 0, 0}, // 1st gen {"AppleTV2,1", 0, 0}, // 2nd gen {"AppleTV3,1", 0, 0}, // 3rd gen {"AppleTV3,2", 0, 0}, // 3rd gen (2013) {"AppleTV5,3", 0, 0}, // 4th gen + {"AppleTV6,2", 0, 0}, // 4K {NULL, 0, 0} }; @@ -257,10 +278,8 @@ const char *getBoardconfigFromModel(const char *model){ }else rt = table->hardware_model; } - table++; } - return rt; } @@ -277,10 +296,8 @@ const char *getModelFromBoardconfig(const char *boardconfig){ }else rt = table->product_type; } - table++; } - return rt; } @@ -336,7 +353,7 @@ plist_t getBuildidentity(plist_t buildManifest, const char *model, int isUpdateI const char *boardconfig = getBoardconfigFromModel(model); if (!boardconfig) - reterror("[TSSR] cant find boardconfig for device=%s please manuall use --boardconfig\n",model); + reterror("[TSSR] can't find boardconfig for device=%s please use --boardconfig\n",model); rt = getBuildidentityWithBoardconfig(buildManifest, boardconfig, isUpdateInstall); @@ -347,7 +364,6 @@ plist_t getBuildidentity(plist_t buildManifest, const char *model, int isUpdateI /* json functions */ long parseTokens(const char *json, jssytok_t **tokens){ - log("[JSON] counting elements\n"); long tokensCnt = jssy_parse(json, strlen(json), NULL, 0); *tokens = (jssytok_t*)malloc(sizeof(jssytok_t) * tokensCnt); @@ -401,13 +417,13 @@ t_versionURL *getFirmwareUrls(const char *deviceModel, t_iosVersion *versVals, j else{ for (int i=0; rets_base[i].buildID; i++) { if (strncmp(rets_base[i].buildID, i_build->value, i_build->size) == 0){ - info("[TSSC] Marking duplicated buildid %s\n",rets_base[i].buildID); + info("[TSSC] Marking duplicated build ID %s\n",rets_base[i].buildID); rets->isDupulicate = 1; break; } } - info("[TSSC] got firmwareurl for iOS %.*s build %.*s\n",(int)i_vers->size, i_vers->value,(int)i_build->size, i_build->value); + info("[TSSC] got firmware URL for iOS %.*s build %.*s\n",(int)i_vers->size, i_vers->value,(int)i_build->size, i_build->value); rets->version = (char*)malloc(i_vers->size+1); memcpy(rets->version, i_vers->value, i_vers->size); rets->version[i_vers->size] = '\0'; @@ -445,7 +461,7 @@ int downloadPartialzip(const char *url, const char *file, const char *dst){ log("[LFZP] downloading %s from %s\n\n",file,url); fragmentzip_t *info = fragmentzip_open(url); if (!info) { - error("[LFZP] failed to open url\n"); + error("[LFZP] failed to open URL\n"); return -1; } int ret = fragmentzip_download_file(info, file, dst, fragmentzip_callback); @@ -490,7 +506,8 @@ char *getBuildManifest(char *url, const char *device, const char *version, const if (!url) { if (!f || nocache) return NULL; info("[TSSC] using cached Buildmanifest for %s\n",name); - }else info("[TSSC] opening Buildmanifest for %s\n",name); + }else + info("[TSSC] opening Buildmanifest for %s\n",name); if (!f || nocache){ //download if it isn't there @@ -536,7 +553,6 @@ void getRandNum(char *dst, size_t size, int base){ /* TSS functions */ int tss_populate_devicevals(plist_t tssreq, uint64_t ecid, char *nonce, size_t nonce_size, char *sep_nonce, size_t sep_nonce_size, int image4supported){ - plist_dict_set_item(tssreq, "ApECID", plist_new_uint(ecid)); if (nonce) { plist_dict_set_item(tssreq, "ApNonce", plist_new_data(nonce, nonce_size)); @@ -649,7 +665,7 @@ int tss_populate_random(plist_t tssreq, int is64bit, t_devicevals *devVals){ strncasecmp(devVals->deviceModel, "iPod4,", strlen("iPod4,")) == 0 || strncasecmp(devVals->deviceModel, "iPod5,", strlen("iPod5,")) == 0 || strncasecmp(devVals->deviceModel, "iPod7,", strlen("iPod7,")) == 0 ) - nonceLen = 20; //valid for devices up to iPhone7 + nonceLen = 20; // valid for devices up to iPhone7 int n=0; srand((unsigned int)time(NULL)); @@ -659,7 +675,7 @@ int tss_populate_random(plist_t tssreq, int is64bit, t_devicevals *devVals){ if (!devVals->parsedApnonceLen) devVals->apnonce = NULL; else if (devVals->parsedApnonceLen != nonceLen) - return error("[TSSR] parsed APNoncelen != requiredAPNoncelen (%u != %u)\n",(unsigned int)devVals->parsedApnonceLen,(unsigned int)nonceLen),-1; + return error("[TSSR] parsed ApNoncelen != requiredApNoncelen (%u != %u)\n",(unsigned int)devVals->parsedApnonceLen,(unsigned int)nonceLen),-1; }else{ devVals->apnonce = (char*)malloc((devVals->parsedApnonceLen = nonceLen)+1); if (nonceLen == 20) { @@ -703,7 +719,7 @@ int tss_populate_random(plist_t tssreq, int is64bit, t_devicevals *devVals){ SHA384(zz, 8, genHash); memcpy(devVals->apnonce, genHash, 32); }else{ - return error("[TSSR] Automatic generator->nonce calculation failed. Unknown device with noncelen=%u\n",(unsigned int)nonceLen),-1; + return error("[TSSR] Automatic generator->ApNonce calculation failed. Unknown device with ApNoncelen=%u\n",(unsigned int)nonceLen),-1; } } @@ -718,9 +734,9 @@ int tss_populate_random(plist_t tssreq, int is64bit, t_devicevals *devVals){ if (devVals->apnonce) devVals->apnonce[nonceLen] = '\0'; devVals->sepnonce[NONCELEN_SEP] = '\0'; - debug("[TSSR] ecid=%llu\n",devVals->ecid); - debug("[TSSR] apnonce=%s\n",devVals->apnonce); - debug("[TSSR] sepnonce=%s\n",devVals->sepnonce); + debug("[TSSR] ECID=%llu\n",devVals->ecid); + debug("[TSSR] ApNonce=%s\n",devVals->apnonce); + debug("[TSSR] SEPNonce=%s\n",devVals->sepnonce); int rt = tss_populate_devicevals(tssreq, devVals->ecid, devVals->apnonce, devVals->parsedApnonceLen, devVals->sepnonce, devVals->parsedSepnonceLen, is64bit); return rt; @@ -832,7 +848,7 @@ int isManifestBufSignedForDevice(char *buildManifestBuffer, t_devicevals *devVal plist_t apticket3 = NULL; if (tssrequest(&tssreq, buildManifestBuffer, devVals, basebandMode)) - reterror("[TSSR] faild to build tssrequest\n"); + reterror("[TSSR] faild to build TSS request\n"); isSigned = ((apticket = tss_request_send(tssreq, NULL)) > 0); @@ -840,7 +856,7 @@ int isManifestBufSignedForDevice(char *buildManifestBuffer, t_devicevals *devVal if (isSigned && save_shshblobs){ if (!devVals->installType){ plist_t tssreq2 = NULL; - info("also requesting APTicket for installType=Update\n"); + info("also requesting APTicket for update installing\n"); devVals->installType = kInstallTypeUpdate; if (tssrequest(&tssreq2, buildManifestBuffer, devVals, basebandMode)){ warning("[TSSR] faild to build tssrequest for alternative installType\n"); @@ -850,8 +866,7 @@ int isManifestBufSignedForDevice(char *buildManifestBuffer, t_devicevals *devVal } if (tssreq2) plist_free(tssreq2); devVals->installType = kInstallTypeDefault; - } - { + } { plist_t tssreq2 = NULL; char *apnonce = devVals->apnonce; size_t apnonceLen = devVals->parsedApnonceLen; @@ -921,11 +936,11 @@ int isManifestBufSignedForDevice(char *buildManifestBuffer, t_devicevals *devVal snprintf(fname+prePathLen, fnamelen, DIRECTORY_DELIMITER_STR"%s_%s_%s-%s_%s.shsh%s",cecid,tmpDevicename,cpvers,cbuild, apnonce, (*devVals->generator || apticket2) ? "2" : ""); FILE *shshfile = fopen(fname, "w"); - if (!shshfile) error("[Error] can't save shsh at %s\n",fname); + if (!shshfile) error("[Error] can't save signing tickets at %s\n",fname); else{ fwrite(data, strlen(data), 1, shshfile); fclose(shshfile); - info("Saved shsh blobs!\n"); + info("Saved signing tickets!\n"); } if (apnonceLen) free(apnonce); @@ -1003,6 +1018,9 @@ int isVersionSignedForDevice(jssytok_t *firmwareTokens, t_iosVersion *versVals, #define reterror(a ... ) {error(a); goto error;} int nocacheorig = nocache; if (versVals->version && atoi(versVals->version) <= 3) { + /* NOTE: Signing tickets technology available with iPhone OS 3.x only for iPhone 3Gs & iPod touch (3rd generation). Other devices have signing technology since iOS 4. + So, iPhone and iPod touch (1st generations) doesn't have signing technology for all firmwares; iPhone 3G and iPod touch (2nd generation) have it only for iOS 4+. */ + /* TO-DO: Checking device for rather device checking on iPhone OS 3.0 for goodly request signing tickets. */ info("[TSSC] version to check \"%s\" seems to be iOS 3 or lower, which did not require SHSH or APTicket.\n\tSkipping checks and returning true.\n",versVals->version); return 1; } @@ -1012,13 +1030,13 @@ int isVersionSignedForDevice(jssytok_t *firmwareTokens, t_iosVersion *versVals, char *buildManifest = NULL; t_versionURL *urls = getFirmwareUrls(devVals->deviceModel, versVals, firmwareTokens); - if (!urls) reterror("[TSSC] ERROR: could not get url for device %s on iOS %s\n",devVals->deviceModel,(!versVals->version ? versVals->buildID : versVals->version)); + if (!urls) reterror("[TSSC] ERROR: could not get URL for device %s on iOS %s\n",devVals->deviceModel,(!versVals->version ? versVals->buildID : versVals->version)); int cursigned = 0; for (t_versionURL *u = urls; u->url; u++) { buildManifest = getBuildManifest(u->url, devVals->deviceModel, versVals->version, u->buildID, versVals->isOta); if (!buildManifest) { - error("[TSSC] ERROR: could not get BuildManifest for firmwareurl %s\n",u->url); + error("[TSSC] ERROR: could not get BuildManifest for firmware URL %s\n",u->url); continue; } From ea937b3f3a03d965b2c00efdd20f0c1d6a4df9fd Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sun, 10 Feb 2019 07:28:18 -0800 Subject: [PATCH 57/82] TSSChecker: compile with strcat and fix win64 crash Co-Authored-By: xybp888 <8657156@qq.com> --- tsschecker/tsschecker.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index cbf784b1..a84ef24a 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -70,9 +70,9 @@ static const char *win_path_get(enum paths path){ if (tmp && *tmp){ size_t len = strlen(tmp) + strlen(win_pathvars[path]) + 1; win_paths[path] = (char *)malloc(len); - memset((char*)win_paths[path], '\0', len); - strncat((char*)win_paths[path], tmp, strlen(tmp)); - strncat((char*)win_paths[path], win_pathvars[path], strlen(win_pathvars[path])); + memset((char*)win_paths[path], '\0'); + strcat((char*)win_paths[path], tmp); + strcat((char*)win_paths[path], win_pathvars[path]); return win_paths[path]; } @@ -481,17 +481,18 @@ char *getBuildManifest(char *url, const char *device, const char *version, const char *fileDir = malloc(len); memset(fileDir, 0, len); - strncat(fileDir, MANIFEST_SAVE_PATH, strlen(MANIFEST_SAVE_PATH)); - strncat(fileDir, DIRECTORY_DELIMITER_STR, 1); - strncat(fileDir, device, strlen(device)); - strncat(fileDir, "_", strlen("_")); - strncat(fileDir, version, strlen(version)); + strcat(fileDir, MANIFEST_SAVE_PATH); + strcat(fileDir, DIRECTORY_DELIMITER_STR); + strcat(fileDir, device); + strcat(fileDir, "_"); + strcat(fileDir, version); + if (buildID){ - strncat(fileDir, "_", strlen("_")); - strncat(fileDir, buildID, strlen(buildID)); + strcat(fileDir, "_"); + strcat(fileDir, buildID, strlen); } - if (isOta) strncat(fileDir, "ota", strlen("ota")); + if (isOta) strcat(fileDir, "ota"); memset(&st, 0, sizeof(st)); if (stat(MANIFEST_SAVE_PATH, &st) == -1) __mkdir(MANIFEST_SAVE_PATH, 0700); From bef8186e22d22db396b8c5a2f42ed4ba43563fef Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sun, 10 Feb 2019 07:30:19 -0800 Subject: [PATCH 58/82] TSS: ignoring 128 error for certain A8(X) devices Co-Authored-By: SwiftWinds --- tsschecker/tss.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tsschecker/tss.c b/tsschecker/tss.c index 1359f464..5eeec98c 100644 --- a/tsschecker/tss.c +++ b/tsschecker/tss.c @@ -1261,6 +1261,9 @@ char* tss_request_send_raw(char* request, const char* server_url_string, int* re } else if (status_code == 126) { // An internal error occured, most likely the request was malformed break; + } else if (status_code == 128) { + // Error that occurs when saving blobs on certain A8(X) devices + break; } else { error("ERROR: tss_send_request: Unhandled status code %d\n", status_code); } From 51a1c1745e58a2f26cb792615efa90d169618e4e Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Mon, 11 Feb 2019 09:31:34 -0800 Subject: [PATCH 59/82] Fix strcat Co-Authored-By: xybp888 <8657156@qq.com> --- tsschecker/tss.c | 4 +--- tsschecker/tsschecker.c | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/tsschecker/tss.c b/tsschecker/tss.c index 5eeec98c..9e1b25e5 100644 --- a/tsschecker/tss.c +++ b/tsschecker/tss.c @@ -1226,8 +1226,7 @@ char* tss_request_send_raw(char* request, const char* server_url_string, int* re status_code = 0; info("success\n"); break; - } - else { + } else { info("failure\n"); } @@ -1324,7 +1323,6 @@ plist_t tss_request_send(plist_t tss_request, const char* server_url_string) { } static int tss_response_get_data_by_key(plist_t response, const char* name, unsigned char** buffer, unsigned int* length) { - plist_t node = plist_dict_get_item(response, name); if (!node || plist_get_node_type(node) != PLIST_DATA) { debug("DEBUG: %s: No entry '%s' in TSS response\n", __func__, name); diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index a84ef24a..38b226f6 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -489,7 +489,7 @@ char *getBuildManifest(char *url, const char *device, const char *version, const if (buildID){ strcat(fileDir, "_"); - strcat(fileDir, buildID, strlen); + strcat(fileDir, buildID); } if (isOta) strcat(fileDir, "ota"); From ac88be179ed0c9f49e1babf35727e75a3f95ca3b Mon Sep 17 00:00:00 2001 From: airsquared <36649395+airsquared@users.noreply.github.com> Date: Wed, 13 Feb 2019 15:53:43 -0800 Subject: [PATCH 60/82] Show how to install using brew --- ReadMe.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ReadMe.md b/ReadMe.md index b2f2ab86..ecc71070 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -1,7 +1,7 @@ # tsschecker _tsschecker is a powerful tool to work with signing technology on iOS devices._ -Latest compiled version can be found [here](https://github.com/s0uthwest/tsschecker/releases). Windows version is supported, but I will not compile it. +Latest compiled version can be found [here](https://github.com/s0uthwest/tsschecker/releases). Windows version is supported, but I will not compile it. The easiest way to install on macOS is using [`brew`](https://brew.sh): `brew install stek29/idevice/tsschecker-s0uthwest` ## Features * Allows you to get lists of all devices and all iOS/OTA versions for a specific device. @@ -41,4 +41,4 @@ Creator of [original project](https://github.com/tihmstar/tsschecker) - [tihmsta ReadMe updated on: - 2019-01-08 + 2019-02-13 From 7fa3cca5246bf7e3472d95bde4942581510c16cf Mon Sep 17 00:00:00 2001 From: s0uthwest <42713499+s0uthwest@users.noreply.github.com> Date: Wed, 20 Feb 2019 12:28:54 +0300 Subject: [PATCH 61/82] Update ReadMe.md --- ReadMe.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ReadMe.md b/ReadMe.md index ecc71070..93b1767c 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -1,7 +1,7 @@ # tsschecker _tsschecker is a powerful tool to work with signing technology on iOS devices._ -Latest compiled version can be found [here](https://github.com/s0uthwest/tsschecker/releases). Windows version is supported, but I will not compile it. The easiest way to install on macOS is using [`brew`](https://brew.sh): `brew install stek29/idevice/tsschecker-s0uthwest` +Latest compiled version can be found [here](https://github.com/s0uthwest/tsschecker/releases). Windows & Linux version are supported, but I will not compile it. ## Features * Allows you to get lists of all devices and all iOS/OTA versions for a specific device. @@ -9,7 +9,7 @@ Latest compiled version can be found [here](https://github.com/s0uthwest/tsschec * Works without specifying any device relevant values to check signing status, but can be used to save blobs when given an ECID and the option `--print-tss-response` (although there are better tools to do this). * __If you want to save blobs with recommended ApNonce, please, see [this file](https://github.com/s0uthwest/tsschecker/blob/master/nonces.txt).__ -tsschecker is not only meant to be used to check signing status, but also to explore Apple's TSS servers. +tsschecker isn't only meant to be used to check signing status, but also to explore Apple's TSS servers. By using all of its customization possibilities, you might discover a combination of devices and iOS versions that is now getting signed but wasn't getting signed before. # Dependencies @@ -27,8 +27,9 @@ By using all of its customization possibilities, you might discover a combinatio Make sure these projects compile on your system * [jssy](https://github.com/tihmstar/jssy) -## Compiling +## Compiling & installing Open terminal and execute the command: `./autogen.sh && make` or use Xcode project. +The easiest way to install on macOS is using [`brew`](https://brew.sh): `brew install stek29/idevice/tsschecker-s0uthwest`. ### Some about curl for ubuntu Follow [this guide](https://dev.to/jake/using-libcurl3-and-libcurl4-on-ubuntu-1804-bionic-184g) to use tsschecker on Ubuntu 18.04 (Bionic) as it requires libcurl3 which cannot coexist with libcurl4 on this OS. @@ -41,4 +42,4 @@ Creator of [original project](https://github.com/tihmstar/tsschecker) - [tihmsta ReadMe updated on: - 2019-02-13 + 2019-02-20 From f682212129162c3ef813e000fc89025f971348a6 Mon Sep 17 00:00:00 2001 From: xybp888 <8657156@qq.com> Date: Sun, 31 Mar 2019 22:06:32 +0800 Subject: [PATCH 62/82] fix win64 compiling (#5) --- tsschecker/tsschecker.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index 38b226f6..c9189b29 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -70,7 +70,7 @@ static const char *win_path_get(enum paths path){ if (tmp && *tmp){ size_t len = strlen(tmp) + strlen(win_pathvars[path]) + 1; win_paths[path] = (char *)malloc(len); - memset((char*)win_paths[path], '\0'); + memset((char*)win_paths[path],'\0',len); strcat((char*)win_paths[path], tmp); strcat((char*)win_paths[path], win_pathvars[path]); return win_paths[path]; From bbc3fbfef19f7d7fac53cc0ab13552ee7d4f1668 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sun, 31 Mar 2019 07:19:52 -0700 Subject: [PATCH 63/82] Update jssy submodule --- external/jssy | 2 +- tsschecker/debug.h | 1 + tsschecker/main.c | 6 +++--- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/external/jssy b/external/jssy index daf9a67d..e17d3c8e 160000 --- a/external/jssy +++ b/external/jssy @@ -1 +1 @@ -Subproject commit daf9a67d906087ddd3217d6c8ac8ecd5c6116d4f +Subproject commit e17d3c8ec5216692efbbe59bbe9801bb7661e07d diff --git a/tsschecker/debug.h b/tsschecker/debug.h index 2cd2c898..06852bcf 100644 --- a/tsschecker/debug.h +++ b/tsschecker/debug.h @@ -9,6 +9,7 @@ #ifndef debug_h #define debug_h +// idevicerestore flags extern int idevicerestore_debug; #define info(a ...) printf(a) #define log(a ...) if (dbglog) printf(a) diff --git a/tsschecker/main.c b/tsschecker/main.c index 7fe9594a..404e04b2 100644 --- a/tsschecker/main.c +++ b/tsschecker/main.c @@ -65,8 +65,8 @@ void cmd_help(){ printf("Usage: tsschecker [OPTIONS]\n"); printf("Works with signing technology on iOS devices\n\n"); printf(" -d, --device MODEL\t\tspecific device by its MODEL (eg. iPhone11,8)\n"); - printf(" -i, --ios VERSION\t\tspecific iOS version (eg. 12.1.3)\n"); - printf(" --buildid BUILDID\t\tspecific buildid instead of iOS version (eg. 16D40)\n"); + printf(" -i, --ios VERSION\t\tspecific iOS version (eg. 12.2)\n"); + printf(" --buildid BUILDID\t\tspecific buildid instead of iOS version (eg. 16E227)\n"); printf(" -B, --boardconfig BOARD\tspecific boardconfig instead of iPhone model (eg. n841ap)\n"); printf(" -h, --help\t\t\tprints usage information\n"); printf(" -o, --ota\t\t\tcheck OTA signing status, instead of normal restore\n"); @@ -79,7 +79,7 @@ void cmd_help(){ printf(" -e, --ecid ECID\t\tmanually specify ECID to be used for fetching blobs, instead of using random ones\n"); printf(" \t\tECID must be either dec or hex eg. 5482657301265 or ab46efcbf71\n"); printf(" --apnonce NONCE\t\tmanually specify ApNonce instead of using random one (not required for saving blobs)\n"); - printf(" --sepnonce NONCE\t\tmanually specify sepNonce instead of using random one (not required for saving blobs)\n"); + printf(" --sepnonce NONCE\t\tmanually specify SepNonce instead of using random one (not required for saving blobs)\n"); printf(" --bbsnum SNUM\t\tmanually specify BbSNUM, in hex, for saving valid BBTicket\n"); printf(" --save-path PATH\t\tspecify path for saving blobs\n"); printf(" --generator GEN\t\tmanually specify generator in format 0x%%16llx\n"); From 3deca06c3cc0d5fc57ad5d1f8ed2bbb075952540 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sun, 31 Mar 2019 07:20:39 -0700 Subject: [PATCH 64/82] Add iPad11,1 bbgcid --- tsschecker/tsschecker.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index c9189b29..5779f55a 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -180,6 +180,7 @@ static struct bbdevice bbdevices[] = { {"iPad4,9", 3554301762, 4}, // iPad mini 3 (Cellular, China) {"iPad5,1", 0, 0}, // iPad mini 4 (Wi-Fi) {"iPad5,2", 3840149528, 4}, // iPad mini 4 (Cellular) + {"iPad11,1", 0, 0}, // iPad mini (5th generation, Wi-Fi) // iPad Airs {"iPad4,1", 0, 0}, // iPad Air (Wi-Fi) From 606acdb907a8b1f471c40f1d59d3fe402ab7ac7c Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sun, 31 Mar 2019 07:21:32 -0700 Subject: [PATCH 65/82] Added iPad11,3 bbgcid --- tsschecker/tsschecker.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index 5779f55a..5616ee08 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -188,6 +188,7 @@ static struct bbdevice bbdevices[] = { {"iPad4,3", 3554301762, 4}, // iPad Air (Cellular, China) {"iPad5,3", 0, 0}, // iPad Air 2 (Wi-Fi) {"iPad5,4", 3840149528, 4}, // iPad Air 2 (Cellular) + {"iPad11,3", 0, 0}, // iPad Air (3rd generation, Wi-Fi) // iPad Pros {"iPad6,3", 0, 0}, // iPad Pro (9,7", Wi-Fi) From 21c831a770586bff44d9127dfd26b7b84cbed2c8 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sun, 31 Mar 2019 07:27:20 -0700 Subject: [PATCH 66/82] Added iPad11,2 bbgcid --- tsschecker/tsschecker.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index 5616ee08..63bcfbff 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -181,6 +181,8 @@ static struct bbdevice bbdevices[] = { {"iPad5,1", 0, 0}, // iPad mini 4 (Wi-Fi) {"iPad5,2", 3840149528, 4}, // iPad mini 4 (Cellular) {"iPad11,1", 0, 0}, // iPad mini (5th generation, Wi-Fi) + {"iPad11,2", 165673526, 12}, // iPad mini (5th generation, Cellular) + // iPad Airs {"iPad4,1", 0, 0}, // iPad Air (Wi-Fi) From 14e273bd97a02df0d135991f4d77357bf3b9a92c Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sun, 31 Mar 2019 07:28:58 -0700 Subject: [PATCH 67/82] Added iPad11,4 bbgcid --- tsschecker/tsschecker.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index 63bcfbff..ca84e9fd 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -191,6 +191,7 @@ static struct bbdevice bbdevices[] = { {"iPad5,3", 0, 0}, // iPad Air 2 (Wi-Fi) {"iPad5,4", 3840149528, 4}, // iPad Air 2 (Cellular) {"iPad11,3", 0, 0}, // iPad Air (3rd generation, Wi-Fi) + {"iPad11,4", 165673526, 12}, // iPad Air (3rd generation, Cellular) // iPad Pros {"iPad6,3", 0, 0}, // iPad Pro (9,7", Wi-Fi) From 33152548844cd7d54a3e59c3c14ab763db7aeca9 Mon Sep 17 00:00:00 2001 From: s0uthwest <42713499+s0uthwest@users.noreply.github.com> Date: Sun, 21 Apr 2019 22:51:22 +0300 Subject: [PATCH 68/82] fix some typos --- tsschecker/tsschecker.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index ca84e9fd..fcb1947c 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -38,8 +38,8 @@ #define FIRMWARE_JSON_URL "https://api.ipsw.me/v2.1/firmwares.json/condensed" #define FIRMWARE_OTA_JSON_URL "https://api.ipsw.me/v2.1/ota.json/condensed" -#define NONCELEN_BASEBAND 20 // for devices with KTRR - 32 -#define NONCELEN_SEP 20 // for devices with KTRR - 32 +#define NONCELEN_BASEBAND 20 // for devices with A10(X)+ - 32 +#define NONCELEN_SEP 20 // for devices with A10(X)+ - 32 #define swapchar(a,b) ((a) ^= (b),(b) ^= (a),(a) ^= (b)) //swaps a and b, unless they are the same variable #define printJString(str) printf("%.*s",(int)str->size,str->value) @@ -70,7 +70,7 @@ static const char *win_path_get(enum paths path){ if (tmp && *tmp){ size_t len = strlen(tmp) + strlen(win_pathvars[path]) + 1; win_paths[path] = (char *)malloc(len); - memset((char*)win_paths[path],'\0',len); + memset((char*)win_paths[path], '\0', len); strcat((char*)win_paths[path], tmp); strcat((char*)win_paths[path], win_pathvars[path]); return win_paths[path]; @@ -156,7 +156,7 @@ static struct bbdevice bbdevices[] = { {"iPad2,1", 0, 0}, // iPad 2 Wi-Fi {"iPad2,2", 257, 12}, // iPad 2 GSM {"iPad2,3", 257, 12}, // iPad 2 CDMA - {"iPad2,4", 0, 0}, // iPad 2 Wi-Fi (2012) + {"iPad2,4", 0, 0}, // iPad 2 Wi-Fi (2012, Rev A) {"iPad3,1", 0, 0}, // the new iPad (3rd gen, Wi-Fi) {"iPad3,2", 4, 4}, // the new iPad (3rd gen, CDMA) {"iPad3,3", 4, 4}, // the new iPad (3rd gen, GSM) @@ -183,7 +183,6 @@ static struct bbdevice bbdevices[] = { {"iPad11,1", 0, 0}, // iPad mini (5th generation, Wi-Fi) {"iPad11,2", 165673526, 12}, // iPad mini (5th generation, Cellular) - // iPad Airs {"iPad4,1", 0, 0}, // iPad Air (Wi-Fi) {"iPad4,2", 3554301762, 4}, // iPad Air (Cellular) @@ -671,7 +670,7 @@ int tss_populate_random(plist_t tssreq, int is64bit, t_devicevals *devVals){ strncasecmp(devVals->deviceModel, "iPod4,", strlen("iPod4,")) == 0 || strncasecmp(devVals->deviceModel, "iPod5,", strlen("iPod5,")) == 0 || strncasecmp(devVals->deviceModel, "iPod7,", strlen("iPod7,")) == 0 ) - nonceLen = 20; // valid for devices up to iPhone7 + nonceLen = 20; // valid for devices without KTRR int n=0; srand((unsigned int)time(NULL)); @@ -685,8 +684,8 @@ int tss_populate_random(plist_t tssreq, int is64bit, t_devicevals *devVals){ }else{ devVals->apnonce = (char*)malloc((devVals->parsedApnonceLen = nonceLen)+1); if (nonceLen == 20) { - //this is a pre iPhone 7 device - //nonce is derived from generator with SHA1 + /* this is a pre iPhone 7 device + nonces is derived from generator with SHA1 */ unsigned char zz[9] = {0}; for (int i=0; igenerator)-1; i++) { @@ -804,12 +803,12 @@ int tssrequest(plist_t *tssreqret, char *buildManifest, t_devicevals *devVals, t plist_dict_set_item(tssreq, "@ApImg4Ticket", plist_new_bool(0)); if (plist_dict_get_item(tssreq, "@APTicket")) plist_dict_set_item(tssreq, "@APTicket", plist_new_bool(0)); - //TO-DO don't use .shsh2 ending and don't save generator when saving only baseband + // TO-DO: don't use .shsh2 ending and don't save generator when saving only baseband info("[TSSR] User specified to request only a Baseband ticket.\n"); } if (basebandMode != kBasebandModeWithoutBaseband) { - //TO-DO: verify that this being int64_t instead of uint64_t doesn't actually break something + // TO-DO: verify that this being int64_t instead of uint64_t doesn't actually break something t_bbdevice bbinfo = getBBDeviceInfo(devVals->deviceModel); int64_t BbGoldCertId = devVals->bbgcid ? devVals->bbgcid : bbinfo->bbgcid; From 03f2cba3dceff1bd49d066a300fc7f6409286510 Mon Sep 17 00:00:00 2001 From: s0uthwest <42713499+s0uthwest@users.noreply.github.com> Date: Sun, 21 Apr 2019 22:53:07 +0300 Subject: [PATCH 69/82] Update .gitignore --- .gitignore | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/.gitignore b/.gitignore index 63ba2da1..3d84dffb 100644 --- a/.gitignore +++ b/.gitignore @@ -10,20 +10,19 @@ compile config.* configure depcomp -external/.DS_Store install-sh libtool ltmain.sh m4 missing -tsschecker/.DS_Store -tsschecker/all.h.bak -tsschecker/*.a -tsschecker/*.o -tsschecker/*.la -tsschecker/*.lo -tsschecker/tsschecker -tsschecker/tsschecker.exe -tsschecker/.libs -tsschecker/.deps -stamp-h1 \ No newline at end of file +*/.DS_Store +*/all.h.bak +*/*.a +*/*.o +*/*.la +*/*.lo +*/tsschecker +*/tsschecker.exe +*/.libs +*/.deps +stamp-h1 From c6750aad74bb810f36678126d9b13a685780201f Mon Sep 17 00:00:00 2001 From: s0uthwest <42713499+s0uthwest@users.noreply.github.com> Date: Sun, 21 Apr 2019 22:58:15 +0300 Subject: [PATCH 70/82] ReadMe: actualizing --- ReadMe.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ReadMe.md b/ReadMe.md index 93b1767c..12c7a3ca 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -1,11 +1,11 @@ # tsschecker -_tsschecker is a powerful tool to work with signing technology on iOS devices._ +_tsschecker is a powerful tool to work with signing technology on iOS/tvOS/watchOS devices._ -Latest compiled version can be found [here](https://github.com/s0uthwest/tsschecker/releases). Windows & Linux version are supported, but I will not compile it. +Latest compiled version can be found [here](https://github.com/s0uthwest/tsschecker/releases). Windows & Linux version are supported, but I won't compile it. ## Features -* Allows you to get lists of all devices and all iOS/OTA versions for a specific device. -* Can check signing status for default iOS versions and beta iPSW's (by specifying a `BuildManifest.plist`) +* Allows you to get lists of all devices and all iOS/tvOS/WatchOS OTA versions for a specific device. +* Can check signing status for default iOS/tvOS/watchOS versions and beta iPSW's (by specifying a `BuildManifest.plist`) * Works without specifying any device relevant values to check signing status, but can be used to save blobs when given an ECID and the option `--print-tss-response` (although there are better tools to do this). * __If you want to save blobs with recommended ApNonce, please, see [this file](https://github.com/s0uthwest/tsschecker/blob/master/nonces.txt).__ @@ -42,4 +42,4 @@ Creator of [original project](https://github.com/tihmstar/tsschecker) - [tihmsta ReadMe updated on: - 2019-02-20 + 2019-04-21 From 1b60b7ef339df2b77464e24bf6b1faf31cf75ae8 Mon Sep 17 00:00:00 2001 From: s0uthwest <42713499+s0uthwest@users.noreply.github.com> Date: Sun, 21 Apr 2019 23:08:32 +0300 Subject: [PATCH 71/82] Main: actualizing cmd help --- tsschecker/main.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/tsschecker/main.c b/tsschecker/main.c index 404e04b2..355a761b 100644 --- a/tsschecker/main.c +++ b/tsschecker/main.c @@ -65,9 +65,9 @@ void cmd_help(){ printf("Usage: tsschecker [OPTIONS]\n"); printf("Works with signing technology on iOS devices\n\n"); printf(" -d, --device MODEL\t\tspecific device by its MODEL (eg. iPhone11,8)\n"); - printf(" -i, --ios VERSION\t\tspecific iOS version (eg. 12.2)\n"); - printf(" --buildid BUILDID\t\tspecific buildid instead of iOS version (eg. 16E227)\n"); - printf(" -B, --boardconfig BOARD\tspecific boardconfig instead of iPhone model (eg. n841ap)\n"); + printf(" -i, --ios VERSION\t\tspecific iOS/tvOS/watchOS version (eg. 12.2)\n"); + printf(" --buildid BUILDID\t\tspecific build ID instead of iOS/tvOS/watchOS version (eg. 16E227)\n"); + printf(" -B, --boardconfig BOARD\tspecific boardconfig instead of device model (eg. n841ap)\n"); printf(" -h, --help\t\t\tprints usage information\n"); printf(" -o, --ota\t\t\tcheck OTA signing status, instead of normal restore\n"); printf(" -b, --no-baseband\t\tdon't check baseband signing status. Request a ticket without baseband\n"); @@ -75,13 +75,13 @@ void cmd_help(){ printf(" -s, --save\t\t\tsave fetched signing tickets (mostly makes sense with -e)\n"); printf(" -u, --update-install\t\trequest update ticket instead of erase\n"); printf(" -l, --latest\t\t\tuse latest public iOS version instead of manually specifying one\n"); - printf(" \t\tespecially useful with -s and -e for saving blobs\n"); - printf(" -e, --ecid ECID\t\tmanually specify ECID to be used for fetching blobs, instead of using random ones\n"); + printf(" \t\tespecially useful with -s and -e for saving tickets\n"); + printf(" -e, --ecid ECID\t\tmanually specify ECID to be used for fetching tickets, instead of using random ones\n"); printf(" \t\tECID must be either dec or hex eg. 5482657301265 or ab46efcbf71\n"); - printf(" --apnonce NONCE\t\tmanually specify ApNonce instead of using random one (not required for saving blobs)\n"); - printf(" --sepnonce NONCE\t\tmanually specify SepNonce instead of using random one (not required for saving blobs)\n"); + printf(" --apnonce NONCE\t\tmanually specify ApNonce instead of using random one (not required for saving tickets)\n"); + printf(" --sepnonce NONCE\t\tmanually specify SepNonce instead of using random one (not required for saving tickets)\n"); printf(" --bbsnum SNUM\t\tmanually specify BbSNUM, in hex, for saving valid BBTicket\n"); - printf(" --save-path PATH\t\tspecify path for saving blobs\n"); + printf(" --save-path PATH\t\tspecify path for saving tickets\n"); printf(" --generator GEN\t\tmanually specify generator in format 0x%%16llx\n"); printf(" --beta\t\t\trequest signing tickets for beta instead of normal release (use with -o)\n"); printf(" --list-devices\t\tlist all known devices\n"); @@ -99,7 +99,7 @@ int64_t parseECID(const char *ecid){ int isHex = 0; int64_t ret = 0; - //in case hex ecid only contains digits, specify with 0x1235 + //in case hex ECID only contains digits, specify with 0x1235 if (strncmp(ecid, "0x", 2) == 0){ isHex = 1; ecidBK = ecid+2; @@ -382,8 +382,10 @@ int main(int argc, const char * argv[]) { if (!buildmanifest) { //no need to get firmares/ota json if specifying buildmanifest manually reparse: firmwareJson = (versVals.isOta) ? getOtaJson() : getFirmwareJson(); - if (!devVals.installType) //only set this if installType wasn't set manually - devVals.isUpdateInstall = (versVals.isOta); //there are no erase installs over OTA + /* only set this if installType wasn't set manually */ + if (!devVals.installType) + /* there're no erase installs over OTA */ + devVals.isUpdateInstall = (versVals.isOta); if (!firmwareJson) reterror(-6,"[TSSC] could not get firmware.json\n"); long cnt = parseTokens(firmwareJson, &firmwareTokens); From 269ec93f4e016dca1954493bd53c2a4188a91799 Mon Sep 17 00:00:00 2001 From: s0uthwest <42713499+s0uthwest@users.noreply.github.com> Date: Sun, 21 Apr 2019 23:10:42 +0300 Subject: [PATCH 72/82] fix typo --- tsschecker/debug.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tsschecker/debug.h b/tsschecker/debug.h index 06852bcf..d54357bc 100644 --- a/tsschecker/debug.h +++ b/tsschecker/debug.h @@ -3,7 +3,7 @@ // tsschecker // // Created by s0uthwest on 08.01.19. -// Copyright © 2016 tihmstar. All rights reserved. +// Copyright © 2015 tihmstar. All rights reserved. // #ifndef debug_h From f1396cd8c7c5cb73b10683247e68200a0e2ff431 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sun, 28 Apr 2019 03:36:37 -0700 Subject: [PATCH 73/82] Enable latest changes for support Xcode 10.2 --- tsschecker.xcodeproj/project.pbxproj | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tsschecker.xcodeproj/project.pbxproj b/tsschecker.xcodeproj/project.pbxproj index c1f8f83c..be9c8fc8 100644 --- a/tsschecker.xcodeproj/project.pbxproj +++ b/tsschecker.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 47; + objectVersion = 48; objects = { /* Begin PBXBuildFile section */ @@ -190,10 +190,12 @@ }; }; buildConfigurationList = 87EB909A1C2940CD002CEE70 /* Build configuration list for PBXProject "tsschecker" */; - compatibilityVersion = "Xcode 6.3"; - developmentRegion = English; + compatibilityVersion = "Xcode 8.0"; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( + en, + Base, ); mainGroup = 87EB90961C2940CD002CEE70; productRefGroup = 87EB90A01C2940CD002CEE70 /* Products */; From 303e33437350eab8fce26f46abf3e0c73ba55a40 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 1 Jun 2019 04:39:46 -0700 Subject: [PATCH 74/82] ReadMe: fix cURL link --- .gitignore | 15 +++++++-------- ReadMe.md | 10 +++++----- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index 3d84dffb..a761ece8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,12 @@ -.DS_Store +*.DS_Store .patch *.diff +*/.libs/* +*/.deps/* +*.a +*.o +*.la +*.lo .*.swp Makefile Makefile.in @@ -15,14 +21,7 @@ libtool ltmain.sh m4 missing -*/.DS_Store */all.h.bak -*/*.a -*/*.o -*/*.la -*/*.lo */tsschecker */tsschecker.exe -*/.libs -*/.deps stamp-h1 diff --git a/ReadMe.md b/ReadMe.md index 12c7a3ca..3fc61462 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -4,8 +4,8 @@ _tsschecker is a powerful tool to work with signing technology on iOS/tvOS/watch Latest compiled version can be found [here](https://github.com/s0uthwest/tsschecker/releases). Windows & Linux version are supported, but I won't compile it. ## Features -* Allows you to get lists of all devices and all iOS/tvOS/WatchOS OTA versions for a specific device. -* Can check signing status for default iOS/tvOS/watchOS versions and beta iPSW's (by specifying a `BuildManifest.plist`) +* Allows you to get lists of all devices and all iOS/tvOS/watchOS OTA versions for a specific device. +* Can check signing status for default iOS/tvOS/watchOS versions. * Works without specifying any device relevant values to check signing status, but can be used to save blobs when given an ECID and the option `--print-tss-response` (although there are better tools to do this). * __If you want to save blobs with recommended ApNonce, please, see [this file](https://github.com/s0uthwest/tsschecker/blob/master/nonces.txt).__ @@ -18,7 +18,7 @@ By using all of its customization possibilities, you might discover a combinatio * [tss](https://github.com/libimobiledevice) * ## External Libs Make sure these are installed - * [libcurl](https://curl.haxx.se/libcurl/) + * [libcurl](https://github.com/curl/curl) * [libplist](https://github.com/libimobiledevice/libplist) * [libfragmentzip](https://github.com/encounter/libfragmentzip) * [openssl](https://github.com/openssl/openssl) or commonCrypto on macOS/OS X. @@ -31,7 +31,7 @@ By using all of its customization possibilities, you might discover a combinatio Open terminal and execute the command: `./autogen.sh && make` or use Xcode project. The easiest way to install on macOS is using [`brew`](https://brew.sh): `brew install stek29/idevice/tsschecker-s0uthwest`. -### Some about curl for ubuntu +### Some about [cURL](https://github.com/curl/curl) for ubuntu Follow [this guide](https://dev.to/jake/using-libcurl3-and-libcurl4-on-ubuntu-1804-bionic-184g) to use tsschecker on Ubuntu 18.04 (Bionic) as it requires libcurl3 which cannot coexist with libcurl4 on this OS. ## Report an issue @@ -42,4 +42,4 @@ Creator of [original project](https://github.com/tihmstar/tsschecker) - [tihmsta ReadMe updated on: - 2019-04-21 + 2019-06-01 From afa757e5e77ebdb95b553be4ca2e12d6910cc6d0 Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Sat, 1 Jun 2019 04:40:22 -0700 Subject: [PATCH 75/82] Add support iPod9,1 (iPod touch, 7th gen) --- nonces.txt | 8 +++--- tsschecker/main.c | 8 +++--- tsschecker/tsschecker.c | 60 ++++++++++++++++++++--------------------- 3 files changed, 38 insertions(+), 38 deletions(-) diff --git a/nonces.txt b/nonces.txt index c5ca957b..4c209be3 100644 --- a/nonces.txt +++ b/nonces.txt @@ -1,17 +1,17 @@ Recommmended save blobs with this generators: 0x9d0b5b5ff92fff23 -0xbd34a880be0b53f3 +0xbd34a880be0b53f3 // default boot-nonce, used on Electra / Chimera jailbreaks 0x4bb8834ba6444b50 0x698337f5a79c3292 0xedeeb72d7575e360 -0x1111111111111111 +0x1111111111111111 // default boot-nonce, used on unc0ver jailbreak Recovery collision ApNonces (some A7 devices with iOS 9.1-10.2): 9e4c518009d00df190a450b3b47691768812360c 9f4aeec726e7c682339ddb3c6c2dec52662dc517 DFU collision ApNonces: -1) for some A7 devices, some collisioned): +1) for some A7 devices, some collisioned: 6b83f831a6305ae90d57a78ba8eb9d81e7a9058f 7d7bdc28e5eca36dc5bc20c791850f110dc28269 6b81a2c3cdf87404dee28330f7fcb0ee62c425a1 @@ -32,7 +32,7 @@ b05a70468054cfe94251b34b58f28450054f1aa9 99b5e22d771c0f1c81f70c394e9907993a2db435 f5cce05e81a9be2ef66ec287f692ffdf20b13860 -2) for A8 devices, some collisioned +2) for A8 devices, some collisioned: 1a965b264168d077ad438546b09204e1d92d2c8b 7ba89ec4cb77a7aa3be826ea55196d333f444cce b5992dc8a668fd474969111b9b1ff1997cf01bab diff --git a/tsschecker/main.c b/tsschecker/main.c index 355a761b..a56989f8 100644 --- a/tsschecker/main.c +++ b/tsschecker/main.c @@ -65,8 +65,8 @@ void cmd_help(){ printf("Usage: tsschecker [OPTIONS]\n"); printf("Works with signing technology on iOS devices\n\n"); printf(" -d, --device MODEL\t\tspecific device by its MODEL (eg. iPhone11,8)\n"); - printf(" -i, --ios VERSION\t\tspecific iOS/tvOS/watchOS version (eg. 12.2)\n"); - printf(" --buildid BUILDID\t\tspecific build ID instead of iOS/tvOS/watchOS version (eg. 16E227)\n"); + printf(" -i, --ios VERSION\t\tspecific iOS/tvOS/watchOS version (eg. 12.3.1)\n"); + printf(" --buildid BUILDID\t\tspecific build ID instead of iOS/tvOS/watchOS version (eg. 16F203)\n"); printf(" -B, --boardconfig BOARD\tspecific boardconfig instead of device model (eg. n841ap)\n"); printf(" -h, --help\t\t\tprints usage information\n"); printf(" -o, --ota\t\t\tcheck OTA signing status, instead of normal restore\n"); @@ -299,7 +299,7 @@ int main(int argc, const char * argv[]) { printf("Sending TSS request:\n%s",buf); char *rsp = tss_request_send_raw(buf, NULL, (int*)&bufSize); - printf("TSS server Returned:\n%s\n",rsp); + printf("TSS server returned:\n%s\n",rsp); free(rsp); return 0; } @@ -379,7 +379,7 @@ int main(int argc, const char * argv[]) { } } - if (!buildmanifest) { //no need to get firmares/ota json if specifying buildmanifest manually + if (!buildmanifest) { //no need to get firmwares/ota json if specifying buildmanifest manually reparse: firmwareJson = (versVals.isOta) ? getOtaJson() : getFirmwareJson(); /* only set this if installType wasn't set manually */ diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index fcb1947c..e0622eb1 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -38,10 +38,10 @@ #define FIRMWARE_JSON_URL "https://api.ipsw.me/v2.1/firmwares.json/condensed" #define FIRMWARE_OTA_JSON_URL "https://api.ipsw.me/v2.1/ota.json/condensed" -#define NONCELEN_BASEBAND 20 // for devices with A10(X)+ - 32 -#define NONCELEN_SEP 20 // for devices with A10(X)+ - 32 +#define NONCELEN_BASEBAND 20 // for devices with KTRR - 32 +#define NONCELEN_SEP 20 // for devices with KTRR - 32 -#define swapchar(a,b) ((a) ^= (b),(b) ^= (a),(a) ^= (b)) //swaps a and b, unless they are the same variable +#define swapchar(a,b) ((a) ^= (b),(b) ^= (a),(a) ^= (b)) //swaps a and b, unless they're the same variable #define printJString(str) printf("%.*s",(int)str->size,str->value) #ifdef WIN32 @@ -117,6 +117,7 @@ static struct bbdevice bbdevices[] = { {"iPod4,1", 0, 0}, // 4th gen {"iPod5,1", 0, 0}, // 5th gen {"iPod7,1", 0, 0}, // 6th gen + {"iPod9,1", 0, 0}, // 7th gen // iPhones {"iPhone1,2", 0, 0}, // iPhone 3G @@ -127,9 +128,9 @@ static struct bbdevice bbdevices[] = { {"iPhone4,1", 2, 4}, // iPhone 4s {"iPhone5,1", 3255536192, 4}, // iPhone 5 (GSM) {"iPhone5,2", 3255536192, 4}, // iPhone 5 (Global) - {"iPhone5,3", 3554301762, 4}, // iPhone 5c + {"iPhone5,3", 3554301762, 4}, // iPhone 5c (GSM) {"iPhone5,4", 3554301762, 4}, // iPhone 5c (Global) - {"iPhone6,1", 3554301762, 4}, // iPhone 5s + {"iPhone6,1", 3554301762, 4}, // iPhone 5s (GSM) {"iPhone6,2", 3554301762, 4}, // iPhone 5s (Global) {"iPhone7,1", 3840149528, 4}, // iPhone 6 Plus {"iPhone7,2", 3840149528, 4}, // iPhone 6 @@ -148,7 +149,7 @@ static struct bbdevice bbdevices[] = { {"iPhone10,6", 524245983, 12}, // iPhone X GSM {"iPhone11,2", 165673526, 12}, // iPhone XS {"iPhone11,4", 165673526, 12}, // iPhone XS Max (China) - {"iPhone11,6", 165673526, 12}, // iPhone XS Max + {"iPhone11,6", 165673526, 12}, // iPhone XS Max (Global) {"iPhone11,8", 165673526, 12}, // iPhone XR // iPads @@ -160,9 +161,9 @@ static struct bbdevice bbdevices[] = { {"iPad3,1", 0, 0}, // the new iPad (3rd gen, Wi-Fi) {"iPad3,2", 4, 4}, // the new iPad (3rd gen, CDMA) {"iPad3,3", 4, 4}, // the new iPad (3rd gen, GSM) - {"iPad3,4", 0, 0}, // iPad with Retina Display (4th gen, Wi-Fi) - {"iPad3,5", 3255536192, 4}, // iPad with Retina Display (4th gen, CDMA) - {"iPad3,6", 3255536192, 4}, // iPad with Retina Display (4th gen, GSM) + {"iPad3,4", 0, 0}, // iPad with Retina display (4th gen, Wi-Fi) + {"iPad3,5", 3255536192, 4}, // iPad with Retina display (4th gen, CDMA) + {"iPad3,6", 3255536192, 4}, // iPad with Retina display (4th gen, GSM) {"iPad6,11", 0, 0}, // iPad (5th gen, 2017, Wi-Fi) {"iPad6,12", 3840149528, 4}, // iPad (5th gen, 2017, Cellular) {"iPad7,5", 0, 0}, // iPad (6th gen, 2018, Wi-Fi) @@ -180,8 +181,8 @@ static struct bbdevice bbdevices[] = { {"iPad4,9", 3554301762, 4}, // iPad mini 3 (Cellular, China) {"iPad5,1", 0, 0}, // iPad mini 4 (Wi-Fi) {"iPad5,2", 3840149528, 4}, // iPad mini 4 (Cellular) - {"iPad11,1", 0, 0}, // iPad mini (5th generation, Wi-Fi) - {"iPad11,2", 165673526, 12}, // iPad mini (5th generation, Cellular) + {"iPad11,1", 0, 0}, // iPad mini (5th gen, Wi-Fi) + {"iPad11,2", 165673526, 12}, // iPad mini (5th gen, Cellular) // iPad Airs {"iPad4,1", 0, 0}, // iPad Air (Wi-Fi) @@ -189,8 +190,8 @@ static struct bbdevice bbdevices[] = { {"iPad4,3", 3554301762, 4}, // iPad Air (Cellular, China) {"iPad5,3", 0, 0}, // iPad Air 2 (Wi-Fi) {"iPad5,4", 3840149528, 4}, // iPad Air 2 (Cellular) - {"iPad11,3", 0, 0}, // iPad Air (3rd generation, Wi-Fi) - {"iPad11,4", 165673526, 12}, // iPad Air (3rd generation, Cellular) + {"iPad11,3", 0, 0}, // iPad Air (3rd gen, Wi-Fi) + {"iPad11,4", 165673526, 12}, // iPad Air (3rd gen, Cellular) // iPad Pros {"iPad6,3", 0, 0}, // iPad Pro (9,7", Wi-Fi) @@ -211,16 +212,16 @@ static struct bbdevice bbdevices[] = { {"iPad8,8", 165673526, 12}, // iPad Pro 12,9", 3rd gen, 1 TB model, Cellular) // Apple Watches - {"Watch1,1", 0, 0}, // Apple Watch Series 0 (38 mm) - {"Watch1,2", 0, 0}, // Apple Watch Series 0 (42 mm) - {"Watch2,3", 0, 0}, // Apple Watch Series 2 (38 mm) - {"Watch2,4", 0, 0}, // Apple Watch Series 2 (42 mm) - {"Watch2,6", 0, 0}, // Apple Watch Series 1 (38 mm) - {"Watch2,7", 0, 0}, // Apple Watch Series 1 (42 mm) - {"Watch3,3", 0, 0}, // Apple Watch Series 3 (38 mm) - {"Watch3,4", 0, 0}, // Apple Watch Series 3 (42 mm) - {"Watch4,1", 0, 0}, // Apple Watch Series 4 (40 mm) - {"Watch4,2", 0, 0}, // Apple Watch Series 4 (44 mm) + {"Watch1,1", 0, 0}, // Series 0 (38 mm) + {"Watch1,2", 0, 0}, // Series 0 (42 mm) + {"Watch2,3", 0, 0}, // Series 2 (38 mm) + {"Watch2,4", 0, 0}, // Series 2 (42 mm) + {"Watch2,6", 0, 0}, // Series 1 (38 mm) + {"Watch2,7", 0, 0}, // Series 1 (42 mm) + {"Watch3,3", 0, 0}, // Series 3 (38 mm) + {"Watch3,4", 0, 0}, // Series 3 (42 mm) + {"Watch4,1", 0, 0}, // Series 4 (40 mm) + {"Watch4,2", 0, 0}, // Series 4 (44 mm) // Apple TVs {"AppleTV1,1", 0, 0}, // 1st gen @@ -646,7 +647,7 @@ int parseHex(const char *nonce, size_t *parsedLen, char *ret, size_t *retSize){ } int tss_populate_random(plist_t tssreq, int is64bit, t_devicevals *devVals){ - size_t nonceLen = 32; // valid for all devices after iPhone 7 + size_t nonceLen = 32; // valid for devices with pre-KTRR if (!devVals->deviceModel) return error("[TSSR] internal error: devVals->deviceModel is missing\n"),-1; @@ -684,7 +685,7 @@ int tss_populate_random(plist_t tssreq, int is64bit, t_devicevals *devVals){ }else{ devVals->apnonce = (char*)malloc((devVals->parsedApnonceLen = nonceLen)+1); if (nonceLen == 20) { - /* this is a pre iPhone 7 device + /* this is a pre-KTRR device nonces is derived from generator with SHA1 */ unsigned char zz[9] = {0}; @@ -804,12 +805,11 @@ int tssrequest(plist_t *tssreqret, char *buildManifest, t_devicevals *devVals, t if (plist_dict_get_item(tssreq, "@APTicket")) plist_dict_set_item(tssreq, "@APTicket", plist_new_bool(0)); // TO-DO: don't use .shsh2 ending and don't save generator when saving only baseband - info("[TSSR] User specified to request only a Baseband ticket.\n"); + info("[TSSR] User specified to request only a baseband ticket.\n"); } if (basebandMode != kBasebandModeWithoutBaseband) { // TO-DO: verify that this being int64_t instead of uint64_t doesn't actually break something - t_bbdevice bbinfo = getBBDeviceInfo(devVals->deviceModel); int64_t BbGoldCertId = devVals->bbgcid ? devVals->bbgcid : bbinfo->bbgcid; size_t bbsnumSize = devVals->bbsnumSize ? devVals->bbsnumSize : bbinfo->bbsnumSize; @@ -829,10 +829,10 @@ int tssrequest(plist_t *tssreqret, char *buildManifest, t_devicevals *devVals, t reterror("[TSSR] Error: Failed to populate baseband values\n"); } }else{ - log("[TSSR] LOG: device %s doesn't need a Baseband ticket, continuing without requesting a Baseband ticket\n",devVals->deviceModel); + log("[TSSR] LOG: device %s doesn't need a baseband ticket, continuing without requesting a Baseband ticket\n",devVals->deviceModel); } }else{ - info("[TSSR] User specified not to request a Baseband ticket.\n"); + info("[TSSR] User specified not to request a baseband ticket.\n"); } *tssreqret = tssreq; @@ -1026,7 +1026,7 @@ int isVersionSignedForDevice(jssytok_t *firmwareTokens, t_iosVersion *versVals, /* NOTE: Signing tickets technology available with iPhone OS 3.x only for iPhone 3Gs & iPod touch (3rd generation). Other devices have signing technology since iOS 4. So, iPhone and iPod touch (1st generations) doesn't have signing technology for all firmwares; iPhone 3G and iPod touch (2nd generation) have it only for iOS 4+. */ /* TO-DO: Checking device for rather device checking on iPhone OS 3.0 for goodly request signing tickets. */ - info("[TSSC] version to check \"%s\" seems to be iOS 3 or lower, which did not require SHSH or APTicket.\n\tSkipping checks and returning true.\n",versVals->version); + info("[TSSC] version to check \"%s\" seems to be iPhone OS 3 or lower, which did not require SHSH or APTicket.\n\tSkipping checks and returning true.\n",versVals->version); return 1; } From dc36b48f4cdb3b71a5f8087d5a3eb84ead056b3a Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Wed, 19 Jun 2019 12:01:29 -0700 Subject: [PATCH 76/82] Add support Xcode 11 --- .gitignore | 3 +-- ReadMe.md | 23 ++++++++++------------- tsschecker.xcodeproj/project.pbxproj | 13 +++++++++++-- 3 files changed, 22 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index a761ece8..eb97c6cb 100644 --- a/.gitignore +++ b/.gitignore @@ -8,8 +8,7 @@ *.la *.lo .*.swp -Makefile -Makefile.in +Makefile* aclocal.m4 autom4te.cache compile diff --git a/ReadMe.md b/ReadMe.md index 3fc61462..9ff8b28c 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -4,27 +4,24 @@ _tsschecker is a powerful tool to work with signing technology on iOS/tvOS/watch Latest compiled version can be found [here](https://github.com/s0uthwest/tsschecker/releases). Windows & Linux version are supported, but I won't compile it. ## Features -* Allows you to get lists of all devices and all iOS/tvOS/watchOS OTA versions for a specific device. +* Allows you to get lists of all iOS/tvOS/watchOS versions for a specific device. * Can check signing status for default iOS/tvOS/watchOS versions. -* Works without specifying any device relevant values to check signing status, but can be used to save blobs when given an ECID and the option `--print-tss-response` (although there are better tools to do this). -* __If you want to save blobs with recommended ApNonce, please, see [this file](https://github.com/s0uthwest/tsschecker/blob/master/nonces.txt).__ +* Works without specifying any device relevant values to check signing status, but can be used to save signing tickets when given an ECID and the option `--print-tss-response` (although there are better tools to do this). +* __If you'll want to save signing tickets with recommended ApNonces, please, see [this file](https://github.com/s0uthwest/tsschecker/blob/master/nonces.txt).__ tsschecker isn't only meant to be used to check signing status, but also to explore Apple's TSS servers. By using all of its customization possibilities, you might discover a combination of devices and iOS versions that is now getting signed but wasn't getting signed before. # Dependencies * ## Bundled Libs - Those don't need to be installed manually - * [tss](https://github.com/libimobiledevice) + * [tss](https://github.com/libimobiledevice); * ## External Libs - Make sure these are installed - * [libcurl](https://github.com/curl/curl) - * [libplist](https://github.com/libimobiledevice/libplist) - * [libfragmentzip](https://github.com/encounter/libfragmentzip) - * [openssl](https://github.com/openssl/openssl) or commonCrypto on macOS/OS X. - * [libirecovery](https://github.com/libimobiledevice/libirecovery) + * [libcurl](https://github.com/curl/curl); + * [libplist](https://github.com/libimobiledevice/libplist); + * [libfragmentzip](https://github.com/s0uthwest/libfragmentzip); + * [openssl](https://github.com/openssl/openssl) or commonCrypto on macOS/OS X; + * [libirecovery](https://github.com/s0uthwest/libirecovery); * ## Submodules - Make sure these projects compile on your system * [jssy](https://github.com/tihmstar/jssy) ## Compiling & installing @@ -42,4 +39,4 @@ Creator of [original project](https://github.com/tihmstar/tsschecker) - [tihmsta ReadMe updated on: - 2019-06-01 + 2019-06-19 diff --git a/tsschecker.xcodeproj/project.pbxproj b/tsschecker.xcodeproj/project.pbxproj index be9c8fc8..2dc35e87 100644 --- a/tsschecker.xcodeproj/project.pbxproj +++ b/tsschecker.xcodeproj/project.pbxproj @@ -186,6 +186,7 @@ TargetAttributes = { 87EB909E1C2940CD002CEE70 = { CreatedOnToolsVersion = 7.2; + ProvisioningStyle = Automatic; }; }; }; @@ -194,8 +195,6 @@ developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( - en, - Base, ); mainGroup = 87EB90961C2940CD002CEE70; productRefGroup = 87EB90A01C2940CD002CEE70 /* Products */; @@ -371,15 +370,20 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = ""; GCC_PREFIX_HEADER = ""; HEADER_SEARCH_PATHS = ( /usr/local/include, /opt/local/include, ); LIBRARY_SEARCH_PATHS = /usr/local/lib; + MACOSX_DEPLOYMENT_TARGET = 10.12; OTHER_CFLAGS = "-std=c11"; PRODUCT_BUNDLE_IDENTIFIER = net.tihmstar.tsschecker; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/external/jssy\""; }; name = Debug; @@ -388,15 +392,20 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = ""; GCC_PREFIX_HEADER = ""; HEADER_SEARCH_PATHS = ( /usr/local/include, /opt/local/include, ); LIBRARY_SEARCH_PATHS = /usr/local/lib; + MACOSX_DEPLOYMENT_TARGET = 10.12; OTHER_CFLAGS = "-std=c11"; PRODUCT_BUNDLE_IDENTIFIER = net.tihmstar.tsschecker; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/external/jssy\""; }; name = Release; From c0b554e83f54d39d90cac9791160bf2ccb062aed Mon Sep 17 00:00:00 2001 From: s0uthwest Date: Wed, 19 Jun 2019 12:30:42 -0700 Subject: [PATCH 77/82] Add instruction for fix cURL problems on macOS --- .gitignore | 6 +++--- ReadMe.md | 6 ++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index eb97c6cb..49cdabad 100644 --- a/.gitignore +++ b/.gitignore @@ -1,14 +1,14 @@ *.DS_Store .patch *.diff -*/.libs/* -*/.deps/* +*/.libs +*/.deps *.a *.o *.la *.lo .*.swp -Makefile* +*Makefile* aclocal.m4 autom4te.cache compile diff --git a/ReadMe.md b/ReadMe.md index 9ff8b28c..5e9fc10b 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -28,8 +28,10 @@ By using all of its customization possibilities, you might discover a combinatio Open terminal and execute the command: `./autogen.sh && make` or use Xcode project. The easiest way to install on macOS is using [`brew`](https://brew.sh): `brew install stek29/idevice/tsschecker-s0uthwest`. -### Some about [cURL](https://github.com/curl/curl) for ubuntu -Follow [this guide](https://dev.to/jake/using-libcurl3-and-libcurl4-on-ubuntu-1804-bionic-184g) to use tsschecker on Ubuntu 18.04 (Bionic) as it requires libcurl3 which cannot coexist with libcurl4 on this OS. +### Some about [cURL](https://github.com/curl/curl) +* Linux: Follow [this guide](https://dev.to/jake/using-libcurl3-and-libcurl4-on-ubuntu-1804-bionic-184g) to use tsschecker on Ubuntu 18.04 (Bionic) as it requires libcurl3 which cannot coexist with libcurl4 on this OS. +* macOS: open file [Makefile.am](https://github.com/s0uthwest/tsschecker/blob/master/tsschecker/Makefile.am) and update line with LDADD: `tsschecker_LDADD = $(AM_LDFLAGS) libjssy.a /usr/lib/libcurl.4.dylib` + It required for downloading JSON files from ipsw.me for now. ## Report an issue You can do it [here](https://github.com/s0uthwest/tsschecker/issues). From 0c8194d0fab42fe1a8c9b6159acbaa55418488b7 Mon Sep 17 00:00:00 2001 From: s0uthwest <42713499+s0uthwest@users.noreply.github.com> Date: Wed, 7 Aug 2019 07:59:39 -0700 Subject: [PATCH 78/82] Probably fix issue #9 --- tsschecker/tsschecker.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index e0622eb1..df78f47d 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -705,7 +705,7 @@ int tss_populate_random(plist_t tssreq, int is64bit, t_devicevals *devVals){ makesha1: SHA1(zz, 8, (unsigned char*)devVals->apnonce); }else if (nonceLen == 32){ - unsigned char zz[8] = {0}; + unsigned char zz[9] = {0}; unsigned char genHash[48]; //SHA384 digest length for (int i=0; igenerator)-1; i++) { From a1f55089711e1fc7023a200aef85c9ab7ae5bc5f Mon Sep 17 00:00:00 2001 From: M1staAwesome <37033149+M1staAwesome@users.noreply.github.com> Date: Sat, 21 Sep 2019 05:25:12 -0500 Subject: [PATCH 79/82] Added some more collisioned apnonces for A8 devices (#10) --- nonces.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/nonces.txt b/nonces.txt index 4c209be3..45573137 100644 --- a/nonces.txt +++ b/nonces.txt @@ -41,3 +41,11 @@ d8befbd5b7c9543b3cc06e1fbfc660486494333f e456e81cff61251f13f17a183b594d072c603adf a424cfabe80ab6fac7ab11afe0c36ede4c65476d 44605d9daca26c6211e34d07617104da12bb31e4 +e2d4e40384b69685ef50d56c427f99162d93fb81 +79febc9d8e400fa1cafa2d94296a11563f3a81f9 +031628a41c50425b984b2793d45e60a7fc154f96 +2c3eb995241e528dea7952bcbb6a72264a5c6d7f +cc0eb67aabdbb06e8560af9b9be158cceb6b1f01 +1af3454a672dda5dac9bcd3a8a76cd9164d0e0a3 +0c6ec8eb454c40870cd4ef4d89d8c9ccb81d398c +0a475cf24cc2118e9d639f85951c5892e2a5f92e From 64e150acd7acc2ecbfd6dc6900d575708759f715 Mon Sep 17 00:00:00 2001 From: s0uthwest <42713499+s0uthwest@users.noreply.github.com> Date: Sun, 6 Oct 2019 22:47:36 +0300 Subject: [PATCH 80/82] nonces.txt: about checkm8 --- nonces.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/nonces.txt b/nonces.txt index 45573137..abc178b0 100644 --- a/nonces.txt +++ b/nonces.txt @@ -6,6 +6,7 @@ Recommmended save blobs with this generators: 0xedeeb72d7575e360 0x1111111111111111 // default boot-nonce, used on unc0ver jailbreak +***after releasing checkm8 ApNonce collision isn’t required*** Recovery collision ApNonces (some A7 devices with iOS 9.1-10.2): 9e4c518009d00df190a450b3b47691768812360c 9f4aeec726e7c682339ddb3c6c2dec52662dc517 From 3135d5ce73f7cf7229c373db2f5c333a1c15196b Mon Sep 17 00:00:00 2001 From: s0uthwest <42713499+s0uthwest@users.noreply.github.com> Date: Sun, 6 Oct 2019 22:49:37 +0300 Subject: [PATCH 81/82] =?UTF-8?q?Add=20iPad=20(7th=20generation)=20bbgcid?= =?UTF-8?q?=20[Wi-Fi=20model],=20added=20experimental=20bb=E2=80=A6=20?= =?UTF-8?q?=E2=80=A6gcids=20for=20other=20Sept.=202019=20models?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tsschecker/tsschecker.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index df78f47d..0d3838d4 100644 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -151,6 +151,9 @@ static struct bbdevice bbdevices[] = { {"iPhone11,4", 165673526, 12}, // iPhone XS Max (China) {"iPhone11,6", 165673526, 12}, // iPhone XS Max (Global) {"iPhone11,8", 165673526, 12}, // iPhone XR + // {"iPhone12,1", 524245983, 12}, // iPhone 11 + // {"iPhone12,3", 524245983, 12}, // iPhone 11 Pro + // {"iPhone12,5", 524245983, 12}, // iPhone 11 Pro Max // iPads {"iPad1,1", 0, 0}, // iPad (1st gen) @@ -168,6 +171,8 @@ static struct bbdevice bbdevices[] = { {"iPad6,12", 3840149528, 4}, // iPad (5th gen, 2017, Cellular) {"iPad7,5", 0, 0}, // iPad (6th gen, 2018, Wi-Fi) {"iPad7,6", 3840149528, 4}, // iPad (6th gen, 2018, Cellular) + {"iPad7,11", 0, 0}, // iPad (7th gen, 2019, Wi-Fi) + // {"iPad7,12", 524245983, 12}, // iPad (7th gen, 2019, Cellular) // iPad minis {"iPad2,5", 0, 0}, // iPad mini (1st gen, Wi-Fi) From 62d2b32f782e2735c859ab4f51976461b555e505 Mon Sep 17 00:00:00 2001 From: s0uthwest <42713499+s0uthwest@users.noreply.github.com> Date: Tue, 5 Nov 2019 00:45:03 +0300 Subject: [PATCH 82/82] Delete nonces.txt --- nonces.txt | 52 ---------------------------------------------------- 1 file changed, 52 deletions(-) delete mode 100644 nonces.txt diff --git a/nonces.txt b/nonces.txt deleted file mode 100644 index abc178b0..00000000 --- a/nonces.txt +++ /dev/null @@ -1,52 +0,0 @@ -Recommmended save blobs with this generators: -0x9d0b5b5ff92fff23 -0xbd34a880be0b53f3 // default boot-nonce, used on Electra / Chimera jailbreaks -0x4bb8834ba6444b50 -0x698337f5a79c3292 -0xedeeb72d7575e360 -0x1111111111111111 // default boot-nonce, used on unc0ver jailbreak - -***after releasing checkm8 ApNonce collision isn’t required*** -Recovery collision ApNonces (some A7 devices with iOS 9.1-10.2): -9e4c518009d00df190a450b3b47691768812360c -9f4aeec726e7c682339ddb3c6c2dec52662dc517 - -DFU collision ApNonces: -1) for some A7 devices, some collisioned: -6b83f831a6305ae90d57a78ba8eb9d81e7a9058f -7d7bdc28e5eca36dc5bc20c791850f110dc28269 -6b81a2c3cdf87404dee28330f7fcb0ee62c425a1 -778282f0cf6e5234446d88ebc5dcfde81f415b57 -7ce1657233867e988e1b48988ef98fc28ddf20f5 -8b9244eba18e07f3ad9d5eed4f972aa98f0c495e -198365e19ea223bd73ee27faa555ca24ac6ed65d -994bf71da4fd4ba758a8ec6c943a5a610be02edb -ee4b7f9b2d7d41bfde4c8390734a83d63c2fe997 -8f760412c8653de657e8ea2352f706de2e9ca85c -63e81aabb8e9e45cc756c347e8cdfd9ae7c796ad -1dedf288afea588e803be0737af7ae5ca87d107f -99a7b1ba5977d6c112717cc208a41785aaa7a313 -74f5bbf201cbdcb8a145220fdcc6d82c3ce3a9d8 -b05a70468054cfe94251b34b58f28450054f1aa9 -93d5c7ba2844327ccb0a2a705fa8bb186021b459 -728a82a4bf7246939ea5db839ca782604cd97511 -99b5e22d771c0f1c81f70c394e9907993a2db435 -f5cce05e81a9be2ef66ec287f692ffdf20b13860 - -2) for A8 devices, some collisioned: -1a965b264168d077ad438546b09204e1d92d2c8b -7ba89ec4cb77a7aa3be826ea55196d333f444cce -b5992dc8a668fd474969111b9b1ff1997cf01bab -14b656ea957a73a54a406c536266c0102e8cac0a -d8befbd5b7c9543b3cc06e1fbfc660486494333f -e456e81cff61251f13f17a183b594d072c603adf -a424cfabe80ab6fac7ab11afe0c36ede4c65476d -44605d9daca26c6211e34d07617104da12bb31e4 -e2d4e40384b69685ef50d56c427f99162d93fb81 -79febc9d8e400fa1cafa2d94296a11563f3a81f9 -031628a41c50425b984b2793d45e60a7fc154f96 -2c3eb995241e528dea7952bcbb6a72264a5c6d7f -cc0eb67aabdbb06e8560af9b9be158cceb6b1f01 -1af3454a672dda5dac9bcd3a8a76cd9164d0e0a3 -0c6ec8eb454c40870cd4ef4d89d8c9ccb81d398c -0a475cf24cc2118e9d639f85951c5892e2a5f92e