3.0°W
12702 V 10000
4:2:0
ID: ITV Sport Darts
FTA
Not FTA anymore.... CW: D5 11 AC 92 BB 13 14 E2
3.0°W
12702 V 10000
4:2:0
ID: ITV Sport Darts
FTA
Not FTA anymore.... CW: D5 11 AC 92 BB 13 14 E2
Eutelsat 7A @ 7.0° E
11056 V 9875
ID: D529 WIES B4C12 SKY
2. Bundesliga, Relegation
Wiesbaden - Bielefeld
CW: 33 73 FC A2 AA A8 F3 45
I tested this device and sent it back after 4 hours of test.
I bought it because it was advertised with MPEG4:2:2 decoding. This feature works only on low symbol rates. symbol rates higher than 9000 make problems and cause a complete freeze of the device. The whole user interface is very unstable and support at GTMedia forum is very bad. Lots of software bugs and no solution provided. Also bad: the LNB power supply has not enough power to drive my USALS motor properly. Link to Android smartphone is also not working. Keep your hands away from this device.
Eutelsat 7A/7B/7C 7.0E
11093 Vertical 9872
DVB-S2 - 4:2:0 - 8PSK
ID: D-383 MCHN 4K12 MAIN
CW: 87 A7 3D 6B 79 AF 60 88
it's 4:2:2 ;)
7°E
11104 V 9875
4:2:2
ID: D-529 FFTM B4M12 BU
CW:27 E5 83 8F 59 4E 2B D2
DFP Pokal Viertelfinale: Eintracht Frankfurt-Union Berlin
or FTA on ZDF (19.2E)
7.0°E
10964 H 14400
4:2:2
ID: D379 DOTM MAIN
CW: E9 2D 4B 61 03 1A A4 C1
Bundesliga : Borussia Dortmund vs RB Leipzig
Also doesn't work for me anymore.
I used this one here ... Biss Feed Autokey Plugin
Internet Connection Error....
I didn't find a newer one yet.
7.0E
11082 V 9875
4:2:2
ID: D380 MAGD 4G12 b (TVN live)
CW: 19 63 4E CA FC 68 93 F7
2. Bundesliga: Magdeburg vs St Pauli
7.0E
11106 V 9876
4:2:2
ID:D 411 Regensburg 2.liga (TelLink)
CW: EB 4C D2 09 17 95 D9 85
2. Bundesliga: Jahn Regensburg vs Hannover 96
7.0E
11093 V 9876
4:2:2
ID: D395_Fuerth_BU
CW:99 FB 65 F9 DE D4 6D 1F
2. Bundesliga: Greuther Fürth vs Fortuna Düsseldorf
Display MoreDisplay MoreDisplay MoreDisplay MoreAny updates on the server ? i'm looking forward to it ,
i have contacted free dvb to give us the access to their API but they didn't respond
Freedvb has the fastest autoroll biss service and that's what sells their boxes (Hellobox).. you will need to give them something in return.. probably help to improve their softwares.
i think forever has the best AU biss service
Well, having the API key would be great and would save a lot of costs for a high performance server.
The next problem I see is that the receiver hardware is not powerful enough to decode MPEG4:2:2 (MPEG4 10Bit Profile), which most of the feeds are using.
Also NVIDIA, INTEL or AMD GPU's can't decode it on hardware. So a possible solution would be to use an existing computer (in private LAN) to transcode MPEG4:2:2 to MPEG4:2:0 on CPU. So stream the biss decoded http stream to computer in LAN, transcode it and send it back to Enigma2 box to watch the feed. it would also be possible to serve it to others via sub second latency media server (ovenmediaengine for example), but therefore we need support for webRTC or LLHLS on the box. Does someone know an Enigma2 programmer?
its been 2 years now that im using this method but only for full hd yuv422 -> yuv420, 4k needs a high-end cpu to transcode the stream in real-time.
the real problem now is biss2
Well, not completely correct. If you have a 4K Stream it is mostly H265 (not H264!) and nearly all GPU's can handle H265 yuv4:2:2 in hardware. Only H264 yuv4:2:2 has this problem. But as you said, nearly all 4k feeds use BISS-2, which is the show blocker. I also use the transcoding method for years, but I didn't find a way yet to automize the restream via STB.
i have just a normal gpu for display i tried to transcode 4k yuv422 streams with cpu but the results were not good,
for me i have developed a small plugin that connect via telnet to my pc and launch the transcoding script
1_0_1_1_A0_0_642DAA_0_0_0_20230216175332.jpg
1_0_1_1_A0_0_642DAA_0_0_0_20230216175346.jpg
1_0_1_1_A0_0_642DAA_0_0_0_20230216175405.jpg
This is an awesome plugin. Can you give me the source code? Of course without the login credentials. If you use intel CPU with GPU on chip, you can use the VAAPI and FFMPEG to transcode. It can handle H265 on hardware, even yuv422. some distributed libva's cannot handle it, but if you compile the lib from intels github repository, it's working fine. Transcoding H264 yuv422 to yuv420 takes about 50% of one CPU core on my AMD Ryzen 12 Core.
Display MoreDisplay MoreAny updates on the server ? i'm looking forward to it ,
i have contacted free dvb to give us the access to their API but they didn't respond
Freedvb has the fastest autoroll biss service and that's what sells their boxes (Hellobox).. you will need to give them something in return.. probably help to improve their softwares.
i think forever has the best AU biss service
Well, having the API key would be great and would save a lot of costs for a high performance server.
The next problem I see is that the receiver hardware is not powerful enough to decode MPEG4:2:2 (MPEG4 10Bit Profile), which most of the feeds are using.
Also NVIDIA, INTEL or AMD GPU's can't decode it on hardware. So a possible solution would be to use an existing computer (in private LAN) to transcode MPEG4:2:2 to MPEG4:2:0 on CPU. So stream the biss decoded http stream to computer in LAN, transcode it and send it back to Enigma2 box to watch the feed. it would also be possible to serve it to others via sub second latency media server (ovenmediaengine for example), but therefore we need support for webRTC or LLHLS on the box. Does someone know an Enigma2 programmer?
its been 2 years now that im using this method but only for full hd yuv422 -> yuv420, 4k needs a high-end cpu to transcode the stream in real-time.
the real problem now is biss2
Well, not completely correct. If you have a 4K Stream it is mostly H265 (not H264!) and nearly all GPU's can handle H265 yuv4:2:2 in hardware. Only H264 yuv4:2:2 has this problem. But as you said, nearly all 4k feeds use BISS-2, which is the show blocker. I also use the transcoding method for years, but I didn't find a way yet to automize the restream via STB.
Display MoreDisplay MoreAny updates on the server ? i'm looking forward to it ,
i have contacted free dvb to give us the access to their API but they didn't respond
Freedvb has the fastest autoroll biss service and that's what sells their boxes (Hellobox).. you will need to give them something in return.. probably help to improve their softwares.
i think forever has the best AU biss service
Well, having the API key would be great and would save a lot of costs for a high performance server.
The next problem I see is that the receiver hardware is not powerful enough to decode MPEG4:2:2 (MPEG4 10Bit Profile), which most of the feeds are using.
Also NVIDIA, INTEL or AMD GPU's can't decode it on hardware. So a possible solution would be to use an existing computer (in private LAN) to transcode MPEG4:2:2 to MPEG4:2:0 on CPU. So stream the biss decoded http stream to computer in LAN, transcode it and send it back to Enigma2 box to watch the feed. it would also be possible to serve it to others via sub second latency media server (ovenmediaengine for example), but therefore we need support for webRTC or LLHLS on the box. Does someone know an Enigma2 programmer?
streaming the TS directly from enigma is enough to watch 4:2:2 feeds on PC, I don't think we need anything special here.
The point is that I also like to watch the feed on TV without PC connected to TV via HDMI, so I like to stream it back to STB and let the STB do the jandling with TV. In my case: STB is in a different room than PC, but there is a WIFI connection available.
Any updates on the server ? i'm looking forward to it ,
i have contacted free dvb to give us the access to their API but they didn't respond
Freedvb has the fastest autoroll biss service and that's what sells their boxes (Hellobox).. you will need to give them something in return.. probably help to improve their softwares.
i think forever has the best AU biss service
Well, having the API key would be great and would save a lot of costs for a high performance server.
The next problem I see is that the receiver hardware is not powerful enough to decode MPEG4:2:2 (MPEG4 10Bit Profile), which most of the feeds are using.
Also NVIDIA, INTEL or AMD GPU's can't decode it on hardware. So a possible solution would be to use an existing computer (in private LAN) to transcode MPEG4:2:2 to MPEG4:2:0 on CPU. So stream the biss decoded http stream to computer in LAN, transcode it and send it back to Enigma2 box to watch the feed. it would also be possible to serve it to others via sub second latency media server (ovenmediaengine for example), but therefore we need support for webRTC or LLHLS on the box. Does someone know an Enigma2 programmer?
We would need about 1.1TB free space for the rainbow tables. But much more important is a powerful GPU.
this is an approach...i guess if the SR is 7199 or 7200 or 7202 wil be considered the same. Regarding the ability to get c8 from raw ts not sure how to do that in python too, need to study the cpp code to understand
Getting c8 from raw ts is very easy. In the pic you see a part of a raw scrambled ts stream. "47h" indicates the start of the TS package. "07 D1" is the PID. The "9" indicates that the package is scrambled (even/odd depends on the bit which is set). "68 B8 18 EB F2 76 EC BE" is the c8 key. Lenght of one package is 188 Bytes.
OK, so I think we can switch to operational issues. First question: how do we analyze the TS easily? Perhaps it's possible to analyze TS inside Oscam directly by using the DVBAPI without recording it first and use an external parser for that. I know nothing about the DVBAPI. Is there a documentation? I'll ask the streamboard guys directly, if it's possible to implement the parsing routine and export C8 directly out of OSCAM. That would help to process it automatically on the BISS Server.
Another aspect is the Softcam.key file. Why write the BISS key into Softcam.key file and restart Oscam?
We could also use a pipeline instead of the Softcam file, which provides the current key dynamically. That requires a patch for the emulator.
Practically you only define the BISS server URL in oscam config and the rest is all done automatically. This solution would not reqiure an enigma image. It could work on every Oscam server, which sees the transport stream.
But as i said before... I don't know if DVBAPI provides a function to read TS.
By the way, the BISS Autokey function of some receivers base on the FreeDVB BISS API. When you have an API key, you can easily obtain the CW via API....
Biss API - v1.0
Overview:
api_uri : https://service.freedvb.com/biss/${API_KEY}+${TS}+${API_SIGNATURE}
example : https://service.freedvb.com/biss/00000000000000004741419a05d687e0c29a2cc3360a82db00ca03ad75cd379bd4fb105a877cb4635ff815db8fe3fc3f3f86dd32d4c02617376b07218c5816d668d1b23d97520fd52359813607a3ada2c872543103376382ad7793d8778e4d04ce133177abd5e1d0053445725e461ee045a5c23b0a0aef9622306f0af3d91c1c0dd581be9de63bc4c089a592ef6d3100045a0244340cba9c0c3d04e1a56baa1260a71b9e51c56e1f70dda5c6297602cdd4051ac95993a5fbfa2bfb85f6e3b42a168ce0964cc7bfb797390719
Description:
API_KEY: 8B
SECRET_KEY: 8B
TS: 188B - 47 XX XX XX ......
API_SIGNATURE: 8B
API_SIGNATURE = MD5(API_KEY+TS+SECRET_KEY)[8:16]
Note: You can apply for api key and secret key for free from FreeDVB, and the privacy of secret key must be guaranteed.
Python sample code:
import hashlib, requests
api_key, secret_key = '0000000000000000', '0000000000000000'
ts = '4741419a05d687e0c29a2cc3360a82db00ca03ad75cd379bd4fb105a877cb4635ff815db8fe3fc3f3f86dd32d4c02617376b07218c5816d668d1b23d97520fd52359813607a3ada2c872543103376382ad7793d8778e4d04ce133177abd5e1d0053445725e461ee045a5c23b0a0aef9622306f0af3d91c1c0dd581be9de63bc4c089a592ef6d3100045a0244340cba9c0c3d04e1a56baa1260a71b9e51c56e1f70dda5c6297602cdd4051ac95993a5fbfa2bfb85f6e3b42a168ce096'
md5 = hashlib.md5()
md5.update(bytes.fromhex(api_key + ts + secret_key))
api_signature = md5.digest()[-8:].hex()
r = requests.get('https://service.freedvb.com/biss/{}'.format(api_key + ts + api_signature))
print(r.text)
Display More
although my understanding of biss implementation and hacks is rather limited, a couple of things to note
ask the server for all known keys for the feed.. "0070:11017:V:7199"
blind scans on different receivers almost always throw up frequency and SR values a bit off from the "real" ones. for instance, the unique hash mentioned above could actually be of the feed on frequency 11015 Mhz with SR 7200. these variations need to be taken into account when the receiver askes server for a key
i think a cleaner implementation would be as suggested by zapf2000 . extract crypt8's using enigma2 plugin and then send it to the server. how compute intensive is getting c8 from raw .ts ? can an average e2 box do it without much fuss?
It takes nearly no CPU power to get C8 out of TS, because the TS package is only parsed and cut to get the 8 Bytes out of the 184 Bytes payload in TS.
I found an old code snippet written in perl, which does the job.
#!/usr/bin/perl
use strict;
use warnings;
my $num_args = $#ARGV + 1;
if ($num_args != 3) {
print "\nUsage: getC8.pl file pid payloadsize\n";
print "Set pid to 'all' for all pids.\n";
print "Set payloadsize to 'all' for all payloadsizes.\n";
print "----------------------------------------------\n";
print "getC8.pl v0.5 02/09/2018\n";
exit;
}
my $file=$ARGV[0];
my $pid=$ARGV[1];
my $payload=$ARGV[2];
my $low=1;
my $high=23;
if ($payload ne "all") {
$payload=oct($payload) if $payload=~ /^0/;
$low=int($payload/8);
$high=int($payload/8);
if ($payload % 8 != 0) {
print"\nError: The payloadsize must be a multiple of 8!\n";
exit;
}
if ($payload > 184) {
print"\nError: The payloadsize may not be greater than 184!\n";
exit;
}
if ($payload < 8) {
print"\nError: The payloadsize may not be smaller than 8!\n";
exit;
}
}
if ($pid ne "all") {
$pid=oct($pid) if $pid=~ /^0/;
if ($pid > 0x1FFF) {
print"\nError: The pid may not be greater than 0x1FFF!\n";
exit;
}
if ($pid < 0x0020) {
print"\nError: The pid may not be smaller than 0x0020!\n";
exit;
}
}
print "getC8.pl v0.5 02/09/2018\n";
print "------------------------\n";
my %even_c8=();
my %odd_c8=();
open (my $FH, '<:raw', $file) or die "Can't open '$file' for read: $!";
while (read $FH, my $packet, 188){
my $header_2=unpack("x1 C",$packet);
my $header_3=unpack("x2 C",$packet);
my $header_4=unpack("x3 C",$packet);
#printf ("0x%02x\n",$header_4);
my $tmp_pid = (($header_2 & 0x1F) << 8) | ($header_3);
my $scrambled = ($header_4 >> 6); #10=even; 11=odd;
my $af = ($header_4 >> 4) & 0x3; #01=no af; 11=af and payload
my $offset=4;
my $tmp_pls=0;
#print "$pid $scrambled $tmp_pid $af\n";
#if (($tmp_pid == $pid) && ($scrambled > 1)){
if (($tmp_pid < 0x1FFF) && ($tmp_pid >0x001F) && ($scrambled > 1)){
if ($af == 0x1) {
$tmp_pls=184;
$offset=4;
} elsif ($af == 0x3) {
$tmp_pls=184-unpack("x4 C",$packet)-1;
$offset=unpack("x4 C",$packet)+1+4;
}
$tmp_pls=int($tmp_pls/8)*8;
#printf "$offset\n";
if ($offset>180) {$offset=4};
my $c8=unpack("x$offset H16",$packet);
#printf "$c8\n";
if ($scrambled==2) { #even
if (!(defined $even_c8{$tmp_pls}{$tmp_pid}{$c8})) {
$even_c8{$tmp_pls}{$tmp_pid}{$c8}=0;
}
$even_c8{$tmp_pls}{$tmp_pid}{$c8}++;
} elsif ($scrambled ==3) { #odd
if (!(defined $odd_c8{$tmp_pls}{$tmp_pid}{$c8})) {
$odd_c8{$tmp_pls}{$tmp_pid}{$c8}=0;
}
$odd_c8{$tmp_pls}{$tmp_pid}{$c8}++;
}
}
}
close $FH or die "Cannot close $file: $!";
for (my $i=$low; $i<=$high; $i++){
my $tmp_pls=$i*8;
printf "Using payload size: %s\n",$tmp_pls;
foreach my $tmp_pid (sort keys %{$even_c8{$tmp_pls}}){
my $counter=0;
foreach my $c8 (sort {$even_c8{$tmp_pls}{$tmp_pid}{$b} <=> $even_c8{$tmp_pls}{$tmp_pid}{$a}} keys %{$even_c8{$tmp_pls}{$tmp_pid}}){
if (($even_c8{$tmp_pls}{$tmp_pid}{$c8}>1) && ($counter<11)){
if (($pid eq "all") || ($pid == $tmp_pid)){
printf "PID %0Xh %0Xh-Crypt8: %s [E] Count:%s\n",$tmp_pid,$tmp_pls,$c8,$even_c8{$tmp_pls}{$tmp_pid}{$c8};
$counter++;
}
}
}
if ($counter>0) {print "\n";}
}
foreach my $tmp_pid (sort keys %{$odd_c8{$tmp_pls}}){
my $counter=0;
foreach my $c8 (sort {$odd_c8{$tmp_pls}{$tmp_pid}{$b} <=> $odd_c8{$tmp_pls}{$tmp_pid}{$a}} keys %{$odd_c8{$tmp_pls}{$tmp_pid}}){
if (($odd_c8{$tmp_pls}{$tmp_pid}{$c8}>1) && ($counter<11)){
if (($pid eq "all") || ($pid == $tmp_pid)){
printf "PID %0Xh %0Xh-Crypt8: %s [O] Count:%s\n",$tmp_pid,$tmp_pls,$c8,$odd_c8{$tmp_pls}{$tmp_pid}{$c8};
$counter++;
}
}
}
if ($counter>0) {print "\n";}
}
}
Display More
I found some python code for calculating C8, but I lost the link to it. I'll search for it again. For the Rainbow Table Tool there is also c++ code available, both from Colibri himself, but also the Posix Version for Unix based systems.