2008-05-29

Обновления McAfee-2

Получилось-получилось :)
Жестоко поиздевавшись над McScript с Олей и Идой (сильные такие дэвочки) удалось подсунуть "самодельную" gdeltaavv.ini (точнее сложно было заставить принять правильный PkgCatalog.xml) . Однако лазейка нашлась - есть момент, когда распакованный файлик из полностью проверенного (подписанного) архива лежит беззащитный на диске. Остаётся его заменить - и он воспримется как родной. Вчера я пытался поломать место, где проверяется этот архив - удалось заставить скушать мой неподписанный и незашифрованный cab вместо PkgCatalog.z - однако проверка подписей всё испортила. Вместо слома алгоритма подписей - всего лишь замена файла после распаковки. Не очень здорово - но для целей однократно "подсунуть" нужные обновления - вполне годится.

Теперь найденная в скайнете версия 4244 обновилась до 4292 - которая уже есть в актуальной базе обновлений. Почему-то ночью не докачались обновления с 4290 до 4305..
Что-то я намудрил откуда их брать. Остатки хотел взять от наишников.. Но не взялось. Надо логи ночной скачки посмотреть. Ладно. Пара исправлений в gdeltaavv.ini и теперь актуальная версия 4292 а не 4305 :) Дообновимся завтра штатными средствами.
В ini файле зачем-то убрали размер файлов - однако контрольная сумма та-же самая - старые алгоритмы работают :) Сплошное издевательство над crc32.
use String::CRC32;
sub validate($)
{
open S,'<'.$_[0];
binmode S;
my $sum=crc32(*S) ^ -1;
close(S);
sprintf "$_[0] %04X,%04X %i",$sum>>16,$sum&0xFFFF,$sum;
}

sub validate_ini($)
{
open S,'<'.$_[0];
binmode S;
my $sum=crc32(*S,-1) ^ -1;
close(S);
sprintf "%s=%u",$_[0],$sum;
}

Спасибо немцам за хорошую накопительную (просто историческую) базу обновлений :)
Будем ломать дальше. Блин, откуда брать DateTime в каталогах - два часа бился над алгоритмом преобразования из unix time в мелкософтовское время - (злой Перл не умеет понимать 64-битные целые числа - спасибо Руби не оплошал) - а оказалось зря. Наишники отдают вместо времени модификации файлов - текущее.. Так что время файлов - всего лишь - когда немцы обновлялись. Причём и web и ftp отдают текущее. ИИС, блин.

2008-05-28

Обновления McAfee

Странно. Зачем-то поменяли формат антивирусных баз.
Copyright (c) Network Associates Inc. Olympus
Copyright (c) McAfee DAT file
Если раньше базы назывались
clean.dat
scan.dat
names.dat
То теперь
avvclean.dat
avvnames.dat
avvscan.dat
И обновления - целые называются avvdat-5304.zip вместо dat-5304.zip а инкрементальные 53035304avv.gem вместо 53035304.upd. Ну да, неплохо. Инкрементальные апдейты в 2-3 раза меньше стали. Сами базы 22 метра вместо 28 - немного поужались.

Но. Теперь алгоритм шифрования, блин, заново придётся изучать.. Если я уже сам без участия утилит/библиотек McAfee накладывал обновления на базы (всего то надо было научиться расшифровывать и зашифровывать базы, конвертировать upd файлы в rtp и запускать библиотеку rtpatch) - умел версии баз сам смотреть из файлов.. Всё же это придётся заново придумывать.. Ужос. Нах.

Наработки (недоделанных) обновлений для 8.0 весьма пригодились. В 8.5 они вытащили алгоритмы шифрования в отдельную библиотеку (naisign.dll) из внутренностей McScript.exe за что им моё личное спасибо. Шутники - это же надо было придумать назвать точку входа шифровальщика naisign_Reserved.

Шифровальщики эти Мкафевцы (наишники?) ещё те :)
Ещё со времён LWI со страшным шифром их lws скриптов: [tratSrcS] - [dnEcrS].
Перловский скрипт расшифровывающий [ScrStart] - [ScrEnd] даже переписывать на Си не захотелось. Зато наделали внутри ранних lwi.exe и mcurial.dll кучу переполнений :) Трудное детство - сколько там remote code execution можно было наделать.. Ух. Совершенно детская была бы задача. Только неактуально..

Итак, пока научился расшифровывать .McS файлы (текстовые скрипты) и .z файлы - оказавшиеся .cab архивами xml файлов (консольная прога имеется).

Опять учиться надо накатывать обновления. Ну и неплохо было бы обратно шифровать кабы в z файлы. Уффф..

Да - ещё несколько ссылочек на память. forum.ru-board.com, ftp-updater, update.nai.com.

2008-05-21

Переводы GPL

Какая то беда с этими переводами. Перевёл для себя yakuake - попытался отправить - и понял, как тут всё запущено.. Сам механизм ещё куда ни шло. msgfmt и т.п. весьма неплохое и удобное решение. Но вот сообщения на английском очень уж любят менять. Судя по изменениям текстов в yakuake - как никак пришлось 4 версии перевести..

Есть куча команд переводчиков опенсурса. Гном, опеноффис, КДЕ, лаунчпад трудятся..

Нормальных утилит не видно (или я с ними пока не разобрался). Куда годится, например, отсутсвие централизованной базы данных переводов. Пусть базы будут локальными - но готовые глобальные базы доступные для скачивания и локальной работы - очень бы пригодились. Даже нормального словаря (хотя бы единого словаря терминов) пока не обнаружил..

Лаунчпад не даёт вятынуть всё - по запросу отдают только по одному файлу .po да и то на почту - жесть. И без рекомендаций.. Зеркало svn kde как то странно работает.
Надо будет попробовать вытянуть все рекомендации из лаунчпада моими методами :)

2008-05-19

Долбанный автозапуск

Злые трояны пишут свой автозапуск внутри:
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2

Прокси

Накопанный текст для LWP - с проксями, отладкой и т.д.
#!/usr/bin/perl -w
use strict;

use LWP::Debug qw(+conns);
local $ENV{PERL_LWP_USE_HTTP_10} = 1;
# мало помогает - лучше запускать скрипт с этим параметром
use LWP::UserAgent;
use LWP::ConnCache;

my $ua = LWP::UserAgent->new();
$ua->conn_cache(LWP::ConnCache->new());

#$ua->env_proxy;
$ua->proxy('http','http://127.0.0.1:3128');
$ua->agent("Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5");
#my $response = $ua->get(
'http://www.perlmonks.org');
#$ua->mirror($url,$file);
#$ua->head($url);

Конфиги прокси для SVN^ ~/.subversion/servers
[global]
# http-proxy-exceptions = *.exception.com, www.internal-site.org
http-proxy-host = cdit
http-proxy-port = 3128
http-proxy-username = gimly
http-proxy-password = pass
http-compression = yes
Пока всё.

Начало

Попробуем систематизировать то что делаю. Потерянный час на восстановления патча к Yakuake 2.8.1 по синхронизации заголовка распологает :)
Патч накладываем так:
apt-get source yakuake
cd yakuake-2.8.1;patch -p1 here.patch;cd ..
apt-get source -b yakuake
sudo dpkg -i yakuake_2.8.1-1ubuntu2_i386.deb

Собственно патч такой:
diff -ru yakuake-2.8.1/yakuake/src/main_window.cpp yakuake-2.8.1.new/yakuake/src/main_window.cpp
--- yakuake-2.8.1/yakuake/src/main_window.cpp 2008-01-17 19:53:33.000000000 +0300
+++ yakuake-2.8.1.new/yakuake/src/main_window.cpp 2008-05-19 12:10:41.000000000 +0400
@@ -839,6 +839,7 @@
void MainWindow::slotUpdateTitle(const QString& title)
{
title_bar->setTitleText(title);
+ slotRenameSession(selected_id, title);
}
Вот и всё что я хотел сказать :)