Критерии отличия бинарных данных от текстовых

12
DV
На сайте с 01.05.2010
Offline
644
1019

Вот такой алгоритм нарисовался:

1. Расширения

Если .txt, .sh, .php, .module, то однозначно текстовый.

Если .bin, .exe, .com, .zip .rar, .tar, .gz, .gif, .jpeg, .jpg, .png, и т.д. то однозначно бинарный.

2. Специальные маркеры (сигнатуры).

Если в начале Shebang, однозначно текстовый.

Если в начале MZ, ZM, NE, LE, LX, PE, PK однозначно (возможно? могут быть и текстовые такие) бинарный

3. Наличие пробелов

Если есть пробелы, возможно, что текстовый.

Если нет пробелов, возможно, бинарный.

4. два "возможно" дают вывод "однозначно".

Что ещё можно придумать? Вообще, парсинг сигнатур видится монструозным, потому что типов файлов очень много.

VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
Оптимизайка
На сайте с 11.03.2012
Offline
396
#1

В линукс есть утилита file, используйте её:

file -i templates.conf

templates.conf: text/plain; charset=us-ascii

file -i filter_log.sh

filter_log.sh: text/x-shellscript; charset=us-ascii

file -i Снимок\ экрана.png

Снимок экрана.png: image/png; charset=binary

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
DV
На сайте с 01.05.2010
Offline
644
#2

Оптимизайка, тоже метод, согласен.

А на сколько он точен?



А хотя чего я докопался, натравливать надо на файлы без расширения.

1. Из файлов без расширения через "file" выделить тип и присвоить расширения.

2. По расширениям выделить неотображаемые бинарники.

3. По расширениям выделить отображаемые бинарники, например, "картинка".

4. По расширениям выделить отображаемый "код".

5. По расширениям из "код" выделить интерпретатор подсветки синтаксиса.

Усё.

Joker-jar
На сайте с 26.08.2010
Offline
167
#3

Ну вообще, критерием является наличие/отсутствие "непечатаемых" символов (определенные диапазоны байт). Это в целом, без привязки к структуре и формату файлов. Плюс, нужно учитывать наличие различных кодировок.

[Удален]
#4

Joker-jar, в общем то верно, но прокатит ли с утф16 к примеру?

DV
На сайте с 01.05.2010
Offline
644
#5

В дебри уехали…

Когда наладил, нашёл функцию finfo_file :)

Подскажите тогда такое дело: надо по известному MIME восстановить расширения файлов. Может, уже есть?

SI
На сайте с 03.12.2007
Offline
130
#6

mime.types из Apache.

-= Онлайн сервисы =-
A
На сайте с 19.07.2010
Offline
130
#7

Есть еще юникс "филе" - https://ru.wikipedia.org/wiki/File_%28Unix%29

Upd: Пропустил, выше уже написали.

.............
DV
На сайте с 01.05.2010
Offline
644
#8

Так и пришлось загнать в массив имеющиеся mime.

DV
На сайте с 01.05.2010
Offline
644
#9

Пара вопросов.

Как называется синтаксис, который используют файлы .info модуле Drupal, где точка с запятой означает комментарий? Такой же в AutoIT применяется, но наверняка есть какой-то язык-прародитель.

Среднестатистические синтаксисы ini, cnf. conf какие? Временно назначил application/x-shellscript.

/UPD

По первому — Ассемблер же 😂

DV
На сайте с 01.05.2010
Offline
644
#10

У кого под рукой Windows, подскажите, в какой кодировке .vbs файлы идут — CP1251, или CP866?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий