Como verificar a integridade das stock ROMs da Samsung

Autor: Cézar Augusto de Campos
28 de outubro de 2020

Essa dica é pra você que baixa stock ROMs para o seu celular da Samsung e gostaria de ver se eles estão inteiros antes de instalá-los no telefone. O processo é bem simples e pode ser feito em qualquer distribuição Linux.

Hoje de manhã baixei uma nova ROM pro meu celular que foi lançada no começo de Outubro com novos patches de segurança, a transferência levou mais de seis horas, então pra garantir que tudo esteja certo eu vou mostrar pra vocês como vou ver se a stock ROM não foi corrompida durante o download.

O arquivo que baixei é um pequeno zip de uns 3 GB mais ou menos. Depois de extraído ele liberou novos arquivos que totalizam 4 GB mais ou menos.

                $ unzip SM-A205G_1_20200925080504_axdd64ux41_fac.zip
                
Archive: SM-A205G_1_20200925080504_axdd64ux41_fac.zip
inflating: BL_A205GUBS7BTI2_CL19166873_QB34239128_REV00_user_low_ship.tar.md5
inflating: AP_A205GUBS7BTI2_CL19166873_QB34239128_REV00_user_low_ship_meta_OS10.tar.md5
inflating: CP_A205GNDXS7BTI2_CP16788700_CL19166873_QB34239128_REV00_user_low_ship.tar.md5
inflating: HOME_CSC_OMC_OWO_A205GOWO7BTI2_CL19425033_QB34239415_REV00_user_low_ship.tar.md5
inflating: CSC_OMC_OWO_A205GOWO7BTI2_CL19425033_QB34239415_REV00_user_low_ship.tar.md5
                
        

Como você pode perceber todos os arquivos terminam com md5, antes de você instalar no celular você normalmente tira esse md5 do nome e extrai o arquivo tar, mas na verdade esse md5 está ali pra avisar que a soma de verificação está no final do arquivo, como você confere isso? Com o comando tail:

                $ tail -n 1 AP_A205GUBS7BTI2_CL19166873_QB34239128_REV00_user_low_ship_meta_OS10.tar.md5
                3d38dbcf7b4c14bb3d78eeec47614284 AP_A205GUBS7BTI2_CL19166873_QB34239128_REV00_user_low_ship_meta_OS10.tar
        

Agora que sabemos a soma vamos conferir ela com o comando md5sum. Copie e cole esta saída de texto e salve em um arquivo separado.

3d38dbcf7b4c14bb3d78eeec47614284 AP_A205GUBS7BTI2_CL19166873_QB34239128_REV00_user_low_ship_meta_OS10.tar

Renomeie o arquivo que você quer verificar, tirando o md5 no final pra que o nome fique igual no texto acima, ao mesmo tempo você tem que remover a última linha do arquivo pois ela não está inclusa na soma de verificação. Por sorte dá pra fazer essas duas coisas com um único comando:

$ head -n -1 AP_A205GUBS7BTI2_CL19166873_QB34239128_REV00_user_low_ship_meta_OS10.tar.md5 > AP_A205GUBS7BTI2_CL19166873_QB34239128_REV00_user_low_ship_meta_OS10.tar

Ele vai gerar um novo arquivo sem o md5 no final, o processo pode demorar dependendo da velocidade do teu HD. Agora use o md5sum pra ver se o arquivo está íntegro.

                $ md5sum -c arquivo_de_texto_que_voce_salvou.txt
                AP_A205GUBS7BTI2_CL19166873_QB34239128_REV00_user_low_ship_meta_OS10.tar: SUCESSO
        

Ótimo, isso quer dizer que não vou precisar baixar a ROM de novo, faça isso para todos os arquivos que vieram compactados e você saberá se é seguro atualizar a ROM do seu celular ou não, agora só falta checar se os outros arquivos estão inteiros também.

Como o processo é demorado eu fiz um pequeno script que automatiza tudo.

                
#!/bin/bash
for file in *.md5
do
    tail -n 1 "$file" >> SUMS
done
for file in *.md5
do
    head -n -1 "$file" > "${file/.md5/}"
done
md5sum -c SUMS
                
        

Se você ficou curioso, a saída que deu foi essa:

                $ ./checar.sh
                
AP_A205GUBS7BTI2_CL19166873_QB34239128_REV00_user_low_ship_meta_OS10.tar: SUCESSO
BL_A205GUBS7BTI2_CL19166873_QB34239128_REV00_user_low_ship.tar: SUCESSO
CP_A205GNDXS7BTI2_CP16788700_CL19166873_QB34239128_REV00_user_low_ship.tar: SUCESSO
CSC_OMC_OWO_A205GOWO7BTI2_CL19425033_QB34239415_REV00_user_low_ship.tar: SUCESSO
HOME_CSC_OMC_OWO_A205GOWO7BTI2_CL19425033_QB34239415_REV00_user_low_ship.tar: SUCESSO
                
        

Em caso de erro a saída vai ser essa:

                $ ./checar.sh
                
AP_A205GUBS7BTI2_CL19166873_QB34239128_REV00_user_low_ship_meta_OS10.tar: FALHOU
BL_A205GUBS7BTI2_CL19166873_QB34239128_REV00_user_low_ship.tar: FALHOU
CP_A205GNDXS7BTI2_CP16788700_CL19166873_QB34239128_REV00_user_low_ship.tar: FALHOU
CSC_OMC_OWO_A205GOWO7BTI2_CL19425033_QB34239415_REV00_user_low_ship.tar: FALHOU
HOME_CSC_OMC_OWO_A205GOWO7BTI2_CL19425033_QB34239415_REV00_user_low_ship.tar: FALHOU
md5sum: AVISO: 5 somas de verificação calculadas NÃO coincidem
                
        

É isso, um abraço aí pra todos vocês que mexem com Android.