Для общего развития можно почитать ISO 13818-1, там все более подробно и со структурами...
Для тех, кто никогда не пользовался *nix подобными системами, советую почитать про telnet и shell для начала...
а для тех, кому это нах... не нужно можно просто на своем компе, который естественно соединен сеткой с дримом сказать:
C:telnet <ip адрес вашего дрима>
появится примерно следующее:
Welcome on your dreambox! - Kernel 2.4.20 (1)
version: 0107200312241414
comment: Dreambox image based on with enigma 20031224.1414
creator: ruDREAM team
dreambox login:
введете root и ентер далее появится:
Password:
введете dreambox и ентер, далее появится командная строка вида:
root@dreambox ~ >
ну вот тут можно прервать краткий эксткурс в *nix подобные системы!
Приступим непосредственно к тому зачем мы все тут собрались, т.е. непосредственно к логированию...
Краткий опус для тех, кому нах... не нужно знать как устроен механизм вещания в формате MPEG:
PAT - PID 0 все каналы на транспондер PROGRAM ASSOCIATION TABLE
CAT - PID 1 т.е. контроль доступа CONDITIONAL ACCESS TABLE
PMT - содержит данные о конкретном канале, т.е. о его сервисах аудио, видео и т.д. PROGRAM MAP TABLE
Начнем с ECM (для тех кто не хочет понять сам механизм могу сообщить, что можно посмотреть ECM PID в иммиджах ruDream по нажатию синей кнопки, либо в ecm.info и тому подобных файлах, которые зависят от используемого вами кама), для чего посмотрим сначала текущего транспондера, т.е. PAT, делается это следующей командой:
./dvbsnoop -n 1 0
-n 1 , т.е. нам хватит одного пакета, все остальные скорее всего идентичны...
Результат:
DvbSnoop Vers. 0.9b -- (c) Rainer Scherg
---------------------------------------------------------
SECT-Packet: 00000001 PID: 0 (0x0000), Length: 52 (0x0034)
Time received: Thu 01.01.1970 00:06:54.023
---------------------------------------------------------
0000: . . 1 . . . . . . . . . P . . .
0000: 00 b0 31 00 07 dd 00 00 00 00 e0 10 50 dd e0 a0
0010: P . . . P . . . P . . . P . . .
0010: 50 de e0 a1 50 df e0 a2 50 e0 e0 a3 50 e1 e0 a4
0020: P . . . Q ? . . T . . . T . . .
0020: 50 e7 e0 a6 51 3f e0 aa 54 c8 e0 ad 54 c9 e0 ae
0030: . ] . 3
0030: a2 5d 9a 33
PID: 0 (0x0000)
PAT-decoding....
Table_ID: 0 (0x00) [= program_association_section]
section_syntax_indicator: 1 (0x01)
(fixed): 0 (0x00)
reserved_1: 3 (0x03)
Section_length: 49 (0x0031)
Transport_Stream_ID: 7 (0x0007)
reserved_2: 3 (0x03)
Version_number: 14 (0x0e)
Current_next_indicator: 1 (0x01)
Section_number: 0 (0x00)
Last_Section_number: 0 (0x00)
Program_number: 0 (0x0000)
reserved: 7 (0x07)
Network_PID: 16 (0x0010)
Program_number: 20701 (0x50dd)
reserved: 7 (0x07)
Program_map_PID: 160 (0x00a0)
Program_number: 20702 (0x50de)
reserved: 7 (0x07)
Program_map_PID: 161 (0x00a1)
Program_number: 20703 (0x50df)
reserved: 7 (0x07)
Program_map_PID: 162 (0x00a2)
Program_number: 20704 (0x50e0)
reserved: 7 (0x07)
Program_map_PID: 163 (0x00a3)
Program_number: 20705 (0x50e1)
reserved: 7 (0x07)
Program_map_PID: 164 (0x00a4)
Program_number: 20711 (0x50e7)
reserved: 7 (0x07)
Program_map_PID: 166 (0x00a6)
Program_number: 20799 (0x513f)
reserved: 7 (0x07)
Program_map_PID: 170 (0x00aa)
Program_number: 21704 (0x54c8)
reserved: 7 (0x07)
Program_map_PID: 173 (0x00ad)
Program_number: 21705 (0x54c9)
reserved: 7 (0x07)
Program_map_PID: 174 (0x00ae)
CRC: 2724043315 (0xa25d9a33)
==========================================================E]
Обратите внимание на Program_map_PID из него мы подсматриваем PID для PMT, которая в свою очеред приведет нас к ECM PID (также можно найти в бинарном виде в /var/tmp/pmt.tmp)
Program_number идентифицирует номер программы, правда искать потом в /var/tuxbox/config/enigma/services не прикольно, там кодировка русских названий дурацкая и значения в шестнадцатиричном виде...
Для того чтобы узнать ECM PID необходимо выбрать из PAT соответствующий Program_map_ID и снова пустить dvbsnoop:
./dvbsnoop -n 1 0x00ae
Результат:
DvbSnoop Vers. 0.9b -- (c) Rainer Scherg
---------------------------------------------------------
SECT-Packet: 00000001 PID: 161 (0x00a1), Length: 81 (0x0051)
Time received: Thu 01.01.1970 00:15:30.123
---------------------------------------------------------
0000: . . N P . . . . . A . " . . . .
0000: 02 b0 4e 50 de c5 00 00 e1 41 f0 22 09 0f 05 00
0010: . . . . . . . . . . . . . . .
0010: ef a2 10 01 00 13 01 20 14 03 01 a4 00 09 0f 05
0020: . . . . . . . . . . . . . . .
0020: 00 e7 d2 10 01 00 13 01 20 14 03 02 07 00 02 e1
0030: A . . R . . . . . . . R . . . .
0030: 41 f0 03 52 01 01 04 e1 92 f0 03 52 01 02 06 e1
0040: . . . R . . V . f r e . . - # .
0040: f5 f0 0a 52 01 03 56 05 66 72 65 09 00 2d 23 9a
0050: ~
0050: 7e
PID: 161 (0x00a1)
Guess packet type from table id...
PMT-decoding....
Table_ID: 2 (0x02) [= program_map_section]
section_syntax_indicator: 1 (0x01)
(fixed): 0 (0x00)
reserved_1: 3 (0x03)
Section_length: 78 (0x004e)
Program_number: 20702 (0x50de)
reserved_2: 3 (0x03)
Version_number: 2 (0x02)
Current_next_indicator: 1 (0x01)
Section_number: 0 (0x00)
Last_Section_number: 0 (0x00)
reserved_3: 7 (0x07)
PCR PID: 321 (0x0141)
reserved_4: 15 (0x0f)
Program_info_length: 34 (0x0022)
DescriptorTag: 9 (0x09) [= CA_descriptor]
Descriptor_length: 15 (0x000f)
CA_system_ID: 1280 (0x0500) [= France Telecom (Viaccess)]
reserved: 7 (0x07)
CA_PID: 4002 (0x0fa2)
Private-Data:
0000: . . . . . . . . . .
0000: 10 01 00 13 01 20 14 03 01 a4 00
DescriptorTag: 9 (0x09) [= CA_descriptor]
Descriptor_length: 15 (0x000f)
CA_system_ID: 1280 (0x0500) [= France Telecom (Viaccess)]
reserved: 7 (0x07)
CA_PID: 2002 (0x07d2)
Private-Data:
0000: . . . . . . . . . .
0000: 10 01 00 13 01 20 14 03 02 07 00
Stream_type: 2 (0x02) [= ITU-T Rec. H.262 | ISO/IEC 13818-2 Video | ISO/IEC 11172-2 constr. parameter video stream]
reserved_1: 7 (0x07)
Elementary_PID: 321 (0x0141)
reserved_2: 15 (0x0f)
ES_info_length: 3 (0x0003)
DescriptorTag: 82 (0x52) [= stream_identifier_descriptor]
Descriptor_length: 1 (0x0001)
Component_tag: 1 (0x01)
Stream_type: 4 (0x04) [= ISO/IEC 13818-3 Audio]
reserved_1: 7 (0x07)
Elementary_PID: 402 (0x0192)
reserved_2: 15 (0x0f)
ES_info_length: 3 (0x0003)
DescriptorTag: 82 (0x52) [= stream_identifier_descriptor]
Descriptor_length: 1 (0x0001)
Component_tag: 2 (0x02)
Stream_type: 6 (0x06) [= ITU-T Rec. H.222.0 | ISO/IEC 13818-1 PES packets containing private data]
reserved_1: 7 (0x07)
Elementary_PID: 501 (0x01f5)
reserved_2: 15 (0x0f)
ES_info_length: 10 (0x000a)
DescriptorTag: 82 (0x52) [= stream_identifier_descriptor]
Descriptor_length: 1 (0x0001)
Component_tag: 3 (0x03)
DescriptorTag: 86 (0x56) [= teletext_descriptor]
Descriptor_length: 5 (0x0005)
ISO639_language_code: fre
Teletext_tye: 1 (0x01) [= initial teletext page]
Teletext_magazine_number: 1 (0x01)
Teletext_page_number: 0 (0x00)
CRC: 757308030 (0x2d239a7e)
==========================================================
CA_PID - в данном случае это и есть ECM PID, как мы видим записи две, а следовательно два потока ECM,
но для разных SOID, если внимательно посмотреть данные:
Private-Data:
0000: . . . . . . . . . .
0000: 10 01 00 13 01 20 14 03 02 07 00
то как раз в последних 3-х байтах видно SOID.
Итак в нашем случае:
для SOID 020700 - ECM PID = 7D2
для SOID 01A400 - ECM PID = FA2
Теперь если надо залогировать поток ECM для 01A400 в бинарном виде необходимо выполнить следующую команду:
./dvbsnoop -n -1 -b 0x0fa2 > ecm.bin
Здесь естественно присутствует перенаправление в файл ecm.bin, впринципе тут как вам угодно..
-n -1 означает бесконечно, пока не нажмете CTRL+C
-b - бинарный формат... Если вы ASS в этом деле, то можно не ставить...
Теперь EMM поток, в этом нам поможет CAT, получить которую можно следующей командой:
/dvbsnoop -n 1 1
Результат:
DvbSnoop Vers. 0.9b -- (c) Rainer Scherg
---------------------------------------------------------
SECT-Packet: 00000001 PID: 1 (0x0001), Length: 21 (0x0015)
Time received: Thu 01.01.1970 00:07:13.423
---------------------------------------------------------
0000: . . . . . . . . . . . . . . . .
0000: 01 b0 12 ff ff c3 00 00 09 07 05 00 e3 e8 13 01
0010: . T . y
0010: 20 16 54 fd 79
PID: 1 (0x0001)
CAT-decoding....
Table_ID: 1 (0x01) [= conditional_access_section]
section_syntax_indicator: 1 (0x01)
(fixed): 0 (0x00)
reserved_1: 3 (0x03)
Section_length: 18 (0x0012)
reserved_2: 262143 (0x3ffff)
Version_number: 1 (0x01)
Current_next_indicator: 1 (0x01)
Section_number: 0 (0x00)
Last_Section_number: 0 (0x00)
DescriptorTag: 9 (0x09) [= CA_descriptor]
Descriptor_length: 7 (0x0007)
CA_system_ID: 1280 (0x0500) [= France Telecom (Viaccess)]
reserved: 7 (0x07)
CA_PID: 1000 (0x03e8)
Private-Data:
0000: . .
0000: 13 01 20
CRC: 374668665 (0x1654fd79)
==========================================================
Здесь CA_PID уже EMM PID = 0x03e8 и как видно EMM один поток на данном транспондере.
Далее следует заметить, что в потоке EMM от +++ идет много мусора, поэтому я написал для себя небольшой фильтр, через который мы пропустим весь поток:
./dvbsnoop -n -1 -b 0x3e8 | ./dvbfilter > emm.pid
вот и все вроде...
Для того, чтобы dvbsnoop работал в бэкграунде, необходимо в конце командной строки добавлять &
например так: ./dvbsnoop -n -1 -b 0x3e8 | ./dvbfilter > emm.pid &
Однако теперь его сложнее убить, для этого нужно набрать в командной строке:
killall dvbsnoop
Для того, чтобы убедится, что dvbsnoop более не висит в памяти следует сделать
ps ax | more
кстати так можно посмотреть какие процессы счас запущены на дриме.
ЗЫ: При переключении на другой транспондер dvbsnoop просто перестает логировать, т.к. PID изменился и если вернутся обратно, то логирование продолжится... В случае с EMM проще, т.к. EMM PID одинаковый на всех транспондерах +++.
Архив с некоторой докой, прогами и скриптами лежит Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
ЗЫЫ: Для тех, кому нах... не нужна вся эта конетель с dvbsnoop, могу сказать только одно:
НЕХРЕН КОРЧИТЬ ИЗ СЕБЯ УМНИКОВ, ПРОДОЛЖАЙТЕ ДАЛЬШЕ КЛЯНЧИТЬ ЛОГИ У ДРУГИХ!
И ВООБЩЕ С КАКОЙ ЦЕЛЬЮ БРАЛИ ДРИМ?