Chodzi o narzędzie do mierzenia entropii, oraz (od niedawna) zagęszczenia instrukcji FPU, który stworzyliśmy (tj. podstawową wersję) jakieś dwa lata temu z j00ru, i które (z braku lepszej nazwy) zostało nazwane Ent (jak stworzyć tego typu narzędzie, i po co komu pomiar entropii, pisałem m.in. w którymś artykule do hakin9 - tytuł "Entropia", można pobrać za darmo ze strony wydawnictwa).
Narzędzie jest stworzone w C++, jest chwilowo związane z Windowsem (kilka struktur z winnt.h używam), i korzysta z libpng. Binarka wraz ze źródłem jest (jak zwykle) na końcu artykułu.
Ent uruchamiamy z linii poleceń, i podajemy mu nazwę pliku którego wykres entropii nas interesuje. Następnie Ent dzieli plik na 256-bajtowe fragmenty, i dla każdego fragmentu liczy entropie wg wzoru który kiedyś gdzieś znalazłem (zainteresowanych odsyłam w kod). Dodatkowo, jeśli plik jest plikiem PE, to na górze wykresu (w postaci różnokolorowych prostokątów) zaznaczane są sekcje oraz obszary między sekcjami (kolor zielony to sekcja wykonywalna, kolor niebieski to sekcja danych, kolor szary to nagłówki lub obszar między sekcjami), a w sekcji kodu pojawia się czerwonawy wykresik gęstości instrukcji FPU. Chciałbym od razu zaznaczyć że sporo rzeczy robionych jest "na oko", więc dokładność programu określił bym w granicach 95% - natomiast to zazwyczaj wystarczy. Poniżej znajduje się przykładowy program dość dziwnego pliku PE (związanego z trzecią fazą hackerchallenge 2008).
Po co komu pomiar entropii to temat na oddzielny post, i zajmę się tym jutro ;>
Na dzisiaj tyle.
ent_v003.zip (185KB, bin+src, windows)
Comments:
Ano powinny ;> Natomiast jak pisałem kolejnym poście, można RAW dość łatwo wyliczyć (pozycja X słupka * 0x100) ;>
http://binwalk.org/3d-data-visualizations/
Jak zauważa autor, pozwala to nawet na zidentyfikowanie pewnych charakterystycznych cech struktur poszczególnych typów plików.
Add a comment: