Discussioni sul sistema operativo Linux
 

Cambio stringhe in firmware

gandalf.corvotempesta@gmail.com 24 Set 2015 09:11
Non so se è il gruppo corretto, ma non saprei dove chiedere.

Ho "un firmware". Non so altro. Non so la piattaforma, ne altro. E' il firmware
di una stampante POS

DECIMAL HEX DESCRIPTION
-------------------------------------------------------------------------------------------------------
41505 0xA221 BLCR context data (big endian, version 52)
168337 0x29191 BLCR context data (big endian, version 67)
210376 0x335C8 LZMA compressed data, properties: 0x38, dictionary size:
1048576 bytes, uncompressed size: 4096 bytes
.......... (molte altre sezioni LZMA)

Premesso che ho provato ad estrarre le sezioni LZMA ma sembra un loop infinito,
per ciascuna sezione mi torna archivi compressi in LZMA, che decomprimendoli ne
generano di ulteriori e così via.

A parte ciò:

1. c'è modo di decompilare il tutto ?
2. c'è modo di cambiare le stringe testuali (visibili con 'strings') ? Dovrei
correggere alcuni grossolani errori di scrittura (è un firmware cinese). L'SDK
cinese costa tanti, tanti, tanti $$ (e non mi è chiaro cosa sia possibile fare
e cosa no, con tale SDK, i sorgenti non vengono distribuiti) e per cambiare 5
parole è eccessivo.
Andrea D'Amore 24 Set 2015 09:54
On 2015-09-24 07:11:37 +0000, gandalf.corvotempesta@gmail.com said:

> 2. c'è modo di cambiare le stringe testuali (visibili con 'strings') ?
> Dovrei correggere alcuni grossolani errori di scrittura (è un firmware
> cinese). L'SDK cinese costa tanti, tanti, tanti $$ (e non mi è chiaro
> cosa sia possibile fare e cosa no, con tale SDK, i sorgenti non vengono
> distribuiti) e per cambiare 5 parole è eccessivo.

Se le stringhe non sono in sezioni compresse (che probabilmente faranno
checksum) apri un editor qualsiasi (che non forzi la terminazione,
meglio un editor esadecimale) e cambi i caratteri che vuoi mantenendo
la lunghezza delle stringhe, per far sparire caratteri usa degli spazi
(0x20).
Prima di procedere però assicurati di poter riscrivere un firmware
corretto in caso di errori.

--
Andrea
Giovanni 24 Set 2015 14:48
On 09/24/2015 09:11 AM, gandalf.corvotempesta@gmail.com wrote:
> 1. c'è modo di decompilare il tutto?

Abbastanza difficile se non conosci la piattaforma su cui deve girare.

> 2. c'è modo di cambiare le stringe testuali (visibili con 'strings')?
> Dovrei correggere alcuni grossolani errori di scrittura (è un
> firmware cinese). L'SDK cinese costa tanti, tanti, tanti $$ (e non mi
> è chiaro cosa sia possibile fare e cosa no, con tale SDK, i sorgenti
> non vengono distribuiti) e per cambiare 5 parole è eccessivo.

Ai tempi del DOS editavo le stringhe riscrivendole con un editor
esadecinale. L'unica avvertenza era di sostituirle con altre della
stessa lunghezza.

Ciao
Giovanni
--
A computer is like an air conditioner,
it stops working when you open Windows.
< http://giovanni.homelinux.net/ >
gandalf.corvotempesta@gmail.com 24 Set 2015 16:02
Il giorno giovedì 24 settembre 2015 09:54:49 UTC+2, Andrea D'Amore ha scritto:
> Se le stringhe non sono in sezioni compresse (che probabilmente faranno
> checksum) apri un editor qualsiasi (che non forzi la terminazione,
> meglio un editor esadecimale) e cambi i caratteri che vuoi mantenendo
> la lunghezza delle stringhe, per far sparire caratteri usa degli spazi
> (0x20).

Ottima idea.

> Prima di procedere però assicurati di poter riscrivere un firmware
> corretto in caso di errori.

Ecco, non ne sono affatto sicuro.
E' un po di tempo che cerco anche una sorta di brutale emulatore/virtualizzatore
per poter eseguire questo firmware ma senza successo
gandalf.corvotempesta@gmail.com 24 Set 2015 16:07
Il giorno giovedì 24 settembre 2015 14:48:56 UTC+2, Giovanni ha scritto:
> Abbastanza difficile se non conosci la piattaforma su cui deve girare.

Parliamone, che dati ti servono per poter identificare il firmware e la
rispettiva piattaforma ?

Come scritto sopra, non sono in grado di estrarlo, l'archivio LZMA sembra un
loop infinito, ma sicuramente sono io a non essere capace, è la prima volta che
mi cimento.

Se qualcuno ha voglia e magari è curioso, son disponibile a fare tutte le prove
del caso. Poter decompilare questo affare mi sarebbe di grande aiuto.

So solo che la CPU è una Simcom SIM840W (serie SIM800H) ma anche leggendo la
documentazione ufficiale, non ho cavato un ragno dal buco.

So che il firmware è diviso in due parti (io credo di averne solo una), la
parte che controlla la CPU e la parte con la componente dati (il software di
interazione con la stampante). Io ho quest'ultima parte, di controllare la CPU
mi interessa zero.
Leonardo Serni 24 Set 2015 21:03
On Thu, 24 Sep 2015 07:07:36 -0700 (PDT), gandalf.corvotempesta@gmail.com
wrote:

> Come scritto sopra, non sono in grado di estrarlo, l'archivio LZMA sembra un
loop infinito

Immagino che non ci sia modo di farmi avere i primi, che so... 256 Kb di
quell'LZMA?

Leonardo

--

Now suppose -just suppose- I could show you a way to
manufacture a wall that would do the same ******* .. but
was only one inch thick.
gandalf.corvotempesta@gmail.com 25 Set 2015 00:02
Il giorno giovedì 24 settembre 2015 21:03:11 UTC+2, Leonardo Serni ha scritto:
> Immagino che non ci sia modo di farmi avere i primi, che so... 256 Kb di
> quell'LZMA?

C'è modo (volendo ti mando anche tutto il firmware) ma come te lo estraggo?
"dd" per i primi 256bytes? Oppure ti servono i primi 256byte del solo LZMA ?
In quest'ultimo caso non son capace ad estrarlo, come scritto in precedenza,
sempre si loopi all'infinito, estraggo sempre se stesso.
Leonardo Serni 26 Set 2015 00:35
On Thu, 24 Sep 2015 15:02:44 -0700 (PDT), gandalf.corvotempesta@gmail.com
wrote:

>Il giorno giovedì 24 settembre 2015 21:03:11 UTC+2, Leonardo Serni ha scritto:
>> Immagino che non ci sia modo di farmi avere i primi, che so... 256 Kb di
>> quell'LZMA?

>C'è modo (volendo ti mando anche tutto il firmware) ma come te lo estraggo?

Be'... manda tutto e vediamo. L'email è buona. Non so quando ci potrò dare una
occhiata, ho un cumulo di arretrati alto così e varia gente che mi insegue, ma
farò quel che potrò :-D

Leonardo

--

Now suppose -just suppose- I could show you a way to
manufacture a wall that would do the same ******* .. but
was only one inch thick.
gandalf.corvotempesta@gmail.com 28 Set 2015 09:37
Il giorno sabato 26 settembre 2015 00:36:01 UTC+2, Leonardo Serni ha scritto:
> Be'... manda tutto e vediamo. L'email è buona. Non so quando ci potrò dare
una
> occhiata, ho un cumulo di arretrati alto così e varia gente che mi insegue,
ma
> farò quel che potrò :-D

Ti ho mandato direttamente il link ricevuto dai cinesi.
Ha una scadenza, se hai problemi, fammi sapere.
Andrea D'Amore 29 Set 2015 21:45
On 2015-09-24 07:11:37 +0000, gandalf.corvotempesta@gmail.com said:

> 1. c'è modo di decompilare il tutto ?

Hai provato binwalk <https://github.com/devttys0/binwalk>?

--
Andrea
gandalf.corvotempesta@gmail.com 30 Set 2015 08:39
Il giorno martedì 29 settembre 2015 21:45:02 UTC+2, Andrea D'Amore ha scritto:
> Hai provato binwalk <https://github.com/devttys0/binwalk>?

E' la prima cosa che ho provato.
E' proprio lui che si inlooppa, crea un totale di ******* secondo lui
decompressi, che però a loro volta sono compressi LZMA, eseguendo binwalk su
ciascuno di essi, ne crea altrettanti di nuovi, sempre compressi, e così via.

Links
Giochi online
Dizionario sinonimi
Leggi e codici
Ricette
Testi
Webmatica
Hosting gratis
   
 

Discussioni sul sistema operativo Linux | Tutti i gruppi | it.comp.os.linux.sys | Notizie e discussioni linux | Linux Mobile | Servizio di consultazione news.