Newsgroup: it.comp.os.linux.sys
Titolo: Cambio stringhe in firmware

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.

 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
 

 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/
 >

 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

 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.

 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 job... but
was only one inch thick.

 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.

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


 farò quel che potrò :-D
 
Ti ho mandato direttamente il link ricevuto dai cinesi.
Ha una scadenza, se hai problemi, fammi sapere.

?
 
-- 
Andrea
 

?
 
E' la prima cosa che ho provato.
E' proprio lui che si inlooppa, crea un totale di file, 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.