Vraag:
Hex-firmware proberen te decompileren
Driale
2016-11-08 03:25:04 UTC
view on stackexchange narkive permalink

Het is me gelukt om de firmware voor mijn IoT-apparaat te krijgen, maar de firmware bevindt zich in HEX. Wat is de beste manier om het naar een binair bestand te converteren, zodat ik binwalk kan gebruiken? Tot nu toe heb ik geprobeerd het te converteren met srec_cat hex.file -Intel -Output binary.file -Binary . Ik heb geprobeerd het geconverteerde bestand te analyseren met binwalk, maar de enige resultaten die ik krijg zijn:

  SHA256 hashconstanten, little endianCertificate in DER-formaat (x509 v3), headerlengte: 4, sequentielengte: 678  

Doe ik iets verkeerd?

Bewerken: na het gebruik van binwalk -Ive binary.file heb ik enkele bestanden kunnen extraheren. De bestanden worden niet correct gedetecteerd, maar als ik naar de bestanden kijk, zie ik stukjes tekst die op mijn apparaat worden gebruikt.

Bewerken 2: Ik denk niet dat de firmware is gecomprimeerd. Maar ik weet niet zeker of het is gecodeerd. Wat is de beste manier om dit te controleren?

  $ file binary.filebinary.file: data  

Met strings -n 10 binary.file Ik krijg een schijnbaar geldige lijst met strings.

Weet u zeker dat de firmware niet is gecomprimeerd / gecodeerd?
Kunt u ofwel het binaire bestand of een hexdump van de eerste paar honderd bytes van het binaire bestand opgeven, plus enkele van de door mensen leesbare strings die worden geretourneerd door `strings`? Informatie over het apparaat zelf, zoals apparaatnaam, fabrikant, processor, enz. Zou ook nuttig zijn
Twee antwoorden:
user369353
2017-01-13 19:29:03 UTC
view on stackexchange narkive permalink

Uw hex-bestand converteren naar binair

Gebruik xxd -p -r . Bijvoorbeeld:

  echo -n "deadbeef" | xxd -p -r | od -tx1  

Dus in jouw geval zou xxd -p -r hex.file > binary.file de slag moeten slaan.

Gecodeerd of niet

Als u niet-gecodeerde strings ziet met berichten die typisch zijn voor uw apparaat , is uw firmware (hoogstwaarschijnlijk) niet gecodeerd omdat het onwaarschijnlijk is dat alleen delen versleuteld zouden worden en andere niet.

Als de niet-versleutelde strings typische strings zijn van glibc of andere bibliotheken, dan is het onzeker.

Het feit dat uw firmware een certificaat bevat, betekent niet dat deze is gecodeerd. Het certificaat kan worden gebruikt om bijvoorbeeld de communicatie tussen het IoT en een externe server te beveiligen.

invictus85
2018-01-09 03:49:58 UTC
view on stackexchange narkive permalink

Als eerste stap moet u de datasheet controleren om de endianness en het laadadres te krijgen. Vervolgens kunt u proberen uw firmware te laden met uw favoriete disassembler, bijvoorbeeld met radare2 u kunt een syntaxis gebruiken die lijkt op deze

  r2 -a uw_arch -b bytes_num - m loading_address  

Bekijk dit voor meer details.

Met IDA moet u het processortype / opties en na de RAM- en ROM-adressen die u uit het gegevensblad kunt halen.

Bekijk dit voorbeeld.

Als het een HEX-bestand is, bevat het al de ROM-adressen.


Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 3.0-licentie waaronder het wordt gedistribueerd.
Loading...