====xxd=====
Za pregled i uređivanje binarnog zapisa datoteke koriste se //hex editori//.
Jedan od takvih hex editora koji često dolazi predinstaliran na Linux distribucijama
je **xxd**.
__**PRIMJER**__ - **Zadatak s Hacknite platforme - Bitflip**
Marija odjednom ne može više pokrenuti njen vrlo bitan Linux program. Možeš li ga popraviti?
Flag je u formatu CTF2023[brojevi].
Uz zadatak je priložena i datoteka *orc*.
Kada je pokušamo pokrenuti dobijemo grešku:
bash: ./orc: cannot execute binary file: Exec format error
To upućuje na to da format izvršne datoteke nije validan. Proučimo //hexdump// datoteke, tako da pokrenemo
naredbu xxd orc > orc.hexdump
. Ta naredba radi //hexdump// datoteke //orc// i sprema ga u datoteku
//orc.hexdump//. Hexdump zatim možemo otvoriti u text editoru kao što je //nano//.
{{nano_hexdump.png}}
Iz opisa znamo da se radi o Linux programu. Linux programi su datoteke u ELF formatu.
Potrebno je istražiti ELF format i saznati koji bajt što znači. Iako Wikipedija nije uvijek
najpouzdaniji izvor informacija, u ovom slučaju [[https://en.wikipedia.org/wiki/Executable_and_Linkable_Format|članak o ELF formatu]] na engleskoj Wikipediji
pruža najjednostavniji pregled formata koji smo uspjeli pronaći.
Proučavajući svaki bajt u hexdumpu, dolazimo do bajta na offsetu 0x12 koji označava procesorsku arhitekturu za koju je program napravljen. Trenutno je on postavljen na vrijednost "FF".
{{nano_hexdump_highlighted.png}}
Ako proučimo tablicu u članku na Wikipediji, vidjet ćemo da ta vrijednost ne označava nijednu validnu arhitekturu. Budući da većina osobnih računala koriste "AMD x86-64" arhitekturu, možemo pretpostaviti
da je to arhitektura koja je korištena. Iz tablice možemo iščitati da onda taj bajt mora biti postavljen na vrijednost 3E. Nakon što promijenimo tu vrijednost možemo spremiti datoteku.
Kako bi pretvorili popravljeni hexdump natrag u datoteku izvršimo naredbu:
xxd -r orc.hexdump > fixed_orc
Ako sad pokrenemo program //fixed_orc// dobit ćemo flag.
{{xxd_flag.png}}
==Izvori==
[1] https://linux.die.net/man/1/xxd