[linux-dvb] How to descramble?

Henrik Sjoberg henke at epact.se
Wed Oct 12 14:44:20 CEST 2005


> Andreas U. Trottmann wrote:
>
>>This looks like a success at first, but the stream that I can
>>take from /dev/dvb/adapter0/dvr0 doesn't seem to be playable.
>>
>>
>
> The message from the userland application is wrong, due to bugs. Will
> need to fix that for descrambling to happen.
> This has been subjected to discussion many times.
>
>
> Manu
>

I am currently working on this code. The parsing and handling of the
stream descriptors are getting there, but I have not verified if the
ca_pmt is ok yet. I'll get back when I have.

Regards,
Henrik

ps I tried Andreas PMT data through the parser and came out better than
before:


parse_pmt: PMT Data=[ 02 b0 9a 03 85 d7 00 00 e0 a0 f0 00 02 e0 a0 f0 17
52 01 01 11 01 ff 09 0f 05 00 e2 c3 10 01 00 13 01 20 14 0
3 00 94 0c 06 e0 20 f0 2e 52 01 05 56 0a 64 65 75 09 00 64 65 75 17 77 45
1d 01 18 e7 e8 e9 ea eb ec ed ee ef f3 f4 f5 c7 c8 c9 ca
cb cc cd ce cf d3 d4 d5 04 01 f0 03 e0 50 f0 1a 52 01 02 0a 04 64 65 75 01
09 0f 05 00 e2 c3 10 01 00 13 01 20 14 03 00 94 0c 03 e0
 51 f0 1a 52 01 03 0a 04 65 6e 67 01 09 0f 05 00 e2 c3 10 01 00 13 01 20
14 03 00 94 0c cf f3 24 8f ]

parse_pmt: PMT PID=[1030], length=[157]
parse_pmt_header: Table ID=[2], Section Length=[154], Program
Number=[901], Section Number=[0], PCR PID=[160], Program info length=
[0]
parse_pmt: Program info length=[0]
parse_pmt: Parsing stream 0:
->parse_streams: Elements=[ 02 e0 a0 f0 17 52 01 01 11 01 ff 09 0f 05 00
e2 c3 10 01 00 13 01 20 14 03 00 94 0c]
->parse_streams: Stream=[0], Stream Type=[2], Elementary PID=[160], ES
info length=[23]
->parse_streams: Parsing descriptor 1:
-->parse_descriptor: Descriptor: Tag=[0x52], Length=[1]
-->parse_stream_identifier_descriptor: Parsing Stream Identifier Descriptor
->parse_streams: Parsing descriptor 2:
-->parse_descriptor: Descriptor: Tag=[0x11], Length=[1]
-->parse_std_descriptor: Parsing STD Descriptor
->parse_streams: Parsing descriptor 3:
-->parse_descriptor: Descriptor: Tag=[0x09], Length=[15]
-->parse_ca_descriptor: Parsing CA Descriptor
-->parse_ca_descriptor: CA System=[500], CA PID=[2c3]
-->parse_ca_descriptor: CA Private Data=[ 10 01 00 13 01 20 14 03 00 94 0c ]
parse_pmt: Parsing stream 1:
->parse_streams: Elements=[ 06 e0 20 f0 2e 52 01 05 56 0a 64 65 75 09 00
64 65 75 17 77 45 1d 01 18 e7 e8 e9 ea eb ec ed ee ef f3 f
4 f5 c7 c8 c9 ca cb cc cd ce cf d3 d4 d5 04 01 f0]
->parse_streams: Stream=[1], Stream Type=[6], Elementary PID=[32], ES info
length=[46]
->parse_streams: Parsing descriptor 1:
-->parse_descriptor: Descriptor: Tag=[0x52], Length=[1]
-->parse_stream_identifier_descriptor: Parsing Stream Identifier Descriptor
->parse_streams: Parsing descriptor 2:
-->parse_descriptor: Descriptor: Tag=[0x56], Length=[10]
-->parse_teletext_descriptor: Parsing Teletext Descriptor
->parse_streams: Parsing descriptor 3:
-->parse_descriptor: Descriptor: Tag=[0x45], Length=[29]
-->Skipping unknown descriptor tag [0x45]
parse_pmt: Parsing stream 2:
->parse_streams: Elements=[ 03 e0 50 f0 1a 52 01 02 0a 04 64 65 75 01 09
0f 05 00 e2 c3 10 01 00 13 01 20 14 03 00 94 0c]
->parse_streams: Stream=[2], Stream Type=[3], Elementary PID=[80], ES info
length=[26]
->parse_streams: Parsing descriptor 1:
-->parse_descriptor: Descriptor: Tag=[0x52], Length=[1]
-->parse_stream_identifier_descriptor: Parsing Stream Identifier Descriptor
->parse_streams: Parsing descriptor 2:
-->parse_descriptor: Descriptor: Tag=[0x0a], Length=[4]
-->parse_iso_639_language_descriptor: Parsing ISO 639 Language Descriptor
->parse_streams: Parsing descriptor 3:
-->parse_descriptor: Descriptor: Tag=[0x09], Length=[15]
-->parse_ca_descriptor: Parsing CA Descriptor
-->parse_ca_descriptor: CA System=[500], CA PID=[2c3]
-->parse_ca_descriptor: CA Private Data=[ 10 01 00 13 01 20 14 03 00 94 0c ]
parse_pmt: Parsing stream 3:
->parse_streams: Elements=[ 03 e0 51 f0 1a 52 01 03 0a 04 65 6e 67 01 09
0f 05 00 e2 c3 10 01 00 13 01 20 14 03 00 94 0c]
->parse_streams: Stream=[3], Stream Type=[3], Elementary PID=[81], ES info
length=[26]
->parse_streams: Parsing descriptor 1:
-->parse_descriptor: Descriptor: Tag=[0x52], Length=[1]
-->parse_stream_identifier_descriptor: Parsing Stream Identifier Descriptor
->parse_streams: Parsing descriptor 2:
-->parse_descriptor: Descriptor: Tag=[0x0a], Length=[4]
-->parse_iso_639_language_descriptor: Parsing ISO 639 Language Descriptor
->parse_streams: Parsing descriptor 3:
-->parse_descriptor: Descriptor: Tag=[0x09], Length=[15]
-->parse_ca_descriptor: Parsing CA Descriptor
-->parse_ca_descriptor: CA System=[500], CA PID=[2c3]
-->parse_ca_descriptor: CA Private Data=[ 10 01 00 13 01 20 14 03 00 94 0c ]

copy_en50221_pmt_object: Copying EN50221 Header
copy_en50221_pmt_object: Program Number=[901], Program info length=[0]
copy_en50221_pmt_object: Program level descriptor count=[0]
copy_en50221_stream_object: Stream Type=[2], Elementary PID=[160], ES
length=[23], Number of descriptors=[3]
        copy_en50221_descriptor_object: Tag=[09], Length=[0f], CA system
ID=[500], CA PID=[2c3]
copy_en50221_descriptor_object: Private bytes=[11] [ 10 01 00 13 01 20 14
03 00 94 0c ]
copy_en50221_stream_object: Stream Type=[6], Elementary PID=[32], ES
length=[46], Number of descriptors=[3]
copy_en50221_stream_object: Stream Type=[3], Elementary PID=[80], ES
length=[26], Number of descriptors=[3]
        copy_en50221_descriptor_object: Tag=[09], Length=[0f], CA system
ID=[500], CA PID=[2c3]
copy_en50221_descriptor_object: Private bytes=[11] [ 10 01 00 13 01 20 14
03 00 94 0c ]
copy_en50221_stream_object: Stream Type=[3], Elementary PID=[81], ES
length=[26], Number of descriptors=[3]
        copy_en50221_descriptor_object: Tag=[09], Length=[0f], CA system
ID=[500], CA PID=[2c3]
copy_en50221_descriptor_object: Private bytes=[11] [ 10 01 00 13 01 20 14
03 00 94 0c ]
do_en50221_pmt_object: CA PMT List Management=[03]
set_pmt_command: Setting PMT Command
set_pmt_command: CA descriptor found @ STREAMS Level, Setting CA PMT
command=[01]
set_pmt_command: CA descriptor found @ STREAMS Level, Setting CA PMT
command=[01]
set_pmt_command: CA descriptor found @ STREAMS Level, Setting CA PMT
command=[01]
do_en50221_pmt_object: Object length=[640], Total length=[80]
asn_1_encode: Length=[80]
asn_1_encode: length indicator=[50]
do_en50221_pmt_object: ASN.1 words=[1], Length Array=[  80 ]
en50221_encode_header: CA PMT List Mgmt=[3], Program Number=[901], Program
info length=[0]
write_en50221_pmt_object: EN50221 header encoded
en50221_encode_streams: Stream type=[02], ES PID=[a0], ES Info length=[17]
encode_ca_pmt_command: Encoding SCRAMBLING @ STREAMS Level, Command=[01]
en50221_encode_descriptor: Tag=[09], length=[0f], CA system id=[500], CA
PID=[2c3]
en50221_encode_descriptor: Private Bytes=[11] [ 10 01 00 13 01 20 14 03 00
94 0c ]
en50221_encode_streams: Stream type=[06], ES PID=[20], ES Info length=[2e]
en50221_encode_streams: Stream type=[03], ES PID=[50], ES Info length=[1a]
encode_ca_pmt_command: Encoding SCRAMBLING @ STREAMS Level, Command=[01]
en50221_encode_descriptor: Tag=[09], length=[0f], CA system id=[500], CA
PID=[2c3]
en50221_encode_descriptor: Private Bytes=[11] [ 10 01 00 13 01 20 14 03 00
94 0c ]
en50221_encode_streams: Stream type=[03], ES PID=[51], ES Info length=[1a]
encode_ca_pmt_command: Encoding SCRAMBLING @ STREAMS Level, Command=[01]
en50221_encode_descriptor: Tag=[09], length=[0f], CA system id=[500], CA
PID=[2c3]
en50221_encode_descriptor: Private Bytes=[11] [ 10 01 00 13 01 20 14 03 00
94 0c ]
debug_message: CA MESSAGE=[ 9f 80 32 50 03 03 85 ed 10 00 02 e0 a0 ff ee
01 09 0f 05 00 e2 c3 10 01 00 13 01 20 14 03 00 94 0c 06 e
0 20 f0 00 03 e0 50 ff ee 01 09 0f 05 00 e2 c3 10 01 00 13 01 20 14 03 00
94 0c 03 e0 51 ff ee 01 09 0f 05 00 e2 c3 10 01 00 13 01
20 14 03 00 94 0c  ]

ds





More information about the linux-dvb mailing list