Irodalomkutatas joreszt megegyezik az elozo ponttal, guglizas agyba-fobe:
megnezni, hogy ki hogyan latott neki egy fajlformatum megfejtesehez.
Kigyujtottem nektek nehany erdekesebb irast [1], [2], [3], [4].
A rossz hir tobbek kozott, hogy sokaig eltarthat, pl. a Quark Xpress fajlformatumat
tobb mint egy evig butykolgette az illeto[4].
Viszont a jo hir, hogy egy fajlformatum megfejtese az osszes reverse engineering
kozul a legszorakoztatobb;)
# A feladat megoldasahoz az alabbiakra lesz szuksegem:
* elszantsag
* ido
* kitartas
* hexa editor
* valamilyen nyelven programozoi tudas
* legalabb egy mintafajl
* mukodo program ha elerheto (sajnos ilyenem nincs csak nehany fajlom)
A megfejtes nagyjabol annyibol all, hogy aloallunk nehany 5lettel, irunk ra
programot, es megnezzuk utana az eredmenyt. ha nem jott be, akkor modositunk a
programunkon.
# A problema megoldasa:
Egy fajl tanulmanyozasat legegyszerubb azzal kezdeni, hoyg megnyitjuk valamilyen
nezokevel, szerintem az mc-ben levo beepitett nezoke nagyjabol meg is felel a
celnak ha nem tul nagy a fajl. Esetleg a vi. Itt nagyjabol olyan egyszeru
dolgokat kellene eszrevenni, hogy van-e benne felismerheto karaktersor, esetleg
szoveg a binaris adatok kozott. Ebben a kezdeti fazisban akar eszrevehetunk
valamifele ismetlodest is a fajlban, ami akar nagyban segithet is kesobbiek soran.
Persze a kesobbiek soran erdemesebb valami komolyabb hexa editorral
felverteznunk magunkat, pl. HexWorkshop, aminek idolimitalt demo valtozata
elerheto a honlapjukon [5]. Wine alatt gyonyoruen fut leszamitva, hogyha az alap
locale-lal inditom a wine-t akkor gorog betuk jelennek meg a feluleten;-\
LANG=en_US wine program.exe
Es a problema elillan. Kicsit fapad, egyszer jo lenne valami ertelmes irast
talalni errol az egesz locale mizeriarol...
Talan a legnagyobb pozitivuma a HexWorkshopnak, hogy nem fagyott le nekem eddig.
# Tomoritett-e?
Mint ahogy semmifele ertelmes szoveget nem talaltam a fajlban, igy talan a
legkezenfekvobb, hogy a fajl tomoritve van. Nosza ellenorizzuk is le:
import zlib, sys
def main(args):
f = file(args[0], 'rb').read()
size = len(f)
i = 0
while i < size:
try:
de = zlib.decompress(f[i:])
except zlib.error:
i += 1
continue
print 'Found a compressed block starting at', i
i += 1
if __name__=='__main__':
sys.exit(main(sys.argv[1:]))
(A kodot az openrce.org-rol [3] vettem)
Sajnos ez nem vezetett eredmenyre. Meg ki lehet probalni nehany ismertebb
algoritmusra, de azok se vezettek eredmenyre. Tehat vagy egyedi algoritmussal
tomoritett, vagy titkositott, vagy valami egyeb.
# Titkositott-e?
Erdemes meg a nyilvanvalo ,,mi a feneert tennek''-en kivul azert ezt is meglesni.
A legtobb titkositas utan a titkosito algoritmus benne szerepel a fajlban,
pl: RSA, DSA, etc.
Titkositott fajlt talan a program minimalis RE-jevel kene kezdeni, de szerencsere
(mivel ehhez nem ertek, es eleg nagy falatnak tunik) ezt hamar elvetettem.
A tomorites es a titkositas egyebkent nagyban megnoveli a fajl betoltesi idejet,
ami a jelen esetunkben akar kritikus is lehet (hacsak nem nyalja be az egesz
adatbazist a memoriaba a program). Szoval ha lehet altalaban kerulik. Persze
ezt is csak olvastam.
# Nehany tovabbi technika
Egyik talan legjobb technika, hogyha a binaris fajlt programbol hozzuk letre
(pl. szovegszerkesztobol mentjuk el,
es mindig csak par karakter a kulonbseg ket mentes kozott), es aprokat modositunk
es ugy mentjuk el. Ezutan elemezzuk, hogy mi valtozott a fajlokban. Sajnos
ez a mi esetunkben megoldhatatlan, mivel csak par fajllal rendelkezem.
Olvastam meg template illesztesrol is, pl. a 010 hexa editor[6], tud ilyet alapbol.
Van egesz python segedkonyvtar is binaris fajlok kezelesere, ilyen a hachoir
projekt[7] is, talan erdemes meg azt is meglesni.
# Folytatas
Ha komolyabb erdeklodes lesz, es az idom is engedi, akkor lehet folytatom ezt a
megkezdett sorozatot.
UPDATE1: Wikibooks-on egy egesz konyv van rola!
Vegezetul egy kep:
[1]: http://www.kaydash.za.net/blog/archive/2006/sep/08/file-format-reverse-…
[2]: http://www.hexprobe.com/hexprobe/binary_file.htm
[3]: http://www.openrce.org/articles/full_view/16
[4]: http://www.iwriteiam.nl/Ha_HTCABFF.html
[5]: http://bpsoft.com
[6]: http://www.sweetscape.com/010editor/
[7]: http://www.hachoir.org
- khiraly blogja
- A hozzászóláshoz be kell jelentkezni
- 1133 megtekintés
Hozzászólások
nem tudom, mit nevezel komolyabb érdeklődésnek, de engem személy szerint érdekel:D
hasznos bejegyzés
_________________________________________
Valódi paraszt vagyok. Csak előre tudok lépni, nem azt ütöm le, aki velem szembenáll, és ha nincs tovább, megváltozom.
- A hozzászóláshoz be kell jelentkezni
Jó cikk. Jöhet a folytatás! ::)
- A hozzászóláshoz be kell jelentkezni
hagy szóljon!
a régi szép időkre emlékeztet, amikor még a krynn trilógiához barkácsoltam pascalban karakter editort, meg ilyesmik. B-)
- A hozzászóláshoz be kell jelentkezni