O problema de Fóruns como esse é que às vezes a resposta de nossas questões fica pulverizada em diversos "posts" diferentes em diversos lugares diferentes. Isto pode desafiar a compreensão, e juntar as informações relevantes pode ser quase
Quando a Apple lançou o 3G[s] aprontou uma surpresinha. Toda vez que o 3G[s] é restaurado, o iTunes contata os servidores da Apple para verificar qual a versão mais atual do Sistema Operacional disponível. O restauro então só prossegue se o iPhone tiver o sistema operacional mais atual - ou se você aceitar fazer o upgrade para o mesmo.
Entendam que as sugestões abaixo se aplicam à aparelhos 3G[s], iPod Touch 3ª geração e o iPad já com o Jailbreak instalado. Até porque aparelhos "virgens" não têm o Cydia [Esta condição mudou! Leia a atualização ao fim do post!]
Para se atestar a legitimidade do sistema operacional, o iTunes coleta um dado - o ECID - que é único e intransferível de cada iPhone e o envia à Apple. Os servidores da Apple recebem o ECID e geram um arquivo extensão SHSH que são únicos para o sistema operacional e o iPhone envolvidos na operação de restauro. Em outras palavras, se Mané tem um 3G[s] 3.0.1 com Jailbreak, que deu problema e precisa ser restaurado:
1- o iTunes coleta o ECID do iPhone "Mané" e o manda à Apple.
2- o Itunes informa a Apple que Mané tem um iPhone com ECID "tal e qual" e Firmware 3.0.1
3- A Apple responde ao iTunes que a versão mais atual é a 3.1.3 (HOJE, 30/04/2010)
4- O iTunes diz ao Mané basicamente o seguinte: "Aí, mermão, negócio é o seguinte. Tu só pode restaurar fazendo o upgrade pro 3.1.3. Senão a casa caiu procê, valeu? Perdeu, preyboy" (escrevo assim porque essa atitude da Apple é uma atitude de gangsta)
5- Neste momento, acuado, temendo por sua vida, Mané não tem solução a não ser clicar em "sim".
6- Ao receber o OK, a Apple envia o SHSHhashMané3.1.3 (escrevo assim para que entendam que é um arquivo único, individualizado para o Mané e o Firmware original 3.1.3) e ao receber o iTunes confere se o SHSHhash bate com o ECID.
7- Em caso positivo, o aparelho é restaurado, e volta à condição de prisioneiro da Prisão Apple.
8- Em caso negativo: iCacete. Peso de papel.
Novamente: este arquivo SHSH personalizado é o que se está chamando de hash. Este arquivo é usado para legitimar o ipsw do firmware a ser usado na restauração - e é único e intransferível. Em inglês, os hashes têm sido chamados de "blobs" também.
Eis que entra o Saurik (Jay Freeman) dono do Cydia com o serviço "make my life easier". O que ele faz é o seguinte: quando vc abre o Cydia e toca no botão "make my life easier", o Cydia lê e manda o seu ECID para a Apple, como se vc estivesse restaurando o iPhone. Os servidores recebem o ECID e geram o SHSH hash do FW mais recente e mandam de volta. O Cydia guarda o SHSH hash em seus servidores para aquela versão.
Mas de quê isso adianta, se o iTunes verifica diretamente com a Apple qual a versão mais recente? Simples, você instala um "desvio" para o iTunes falar com o Cydia, ao invés da Apple.
Vc faz uma alteração de um arquivo em seu micro, chamado HOST (tutorial aqui), que basicamente instrui o iTunes a contatar um servidor cujo IP é diferente do da Apple. O IP que vc incluirá no arquivo HOST é o do Cydia. Assim, quando vc restaurar o iPhone, o iTunes estará falando com os servidores do Cydia, achando que está falando com os da Apple.
Pois bem, quando vc mandar fazer o restauro para o FW cujo hash vc tem salvo lá, o Cydia reenvia o mesmo SHSH Hash como resposta, e o iTunes prossegue com o restauro.
Note que o hash que pode ser salvo será sempre da versão mais atual. Se vc não apertou o botão "make my life easier" antes de sair o 3.1.3, vc não tem mais como ter o has do 3.1.2 armazenado.
Os hashes ficam armazenados indefinidamente. Há felizardos que vêm salvando seus hashes desde a versão 3.0, portanto eles podem fazer o downgrade do 3G[s] para qualquer uma destas versões.
Alternativamente, se vc não quiser depender de ninguém - nem do Cydia - para poder restaurar seu 3G[s], use o Firmware Umbrela/TinyTSS (tutorial aqui que faz com que seu próprio computador faça a parte do Cydia em requisitar o SHSHhash, e reenviar os SHSH hashes comprobatórios para o restauro.
Ao final de tudo isso, não esqueçam de agradecer ao Euoba que montou ambos tutoriais originais.
E só para finalizar, esta regra se aplica SOMENTE AO 3G[s]. iPhones 2G e 3G e iPod Touchs 1G e 2G NÃO PRECISAM DISSO. NOVA CONDIÇÃO, veja ao ATUALIZAÇÃO 4
Desculpe pelo texto meio árido, mas depois eu vejo se boto umas figurinhas para decorar.
Abs,
Eduardo
ATUALIZAÇÃO
Uma correção: Na verdade, salvar os SHSH hashes e poder usá-lo para restaurar seu aparelho NÃO É PRIVILÉGIO DE APARELHOS JAILBROKEN. Se vc utilizar o processo descrito pelo Euoba no tutorial que eu citei acima notará que em momento algum é necessário que o iPhone 3G[s] ou o iPod Touch estejam Jailbroken. Na verdade não testei, mas estou certo que não é nem nescessário que o iPhone esteja ativado. Afinal de contas, é só colocá-lo em restore (desligar o iPhone, segurar Home, plugar o cabo no micro) que o iPhone aparecerá como "em modo de restauro".
Em outras palavras, se vc atualizou o seu 3G[s] "por acidente", e ele está travado em tela de emergência, ainda é tempo de conseguir guardar os seus hashes 3.1.3 tanto no Cydia como em seu micro.
No Cydia?!? Sem Jailbreak?
Correto. É só usar o Firmware Umbrella, e no drop-down list aonde diz SHSH Repository, selecione Saurik-Cydia. Isto fará com que o envio do ECID à Apple passe pelo Cydia antes. Assim, quando a Apple responder ao Cydia, o SHSH hash vai ser salvo no lá, com uma cópia enviada a você.
E com um JB iminente para o 3.1.3, é um momento IMPORTANTE para que vc faça isso. Não resolverá o seu problema imediato MAS poderá te ajudar no futuro.
Um grande abraço,
Eduardo
ATUALIZAÇÃO 2
iH8sn0w tem um aplicativo que faz todo o processo praticamente sozinho para você. É o AutoSHSH, que vc baixa aqui.
Um grande abraço,
Eduardo
ATUALIZAÇÃO 3
iH8sn0w aposentou o AutoSHSH por causa das atualizações sofridas pelo Firmware Umbrella - agora chamado de Tiny Umbrella. Ele automatiza o processo de Salvamento dos SHSH Hashes e de restauro, dispensando a alteração no arquivo HOSTs - pré requisito para downgrade do 3G[s]. O The Firmware Umbrella pode ser encontradoaqui
Um grande abraço,
Eduardo
ATUALIZAÇÃO 4
A partir da versão 4.0/4.0.1 a Apple incorporou aos arquivos de Firmware oficiais dos iPhones 3G e iPod Touch 2G um identificador SHSH da versão do firmware. Em outras palavras, a partir da versão qualquer iPhone 3G ou iPod touch 2G poderá encontrar erro ao tentar migrar de um iOS 4.x para outro iOS 4.x caso este último não seja o mais recente.
Para entender: Se o iPhone tiver instalado o iOS 4.0.1 oficial e tentar fazer um downgrade para o iOS 4.0 oficial, a operação poderá terminar em erro porque a Apple não está mais autorizando a versão 4.0.
Como as versões 3.x ou menores não possuem o identificador, o downgrade para estas versões é livre. Única forma de erro que pode se apresentar é o erro 1015 - que é normal (e contornável usando-se o botão "kick device out of recovery" do TinyUmbrella
O Erro também não deve se apresentar se os Firmwares usados forem custom, montados pelo Pwnage Tool ou Sn0wbreeze.
Para ajudar a contornar isso, Jay Freeman, o Saurik, habilitou o backup de SHSH hashes para o 3G e o iPod Touch 2G. Não é uma coisa crucial como no caso do 3G[s] aonde a verificação está codificada no hardware, mas ainda assim facilita.
Um grande abraço,
Eduardo
ATUALIZAÇÃO 5
Isto não é tanto uma atualização quanto é um reforço:
Você não precisa estar com o iOS para o qual quer ter os SHSH salvos instalados. Em outras palavras, se vc está no 4.0, não precisa fazer upgrade para o 4.0.1 para salvar o SHSH.
Entendam que o iPhone só é conectado ao micro para que o TinyUmbrella leia o ECID dele. Mesmo que o Firmware no iPhone seja um antigo 3.0, ao se clicar em Save my SHSH no TinyUmbrella, o SHSH salvo será o do iOS corrente.
Na verdade, para o 3G, 3G[s], iPod Touch 2G (boot novo) e 3G, e iPads, vc nem mesmo precisa conectar o aparelho para salvar o SHSH de versões futuras. Conecte o aparelho no micro e rode o TinyUmbrella. Depois que o TinyU reconhecer o aparelho, clique em Advanced. No campo ECID estará o ECID (Dããã) do aparelho conectado. Anote este número.
Na próxima vez que vc quiser salvar um SHSH de alguma versão, basta baixar o TinyUmbrella atualizado, roda-lo, clicar em Advanced, preencher a lacuna com o ECID de seu aparelho, escolher o a versão de iOS cujos SHSH vc deseja e clicar em Save SHSH. Só isso.
Estranhamente este processo não funciona com o iPhone 4. Para ele é necessário que o aparelho esteja mesmo fisicamente presente e conectado ao micro. Vai entender...
Um abs,
Eduardo




