2009-03-02:

Ent v.0.0.3

re:entropy:easy:c++
Jest pewien tool, stworzony przeze mnie i j00ru, który już jakiś czas temu miałem wrzucić na sieć, ale jakoś tak kod był niepiękny, i nigdy nie było czasu żeby go uładnić. Aż w końcu w weekend będąc u rodziców wziąłem laptopa i przepisałem kod na czysto.

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).

wykres zrobiony przez Enta


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:

2009-03-15 12:34:01 = bw
{
na dole dla zwyklych plikow powinny byc adresy RAW (RVA dla PE) bo troche to bezuzyteczne bez dodatkowych informacji...
}
2009-03-15 13:53:19 = Gynvael Coldwind
{
@bw
Ano powinny ;> Natomiast jak pisałem kolejnym poście, można RAW dość łatwo wyliczyć (pozycja X słupka * 0x100) ;>
}
2014-01-02 16:07:17 = D3LLF
{
Podobny koncept, tylko w 3D:
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:

Nick:
URL (optional):
Math captcha: 1 ∗ 10 + 7 =