gemengd bestand (script/binairy) splitsen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Blokker_1999
  • Registratie: Februari 2003
  • Laatst online: 11:42

Blokker_1999

Full steam ahead

Topicstarter
Ik heb hier een bestand dat gebruikt word voor het updaten van de software op een embedded systeem. Wanneer ik dit bestand bekijk dan zie ik bovenaan in de eerste lijnen iets wat lijkt op een script voor een u-boot omgeving ( http://pastebin.com/VnVUisCu ) gevolgd door nog enkele tientallen MBs aan binaire data (ik neem aan U-Boot, kernel en rootfs).

Hoewel ik wil proberen dit op een Beagleboard te zetten (de software is gebouwd voor een OMAP SoC) zou ik graag ook al eens kijken wat er in het rootfs staat. Maar heeft er iemand een idee hoe ik dit bestand kan/moet uitsplitsen zodat ik netjes het rootfs te zien krijg?

No keyboard detected. Press F1 to continue.


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Het lijkt me gewoon een filesystem dump, dus die kan je hoogst waarschijnlijk gewoon via een loop device mounten.

mount -o loop bestsand mountpunt

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • revertive
  • Registratie: Maart 2008
  • Laatst online: 15-01 14:03
Het is een update script dat een nieuwe update binnenhaalt als hij gevonden word. In het script zelf zie ik zo snel geen binaire data. Het haalt een update en dat bestand zou je kunnen bestuderen.

Het script zelf haalt alleen de update binnen en maakt het NAND geheugen leeg en schrijft de update naar het NAND op de plekken waar het verwacht word. Het lijkt een library te gebruiken voor het downloaden van de update "device.update...", maar verder kan ik je niet helpen helaas.

Acties:
  • 0 Henk 'm!

  • Blokker_1999
  • Registratie: Februari 2003
  • Laatst online: 11:42

Blokker_1999

Full steam ahead

Topicstarter
Wolfboy schreef op vrijdag 19 juni 2015 @ 13:47:
Het lijkt me gewoon een filesystem dump, dus die kan je hoogst waarschijnlijk gewoon via een loop device mounten.

mount -o loop bestsand mountpunt
Het is net iets moeilijker omdat het vermoedelijk een jffs2 filesystem is (te merken aan de nand write opdracht voor het rootfs). Als ik eenmaal veilig die partitie eruit kan halen dan zou het inderdaad een kwestie moeten zijn van dat te mounten in een virtueel block device
revertive schreef op vrijdag 19 juni 2015 @ 13:58:
Het is een update script dat een nieuwe update binnenhaalt als hij gevonden word. In het script zelf zie ik zo snel geen binaire data. Het haalt een update en dat bestand zou je kunnen bestuderen.

Het script zelf haalt alleen de update binnen en maakt het NAND geheugen leeg en schrijft de update naar het NAND op de plekken waar het verwacht word. Het lijkt een library te gebruiken voor het downloaden van de update "device.update...", maar verder kan ik je niet helpen helaas.
De binaire data staat eronder, die heb ik niet in de paste gezet omdat dit weinig meerwaarde zou hebben. Heel het bestand is iets meer dan 60MB groot.

No keyboard detected. Press F1 to continue.


Acties:
  • 0 Henk 'm!

  • Thralas
  • Registratie: December 2002
  • Laatst online: 14:11
Je kunt alle offsets zo uit de uboot flashing sequence destilleren:

code:
1
2
3
if tftp 0x80F00000 ${update_image};
setexpr filesize_rootfs ${filesize} - 0x580000
nand write.jffs2 0x81480000 0x01700000 ${filesize_rootfs}


Ofwel, image base van je update file is 0x80F00000, hij pakt de JFFS2 image vanaf 0x81480000. Op file offset 0x580000 vind je dus je JFFS2 filesystem.

De bijbehorende size mag je zelf berekenen.

In dit geval kun je het 'netjes' doen omdat de uboot environment plaintext voor je neus staat, maar in andere gevallen zou ik je aanraden om binwalk ertegenaan te gooien. Die weet een JFFS2 image vast ook wel te vinden, zit je alleen met de size (afhankelijk van wat je wilt is dat wel/geen probleem).

Acties:
  • 0 Henk 'm!

  • Blokker_1999
  • Registratie: Februari 2003
  • Laatst online: 11:42

Blokker_1999

Full steam ahead

Topicstarter
binwalk kende ik nog niet, maar het lijkt inderdaad een handige tool om dit soort materie te bekijken: http://pastebin.com/KVAqDa4b .

Allesinds bedankt voor de reeds gegeven hulp, eens kijken hoe ver we nu geraken :)

No keyboard detected. Press F1 to continue.


Acties:
  • 0 Henk 'm!

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 05-09 17:21

deadinspace

The what goes where now?

Je kunt het ook extracten met dd. Als het text-gedeelte 1234 bytes is:
dd if=infile of=outfile bs=1234 skip=1

Of met een hexeditor oid :)

Acties:
  • 0 Henk 'm!

  • Kees
  • Registratie: Juni 1999
  • Nu online

Kees

Serveradmin / BOFH / DoC
binwalk hands down. Dat is _precies_ hiervoor gemaakt. binwalk -e $file en klaar ben je

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


Acties:
  • 0 Henk 'm!

  • Blokker_1999
  • Registratie: Februari 2003
  • Laatst online: 11:42

Blokker_1999

Full steam ahead

Topicstarter
Het is me inderdaad gelukt met binwalk om de structuur te vinden en daarna met dd het juiste deel van het bestand af te splitsen.(binwalk -e deed vooral mijn hdd vol lopen) binwalk splitst evenwel zelf op in te veel delen, wat 1 filesystem is ziet binwalk als 3 filesystems met compressed en encrypted data tussen.

code:
1
2
3
4
root@10Forward:~/Display_Firmware_3.6.58340.0# file rootfs.jffs2 
rootfs.jffs2: Linux jffs2 filesystem data little endian
root@10Forward:/mnt/jffs2# ls
bin  boot  dev  etc  gsp  home  lib  linuxrc  media  mnt  opt  proc  sbin  sys  tmp  usr  var


Nu eens kijken of ik dit aan de praat krijg op mijn panda board.

No keyboard detected. Press F1 to continue.


Acties:
  • 0 Henk 'm!

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

Kijk hier even naar:
http://wiki.emacinc.com/w...FFS2_Images_on_a_Linux_PC

Het laat je toe om een image te loopmounten dmv de block2mtd device in linux.

ASSUME makes an ASS out of U and ME

Pagina: 1