Dans ce post je vais expliquer comment installer et utiliser TSSchecker écrit par Tihmstar pour OS X et modifié par moi-même pour GNU/Linux.

TSSchecker

Tout d’abord un bref tour de ce que permet TSSchecker : Comme son nom l’indique il verifie auprès du TSS Server la validité de la signature d’une version d’iOS. Vous pouvez verifier la signature d’une version d’iOS en fonction de l’appareil ou de l’ECID de celui-ci.

Usage: tsschecker [OPTIONS]
Checks (real) signing status of device/firmware

  -d, --device MODEL    specific device by its MODEL (eg. iPhone4,1)
  -i, --ios VERSION     specific iOS version (eg. 6.1.3)
  -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
  -e, --ecid ECID       manually specify 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 relase (use with -o)
      --list-devices    list all known devices
      --list-ios        list all known ios versions
      --build-manifest  manually specify buildmanifest. (can be used with -d)
      --nocache         ignore caches and redownload required files
      --print-tss-request
      --print-tss-response

Voici un exemple ci-dessous avec l’iPhone 5C comme appareil et iOS 7.1.1

$ tsschecker -d iPhone5,4 -i 7.1.1
[TSSC] opening firmware.json
[DOWN] downloading file https://api.ipsw.me/v2.1/firmwares.json/condensed
[JSON] counting elements
[JSON] parsing elements
[TSSC] opening Buildmanifest for iPhone5,4_7.1.1_11D201_Restore.ipsw
100 [===================================================================================================>]
[TSSC] opening bbgcid.json
[DOWN] downloading file http://api.tihmstar.net/bbgcid?condensed=1
[JSON] counting elements
[JSON] parsing elements
[TSSC] ERROR: parsing bbgcid.json failed!
[TSSR] WARNING: there was an error getting BasebandGoldCertID, continuing without requesting Baseband ticket
[TSSR] Request URL set to https://gs.apple.com/TSS/controller?action=2
[TSSR] Sending TSS request attempt 1...
iOS 7.1.1 for device iPhone5,4 IS NOT being signed!

Les dépendances

Avant de pouvoir compiler TSSchecker, il vous faudra quelques librairies dont celles de libimobiledevice, libcrippy ainsi que libpartialzip.

Libimobiledevice

Libimobiledevice est assez long à installer, mais très pratique pour la suite. Le code source est disponible sur leur page Github. Il vous suffit ensuite de suivre les instructions dans les README.
Pour les débutants (ou les flemmards) je vous conseil de lire mon post sur easymobiledevice qui founit un script complêt pour installer ces fameuses libraries et les dépendances.

En plus de libimobiledevice, il faudra installer libcrippy puis libpartialzip.

Pour installer ces deux libs executez cette commande dans le dossier de celles-ci : ./autogen.sh && make && sudo make install

Si cette commande vous renvoie cette erreur : -bash: ./autogen.sh: Permission denied
Executez cette commande : chmod +x autogen.sh

Compilation et installation de TSSchecker

Si vous avez suivis toutes les étapes vous êtes prêt à installer TSSchecker.

Linux

Maintenant que vous avez installé toutes les dépendances et libraries pour compiler TSSchecker, nous allons installer une dernière lib : libbsd-dev. sudo apt-get install libbsd-dev En effet, le code utilise les headers BSD et non ceux de GNU/Linux.

Avant la compilation, je vous conseil de lancer le script autogen.sh, qui va se charger de génerer le script configure qui à son tour va vérifier si toutes les bibliothèques sont présentes pour la compilation. Maintenant il ne vous reste plus qu’à cloner le projet et le compiler :

$ git clone https://bitbucket.org/tihmstar/tsschecker
Cloning into 'tsschecker'...
remote: Counting objects: 183, done.
remote: Total 183 (delta 0), reused 0 (delta 0), pack-reused 183
Receiving objects: 100% (183/183), 60.94 KiB | 0 bytes/s, done.
Resolving deltas: 100% (78/78), done.
Checking connectivity... done.
$ cd tsschecker/
$ make
cc -Wall -std=c11  tsschecker/main.c -c -o tsschecker/main.o
cc -Wall -std=c11  tsschecker/download.c -c -o tsschecker/download.o
cc -Wall -std=c11  tsschecker/jsmn.c -c -o tsschecker/jsmn.o
cc -Wall -std=c11  tsschecker/tss.c -c -o tsschecker/tss.o
cc -Wall -std=c11  tsschecker/tsschecker.c -c -o tsschecker/tsschecker.o
cc -Wall -std=c11 tsschecker/main.o tsschecker/download.o tsschecker/jsmn.o tsschecker/tss.o tsschecker/tsschecker.o -lplist -lpartialzip-1.0 -lz -lcurl -lcrippy-1.0 -lxml2 -lm -lcrypto -o tsschecker_tool
Successfully built tsschecker_tool

Si vous souhaitez l’installer : sudo make install Le Makefile va copier tsschecker (= $(TARGET)) dans /usr/local/bin/ vous y retrouverez tous les fichiers binaires de libimobiledevice.

OS X

Pour OS X c’est plus simple que sur Linux, il vous suffit de cloner le projet puis vous le lancez à l’aide de Xcode. A ce moment il ne vous restera plus qu’à compiler (cmd + B) puis à executer (cmd + R).
Si vous souhaitez l’installer je vous conseil de le copier dans /usr/local/bin/ tout comme les executables de Libimobiledevice.

En esperant que ce post a été utile.
Source code pour Mac OS X par @tihmstar : https://github.com/tihmstar/tsschecker
Source code pour Linux par @matteyeux : https://github.com/matteyeux/tsschecker

Si vous avez besoin d’infos contactez-moi sur Twitter : @matteyeux