sha1sum in ELF-binary

 ( Zahy | 2015. február 1., vasárnap - 21:49 )

Találtam egy programot a neten, és legnagyobb meglepetésre ezt mondta a FreeBSD-s file parancs :

ABC: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.26, BuildID[sha1] XYZ, not stripped

(A fájl nevét és a checksum-ot direkt szedtem ki.) Számomra az a meglepő, hogy eddig nem találkoztam ilyennel (vagy legalábbis nem vettem észre) hogy egy binárisba beleplántálják a checksum-ját - illetve egy valamilyen checksum-ot. (Határozottan jobb ötlet, mint extended attribútumban tartani, bár gyanítom ezt könnyebb módosítani.) No most ha ráengedem az sha1 nevű programot, akkor (természetesen) mást számol ki. Jelenleg túrom a netet hogy milyen eszközökkel lehet ezt olvasni/írni/ellenőrizni. Egyelőre két RedHat-es oldalt találtam a témában, de eléggé szószátyárak. Annyit már látok, hogy vannak valamilyen eu-readelf meg eu-unstrip parancsok, amik ehhez kötődnek(*). Érdekes, de valószínűleg nem túl jól keresek, mert gugli nem igazán ad értékelhető találatot. A szoftvert a FreeBSD Linux-emulációjával akartam egy kicsit tesztelgetni de sajnos az jelenleg 2.6.18-as kernelt emulál, ez a dög meg ugye ennél újabb kernelt igényel - ezt induláskor egy morózus hibaüzenettel jelzi is :-( . A fenti RedHat-es parancsok neve alapján rápróbáltam a readelf-re, és gyakorlatilag egy perc alatt meglett az egyik infó:

$ readelf -x .note.gnu.build-id ABC

és az első 16 bájt után ott a keresett infó. No most akkor még azt kellene kideríteni, hogy pontosan mely szekciókat számítja bele, és hogy vajon mivel lehetne felülírni, csak mert writeelf-et nem találtam. Marad a binris peccselés (bpatch, vagy bvi) :-)

(Közben találtam még egy apró infót: Solaris alatt az elfdump -k opciója ír ki valamilyen elf-checksum-ot. Kár, hogy ahol ez szembejött, ott nincs arról, hogy milyen algoritmussal számított checksum-ról van szó (láthatóan nem SHA1), meg ezenkívül a FreeBSD-s elfdumpnak sem ilyen opciója, sem ilyen funkciója nncs.)

(*) No meglett, ezek az eu-* parancsok az elfutils csomagban vannak. RH/Ubi alatt van ilyen.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Solarison (10+ legalábbis) az elfsign verify használatos binárisok integritásának ellenőrzésére; esetleg érdemes lehet kitrussolni.
------------------------
Program terminated
{0} ok boto
boto ?

Közben az jutott az eszembe, hogy igazság szerint nyilván az ld paranccsal lehetne átírni - hisz mint látszik, ez ugye egy szimpla ELF-szekció - de a francnak van kedve egy teljes ld-scriptet létrehozni egy ilyen miatt :-)

Lazan kapcsolodik
--
Ki oda vágyik, hol száll a galamb, elszalasztja a kincset itt alant:

()=() 
('Y') Blog | @hron84
C . C Üzemeltető macik
()_()