Base16

Материал из InformationSecurity WIKI
Перейти к: навигация, поиск

Hex кодирование (или Base16) является одним из самых известных тк удобен для изучения файла пользователем.

Чем выделяется

В нем может присутствовать следующий "алфавит":

    0123456789ABCDEF

Проще говоря любой байт кодируется двумя "цифрами". И как вы можете заметить десятичные цифры в нем преобладают.


Где часто используется

Встретить кодирование вы можете в форенсике, вебе, криптографии ,PWN и стеганографии. Проще говоря почти везде.

Forensics

В том же WireShark пакет предоставляется как байты в HEX.

Примеров много, но я не могу припомнить.


Web

crypto

  • Все хеши предоставляются нам строками, закодированными в hex.
  •  ???


Скрипты

python

1 "7061756c".decode("hex")
2 "cool".encode("hex")

perl

encode

1 $string = "6162636465666a68696a6b6c6d6e6f707172737475767778";
2 $string =~ s/([a-fA-F0-9][a-fA-F0-9])/chr(hex($1))/eg;
3 print "$string\n";

decode

1 $string = "abcdefjhijklmnopqrstuvwx";
2 $string =~ s/(.)/sprintf("%x",ord($1))/eg;
3 print "$string\n";


ruby

encode

1 class String
2   def to_hex
3     "0x" + self.to_i.to_s(16)
4   end
5 end
6 
7 "116".to_hex
8    => "0x74"

decode

1 $string = "6162636465666a68696a6b6c6d6e6f707172737475767778";
2 $string =~ s/([a-fA-F0-9][a-fA-F0-9])/chr(hex($1))/eg;
3 print "$string\n";

java

decode

1 public static void main(String[] args) {
2     String hex = "75546f7272656e7";
3     StringBuilder output = new StringBuilder();
4     for (int i = 0; i < hex.length(); i+=2) {
5         String str = hex.substring(i, i+2);
6         output.append((char)Integer.parseInt(str, 16));
7     }
8     System.out.println(output);
9 }

encode

1 public String toHex(String arg) {
2     return String.format("%040x", new BigInteger(1, arg.getBytes(/*YOUR_CHARSET?*/)));
3 }


Утилиты

Cryptool



Райтапы

What the Hex

ASIS Quals CTF 2015: Simple Algorithm

Tyrannosaurus Hex – 10 picoctf 2014 writeup

Полезные ссылки

Hex to string converter

String to Hex converter

Официальная вики статья