Почему кажется, что несколько различных шестнадцатеричных чисел представлены в виде символа точки (".")?
Я заметил, что символ .
не соответствует тому же шестнадцатеричному числу, когда я пытался настроить свои правила YARA, на которых я работаю VirusTotal
, Когда я пытался исключить ложную положительную текстовую строку .sample.
, это не будет исключено, потому что .
преобразовано из текстового представления было 2E
в этом случае, тем временем в строке, которая на самом деле содержалась в ложных срабатываниях, .
представленный 00
,
Я предполагаю, что при сопоставлении файлов текст преобразуется в шестнадцатеричный формат, затем шестнадцатеричная строка сопоставляется в шестнадцатеричном формате файла, а весь шестнадцатеричный преобразовывается в текст в предварительном просмотре VT.
Затем я заметил, что на самом деле было больше шестнадцатеричных чисел, которые были представлены как .
в VirusTotal
предварительный просмотр текста. Например, 0A
, 99
, 09
(Скриншот).
Я попытался увидеть текстовое представление этих шестнадцатеричных чисел с помощью онлайн-конвертера ( http://www.unit-conversion.info/texttools/hexadecimal/), и некоторые из них были представлены как �
или пустой символ (не space
символ, как число 20
, но просто пустое место).
Итак, мои вопросы: почему разные цифры представляют один и тот же символ? Кроме того, что представляют собой "пробелы" в hexdump файла?
1 ответ
0A
символы являются символами перевода строки, как видно из таблицы в этом документе, в то время как 2E
символы являются фактическими периодами.
Согласно этому ответу на тот же вопрос:
Это пробельные символы, и если они включены буквально, это приведет к путанице в таблице ASCII. Вот почему они (а также непечатаемые управляющие символы ниже 32 и любые двоичные значения выше 127, которые не определены в ASCII и нуждаются в другом наборе символов для правильной интерпретации) представлены как.
По сути, "." персонаж - это универсальное средство для вещей, которые не могут быть правильно отображены в таблице.
Что касается онлайн-конвертера, то он генерирует символы до 7F
после чего 128-битная реализация ASCII больше не определяется, а транслятор предоставляет символ.. Даже из 00
в 7F
мы находим, что у переводчика есть проблемы с несколькими шестнадцатеричными значениями, включая символ перевода строки 0A
,
Таблица ASCII, связанная ранее, намекает на несколько символов, с которыми у переводчика могут возникнуть проблемы, например на символ DEL (7F
), звонок (07
) и ENQ (05
).
Я ожидаю, что пробелы являются пробельными символами, это можно проверить в таблице ASCII.