2008-06-19

Code of Google

Вот. Теперь имеется такая штука - mcupdate. Велком :)

На McAfee глядючи

В принципе всё работает - обновления качаются ночью, теперь обновлений по 2 штуки (старые+новые).. Что-то иногда сбоит копирование (или создание файла) с заголовком license.txt - повторное ручное чтение всё проходит без сбоев. странно. Добавил отладки - посмотрим где порылась собака.

Формат шифрования пока не разобрал - то есть ни версию avv файлов не могу считать - ни расшифровать в линуксе epo файлы - ни зашифровать нигде их же.

Это к тому, что не получается (не копал если честно) никсом читать контрольные суммы в PkgCatalog.xml из cab архива. И уж тем более их создавать самому.

Последние наблюдения показывают, что cab файлы у них хитрые. Архиваторы принимают их на ура - а вот никсовый (грамотный) архиватор выдал предупреждение о мусоре в конце архива. Оказалось - там какая-то структура хиитрая.. Может её кто-то понимает для кабов.. Мкафя точно понимает - ибо матерится на чужие архивы недобрыми словами. Подпись там - точно говорю :)

Итак, что я вижу. Формат заголовка каба такой:

dd 'MSCF',  0,  dwCabSize, 0

Если скакнуть на его конец (seek dwCabSize, SEEK_SET), там окажется эта структурка.

dd dwSecSize(2ch), 'Network Associates Inc.', 0, 0, .., 0

Размер судя по дальнейшему не включает в себя само слово размера. То есть дальше новые данные.

dd 'TFU\0', dwSecSize(19ch) - это значит заголовок такой и размер секции дальше.

И в самом конце (ровно через 19с байт после этого заголовка) -

dd dwSecSize(2c) - и 2c байт остатка. После чего ничего уже нет.

Здоровая секция и последний кусок нечитабельны - и скорее всего и есть криптоданные. Приверженность НАИ pgp-sdk - подсказывает мне что есть в этом что-то от лукавого (то есть от Зиммермана)..

Будем копать дальше. Да, я не говорил, как оказывается сильно любит НАИ реестр :) Там много чего полезного можно почерпнуть.

Например так:

   @echo off
   set HOST=kad1
   reg add \\%HOST%\HKLM\SOFTWARE\McAfee\VSCore\NVP /v DetectionExclusions /t REG_MULTI_SZ /f /d RemAdm-RemoteAdmin\0RemAdm-PSKill
   reg query \\%HOST%\HKLM\SOFTWARE\McAfee\VSCore\NVP /v DetectionExclusions 

2008-06-02

Формат Zip

Для создания архивов пришлось реверснуть формат Zip :) Никаких сложностей не вызвало - только вот, к сожалению, в отличие от рара (там где формат и алгоритмы кодирования заголовков прописаны в документации) значение некоторых полей непросто угадать. Да и не требовалось пока. Целью данного исследования стали архивы avvdat-xxx.zip с обновлениями мкафи. Внутри файл с текстом лицензии на 4 килобайта и три файла avv*.dat положенных без сжатия (ибо шифр не ксор как было раньше - хоть немного, но они тогда жались - теперь файлы реальный мусор). Надо всего лишь скачать заголовки файлов - можно обойтись одной tcp сессией менее полукилобайта.

Качаем Range: -22, Получаем - размер файла и адрес заголовка. (22 байта)
Качаем Range: заголовок. Получаем список и адреса заголовков (около 200 байт).
Качаем Range: 0-74,ххх-ууу,ааа-ббб - (ещё 200 байт).

Собираем вместе заголовки (которые придут нам в chunked-encoding) и файлы - проверяем сумму. Проблема в том, что сумма есть внутри зашифрованного каба. Ну cabextract то в никсах есть - но вот расшифровать без вайна (не реверся алгоритм) не получится. Опять хостинг в пролёте.

Кстати, хостинг переехал на 6 фряху :) а то задолбали своей 4.11 - ничё не пускалось. Теперь 7zip должен ожить. Да. Вот интересно, а если солид архивы рара содержат один и тот же файл в начале.. Обновления консультанта можно было бы ещё уменьшить :)

Обновления переехали на шахту. Небольшая доработка скрипта McUpdate, parse, Delta.ini - и ещё один скрипт на шахте - пересчёта контрольных сумм файлов.
Придумать бы как заставить апдейтера скушать gem файл.. хм.