Koder/Dekoder Hex

Kodowanie szesnastkowe (hex) reprezentuje dane binarne za pomocą 16 symboli (0-9 i A-F). Każdy bajt staje się dwoma znakami hex. To narzędzie dekoduje ciągi hex, aby ujawnić oryginalną zawartość, identyfikuje typy plików za pomocą bajtów magicznych i zapewnia przeglądarkę w stylu edytora hex do inspekcji danych binarnych.

Typowe zastosowania

  • Dekodowanie danych zakodowanych szesnastkowo z API i logów
  • Inspekcja nagłówków plików binarnych i bajtów magicznych
  • Analiza danych pakietów sieciowych
  • Debugowanie wartości kryptograficznych (hashe, klucze, wektory IV)
  • Przeglądanie surowych danych binarnych z baz danych lub plików
  • Konwersja zrzutów hex z narzędzi debugujących

Funkcje

  • Dekodowanie ciągów hex w wielu formatach (zwykły, rozdzielony spacjami, z prefiksem 0x, rozdzielony dwukropkami, tablica C)
  • Przeglądarka hex z przesunięciem, bajtami hex i reprezentacją ASCII
  • Automatyczne wykrywanie typu zdekodowanej zawartości (JSON, XML, tekst itp.)
  • Wykrywanie łańcuchowe — automatyczne wykrywanie zdekodowanej zawartości z przyciskiem "Dekoduj jako X"
  • Identyfikacja typu pliku za pomocą bajtów magicznych dla danych binarnych
  • Wirtualne przewijanie dla dużych plików z leniwym ładowaniem fragmentów
  • Konwersja między formatami hex (zwykły, rozdzielony spacjami, 0x, dwukropek, tablica C)
  • Kodowanie tekstu do hex w różnych formatach

Przyklady

JSON jako Hex

Wypróbuj →

Ciąg hex, który dekoduje się do obiektu JSON.

7b226e616d65223a22746573742e6a736f6e227d

Hex rozdzielony spacjami

Wypróbuj →

Bajty hex rozdzielone spacjami (typowe w wyjściu debugowania).

48 65 6c 6c 6f 2c 20 57 6f 72 6c 64 21

Nagłówek PDF

Wypróbuj →

Bajty hex reprezentujące sygnaturę pliku PDF.

25504446 2d312e34 0a312030 206f626a

Tablica w stylu C

Wypróbuj →

Bajty hex sformatowane jako tablica C.

0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x21

Styl adresu MAC

Wypróbuj →

Bajty hex rozdzielone dwukropkami jak adres MAC.

de:ad:be:ef:ca:fe

Wskazowki

  • Kodowanie hex podwaja rozmiar danych (każdy bajt staje się 2 znakami).
  • Typowe bajty magiczne: PDF zaczyna się od 25504446 (%PDF), ZIP od 504B0304.
  • Dane obrazów (PNG, JPEG itp.) są automatycznie wykrywane i używają narzędzia Analizator obrazów.
  • Prefiks 0x oznacza wartość szesnastkową w większości języków programowania.
  • Adresy MAC i UUID używają separatorów dwukropkowych lub myślnikowych.
  • Hex nie rozróżnia wielkości liter: 0xFF jest równe 0xff.

Zrozumienie Koder/Dekoder Hex

Kodowanie szesnastkowe (hex) reprezentuje dane binarne za pomocą notacji szesnastkowej, gdzie każdy bajt mapuje się na dokładnie dwa znaki z zestawu 0-9 i A-F. To bezpośrednie mapowanie bajt-tekst czyni hex standardową reprezentacją danych binarnych w debugowaniu, kryptografii, sieciach i programowaniu niskopoziomowym.

W przeciwieństwie do Base64, który zaciemnia granice bajtów swoim 6-bitowym grupowaniem, każda para znaków hex mapuje się na dokładnie jeden bajt, co sprawia, że odczytanie poszczególnych wartości jest trywialne. Adresy pamięci, zawartość rejestrów, zrzuty pakietów sieciowych, nagłówki plików i wartości kryptograficzne są konwencjonalnie wyświetlane w hex.

Ciągi hex pojawiają się w wielu formatach. Zwykły hex (48656c6c6f) jest powszechny w API. Hex rozdzielony spacjami (48 65 6c 6c 6f) pojawia się w przechwyconych pakietach. Hex rozdzielony dwukropkami (48:65:6c:6c:6f) jest używany dla adresów MAC i odcisków palców certyfikatów. Prefiks 0x (0x48, 0x65) to standardowy literał hex w C, JavaScript, Pythonie i większości języków. Tablice w stylu C ({0x48, 0x65}) osadzają dane binarne w kodzie źródłowym.

Identyfikacja typu pliku opiera się na bajtach magicznych — konkretnych sekwencjach hex na początku pliku, które identyfikują jego format. PDF zaczyna się od 25504446 (%PDF), PNG od 89504E47, ZIP od 504B0304, a pliki wykonywalne ELF od 7F454C46. Rozpoznanie tych sygnatur jest niezbędne do debugowania kodu obsługi plików i analizy danych binarnych.

Hex i Base64 oba kodują dane binarne jako tekst, ale dokonują różnych kompromisów. Hex mapuje każdy bajt na 2 znaki, podwajając rozmiar danych (100% narzutu), podczas gdy Base64 mapuje co 3 bajty na 4 znaki z tylko około 33% narzutem. Base64 jest bardziej efektywny pod względem przestrzeni dla dużych danych, co czyni go lepszym wyborem do osadzania zawartości binarnej w formatach tekstowych. Hex jest bardziej czytelny do inspekcji na poziomie bajtów, co czyni go standardem do debugowania, wartości kryptograficznych i analizy protokołów, gdzie istotne są poszczególne wartości bajtów.

Bajty magiczne (zwane też sygnaturami plików) to konkretne sekwencje bajtów na samym początku pliku, które identyfikują jego format niezależnie od rozszerzenia pliku. Pliki PNG zaczynają się od 89 50 4E 47, JPEG od FF D8 FF, a ZIP od 50 4B 03 04. Uniksowe polecenie "file" opiera się na bajtach magicznych do wykrywania typów plików, a ta sama technika jest używana w tym narzędziu do identyfikacji zawartości binarnej w danych hex.

Hex nie rozróżnia wielkości liter, ponieważ cyfry A-F reprezentują wartości 10-15 niezależnie od tego, czy są wielkie, czy małe — 0xFF i 0xff oba oznaczają dziesiętne 255. Wybór między wielkościami liter jest czysto konwencjonalny: wielkie litery są powszechne w specyfikacjach i wyjściach hashów, podczas gdy małe litery są powszechne w kontekstach webowych, takich jak kolory CSS i kodowanie URL. Prefiks 0x oznacza literał liczby szesnastkowej w większości języków programowania, w tym C, C++, Java, JavaScript, Python, Go i Rust. Bez prefiksu wartość taka jak "10" byłaby niejednoznaczna między dziesiętną a hex; napisanie 0x10 jednoznacznie wskazuje na wartość szesnastkową (dziesiętnie 16).

← Powrot do wszystkich narzedzi