Base16
Материал из InformationSecurity WIKI
Версия от 19:33, 2 июня 2016; Drakylar (обсуждение | вклад) (Новая страница: «Hex кодирование (или Base16) является одним из самых известных тк удобен для изучения файла п…»)
Hex кодирование (или Base16) является одним из самых известных тк удобен для изучения файла пользователем.
Содержание
Чем выделяется
В нем может присутствовать следующий "алфавит":
0123456789ABCDEF
Проще говоря любой байт кодируется двумя "цифрами". И как вы можете заметить десятичные цифры в нем преобладают.
Где часто используется
Встретить кодирование вы можете в форенсике, вебе, криптографии ,PWN и стеганографии. Проще говоря почти везде.
Forensics
В том же WireShark пакет предоставляется как байты в HEX.
Примеров много, но я не могу припомнить.
Web
crypto
- Все хеши предоставляются нам строками, закодированными в hex.
- ???
Скрипты
python
"7061756c".decode("hex")
"cool".encode("hex")
perl
encode
$string = "6162636465666a68696a6b6c6d6e6f707172737475767778";
$string =~ s/([a-fA-F0-9][a-fA-F0-9])/chr(hex($1))/eg;
print "$string\n";
decode
$string = "abcdefjhijklmnopqrstuvwx";
$string =~ s/(.)/sprintf("%x",ord($1))/eg;
print "$string\n";
ruby
encode
class String
def to_hex
"0x" + self.to_i.to_s(16)
end
end
"116".to_hex
=> "0x74"
decode
$string = "6162636465666a68696a6b6c6d6e6f707172737475767778";
$string =~ s/([a-fA-F0-9][a-fA-F0-9])/chr(hex($1))/eg;
print "$string\n";
java
decode
public static void main(String[] args) {
String hex = "75546f7272656e7";
StringBuilder output = new StringBuilder();
for (int i = 0; i < hex.length(); i+=2) {
String str = hex.substring(i, i+2);
output.append((char)Integer.parseInt(str, 16));
}
System.out.println(output);
}
encode
public String toHex(String arg) {
return String.format("%040x", new BigInteger(1, arg.getBytes(/*YOUR_CHARSET?*/)));
}
Утилиты
Райтапы
ASIS Quals CTF 2015: Simple Algorithm
Tyrannosaurus Hex – 10 picoctf 2014 writeup