30 апреля 2011 г.

настройка транспондеров для полноценного скана dvb-s в kaffeine

файлы настройки спутников лежат в директории /home/username/.kde/share/apps/kaffeine/dvb-s/
заменяем файлы более конкретизированными параметрами с ниже приведённого адреса, врубаем поиск и актуализируем список каналов.

список можно было раньше найти здесь:
http://joshyfun.peque.org/transponders/kaffeine.html

с 2009 года страница больше не существует, какой-то другой источник не искал, но можно воспользоваться сервисом http://web.archive.org:

http://replay.web.archive.org/20090224114729/http://joshyfun.peque.org/transponders/

"взлом" результатов программы VBto дампингом памяти

Есть такая программка VBto для конвертирования проектов, написанных на VisualBasic в разные другие проекты, например вариации .NET проектов и даже C++/MFC.
Мне нужно было позарез преобразовать текст из VB в удобоваримое на C++. строчек там было много, ибо целый проект, хоть и с открытыми исходниками. А отдельных символов ещё больше.
Сия программка не хочет скидывать исходники в желаемом формате, если количество строк превышает 700. программа самораспаковывается в памяти и вникать в особенности защиты особого интереса не было.
Программка зато всё-таки преобразовывает исходники из одного формата в другой и хранит их в памяти, не давая их записывать на диск. это видно при включении конвертации - программка активно что-то делала. а денежек они хотят много. и платить я не очень-то хочу.
на 32-битовой Linux системе я смог через программку Wine установить программку и даже её запустить. Это не чудо, просто программа Wine позволяет запускать под линуксом очень много программ, написанных для виндов.
Пакет VBto был установлен и успешно запущен. Далее для "взлома" программы, а точнее - для извлечения результатов работы аппликации мне нужен был дампер области памяти, занимаемой оной. Конечно, таким образом скидывается на винчестер не только данные, но и код. Также нужно учесть то, что текстовики хранятся не в чистом виде, а со "следами" аллокирования памяти malloc/new.
в качестве дампера памяти я выбрал этот: Process Dumper
в принципе, подойдёт и любой другой, хорошо справляющийся со своей работой. кстати, есть и версия программы для виндов.

задав ID номер самой VBto после процесса конвертации Wink

pd -p 12345 > filedump.dat


мы получаем файлик, который можно несколько изучить. благо, места он не так и много занимает - 80 мегабайт, а уж текстовики из него можно быстро выудить. кстати, под линуксом можно накидать не такой уж большой скриптик, который бы выловил более-менее удобоваримые участки, то есть, без всякого нетекстового "мусора". после этого, пораскинув мозгами, знающий человек из исходного материала может составить проект, который должен был экспортироваться. в нашем примере - C++/MFC со структурами таких проектов можно ознакомиться на огромном количестве (или просто на одном) примеров с источников программ с открытыми текстами (Open Source).

а можно поступить вообще очень борзо, взломав программку и безпрепятственно экспортировать в "нормальном" виде.

Правда, нужно учесть то, что программка самораспаковывающаяся и это начало трудностей. Так что при достаточно крупном количестве исходников этот вариант более приемлем.

Существуют также способы сделать дампы памяти средствами линукса, без использования дополнительных программ:

cat /proc/$process_id/smaps

29 апреля 2011 г.

Разбираем nod32 для Linux

Пару недель назад появилась новость о выходе бета версии антивируса для линукс систем.
Скачать можно здесь: http://beta.eset.com/linux

Мне стало интересно, что внутри этого бинарника и как его можно установить без
инсталляции через dpkg или rpm. у меня дома 64 битный Debian, поэтому загрузил
себе версию соответствующей разрядности.

В директории с загруженным из интернета бинарником:

chmod 755 ueav.x86_64.linux


После этого бинарник можно запустить, но он сразу хочет пароля
суперпользователя для установки. Посмотрим, что он хочет. В директории /tmp/ во
время запуска появляется поддиректорий с именем подобным /tmp/epkg.uIS8sc/

Сделаем копию в директорий пользователя, т.к. в случае закрытия дилога с вводом
пароля root файлы удалятся, что и следует ожидать.

В ESETовском директории можно найти пару интересных файлов, один из которых -
бинарник test32 пользователя aurel32. На какой системе он был собран также
нетрудно выяснить.

Второй файл намного интереснее, это epkg.rpm

Вытаскиваем содержимое утилитой rpm2cpio (к примеру)

rpm2cpio epkg.rpm | cpio -idv


В сожалению, можно обнаружить, что в бинарниках есть жесткая привязка в
директорию /opt/ поэтому я решил сделать просто символьные линки на папку, в
которую я распаковал (перетащил) содержимое, нужны права суперпользователя.

ln -s /home/username/ESET/opt/eset /opt/eset


ну и остальные, по желанию. Если не хотите, то можно напрямую перетащить
директории с содержимым в корневой каталог. содержимое etc в /etc и далее, по списку.

Если сделали, как нужно, то в директории /etc/init.d/ появился скрипт esets,
который управляет демоном от eset:


./esets
Usage: ./esets {start|stop|restart|force-reload|reload}


В распакованном нами директории ~/ESET/opt/eset/esets/lib/ есть файл, размером
20 мегабайт: esets_modules. В нем находятся базы сигнатур, которые
распаковываются в обычном случае в /var/opt/eset/esets/lib/,
сюда же следует обновлять данные антивируса вручную, если не будет работать актуализация.

В случае, если при старте из консоли вы будете получать сообщение, типа "нет
прав...", то можно пойти навстречу требованиям трудящихся:


chown username:users /opt/eset/ -R
chown username:users /var/log/esets -R
chown username:users /var/opt/eset -R
chown username:users /etc/opt/eset -R


затем запускаем демон

/etc/init.d/esets force-reload


и после этого GUI:

/opt/eset/esets/bin/esets_gui


определить разрядность исполняемого файла можно так:

readelf -h esets_gui


загружаемые библиотеки:

ldd esets_gui


p.s. графическую оболочку для установки не запускал вообще, уж извините.

28 апреля 2011 г.

azbox. что внутри прошивки?

этот ресивер работает на операционной системе линукс, версия Linux MMP 2.6.15 sigma
не смотря на относительную древность ядра системы в этой коробке есть Wlan соединение (бэкпортированный ralink модуль), окромя простого Lan.
есть возможность установить внутренний накопитель с SATA интерфейсом. здесь описание некоторых дисков, протестированных и установленых на сей севайс.
отформатировать диск можно и на компе, файловая система ext2 или ext3 поддерживается коробкой без проблем. диск можно отформатировать и после установки. желательно устанавливать 2.5 дюйма или 3.5 с небольшим энергопотреблением, например WD из серии "Green" т.к. возможны зависания при большом потреблении энергии - железка может стать восприимчивой к внешним помехам.

винчестер автоматически монтируется (прикручивается), но если у вас уже были какие фильмы или мультики на диске и вы встраиваете его в таком состоянии, то azbox ожидает их в определённых каталогах:

/DATA/hdb1/download <- чего скачали, будет здесь
/DATA/hdb1/movie <- директорий для фильмов
/DATA/hdb1/music <- музыка
/DATA/hdb1/picture <- для картинок
/DATA/hdb1/recordfile <- каталог для записи передач
/DATA/hdb1/upnp <- для расшарки (судя по всему)

нетестированные версии фирмвари можно найти здесь
актуализацию официальной фирмвари можно производить через интернет (если есть соединение), или с усб флешки (также и снапшоты).

на девайсе можно делать изменения установок. следует учитывать то, что если вы его отключите совсем, то все установки обнулятся. т.е. если вам нужно было сделать установки для самба-сервера в каталоге /etc , то ничему не удивляйтесь, если было отключено питание.

для этой железки есть много небольших программок для локального и внешнего использования.
например есть файловый менеджер Midnight Commander (mc), для работы с файлами. двуоконный интерфейс знаменитого некогда Norton Commander - удобно управлять файлами, редактировать, копирвать, удалять и пр.

а есть программы для редактирования списка каналов. это можно делать на вашем компьютере.

команды для работы с файлом:

работаем в линукс-консоли, как делается в виндах - ни малейшего понятия. если у вас вдруг нет линукса, не отчаивайтесь, линукс у вас есть на azbox.

файл-патч состоит из трёх блоков: хедер, контрольная сумма и основной кусок.

для извлечения хедера файла:

dd if=patch.bin of=header.bin bs=40 count=1




для извлечения контрольной суммы файла:

dd if=patch.bin of=md5sum.bin bs=8 skip=5 count=2


выделяем файл (файловую систему) без данных хедера и контрольной суммы:

dd if=patch.bin of=patch.cramfs.bin bs=56 skip=1


там как раз находятся все файлы для апдейта системы.

парамтеры программы dd:
if=<входной файл>
of=<конечный файл>
bs=<размер блока в байтах>
count=<число блоков>
skip=<пропустить блоков>

то есть, команда


dd if=patch.bin of=header.bin bs=40 count=1


с входным файлом patch.bin записывает результат в header.bin с размером блока 40 байт, количеством 1 штука. размер файла header.bin будет 40 байт.

после того, как основные данные для обработки после команды

dd if=patch.bin of=patch.cramfs.bin bs=56 skip=1


записаны в файл patch.cramfs.bin, начинаем прикручивание этого файла, как файла-имиджа к операционной системе. например, можно прикрутить любой iso имидж
без поджарки диска. для этого достаточно примонтировать диск к монтировочному пункту:

mount -o loop cdImage.iso /mnt


пользователь с привелегиями прикручивает файл cdImage.iso к пункту прикрутки в системе /mnt

или для нашего случая
mount -o loop patch.cramfs.bin /mnt


прикрутить файл patch.cramfs.bin как имидж к системе. после процесса монтировки в директории /mnt появится содержимое имиджа, которое можно редактировать.

пример. результат команды du для того, чтобы узнать количество занимаемого места:


du -h


ну, или выдать список файлов и директориев корневого каталога имиджа:

ls -l


total 112
-rw-r--r-- 1 user root 924 Jan 1 1970 command.seq
drwxr-xr-x 1 root root 272 Jan 1 1970 DISK1
drwxr-xr-x 1 root root 428 Jan 1 1970 DISK2
drwxr-xr-x 1 root root 24 Jan 1 1970 FLASH
-rw-r--r-- 1 root root 33 Jan 1 1970 loader.build_date
drwxr-xr-x 1 root root 204 Jan 1 1970 MMP
-rwxr-xr-x 1 root root 4613 Jan 1 1970 postPatch
-rwxr-xr-x 1 user root 1085 Jan 1 1970 prePatch
-rwxr-xr-x 1 user root 199 Jan 1 1970 restoreMac
-rw-r--r-- 1 root root 103265 Jan 1 1970 Update.list


самые интересные файлы настроек для установки новой фирмвари:

postPatch
prePatch
restoreMac

postPatch - установки после патча
prePatch - подготовка к установке
restoreMac - для сохранения mac адресов вашей железки. тут можно и изменить mac адрес, если нужно

что есть в файле postPatch?
установки:
1. mac адреса
2. имени компа
3. для ssh и ftp соединений
4. дступных языков интерфейса
5. языка интерфейса по умолчанию.

то есть из фирмвари можно выкинуть ненужные языки интерфейса. оставить английский, немецкий и, может быть, прикрутив русский язык.

75K ./MMP/hd/System/Msg/Chinese_simple
75K ./MMP/hd/System/Msg/Chinese_traditional
98K ./MMP/hd/System/Msg/Dutch
199K ./MMP/hd/System/Msg/English
101K ./MMP/hd/System/Msg/French
95K ./MMP/hd/System/Msg/German
100K ./MMP/hd/System/Msg/Italian
82K ./MMP/hd/System/Msg/Japanese
55K ./MMP/hd/System/Msg/Korean
98K ./MMP/hd/System/Msg/Portuguese
98K ./MMP/hd/System/Msg/Spanish
1.1M ./MMP/hd/System/Msg

последняя строчка - общий размер директория Msg

116K ./MMP/hd/System/message-td210/Arabic
122K ./MMP/hd/System/message-td210/Bulgarian
122K ./MMP/hd/System/message-td210/Czech
121K ./MMP/hd/System/message-td210/Danish
129K ./MMP/hd/System/message-td210/Deutsch
124K ./MMP/hd/System/message-td210/Dutch
118K ./MMP/hd/System/message-td210/English
130K ./MMP/hd/System/message-td210/French
128K ./MMP/hd/System/message-td210/Hellenic
123K ./MMP/hd/System/message-td210/Hungarian
126K ./MMP/hd/System/message-td210/Italian
122K ./MMP/hd/System/message-td210/Polish
126K ./MMP/hd/System/message-td210/PortugueseB
129K ./MMP/hd/System/message-td210/PortugueseP
125K ./MMP/hd/System/message-td210/Russian
121K ./MMP/hd/System/message-td210/Serbian
123K ./MMP/hd/System/message-td210/Slovak
129K ./MMP/hd/System/message-td210/Spanish
125K ./MMP/hd/System/message-td210/Turkish
2.3M ./MMP/hd/System/message-td210
последняя строчка - общий размер директория message-td210

на пару мегабайт можно уменьшить этот фирмварь-файлик. если нужно будет очень сильно.

что нужно знать для сборки вашего файла? фирмварь состоить из трёх частей.
1. хедеры, чем они отличаются?
2. контрольная сумма основного блока, делается достаточно просто утилитой md5sum (после того, как измененный основной будет снова собран)
3. как собрать снова основной блок?

к первому вопросу:


hd header4295.bin


00000000 48 58 43 52 01 01 00 00 41 5a 42 6f 78 00 00 00 |HXCR....AZBox...|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 09 00 00 00 |................|
00000020 c7 10 00 00 00 f0 df 02 |........|

10 c7 = 4295 версия фирмвари
02 df f0 00 = 48230400 размер основного блока


hd header4084.bin


00000000 48 58 43 52 01 01 00 00 41 5a 42 6f 78 00 00 00 |HXCR....AZBox...|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 09 00 00 00 |................|
00000020 f4 0f 00 00 00 80 d4 02 |........|

0f f4 = 4084 версия фирмвари
02 d4 80 00 = 47480832 - основной блок

второй пункт уже был раскрыт - см. выше

третий пункт. при размонтировке файловой системы все изменения сохранятся в вашем файле patch.cramfs.bin автоматически, то есть достаточно после mount и манипуляций сделать umount

экперимент по разборке и сборке фирмвари без манипуляций:
извлекаем из фирмвари три файла:


dd if=azbox-0.9.4295.bin of=header4295.bin bs=40 count=1
dd if=azbox-0.9.4295.bin of=md5sum4295.bin bs=8 skip=5 count=2
dd if=azbox-0.9.4295.bin of=cramfs4295.bin bs=56 skip=1


мы получили файлы header4295.bin (40 байт) , md5sum4295.bin (16 байт), cramfs4295.bin (48230400 байт)

после этого склеиваем:


cat header4295.bin md5sum4295.bin cramfs4295.bin > myPatch4295.bin


размеры файлов вроде как совпадают:
48230456 байт azbox-0.9.4295.bin
48230456 байт myPatch4295.bin

но одинаковое ли их содержимое? для этого достаточно использовать утилитку md5sum:


md5sum azbox-0.9.4295.bin


e383e0fe5b899b898e93f55bc9b3fb2f azbox-0.9.4295.bin


md5sum myPatch4295.bin

e383e0fe5b899b898e93f55bc9b3fb2f myPatch4295.bin


вроде как всё совпадает.

продолжение следует ;)

Мелкий вирус (по мотивам стиха Буревестник)

Мелкий вирус

Под седой железкой компа виндовс файлы накопляет.
Между файлами системы гордо реет мелкий вирус,
Мысли хаккерской подобный.
То засканит документы, то пройдется по емейлам,
По винчестеру он скачет, заражая файлов кучи.
В этой скачке - жажда мести за дырявую систему.
Силу гнева, пламя знаний и уверенность в блюскрине
Чует виндовс в этой скачке!
Юзер зырит на компьютер, ничего не понимая,
Тупо клацая по кнопкам и не думает про ужас
Удаленных личных данных и украденных пассвордов.
Антивирус насторожен, но не видит сигнатуры
Он в своей престарой базе злоумышленных программок.
Антиспай глупейший, тоже, спрятавшись в системном трее,
Сделал вид, что не заметил собирателей паролей.
Только гордый кусок кода реет быстро над системой.
Все полнее наш винчестер и все больше битых файлов,
Замедляя всю систему, файл подкачки не поможет!
Винт грохочет, весь в потугах делает из файлов кашу.
Файл подкачки заполняет уж остатки на харддрайве.
Вот охватывают файлы стаи вирусов зловредных,
Расплодившихся мнгновенно, затирая тексты, фотки,
Блокируя в сетку доступ.
Мелкий вирус бытро реет, черной мыслии подобный,
Шустро файлы искажая, тарахтеть винт заставляет.
Вот он носится, как демон, - гордый,
Черный демон хака, - и смеется и рыдает!
Он над файлами смеется, над системою - рыдает!
В дебрях проца, - чуткий демон, - он давно уже повсюду:
Область данных, область стэка, выполняемого кода!
Виндовс воет... Винт скрежечет...
Синим цветом запылает вся поверхность монитора,
Взор куда свой устремляет безутешный тупой юзер.
Закорючками причины системкрэша он исторгнет.
Будут буквы некрологом пользователя личных файлов,
Числа будут же посланьем перегревшегося проца.
Блюскрин! Скоро будет блюскрин!!!
Это вредный кусок кода шустро реет по ячейкам,
Заполняя все пространство; то кричит пророк победы:
Пусть синее будет блюскрин!!!

сочинил в часы безделия при тестировании программ :)

Игрушка для осваивания цифровой техники

Прикупил я после нового года со скидкой интересную картоно-железку в магазине Conrad за 5€ :) Уж не знаю, почему по такой бросовой цене это устройство продавалось. Но все равно, мелочь, а приятно.


Пинг-понг игрушка в картонной коробке

Девайс базирован на Atmega8, в том числе на плате есть контакты для сериального интерфейса - то есть его можно перепрограммировать на свой вкус. К тому же в комментах на страничке я нашел интересную ссылку с кучей проектов для перепрограммации.

Вот что получилось :)




далее ссылки на немецком:

ping-pong-selbst-programmieren

mega8-isp-programmer

куча других проектов, среди которых:
Ping Pong Touch, BREAKOUT, Bing Bong, King Kong, звонок для двери, Tetris, Labyrinth и многое другое :)

Ссылка на проекты

26 апреля 2011 г.

Пишем свой реконнект-скрипт для DSL модема

Речь пойдет о написании скрипта на Linux. Но методы можно также применить на Windows.
В предыдущей записи, касаемой реконнекта модемов  речь шла о сбросе соединения с целью получения нового IP адреса с помощью списка, который можно найти в интернете (адрес был указан). Но может оказаться так, что железки нет в списке. Что делать в этом случае?
Есть очень хорошее расширение для браузера Firefox, называется расширение это Tamper Data. С помощью него можно отлавливать и разбирать по полочкам трафик, а именно последовательности сессий (GET/POST). Так вот, основа того, что можно реконнектить модем через веб-интерфейс настроек модема, как раз и лежит в альтернативном методе. Всего (обычно) действий три: логин с паролем, разрыв соединения и через некоторое время (5-10 секунд) - восстановление соединения с внешним миром.

Рассмотрим два шага, для случая, если в локальной сети к установкам модема можно "дотянуться" без пароля, что очень не хорошо, т.к. любой может перенастроить ваш модем через браузер, зная IP адрес модема.

Если мы уже находимся в веб-интерфейсе настроек, то нужно найти кнопки "Disconnect" и "Connect". После этого включаем "Tamper Data" через панель расширений и созерцаем соединения GET/POST в нашем окне. Жмём "Disconnect" в веб-интефейсе модема и смотрим, что происходит в окне:

"словили" разъединение с интернетом, правой кнопкой мышки на "POSTDATA" можно вызвать меню для копирования текста в буфер обмена.


тоже и для соединения с интернетом.

Затем пишем простенький shell-скрипт:

#!/bin/sh
# by Eduard-X

echo "disconnect"
wget -q -O /dev/null --post-data="controller=Internet&action=DisconnectInternet&id=0&ReturnPage=%2Fdiagnostic.htm" http://192.168.1.1/cgi-bin/Hn_wan.cgi >/dev/null 2>&1
sleep 5
echo "connect"
wget -q -O /dev/null --post-data="controller=Internet&action=ConnectInternet&id=0&ReturnPage=%2Fdiagnostic.htm" http://192.168.1.1/cgi-bin/Hn_wan.cgi >/dev/null 2>&1

Как видно, текст из буфера обмена нужно немного переработать, выкинув текст "POSTDATA=" и обращаться нужно не просто по IP адресу модема, а вызывать нужное cgi приложение, в нашем случае Hn_wan.cgi

Пауза в 5 секунд необходима для получения нового IP адреса, величина зависит от
провайдера, устанавливается экспериментальным путём. Если пауза будет меньше,
то есть вероятность того, что вы получите предыдущий IP.

Вот и всё.

25 апреля 2011 г.

Целиноград. Старые фотографии

Это фотографии города, в котором я родился и вырос. Попытался собрать только цветные фотографии нашего уютного города.
На фотографии можно кликать для увеличения.