E' quella che sto tentando di trovare! In ogni caso c'è la b176 online. Come si fa a vedere se c'è la recovery? Potresti spiegare brevemente?
Visualizzazione stampabile
Prima cosa copia questo script e salvalo ad esempio come script.pl:
Poi scarichi Perl e lo esegui nella stessa directory in cui hai il file UPDATE.APP con il comando:codice:#!/usr/bin/perl
######################################################################
#
# File : split_update.pl
# Author(s) : McSpoon and others
# Description : Unpack a Huawei 'UPDATE.APP' file.
#
# Last Modified : 07/07/2012
#
######################################################################
use strict;
use warnings;
my %fileHash=( "\x00\x00\x00\x10","appsboot.mbn",
"\x00\x00\x00\x20","file25.mbn",
"\x00\x00\x00\x30","userdata.img",
"\x00\x00\x00\xB0","cust.ext3.img",
"\x00\x00\x00\x00","system.img",
"\x00\x00\x00\x50","userdata.img",
"\x00\x00\x00\x40","recovery.img",
"\x00\x00\x00\x70","cust.img",
"\x00\x00\x00\x80","AMSSMBN.img",
"\x00\x00\x00\xC0","file11.mbn",
"\x00\x00\x00\xD0","file08.mbn",
"\x00\x00\x00\xE0","file05.mbn",
"\x00\x00\x00\xF0","file04.mbn",
"\x00\x00\x00\xF1","file07.mbn",
"\x00\x00\x00\xF2","splash.raw565",
"\x00\x00\x00\xF3","file01.mbn",
"\x00\x00\x00\xF4","file02.mbn",
"\x00\x00\x00\xF5","file14.mbn",
"\x00\x00\x00\xF6","boot_versions.txt",
"\x00\x00\x00\xF7","upgradable_versions.txt",
"\x00\x00\x00\xF8","file09.mbn",
"\x00\x00\x00\xF9","version.txt",
"\x00\x00\x00\xFA","file20.mbn",
"\x00\x00\x00\xFB","appsboothd.mbn",
"\x00\x00\x00\xFC","boot.img",
"\x00\x00\x00\xFD","file16.mbn",
"\x00\x00\x00\xFE","file18.mbn",
"\x00\x00\x00\xFF","file21.mbn",
);
my $unknown_count=0;
# Turn on print flushing.
$|++;
# Unsigned integers are 4 bytes.
use constant UINT_SIZE => 4;
# If a filename wasn't specified on the commmand line then
# assume the file to be unpacked is called "UPDATE.APP".
my $FILENAME = undef;
if ($#ARGV == -1) {
$FILENAME = "UPDATE.APP";
}
else {
$FILENAME = $ARGV[0];
}
open(INFILE, $FILENAME) or die "Cannot open $FILENAME: $!\n";
binmode INFILE;
# Skip the first 92 bytes, they're blank.
#seek(INFILE, 92, 0);
# We'll dump the files into a folder called "output".
my $fileLoc=0;
my $BASEPATH = "output/";
mkdir $BASEPATH;
while (!eof(INFILE))
{
$fileLoc=&find_next_file($fileLoc);
seek(INFILE, $fileLoc, 0);
$fileLoc=&dump_file();
}
close INFILE;
# Find the next file block in the main file
sub find_next_file
{
my ($_fileLoc) = @_;
my $_buffer = undef;
my $_skipped=0;
read(INFILE, $_buffer, UINT_SIZE);
while ($_buffer ne "\x55\xAA\x5A\xA5" && !eof(INFILE))
{
read(INFILE, $_buffer, UINT_SIZE);
$_skipped+=UINT_SIZE;
}
return($_fileLoc + $_skipped);
}
# Unpack a file block and output the payload to a file.
sub dump_file {
my $buffer = undef;
my $outfilename = undef;
my $fileSeq;
my $calculatedcrc = undef;
my $sourcecrc = undef;
my $fileChecksum;
# Verify the identifier matches.
read(INFILE, $buffer, UINT_SIZE); # Packet Identifier
unless ($buffer eq "\x55\xAA\x5A\xA5") { die "Unrecognised file format. Wrong identifier.\n"; }
read(INFILE, $buffer, UINT_SIZE); # Packet Length.
my ($headerLength) = unpack("V", $buffer);
read(INFILE, $buffer, 4); # Always 1
read(INFILE, $buffer, 8); # Hardware ID
read(INFILE, $fileSeq, 4); # File Sequence
if (exists($fileHash{$fileSeq})) {
$outfilename=$fileHash{$fileSeq};
} else {
$outfilename="unknown_file.$unknown_count";
$unknown_count++;
}
read(INFILE, $buffer, UINT_SIZE); # Data file length
my ($dataLength) = unpack("V", $buffer);
read(INFILE, $buffer, 16); # File date
read(INFILE, $buffer, 16); # File time
read(INFILE, $buffer, 16); # The word INPUT ?
read(INFILE, $buffer, 16); # Blank
read(INFILE, $buffer, 2); # Checksum of the header maybe?
read(INFILE, $buffer, 2); # Always 1?
read(INFILE, $buffer, 2); # Blank
# Dump the payload.
read(INFILE, $buffer, $dataLength);
open(OUTFILE, ">$BASEPATH$outfilename") or die "Unable to create $outfilename: $!\n";
binmode OUTFILE;
print OUTFILE $buffer;
close OUTFILE;
# Ensure we finish on a 4 byte boundary alignment.
my $remainder = UINT_SIZE - (tell(INFILE) % UINT_SIZE);
if ($remainder < UINT_SIZE) {
# We can ignore the remaining padding.
read(INFILE, $buffer, $remainder);
}
return (tell(INFILE));
}
sub hexdump ()
{
my $num=0;
my $i;
my $rhs;
my $lhs;
my ($buf) = @_;
my $ret_str="";
foreach $i ($buf =~ m/./gs)
{
# This loop is to process each character at a time.
#
$lhs .= sprintf(" %02X",ord($i));
if ($i =~ m/[ -~]/)
{
$rhs .= $i;
}
else
{
$rhs .= ".";
}
$num++;
if (($num % 16) == 0)
{
$ret_str.=sprintf("%-50s %s\n",$lhs,$rhs);
$lhs="";
$rhs="";
}
}
if (($num % 16) != 0)
{
$ret_str.=sprintf("%-50s %s\n",$lhs,$rhs);
}
return ($ret_str);
}
sub slimhexdump ()
{
my $i;
my ($buf) = @_;
my $ret_str="";
foreach $i ($buf =~ m/./gs)
{
# This loop is to process each character at a time.
#
$ret_str .= sprintf("%02X",ord($i));
}
return ($ret_str);
}
In questo modo dovrebbe estrarti tutto, tra cui anche la recovery (se è all'interno).codice:perl script.pl UPDATE.APP
Ho utilizzato ActivePerl su Windows 7. La recovery c'è! E' nel formato recovery.img ovviamente.
Eccola qui.
Nel caso in cui volessi ricompattare tutto quanto come si fa? Intanto ho contattato Huawei per richiedere la rom B174. Io ho estratto la recovery dalla B176 ma credo sia identica.
Di sicuro faccio una domanda scema, ma tant'è che non posso esimermi, premettendo che non ho i diritti di root, ma anche avendoli come si accede alla recovery?
P.S. ho chiesto il codice di sblocco a Huawei, che mi ha risposto di attendere tre giorni lavorativi per averlo.
Accertati che nelle impostazioni sia disattivo l'avvio rapido. Spegni il telefono. Da telefono spento, tieni premuto il tasto vol+, continua a tenere premuto e poi premi il tasto di accensione. Adesso avrai vol+ e power premuti insieme. Aspetta qualche secondo, poi sarai nella recovery.
Per il codice del bootloader, tranquillo lo mandano presto. Io ho ricevuto due codici per due terminali differenti in pochissimo tempo.
Intanto ho contattato Huawei (tramite email e telefonicamente) per invitarli a caricare il firmware B174 sul loro sito. Mi sembra assurdo che non ci sia!!! Il tecnico per telefono sapete cosa mi ha risposto quando ho detto che sul loro sito non c'era? Prova a trovarlo altrove su internet...andiamo bene! Bel supporto! o_O
Grazie! non sapevo che potessi entrare in recovery anche senza root.
Edit: Rettifico, in realtà ora ricordo che una procedura analoga è possibile anche col mediapad (huawei), ed era possibile anche prima dei diritti di root, chissà perchè ero convinto del contrario.
Si in effetti Huawei è il terzo produttore mondiale di strumentazione per telefonia mobile, un colosso da 100.000 dipendenti... e poi si perde in un bicchier d'acqua, ricordo che col mediapad all'inizio sul suo sito pubblicò l'applicazione di una delle comunità di sviluppatori volontari per il dialer (il mediapad è un 7 pollici in grado di telefonare), poi dopo rimediò pubblicando una rom con dialer "incorporato".
Anche se credo di aver scoperto l'acqua calda, se si installa una nuova recovery (ad esempio la TWRP), quest'ultima viene automaticamente rimossa se si riflasha la rom stock. L'ho appena testato. Naturalmente se il bootloader è stato sbloccato rimane sbloccato. Per ribloccarlo bisogna effettuare la procedura di relock ovviamente. Tutto questo per dirvi semplicemente che se dovete mandare in assistenza il telefono per un motivo X, potete far tornare quest'ultimo così come l'avete acquistato. Ovviamente vi serve la rom stock per fare tutto questo (come gia anticipato ho fatto una richiesta a Huawei affinchè carichi la B174 sul loro sito). Unica pecca: se l'assistenza è pignola potrebbe, tramite check_bootloader.bat, scoprire che il bootloader è stato sbloccato e ribloccato. Come fa? Semplice, esce scritto: RELOCKED!
scusate la supermega domanda da noob... ho eseguito il rooto con sblocco del bootloader... tutto liscio come l'olio...
ora che ho il root con superSU, cosa posso fare per ottimizzare il telefono? programmi "obbligatori" e azioni varie?
grazie