[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