Upgrade iPhone 3GS 5.0.1 => 5.1.1: device isn't eligible...

iDanny

Membre actif
8 Janvier 2009
262
12
Hi,

J'ai un souci de màj d'un bon vieil iPhone 3GS qui est actuellement sous iOS 5.0.1.
Il n'est pas jailbreaké.
J'aimerais le passer en iOS 5.1.1.

Quand je le branche à iTunes, celui-ci me propose évidemment iOS 6.0.1.
J'ai récupéré l'image d'iOS 5.1.1 pour le 3GS (iPhone2,1_5.1.1_9B206_Restore.ipsw).
Quand je tente de l'installer, iTunes me sort (après vérif auprès du serveur d'Apple) le fameux message "this device isn't eligible for the requested build" :hein:

En cherchant ce message sur Google, je ne trouve quasiment que des sujets parlant de jailbreak :mouais:
Notamment un truc qui revient souvent : la recommandation de commenter la ligne qui redirige gs.apple.com dans le fichier hosts.
Sauf que je n'ai pas cette ligne dans mon hosts... donc je ne peux pas agir sur ça :rolleyes:

Je commence à me demander si ça ne serait pas tout simplement dû au fait qu'une version + récente (6.0.1) est dispo ?
Si c'est ça, autant que j'arrête tout de suite de chercher une solution :rolleyes:

Si qqun a une piste à me donner... :zen:
 
Bonjour.
Ce problème est simple à comprendre :
Apple signe chaque composant de l'IPSW durant le restaure. Ces signatures sont connues uniquement par Apple.
Lors de la restauration avec iTunes, ce dernier contacte gs.apple.com et s'assure que l'OS qu'il s'apprête à restaurer est toujours signé, donc le dernier sorti.
Si c'est le cas, gs.apple.com envoie à iTunes les signatures, ce dernier les appliques à l'IPSW et la restauration commence.
Dans le cas contraire, gs.apple.com envoie une erreur qu'iTunes vous affiche joyeusement.
Maintenant, le rapport au Jailbreak (ce qui est faux) :
Il existe une faille, la replay attack : il y a 2 cas
1. L'Appareil est Jailbreaké : Cydia récupère seul les SHSH (signatures) et les enregistre sur un serveur de Saurik (créateur de Cydia - membre de l'iPhone Dev Team)
2. L'appareil n'est pas jailbreaké : dans ce cas, des utilitaires tels TinyUmbrella enregistrent ces SHSH et les réservent à un usage ultérieur.
Si l'OS que l'on veut restaurer n'est plus signé, on utilise redsn0w qui va, avec les SHSH enregistrés, restaurer le firmware (dans le cas des appareils A4 et A5 (si ces derniers sont sous iOS 5.x.y)
Ou alors on peut modifier le fichier hosts de la machine et rediriger le trafic iTunes vers le serveur Saurik et qui possède les SHSH que vous enregistrez.
Attention : il y a maintenant des conditions strictes aux restaurations soumises au Replay Attack. Je vous recommande http://blog.iphone-dev.org/ (anglais) qui contient les infos émanant des ceux qui FONT les choses plutôt que ceux qui racontent n'importe quoi.
J'espère vous avoir aidé.
 
Ok donc pour résumer (avec des valeurs concrètes entre parenthèses), on ne peut pas mettre à jour avec une version d'iOS (5.1.1) antérieure à la + récente dispo (6.0.1), même si celle qui est déjà sur le device (5.0.1) est antérieure à celle qu'on veut installer... j'ai bon ? :p

(sauf en passant par le jailbreak donc, mais c'est un autre sujet...)
 
Dans votre cas, j'aurais tendance à dire oui.
Mais en réalité, comme vous avez un iPhone 3GS, vous pouvez installer n'importe quel iOS si vous avez enregistré ses SHSH (le Jailbreak n'est pas obligatoire; pour cela connecter l'iPhone à un ordinateur, lancer TinyUmbrella et il sauvegardera chaque SHSH qu'il pourra, le mieux étant de la faire à chaque sortie d'iOS)
Voici ce que je vous recommande :
Si vous avez un PC, téléchargez iFaith. Sans entrer dans les détails, ce logiciel peut sauvegarder les SHSH qui ont été utilisés pour restaurer l'appareil (donc iOS 5.0.1) même s'il n'est plus signé.
Il existe de bons tutos...
Ensuite, avec TinyUmbrella, sauvegardez les SHSH iOS 6.0.1 (le dernier dispo).
Ainsi, vous pourrez mettre à jour vers iOS 6.0.1 sans risque et s'il vous déplait, vous avez vos SHSH pour retourner vers iOS 5.0.1. Vous avez là un avantage que les possesseurs d'iPhone 4S, 5 et d'iPad 2,3,4 n'ont plus... Le downgrade avec juste des SHSH.
 
Dernière édition:
Merci !! Ça fait 4 jours que j'épluche les forum (fori) et je n'avais pas trouvé aussi clair !!!
J'ai exactement le même problème, mais avec un iPhone 4 (je veux passer d'iOS 5.0.1 à 5.1.1).
Est-ce que je pourrais aussi repasser du 6.0.1 au 5.0.1 si j'enregistre les SHSH ? (vous n'avez pas listé l'iphone 4 précédemment :p )

(ça me contrarie beaucoup qu'Apple ne laisse plus le choix de la version du firmware sachant qu'on ne downgrade pas :( j'avais déjà fait shift+restaurer avec un iPhone 3G et je n'avais eu aucun soucis)
 
Moi je pense que vous avez pris une version developpeur j'avais eu le même problème, essayez d'aller sur le site officiel d'apple et de prendre la build qui vous convient...

Désolé pour la pub d'un autre site mais ici sont répertorié tous les liens officiel (applndndl.apple.com) et normalement il ne devrait y avoir aucun souci ! Je l'ai fais plusieurs fois ça devrait marcher sans aucun problème...
 
Pourtant le fichier que j'ai téléchargé était bien sur le site
applndndl.apple.com/...
J'ai essayé avec le build 9B206 et 9B208, même combat. Les fichiers étant bien pour GSM.
 
Re,

J'ai essayé de sauvegarder les "SHSH" avec TinyUmbrella... si je comprends bien, le SHSH n'est pas un truc unique qui est stocké dans l'iPhone, mais c'est un truc qui est récupéré depuis un serveur. C'est ça ?
Et par défaut, TinyUmbrella essaie de récupérer tous les SHSH de toutes les versions d'iOS ayant existé, pour la version de l'iPhone connecté.
Donc :

1. avec les réglages par défaut, TinyUmbrella essaie apparemment de se connecter aux serveurs de Cydia, et pour mon iPhone 3GS il n'a pu récupérer aucun SHSH ! Je n'ai que des messages du style "CYDIA DOES NOT HAVE YOUR SHSH FOR iPhone3GS 5.0.1 (9A405) THERE IS NO WAY FOR YOU TO GET THEM. SORRY. YOU ARE JUST TOO LATE." dans le log.

2. en décochant l'option "se connecter à Cydia", apparemment il se connecte aux serveurs d'Apple (le fameux gs.apple.com), et là il a pu récupérer 6 SHSH (5 pour iOS 6 et 1 pour iOS 4.1), mais pas celui d'iOS 5.0.1 ("APPLE is NOT signing iPhone3GS 5.0.1 (9A405) SHSH requests anymore. All you can do now is select CYDIA and hope that CYDIA has your SHSH saved. If not, there is nothing you can do.") :mouais:

Donc je suis bloqué, non ? :rolleyes:

Sinon juste pour info, si ce que j'ai dit au début est exact ("le SHSH n'est pas un truc unique qui est stocké dans l'iPhone, mais c'est un truc qui est récupéré depuis un serveur" et "TinyUmbrella essaie de récupérer tous les SHSH de toutes les versions d'iOS ayant existé, pour la version de l'iPhone connecté"), alors question : pourquoi avoir besoin de TinyUmbrella pour récupérer les SHSH ? Il n'y a pas des sites qui proposent des listes de SHSH déjà prêtes à êtres downloadés ? :mouais:
 
Alors, pour répondre le plus complètement possible :
1. TinyUmbrella sauvegarde les SHSH d'iOS qu'il peut, donc iOS 6 et iOS 4.1 qui, par une sombre magie obscure n'a jamais été fermé par Apple; il est en clair toujours possible d'aller vers iOS 4.1.
2. Les appareils avec une puce A4 ou inférieurs possèdent une faille Limera1n (bootrom) permettant l'éxécution de code au plus bas niveau. En clair, avec l'utilitaire iFaith dont j'ai parlé, il va injecter un petit code dans le bootrom et dumper les SHSH utilisés lors de l'installation et ce même si Apple ne les signes plus.
3. Les SHSH sont uniques à chaque téléphones. Ils sont générés par une clé secrète Apple, le numéro ECID, le numéro CHIPID et divers autres codes uniques à l'appareil.
Donc
A. On ne peut donc utiliser les SHSH d'un autre (car pas le même ECID,...)
B. On ne peut les sauver (sauf exception comme vous) que lors de leur signature car quand un nouveau iOS sort, l'ancienne version n'est plus signée (Apple en a le contrôle total, elle active les Signing Window quand elle le veut, mais en général sauf pour iOS 4.1 et ce pour une raison obscure au commun des mortels, elle ferme ces Signing Window à chaque sortie).
Les SHSH sont très dépendants du contexte actuel. Et depuis iOS 5.0, un fonction supplémentaire (nonce) rends encore plus compliquée la Replay Attack, car en plus de ces éléments une partie de la signature est générée aléatoirement et contrôlée par iTunes et par gs.apple.com. Les SHSH sauvés sont donc invalidés par gs.apple.com car le code aléatoire est différent entre iTunes (qui utilise un SHSH issus d'une sauvegarde avec un code aléatoire enregistré à un instant t) et gs.apple.com (qui a généré un nouveau code aléatoire, donc différent de celui enregistré).
Néanmoins, les downgrades sont toujours possibles pour des appareils éligibles (http://blog.iphone-dev.org).

---------- Nouveau message ajouté à 20h00 ---------- Le message précédent a été envoyé à 19h37 ----------

@erohares
Théoriquement, oui.
En utilisant iFaith, vous pourrez enregistrer vos SHSH d'iOS 5.0.1.
Ensuite, par un procédé appelé Stitch IPSW, vous pourrez créer un IPSW d'iOS 5.0.1 qui contiendra les signatures de iOS 5.0.1.
Ensuite, en utilisant RedSn0w, vous pourrez créer une image bb-free (sans baseband). Je m'explique :
Le baseband, cette puce magique qui permet de téléphoner, réagit mal quand sa version est supérieure à celle d'iOS installée. En effet, si vous mettez à jours vers iOS 6.0.1 sans crier gares votre baseband sera mis à jour. Très bien. Mais si l'envie (ou le besoin) vous prends de revenir vers iOS 5.0.1, votre Baseband ne sera pas content : il utilisera des fonctionnalités nouvelles et l'OS installé sera trop vieux pour les utiliser. Mais si vous ne le mettez pas à jour, il sera tout content aussi.
L'idée est donc de créer une image IPSW d'iOS 6.0.1 sans le baseband, donc pour ne pas le mettre à jour, et vous aurez un iOS 6.0.1 fonctionnel avec garantie de downgrade.
S'il ne vous plait pas, en utilisant l'image issue du Stitch IPSW, vous pourrez retourner vers iOS 5.0.1 qui en plus retrouvera son Baseband d'origine et ne vous assommera point de messages idiots (appel interrompu alors qu'il s'est bien déroulé, du vécu...).
Attention, c'est théorique. Je ne sais plus comment se comportent iFaith et RedSn0w dans ce cas. Le mieux est déjà de commencer par iFaith et sauvegarder ses SHSH, c'est le plus sûr. Ensuite, je pense qu'avec ces signatures il est possible d'utiliser RedSn0w pour le reste.
Ne nous méprenons pas : il n'est ici point question de Jailbreak : utiliser RedSn0w ne vous amènera pas notre gestionnaire de .deb à l'icône rouge préférée.

Pour le cas du 3G, une petite histoire s'impose :
Dans un temps informatique très lointain (4 ans), on pouvait installer n'importe quel iOS / iPhone OS sans restrictions. Cela déplaisait à Apple.
Apple comblait les failles utilisées par les hackers... D'abord Pwnage, Pwnage 2.0, SteakS4auce,... Ces failles étaient pratiques car on pouvait modifier en profondeur l'iPhone (installer Ubuntu ou Android est tout à fait possible sur un 3G).
Un jour, Apple a sorti l'iPhone 3GS. Rapide. 2x plus. Mais il était livré avec toute les failles connues comblées. Pas de chance, 24kpwn fut découverte.
Apple, vexée, lança alors un deuxième iPhone 3GS, sans la faille, dès Septembre 2009. Rétrospectivement, on parle des iPhone 3GS old ou new bootrom.
Mais, dans les tréfonds du milieu hacker s'est déroulée une toute autre histoire : NitroKey, une société qui faisait son beurre en vendant un petit dongle USB hors de prix pour jailbreaker à chaque démarrage l'iPod touch 2G, a leaké la faille 24kpwn permettant à Apple de la corriger vite. Dans le même temps, ils ont également leaké une faille Baseband qui, à terme, aurais permis de désimlocker. Elle fut comblée.
Ce gain de vitesse d'Apple dans la lutte anti-jailbreak leur a permis d'implémenter l'arme ultime : les SHSH. Transparents à l'utilisateur lambda, ils étaient la garantie que chaque iDevice ne pouvait installer que le dernier iOS sorti, et empêcher de downgrader pour Jailbreaker à nouveau.
Mais, et les iPhone 3G ? Ils sont toujours vulnérables ? Et bien oui !
Jusque iOS 4.0, les iPhone 3G étaient toujours libres de downgrader à souhait. Mais Apple, dans son infinie (envie de tout contrôler) sagesse a implémenter les SHSH de façon logicielle aux iPSW, et non à l'iPhone lui-même. Rien de plus simple que de passer outre. Mais l'iPhone 3GS n'avait pas cette chance : iBoot (le bootloader d'iOS) vérifie à chaque lancement que l'iPhone a été restauré avec des SHSH.
La suite, on la connaît : découverte de limera1n; Replay Attack; nonce;...

---------- Nouveau message ajouté à 20h19 ---------- Le message précédent a été envoyé à 20h00 ----------

Sinon, je pense qu'il serait utile de construire une grande FAQ sur le sujet de l'iPhone et ce qu'Apple ne nous laisse voir : downgrade; jailbreak; sécurité; comment ça fonctionne iOS et l'iDevice en général... Beaucoup de questions sont posées, et des sites très peu informés relaient des informations erronées qui peuvent conduire à des actions dangereuses et à des problèmes sur l'iPhone (que l'on s'entende bien, il est possible dans 99,5% des cas de réparer un iPhone, même s'il apparaît non-fonctionnel. J'en vois souvent...)