На главную страницу

Enigma изнутри

Содержание Шпаргалки по внутренностям Энигмы:

 
 

Другие страницы по
SEZAM 7700 / Mutant 200s

 

 

 

 

 

Как посмoтреть лог эмулятора

Первейшим помощником при настройке эмулятора/кардсервера/клиентаCS является его же лог запуска/работы.
В подавляющем большинстве случаев лог подопытного софта можно посмотреть, запустив его ручками в телнет-сессии, но такой способ не очень удобен (и, как правило, эму нужно сначала "убить" - а это не всегда тривиально) и часто неприемлем по ряду причин - в общем, тут требуется отдельная статья FAQ.
Ниже будет рассмотрена имплементированная во многих современных эму/CS возможность просмотра лога по протоколу UDP.

Вкратце - специальным образом настроенный софт непрерывно "пуляет" протокол своей работы на UDP порт по некоему адресу (IP) - назовем его клиентом лога. Клиент лога - компьютер, на котором запущена соотвествующая программа, принимающая сообщения с этого самого UDP порта и интерпретирующая его в обычные текстовые сообщения - искомый лог.

Плюсы такого способа - лог передается непрерывно, посмoтрeть его можно в любой момент, запустив на клиентском компьютере программу-логгер, при этом с дримбоксом не нужно устанавливать телнет-сессию и вообще вмешиваться в его работу. Он просто должeн быть on-line. Кстати, таким образом очень удобно смотрeть лог на удаленном (очень удаленном) дримбоксе - например, помогая кому-то настраивать его долбаный шаринг.

Сразу о программе-логгере для Windows машин (юниксоиды и сами с усами как смотреть лог от к примеру того же syslogd - тут все также) - называется 3CSyslog - 3com Syslog Message Daemon. Качать тут: http://support.3com.com/software/utilities_for_windows_32_bit.htm
Распаковать, инсталлировать, запустить и пользоваться - никаких настроек не требуется.

Настройка "подопытного софта" обычно сводится к правке его конфига с целью включения возможности UDP-логгинга.

Примеры.

mgcamd - файл mg_cfg
# Log options
#    00 Off (default)
#    01 Network
#    02 console
#    03 both
L: { 01 } 666.666.666.666 514
gbox - файл gbox_cfg
# Trace/Debug
# xx yz ; xx=00 no konsole output
# xx yz ; xx=01 konsole output
# xx yz ; y=0 debug output (don't use)
# xx yz ; y=1 no debug output
# xx yz ; z=0 ouput to konsole
# xx yz ; z=1 output to /var/tmp/debug.txt
# xx yz ; z=2 Output to UDP (to capture with gboxt)
Z: { 00 12 } 666.666.666.666 514
evocamd - файл camd_cfg
# To use UDP log
#    00 disabled
#    01 enabled
L: { 00 } 666.666.666.666 514
camd3 - файл camd3.config
# Log(optional): 0 - keine Ausgaben, 1-Datei, 2 - Console, 4 - UDP(syslog), 3 - Console+Datei, 5 - UDP+Datei, 6 - UDP+Console, 7-UDP+Console+Datei;  Default ist 2;
LOG=4

# Host fьr UDP-logging
LOG_HOST=666.666.666.666

# Port fьr UDP-logging(optional);  Default ist 514
LOG_PORT=514
newcs - файл newcs.xml
<debug>
<level>spam</level>
<type>all</type>
<output>udp</output>
<logfile></logfile>
<console_options></console_options>
<file_options></file_options>
<udp_host>666.666.666.666</udp_host>
<udp_port>514</udp_port>
<udp_options>all</udp_options>
<tcp_port>3001</tcp_port>
<tcp_options></tcp_options>
</debug>

Замечания.

1. Я нарочно выбрал недопустимый IP- адрес 666.666.666.666 - как дополнительный сигнал к тому, что настраивая свoй софт нужно не забыть подставить свое значение - IP компа, на котором будет просматриваться лог. В некоторых эму/CS допустимо использование не IP, а имени DNS.

2. В примерах указан стандартный UDP-порт syslog - 514. Дело в том, что не все программы-логгеры (в том числе и предложенная выше) позволяют логировать по другому порту.
В целях потакания паранойе (пардон - для повышения секретности) - нужно конечно изменить этот порт на более другой (значением на несколько порядков больше) и использовать софт, позволяющий настраивать этот самый порт.

3. Ну и как всегда - при редактировании конфигов не забывайте, что строки, начинающиеся со знака диеза - # - являются комментариями и на работу софта никак не влияют.
Например, строка
#LOG_PORT=514
в камд3 может остаться закомментированной: будет использовано значение по-умолчанию - 514, что нам и нужно. Если же нужен другой порт - недостаточно изменить 514 на что-то другое, нужно не забыть убрать ведущий #
В файлах xml (см. newcs) комментарии выделяются так:
<!-- your comment here -->

Автор: ВаняШ
http://allrussian.info/

Планировщик заданий cron

Cron позволяет выполнять любые команды как по расписанию единоразово, так и с определенной периодичностью, заданной пользователем.
Примеры применения:
    1. Восстановление ВПН соединения после обрыва провайдером в определеное время
    2. Выключение, перезагрузка и пр. в определенное время
    3. Синхронизацию системного времени тоже можно делать автоматически с заданным промежутком... и т.д.
Задания для Cron'а хранятся в /var/spool/cron/crontabs/root
Про синтаксис Crontab-файла (в нашем случае root) можно почитать тут http://athena.vvsu.ru/docs/unix/man/crontab.html http://www.codenet.ru/webmast/php/cron.php
Для включения Cron'а в Энигме в меню в Экспертных настройках снимите галку с пункта Disable Start Cron. После добавления задания в /var/spool/cron/crontabs/root для вступления его в силу желательно перезагрузить ресивер.

Автор: Rhezus
http://satavto.by/forum

Изменяем имидж для своих нужд

Небольшие ограничения: все нижесказанное делалось в отношении 7700. (Mutant 200S) Для 8000 (Relook 400S) все тоже самое с небольшими изменениями. Желающие могут сделать универсальное решение. Можно все сделать через make файл. Но меня что-то напрягало. ;) Я расскажу как, а кому надо сделают как им удобнее. Все под линукс.

Немного теории: Обычно выкладывают имиджи в виде двух файлов: kernel_root.img и db.img В начале присутствует usb_ или serial_ в зависимости от варианта заливки. По USB(сети) или COM-порту. В нашем случае за исходный берем usb_ имиджи. Serial тоже можно, но потребуется некоторая переделка. В результате получим и usb_ и serial_.

kernel_root представляет собой образ, совмещающий в себе ядро и файловую систему root. kernel нас не интересует, остается без изменений, нам нужен root.
root представляет собой файловую систему squashfs с компрессией LZMA. не совсем стандартное решение, изначально squashfs использует gzip. Соответственно понадобятся патчи.
db - файловая система jffs2. Поддержка этой системы в ядре обычно есть, но тонкость заключается в том, что в нашем случае образ сделан для big endian среды (процессор ppc), а интел системы изначально little endian. Соответственно потребуется конвертация.

Шаг 1. Распаковка имиджей.
Откусывает заголовок имиджа:
dd if=usb_kernel_root.img of=kernel_root.be.flash bs=4096 skip=1
В результате получаем файл kernel_root.be.flash.
Выкусываем root:
dd if=kernel_root.be.flash of=root.be.flash bs=64k skip=18
Получаем файл root.be.flash - файл образа файловой системы squashfs с компрессией lzma. Требуется распаковать. Об этом чуть позже. Число 18 имеет отношение к платформе. Для relook400s это число 20. Откуда берутся - могу рассказать отдельно, кому интересно.
Теперь о db.
Откусваем заголовок:
dd if=usb_db.img of=db.be.flash bs=4096 skip=1
Получаем файл db.be.flash. Конвертируем из big endian в little endian. Если у вас вдруг не x86 платформа с поддержкой big endian то конвертировать не надо. ;)
jffs2dump -b -e db.le.flash db.be.flash
Получаем файл db.le.flash. Его уже можно монтировать.
Грузим необходимые модули:

modprobe mtdcore
modprobe jffs2
modprobe mtdram
modprobe mtdchar
modprobe mtdblock

Создаем директорию:
mkdir ./db
Монтируем:

dd if=db.le.flash of=/dev/mtd0
mount -t jffs2 /dev/mtdblock0 ./db

Результат: В каталоге db получаем содержимое файловой системы db, которая монтируется в /var. Вносим необходимые изменения.

Теперь необходимо распаковать squashfs образ:
./unsquashfs-lzma -dest ./root root.be.flash
Образ распакуется в папку root. Тоже можем править по своему усмотрению. все что проделали в виде исполняемого файла с необходимыми бинарниками в аттаче. Где взять исходники и патчи - расскажу отдельно. Спрашивайте.
Внимательно следим чтобы не было ошибок после каждой команды. Необходимые пакеты ставим. Могу написать какие пакеты ставил я. У меня Debian (sid)

После всего надо упаковать.

Шаг 2. Сборка имиджа после изменений.
Упаковываем root:
./mksquashfs-lzma ./root root.flash -be -all-root
Упаковываем db:
./mkfs.jffs2 -d ./db -b -e 65536 -o db.flash
Выкусывем kernel. Ядро то нам понадобится... :)

dd if=usb_kernel_root.img of=kernel_root.be.flash bs=4096 skip=1
dd if=kernel_root.be.flash of=part_kernel_root.flash bs=64k count=18

Фиксим размер раздела:
./appendbin -bs=0x2000 part_root.flash root.flash 448
Числа 18 и 448 для мутанта. Для relook400 20 и 528.
Собираем имидж DB:

./mkdnimg -make usbimg -vendor_id 0x00444753 -product_id 0x6c6f6f6b -hw_model 0x00010000 -hw_version 0x00010000 -start_addr 0xffce0000 -erase_size 0x002f0000 -image_name db -input db.flash -output usb_db.new.img

В результате получим usb_db.new.img
Собираем kernel_root
dd if=part_root.flash of=part_kernel_root.flash bs=8k seek=144 count=448
(для 400s - не 144 и 448, а 160 и 528, -start_addr 0xffda0000
-erase_size 0x00230000)
Собираем имидж kernel_root:

./mkdnimg -make usbimg -vendor_id 0x00444753 -product_id 0x6c6f6f6b -hw_model 0x00010000 -hw_version 0x00010000 -start_addr 0xff840000 -erase_size 0x004a0000 -image_name db -input part_kernel_root.flash -output usb_kernel_root.new.img

Получаем usb_kernel_root.new.img
Обращаю внимание, что в и для DB и для kernel_root для 400s:
-hw_model 0x00040000
-hw_version 0x00010001
-erase_size 0x00560000

Делаем serial имиджи:

./mkdnimg -make serialimg -model_name relook100s -input usb_db.new.img -output serial_db.img
./mkdnimg -make serialimg -model_name relook100s -input usb_kernel_root.new.img
-output serial_kernel_root.img

Для 400s: -model_name relook400
Вот и все. Здесь необходимые бинарники и скрипт с командами...

Автор: S_N_G
http://www.satavto.by/forum/topic3782.html

Как развернуть "чужой" имидж или для чего эти загадочные skip для мультибута

Идея мультибута существует достаточно давно. Поддержка загрузки нескольких имиджей со встроенного жесткого диска или из сетевого ресурса по NFS присутствует практически во всех последних версиях загрузчика u-boot. Часто нужно модифицировать корневую файловую систему или просто посмотреть что там внутри без прошивки аппарата. Об этом очень подробно описано здесь.

Но вопрос как "выкусить" эту файловую систему из имиджа? Ответ очень простой - поискать по строчке sqsh в файле образа и удалить все лишнее. Что собственно мультибут и делает для равертывания имиджа на диск. Величина смещения от начала файла имиджа и есть значение skip в блоках. Оставшееся количество блоков это есть count. А bs соответственно размер блока.

Вот небольшой скрипт для автоматизации действий. Сделав небольшие изменения в этом скрипте вы с легкостью узнаете параметры мультибута и что там писать в соответствующих параметрах. Хотя можно и без изменений, если размер блока 64 байт вас устраивает.

#!/bin/sh 
coarseoffset=0 
fineoffset=0 
ddskip=0 
found="" 
img=$1 
while test $coarseoffset -le 8388608 
do 

        echo $coarseoffset 
        ddskip=`expr $coarseoffset / 64` 
        dd if=$img of=test.img skip=$ddskip bs=64 count=256  2> /dev/null 
        found=`grep -n sqsh test.img` 
        if [ "$found" != "" ] 
        then 
                found=1 
                break 
        fi 
        coarseoffset=`expr $coarseoffset + 16384` 
done 

if [ $found -eq 1 ] 
then 
        echo found 
        echo $coarseoffset 
        while test $fineoffset -le 16384 
        do 
                echo $fineoffset 
                dd if=test.img of=test1.img skip=$fineoffset bs=1 count=4 2> /dev/null 
                found=`grep sqsh test1.img` 
                if [ "$found" != "" ] 
                then 
                        found=1 
                        break 
                fi 
                fineoffset=`expr $fineoffset + 64` 
        done 
        fineoffset=`expr $fineoffset + $coarseoffset` 
        echo $fineoffset 
        ddskip=`expr $fineoffset / 64` 
        rm -f test1.img test.img 
        echo $ddskip 
        dd if=$img of=rootfs.sqfs bs=64 skip=$ddskip 
fi 

Вот пример работы скрипта

[redcore]$ ./unpack usb_all.UNOFFICIAL.PLi-Helenite.RELOOK.400S.img 
105472+0 записей считано 
105472+0 записей написано 
скопировано 6750208 байт (6,8 MB), 0,559015 c, 12,1 MB/c 
[redcore]$ ll rootfs.sqfs 
-rw-r--r-- 1 maxs nemo 6750208 Ноя 19 12:26 rootfs.sqfs 
[redcore]$ ./unsquashfs-3-lzma rootfs.sqfs 
Reading a different endian SQUASHFS filesystem on rootfs.sqfs 

created 579 files 
created 100 directories 
created 201 symlinks 
created 0 devices 
created 0 fifos 
[redcore]$ ll squashfs-root/ 
итого 56 
drwxr-xr-x 2 maxs nemo 4096 Сен 18 23:14 bin 
drwxr-xr-x 2 maxs nemo 4096 Июл 9 03:00 dev 
drwxr-xr-x 3 maxs nemo 4096 Окт 5 02:44 etc 
drwxr-xr-x 2 maxs nemo 4096 Июл 9 03:00 hdd 
drwxr-xr-x 7 maxs nemo 4096 Окт 5 02:44 lib 
drwxr-xr-x 10 maxs nemo 4096 Июл 9 03:00 mnt 
drwxr-xr-x 2 maxs nemo 4096 Июл 9 03:00 proc 
drwxr-xr-x 3 maxs nemo 4096 Сен 15 19:48 root 
drwxr-xr-x 2 maxs nemo 4096 Окт 5 02:44 sbin 
drwxr-xr-x 9 maxs nemo 4096 Июл 9 03:00 share 
drwxr-xr-x 2 maxs nemo 4096 Сен 18 23:07 sys 
drwxr-xr-x 2 maxs nemo 4096 Июл 9 03:00 tmp 
drwxr-xr-x 2 maxs nemo 4096 Июл 9 03:00 var 
drwxr-xr-x 14 maxs nemo 4096 Окт 5 02:44 var_init 
[redcore]$ 

Автор: redcore

Использованы материалы сайта http://www.satavto.by/forum/index.php