[Moscow.pm] определение наличия в файле непечатных символов
Kaltashkin Eugene
zhecka на gmail.com
Ср Сен 3 12:55:01 PDT 2008
Maxim Vuets пишет:
> 03.09.08, Kaltashkin Eugene<zhecka на gmail.com> написал(а):
>
>> Есть файл, в нём есть обычный текст и после текста идёт внедрёный
>> бинарный код.
>> Это .msg от MS Exchange. все мои попытки определить штатными средствами
>> файл на
>>
>
> Если это msg, то наверняка это multipart content MIME, разве нет?
> То есть, должен ведь быть какой-то разделить.
>
нету, Microsoft удивляет с каждым разом всё больше и больше.
пример
--- хрум ---
X-MimeOLE: Produced By Microsoft Exchange V6.5
Received: by mx.xxxx.ru
id <01C8F7A4.79674211 на mx.xxxx.ru>; Wed, 6 Aug 2008 13:11:56 +0400
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----_=_NextPart_001_01C8F7A4.79674211"
Content-class: urn:content-classes:message
Subject: FW: ERM report
Date: Wed, 6 Aug 2008 13:11:56 +0400
Message-ID: <546257E146388F42A4ECAAC5EA6586F11B039F на mx.xxxx.ru>
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator:
Thread-Topic: ERM report
thread-index: Acjz7Cpp8OXcPWZeSGueKo0UAoz4mQDuEapQ
From: "Alexander" <perfi на xxxx.ru>
To: =?koi8-r?B?8d7Nxc7F1yDhzMXL08HOxNIg98HMxc7Uyc7P18ne?= <yach на xxxx.ru>
This is a multi-part message in MIME format.
------_=_NextPart_001_01C8F7A4.79674211
Content-Type: multipart/related;
type="text/html";
boundary="----_=_NextPart_002_01C8F7A4.79674211"
------_=_NextPart_002_01C8F7A4.79674211
Content-Type: text/html;
charset="koi8-r"
Content-Transfer-Encoding: binary
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-r">
<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
--- хрум ---
</body>
</html>
------_=_NextPart_002_01C8F7A4.79674211
Content-Type: image/jpeg;
name="image001.jpg"
Content-Transfer-Encoding: binary
Content-ID: <image001.jpg на 01C8F3F4.8C27AF80>
Content-Description: image001.jpg
Content-Location: image001.jpg
X-MS-UrlCompName: 1_multipart%EF%A3%BF1_multipart%EF%A3%BFimage001.jpg
ЪьЪЮ^@^PJFIF^@^A^A^A^@`^@`^@^@Ъш^@C^@
--- хрум ---
после указателя MIME part голым кодом идёт бинарное содержимое
файла(идиотизм)
MS даже на обычный text/html пишет Content-Encoding-Transfer: binary.
Обычный греп не подходит, т.к. binary бывает и в начале сообщения и в
любом другом его месте.
> Или заголовок с длинной body и attachment-ов (или что там бинарное идет).
>
> Есть еще встроенные операторы для определения типа содержимого.
> Вот из perldoc -f -X:
> -T File is an ASCII text file (heuristic guess).
> -B File is a "binary" file (opposite of -T).
> Попробуйте, может быть поможет.
>
не помогает. пробовал
> Как самостоятельное решение, попробуйте сделать поиск
> по re типа такого /[\x00-\x08\x0b\x0e-\x1f]/, что ли. То есть,
> управляющие символы (первых 32) без табуляции, возрата
> карретки и перевода строки.
>
пока сделал поиск \x00, дальше посмотрим, но это не гут.
> Ну и спросить у Гугла типа how to determine binary file.
>
он не знает :)
Подробная информация о списке рассылки Moscow-pm