abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

    8.11. 00:33 | Nová verze

    Byla vydána OpenIndiana 2026.10. Unixový operační systém OpenIndiana (Wikipedie) vychází z OpenSolarisu (Wikipedie).

    Ladislav Hagara | Komentářů: 20
    8.11. 00:22 | IT novinky

    Americký výrobce polovodičů onsemi (ON Semiconductor) zrušil plány na rozšíření výroby v rožnovském závodě v Česku za dvě miliardy dolarů (podle aktuálního kurzu zhruba 43,5 mld. Kč). Důvodem je vývoj na trhu.

    Ladislav Hagara | Komentářů: 38
    7.11. 13:00 | Bezpečnostní upozornění
    Nové vydání zlib opravuje několik problémů při kompresi a dekompresi dat, přetečení bufferů, čtení mimo vyhrazenou paměť, únik neinicializovaných dat. Zvlášť významné jsou chyby v inflateGetDictionary(), inflateSync() a gzwrite(), které mohou způsobit poškození paměti. Vysoká relevance - zlib používá řada systémových i aplikačních komponent.
    vencour | Komentářů: 6
    7.11. 12:25 | Bezpečnostní upozornění
    Digicert hlásí neoprávněné čtení archivních zákaznických údajů. Došlo k němu po migraci z února 2025, po níž se interní systém, dříve dostupný jen přes VPN, stal přístupným z internetu. Chyba v oprávněních umožnila nově vytvořeným účtům číst archivní záznamy. K přístupu k datům mělo dojít mezi 27. červnem a 2. červencem 2026. DigiCert neoprávněné čtení potvrdil až 19. října 2026. Problém zpočátku vyhodnotil jako tvorbu účtů, ne jako … více »
    vencour | Komentářů: 5
    7.11. 04:44 | Pozvánky

    O víkendu probíhá na FIT VUT v Brně konference OpenAlt 2026 o otevřeném softwaru a datech, IT bezpečnosti, DIY a IoT. Na programu je spousta zajímavých přednášek. Pokud jste v Brně, stavte se. Vstup zdarma. Přednášky lze sledovat i online na VHSky a YouTube.

    Ladislav Hagara | Komentářů: 4
    7.11. 02:11 | IT novinky

    Qualcomm uzavřel víceletou dohodu se SpaceX. Bude dodávat rádiové technologie, baseband jednotky a software pro plánovanou pozemní 5G síť Starlink Mobile. Výstavba má zahrnovat desítky tisíc základnových stanic v USA. Zahájení nasazování se očekává v roce 2027. Qualcomm dohodu označuje za svůj dosud největší 5G kontrakt.

    vencour | Komentářů: 3
    7.11. 02:00 | IT novinky

    Google rozšířil Cloud Vulnerability Reward Program. Nově nabízí odměnu až 250 tisíc dolarů za vysoce závažné architektonické bezpečnostní chyby označované jako Root-in-Cloud.

    vencour | Komentářů: 3
    6.11. 12:22 | IT novinky

    V březnu byla oznámena spolupráce GrapheneOS s Motorolou. Nejnovější vlajka Motorola Signature 27 je první Motorola s oficiální podporou GrapheneOS. GrapheneOS (Wikpedie) je varianta Androidu zaměřující se na bezpečnost a soukromí.

    Ladislav Hagara | Komentářů: 9
    6.11. 04:55 | Nová verze

    Omarchy (Wikipedie) je linuxová distribuce s dlaždicovým správcem oken Hyprland. Založena je na Arch Linuxu. Vydána byla v nové verzi 4.5.0. Nově také pro Apple Silicon, konkrétně pro M1/M2/M3/Neo MacBooky.

    Ladislav Hagara | Komentářů: 4
    6.11. 03:22 | Nová verze

    Byla vydána nová stabilní verze 8.3 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 156 s bezpečnostními opravami z Chromia 157. Přehled novinek i s náhledy v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 2
    Které desktopové prostředí na Linuxu používáte?
     (8%)
     (7%)
     (4%)
     (21%)
     (30%)
     (9%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 3054 hlasů
     Komentářů: 36, poslední 11.11. 22:38
    Rozcestník

    Dotaz: Reverse engineering datových formátů

    16.2.2005 20:28 unchallenger | skóre: 69 | blog: unchallenger
    Reverse engineering datových formátů
    Přečteno: 776×
    Hledám nějaký nástroj na $SUBJ. Pro začátek bych chtěl alespoň (pohodlně) vypisovat bloky ze souborů interpretované jako všechny možné typy (od usinged char po big endian IEEE double), vypsat z N souborů hodnoty na daném offsetu interpretované jako daný typ, hledat offsety, na nichž leží daná hodnota, když se správně interpretuje, etc. Navymýšlel bych si i pokročilejší funkce, ale zatím to vypadá, jako bych si musel něco napsat i na ty základní. Tudíž otázka je: Co na to použít?

    Odpovědi

    Vašek Lorenc avatar 16.2.2005 22:02 Vašek Lorenc | skóre: 27
    Rozbalit Rozbalit vše Re: Reverse engineering datových formátů
    Bohužel neznám konkrétní produkt, ale vzhledem k tomu, že máš na práci nejspíš dost jiných věcí, nebylo by lepší tím pověřit nějakého šikovného diplomanta (třeba z informatiky)? Užitečná diplomka je poměrně vzácný jev.. ;)
    ...včetně majestátného loosa
    16.2.2005 22:57 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
    Rozbalit Rozbalit vše Re: Reverse engineering datových formátů
    To je obávám se tak na zápočet...

    Yeti: kdyby ses do toho pustil sám, tak dej vědět (třeba v blogu, mi tě nezastřelíme). BTW: khexedit asi není to, co chceš slyšet?
    Vašek Lorenc avatar 16.2.2005 23:21 Vašek Lorenc | skóre: 27
    Rozbalit Rozbalit vše Re: Reverse engineering datových formátů

    Netřeba se obávat :) Spíš šlo o to nechat práci někomu, kdo by ji rád dodělal a navíc by z toho měl užitek -- ať už jako bakalářku nebo zápočet.

    Možná by bylo ale zajímavé někde hodit nějaký Wiki web a dávat tam různé poznámky a možná řešení k implementaci.. Nebo do blogu, ale ten by k tomu nemusel být tak vhodný. Nějaké hledání vzrůstajících/klesajících sekvencí by se třeba taky hodilo, zvlášť s různými odstupy (ať už hodnot nebo pozic v souboru) -- indexy nebo něco takového by se tím při velké dávce štěstí daly odhalit.. Ale takových nápadů má určitě kdekdo celé kapsy :)

    ...včetně majestátného loosa
    16.2.2005 23:22 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: Reverse engineering datových formátů
    Na zápočet? To by byl pěkně levný zápočet ;-)

    Ad khexedit. To je přesně to, co chci, až na to, že to potřebuji skriptovat, a ne klikat (tedy někdy i interaktivně, a na to vypadá docela použitelně, až na to, že v hlavním okně umožňuje jen jednobajtové formáty, což je pro mě pruda, protože reálná čísla zatím z hexdumpu číst neumím). Mám třeba dvacet souborů a hypotézu, že na offsetu 0x0022 je jako little endian IEEE single nějaká zajímavá hodnota. Tak chci vypsat ze všech zároveň, co by to bylo zač, ve formátu soubor: hodnota. Strávil jsem v khexeditu jen několik minut, ale nevidím způsob, jak to udělat bez oteveření dvaceti oken nebo otevření dvaceti souborů postupně a čtyřiceti Ctrl-C, přepnutí okna, Ctrl-V, přepnutí okna.
    elviin avatar 16.2.2005 22:20 elviin | skóre: 29 | blog: elviin | Plzeň-Praha
    Rozbalit Rozbalit vše Re: Reverse engineering datových formátů
    Jestli jsem to spravne pochopil (jeste nevim, co je to $SUBJ), tak tomu by mohl poslouzit Bison.
    16.2.2005 22:37 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: Reverse engineering datových formátů
    No, to moc ne. Možná jsem to nenapsal jasně, ale jde mi o binární data, v textových se obvykle jde vyznat, a o interaktivní šťourání, což yacc + lex stejně neumožňují.

    P.S.: $SUBJ je proměnná obsahující na předmět zprávy (subject).
    16.2.2005 22:45 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
    Rozbalit Rozbalit vše Re: Reverse engineering datových formátů
    Jediné co mě napadá je nějaký chytřejší hex editor, minimálně něco z toho by to mohlo zvládnout.
    16.2.2005 23:24 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Reverse engineering datových formátů
    No už to tak vypadá, že si budeš muset něco napsat (nebo si nechat něco napsat). Perlivé pack a unpack jsou silné zbraně, tak něco s Term::ReadLine by jsi měl mít za chvilku. Defakto by ti z toho rovnou mohl vypadávat zárodek příslušného filtru. Pokud jsi na perl zanevřel, tak je tu ještě python a jiné (forth ;-) smalltalk, lisp).
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    16.2.2005 23:34 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: Reverse engineering datových formátů
    Když to začnu psát já, tak to skončí jedním ze dvou konců:

    - jako chaotická změť specializovaných skriptíků, které budu před každým použitím upravovat a ještě předtím studovat, co vlastně delají

    - jako interpret speciálního jazyka pro popis datových formátů[*], který nikdy nedokončím

    A tomu se chci vyhnout, kromě toho bych ideálně nechtěl psát nic.

    [*] perlí unpack znám, ale potřeboval bych nejdřív něco, co dokáže dekódovat ty formátovací vzory ;-)
    16.2.2005 23:39 VícNežNic | skóre: 42 | blog: Spáleniště | Ne dost daleko
    Rozbalit Rozbalit vše Re: Reverse engineering datových formátů
    A tomu se chci vyhnout, kromě toho bych ideálně nechtěl psát nic.
    Tuším, že se rodí velký softwarový produkt ;-)
    Copak toho není dost?
    16.2.2005 23:55 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
    Rozbalit Rozbalit vše Re: Reverse engineering datových formátů
    - jako interpret speciálního jazyka pro popis datových formátů[*], který nikdy nedokončím
    Hmm, to mi silně připomíná "interpret" jazyka, který jsem vytvořil při reverse engeneeringu protokolu telefonu. Ale je to natolik nedokončené, že je asi lepší začít od začátku :-).
    18.2.2005 19:36 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
    Rozbalit Rozbalit vše Re: Reverse engineering datových formátů
    Právě jsem dopsal tohle, snad to dělá aspoň něco, co potřebuješ

    ukázka:
    $ ./revdump  '"na %d. pozici je " (u8) 0 (u16_le) 114 (u16_be) $0' /etc/passwd /etc/group
    /etc/passwd: na 114. pozici je 613a     3a61
    /etc/group: na 114. pozici je 3a78      783a
    
    první parametr určuje, co se má odkud vypsat (dá se to načíst i ze souboru), zbytek jsou soubory, ze kterých se bude vypisovat. Ten zápis vypadá takhle:
    "format string" (type) offset
    
    nebo
    "format string" (type) $reference
    
    kde format string je nepovinný parametr pro printf (zatím skutečně printf, takže není problém to shodit ;-)), type je typ (umí to i floaty, ale moc jsem je nezkoušel), offset je jasný, reference znamená, že jako offset se veme výsledek n-tého výrazu (zde $0 dá 114, takže se vlastně použije stejná offset, jenom se interpretuje jako be).

    Ješte chci přidělat opakování stejné posloupnosti výrazů na bloky vstupu, aby v tom šel emulovat xxd/od a nějaké základní operace pro výpočet offsetu (typu sečti výsledek $x a $y, vynásob n a použij to jako offset).

    A taky vlastní printf, aby to nepadalo a aby to umělo \n apod a lár bugů

    Takže otázka: hodí se ti něco takového?
    18.2.2005 19:39 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
    Rozbalit Rozbalit vše Re: Reverse engineering datových formátů
    Jo, a má to skoro 3 000 řádků ;-)
    18.2.2005 22:23 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: Reverse engineering datových formátů
    Jo, určitě, ale kde to najdu?

    Já jsem tedy zrovna svůj poslední formát už rozebral pomocí xxd, head, tail a jednoúčelových primitivních nástrojů (resp. fázi fyzické struktury už mám za sebou), naštěstí byl dost jednoduchý, takže jsem psaní něčeho zase uložil k ledu, ale hodit se to určitě bude nejpozději příště ;-)
    18.2.2005 23:29 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
    Rozbalit Rozbalit vše Re: Reverse engineering datových formátů
    Já tam ještě opravoval pár chyb, je to tady. Ale zatím je to spíš takový prototyp, viz grep FIXME *
    19.2.2005 19:54 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: Reverse engineering datových formátů
    Nemůžu to nějak přimět k vypisování floating point dat. Pokud tomu dobře rozumím, tak

    '"%g" (float_le) 0x0002'

    by mělo vypsat little endian (Intel) IEEE single na posici 2, ale vypisuje to úplně jiná čísla, než vím, že v těch souborech jsou.

    No, nebudu si stěžovat, až to budu zase potřebovat, raději se zapojím do vývoje...
    19.2.2005 20:25 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
    Rozbalit Rozbalit vše Re: Reverse engineering datových formátů
    Nj, floating point čísla jsou trochu rozbitý... Zítra bych měl mít čas, tak to dám do pořádku.
    19.2.2005 20:34 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: Reverse engineering datových formátů
    Žádný spěch; já doufám, že to nebudu potřebovat hodně dlouho. I když to tak asi úplně nedopadne ;-)
    20.2.2005 15:18 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
    Rozbalit Rozbalit vše Re: Reverse engineering datových formátů
    Oops, blbá chyba, zapomněl jsem, že float se funkcím s proměnným počtem parametrů (printf) předává jako double.

    patch, nová verze.
    22.2.2005 16:23 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: Reverse engineering datových formátů
    Patch, aby se negativní offsety počítaly od konce souboru.

    Patch pro výrobu rpm balíčku.

    P.S.: Pokud tohle je verze 0.0.2.1, tak čekám, že verze 1.0 bude mimo jiné obsahovat reimplementaci TeXu v zsh ;-)
    31.3.2005 16:10 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
    Rozbalit Rozbalit vše Re: Reverse engineering datových formátů
    Mám po zkouškách, tak jsem dostal novou verzi do použitelného stavu: revdump-0.1.tar.gz. Nějaké příklady jsou v src/test/*.rd.

    P.S.: Pokud tohle je verze 0.0.2.1, tak čekám, že verze 1.0 bude mimo jiné obsahovat reimplementaci TeXu v zsh ;-)
    Zatím to není ekvivalentní ani HQ9+, ale do 1.0 času dost ;-)
    31.3.2005 16:19 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: Reverse engineering datových formátů
    Já jsem od té doby zase reverse-engineeroval a revdump využil, ale co jsem hodně potřeboval (a napsal si na to pidinástroj používaný v kombinaci s head a tail...), bylo interpretovat část souboru od každého bajtu jako daný typ (v mém případě nejčastěji single, double) a vypsat posice, které dají hodnoty z nějakého zadného/rozumného rozsahu

    offset hodnota

    pak se výsledek z několika souborů projede joinem, a hned je jasno.

    Tak to byl takový námět ;-)
    31.3.2005 16:43 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
    Rozbalit Rozbalit vše Re: Reverse engineering datových formátů
    ./revdump --repeat --with-offsets --step=1 --cols=1 \
    '(float_le) 0 if $_ > 10' soubory | grep -v NO
    
    ale && zatím nefunguje. A je nevyšší čas napsat aspoň help, když jsem se sám musel koukat do zdrojáku, jak se ty optiony jmenují :-/

    PS: Je to v main.c, až to budeš taky hledat ;-)
    31.3.2005 16:59 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
    Rozbalit Rozbalit vše Re: Reverse engineering datových formátů
    Vlastně && a || se dají nahradit pomocí uniq, ale měl by to umět rovnou revdump (stejně jako nevypisovat řádky se samým NO).
    31.3.2005 17:45 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: Reverse engineering datových formátů
    No vida, jaké to má netušené možnosti. Ještěže existuje jako help alespoň tento thread, jinak bych to do příště zapomněl... ;-)

    Založit nové vlákno • Nahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.