BS再編でトバッチリ、バイナリとにらめっこ(4)
$ cmp -l usb-px4.ko usb-px4.ko.20180522 | gawk '{printf "%08X %02X %02X\n", $1-1, strtonum(0$2), strtonum(0$3)}' 000484D0 60 00 000484D1 0B B4 000484D2 B7 B4 000484E0 F2 70 000484E1 40 44 000484E8 60 00 000484E9 0B B4 000484EA B7 B4 000484F8 F2 70 000484F9 40 44 00049430 07 03 00049434 01 00 00049438 07 03 0004943C 02 00 $ md5sum usb-px4.ko 205ea5d0a9100c1193cbd845bde8125f usb-px4.ko
BS再編でトバッチリ、バイナリとにらめっこ(3)
$ cmp -l usb-px4.ko usb-px4.ko.20180508 | gawk '{printf "%08X %02X %02X\n", $1-1, strtonum(0$2), strtonum(0$3)}' 00048500 88 00 00048501 75 B4 00048502 B6 B4 00048510 D2 71 00048518 50 00 00048519 88 B4 0004851A B3 B4 00048528 32 72 00049440 06 03 00049444 02 01 00049448 01 03 $ md5sum usb-px4.ko b12c9eedc8de63c89eb7fc487b31902d usb-px4.ko
BS再編でトバッチリ、バイナリとにらめっこ(2)
どうやらPLEX配布のドライバーにバージョン違いがあるらしい。気持ち悪いので調べてみた。ダウンロードしてみたところ、コンパイル済みのtty_Virtual.koとusb-px4.koがzipで固めてあるだけだった。以前はrecpt1も同梱だった気がする。さっそくハッシュをとってみる。
$ md5sum usb-px4.ko e481c5ad4f0e085c23f19d968d461655 usb-px4.ko
違いますねえ。ファイルサイズも違う。なにやってんだろ。
$ ls -l usb-px4.ko -rw-rw-r-- 1 foo foo 7838824 Dec 22 14:03 usb-px4.ko $ ls -l ../Linux_Driver/Linux_Driver/usb-px4.ko -rw-rw-r-- 1 foo foo 7387804 Sep 14 2017 ~/somewhere/usb-px4.ko
.dataセクションも違います。オフセットもアライメントもサイズも。
[20] .data PROGBITS 0000000000000000 00049940 0000000000015d40 0000000000000000 WA 0 0 32
しかし、場所が変わるだけで要領は同じ。これだと掲示板の情報と一致する。そもそも、手元のバイナリを覗いて様子が違うから自力で解決したのに。バージョン違いとは...
$ cmp -l usb-px4.ko usb-px4_20180510.ko | gawk '{printf "%08X %02X %02X\n", $1-1, strtonum(0$2), strtonum(0$3)}' 00049C88 50 78 00049C89 88 F2 00049C8A B3 B2 00049C98 31 12 00049E68 60 50 00049E69 0B 88 00049E6A B7 B3 00049E78 F2 31 0004ABF8 01 00 0004ABFC 01 02 0004ACA0 07 01
改造後のハッシュ。
$ md5sum usb-px4_20180510.ko 397cdc7a9f3ddaa5cec9f3baad382297 usb-px4_20180510.ko
ん、待てよ。ワシのんCentOS 6.9やん。関係ないわ。テストなんかせんでよかった。
BS再編でトバッチリ、バイナリとにらめっこ
4/16のBSジャパンのトランスポンダ移動は無視してたんだが、今回5/8のBSプレミアムは放ってはおけない。トラポン移動は今後も続くらしいが、ばっちり分かったので心配はないぞっと。
PLEXで配布してあるCentOS用のモジュール(usb-px4.ko)を改造する。
[root@dtvserver ~]# md5sum Linux_Driver/Linux_Driver/usb-px4.ko 135caf02941164099d96b1e2bbbeb79a Linux_Driver/Linux_Driver/usb-px4.ko
[root@dtvserver ~]# readelf -S Linux_Driver/Linux_Driver/usb-px4.ko There are 47 section headers, starting at offset 0x440e68: Section Headers: [Nr] Name Type Address Offset Size EntSize Flags Link Info Align [ 0] NULL 0000000000000000 00000000 0000000000000000 0000000000000000 0 0 0 ...snip... [23] .data PROGBITS 0000000000000000 00048140 0000000000015f20 0000000000000000 WA 0 0 64 ...snip... Key to Flags: W (write), A (alloc), X (execute), M (merge), S (strings) I (info), L (link order), G (group), x (unknown) O (extra OS processing required) o (OS specific), p (processor specific)
objdumpでダンプリストを出力してにらめっこ。
[root@dtvserver ~]# objdump -sj .data Linux_Driver/Linux_Driver/usb-px4.ko
肝心のデータは.dataセクションのオフセット0x300からと0x12C0からにある。アライメントは8バイト、リトルエンディアン。BS朝日から順に、トラポン(周波数0.1GHz単位)、0xc486(固定?)、TSIDと続いている。都合、1ch.あたり24バイトとなる。.dataセクションはオフセット0x48140なので、例えば、BSプレミアムの周波数を書き換えたいなら、usb-px4.koの先頭から0x48668を書き換えれば良い。
0x00000300 78f2b200 00000000 c4860000 00000000 x............... 11727480 34500 BS-1 (11.727480 GHz) 0x00000310 10400000 00000000 78f2b200 00000000 .@......x....... 16400 11727480 TS.16400: CH.151 BS ASAHI HV 0x00000320 c4860000 00000000 11400000 00000000 .........@...... 34500 16401 TS.16401: CH.755 BS ASAHI DATA 0x00000330 5088b300 00000000 c4860000 00000000 P............... 11765840(d) = 34500 BS-3 (11.765840 GHz) 0x00000340 30400000 00000000 5088b300 00000000 0@......P....... 16432 11765840 TS.16432: CH.191, 791 WOWOW HV 0x48488 -> 78f2b200 0x00000350 c4860000 00000000 31400000 00000000 ........1@...... 34500 16433 TS.16433: CH.171, 777 BS Japan HV 0x48498 -> 1240 0x00000360 281eb400 00000000 c4860000 00000000 (............... 11804200 34500 BS-5 (11.804200 GHz) 0x00000370 50440000 00000000 281eb400 00000000 PD......(....... 17488 11804200 CH.192 WOWOW Live HV 0x00000380 c4860000 00000000 51440000 00000000 ........QD...... 34500 17489 CH.193 WOWOW Cinema HV 0x00000390 00b4b400 00000000 c4860000 00000000 ................ 11842560 34500 BS-7 (11.842560 GHz) 0x000003a0 70440000 00000000 00b4b400 00000000 pD.............. 17520 11842560 CH.201 Star2 HV 0x000003b0 c4860000 00000000 70440000 00000000 ........pD...... 34500 17520 CH.202 Star3 HV 0x000003c0 00b4b400 00000000 c4860000 00000000 ................ 11842560 34500 0x000003d0 71460000 00000000 00b4b400 00000000 qF.............. 18033 11842560 CH.236 Animax HV 0x000003e0 c4860000 00000000 72460000 00000000 ........rF...... 34500 18034 CH.256 Disney 0x000003f0 d849b500 00000000 c4860000 00000000 .I.............. 11880920 34500 BS-9 (11.880920 GHz) 0x00000400 90400000 00000000 d849b500 00000000 .@.......I...... 16528 11880920 CH.211 Eleven HV 0x00000410 c4860000 00000000 91400000 00000000 .........@...... 34500 16529 CH.200 Star1 HV 0x00000420 d849b500 00000000 c4860000 00000000 .I.............. 11880920 34500 0x00000430 92400000 00000000 b0dfb500 00000000 .@.............. 16530 11919280 CH.222 TwellV HV, BS-11 (11.919280 GHz) 0x00000440 c4860000 00000000 b0460000 00000000 .........F...... 34500 18096 CH.238 FOX HV 0x00000450 b0dfb500 00000000 c4860000 00000000 ................ 11919280 34500 0x00000460 b1460000 00000000 b0dfb500 00000000 .F.............. 18097 11919280 CH.241 SkyPerfect! HV 0x00000470 c4860000 00000000 b2460000 00000000 .........F...... 34500 18098 CH.231 HosoDaigaku1 HV 0x00000480 b0dfb500 00000000 c4860000 00000000 ................ 11919280 34500 0x00000490 b2460000 00000000 b0dfb500 00000000 .F.............. 18098 11919280 CH.232 HosoDaigaku2 HV 0x000004a0 c4860000 00000000 b2460000 00000000 .........F...... 34500 18098 CH.233 HosoDaigaku3 HV 0x000004b0 b0dfb500 00000000 c4860000 00000000 ................ 11919280 34500 0x000004c0 b2460000 00000000 8875b600 00000000 .F.......u...... 18098 11957640 CH.531 HosoDaigaku Radio, BS-13 (11.957640 GHz) 0x000004d0 c4860000 00000000 d0400000 00000000 .........@...... 34500 16592 CH.141 NTV HV 0x000004e0 8875b600 00000000 c4860000 00000000 .u.............. 0x000004f0 d1400000 00000000 600bb700 00000000 .@......`....... 11996000 CH.181 Fuji HV, BS-15 (11.996000 GHz) 0x00000500 c4860000 00000000 f1400000 00000000 .........@...... 16625 CH.101 NHKBS1 HV 0x00000510 600bb700 00000000 c4860000 00000000 `............... 0x00000520 f1400000 00000000 600bb700 00000000 .@......`....... 16625 1199600 0x48668 -> 5088b300 0x00000530 c4860000 00000000 f2400000 00000000 .........@...... 16626 CH.103 NHK BSPremium HV 0x48678 -> 3140 0x00000540 600bb700 00000000 c4860000 00000000 `............... 0x00000550 f2400000 00000000 38a1b700 00000000 .@......8....... 16626 12034360 BS-17 (12.034360 GHz) 0x00000560 c4860000 00000000 10430000 00000000 .........C...... 17168 CH.291 NHK General (Tokyo) 0x00000570 38a1b700 00000000 c4860000 00000000 8............... 0x00000580 10430000 00000000 38a1b700 00000000 .C......8....... 17168 CH.292 NHK Education (Tokyo) ...snip
0x12c0からはチャンネル情報。1ch.あたり8バイト。
0x000012c0 00000000 00000000 00000000 01000000 ................ 0x000012d0 01000000 00000000 01000000 01000000 ................ 0x49418 -> 00 02 BSJ 0x000012e0 02000000 00000000 02000000 01000000 ................ 0x000012f0 03000000 00000000 03000000 00000000 ................ 0x00001300 03000000 01000000 03000000 02000000 ................ 0x00001310 04000000 00000000 04000000 01000000 ................ 0x00001320 04000000 02000000 05000000 00000000 ................ 0x00001330 05000000 01000000 05000000 02000000 ................ 0x00001340 05000000 02000000 05000000 02000000 ................ 0x00001350 05000000 02000000 06000000 00000000 ................ 0x00001360 06000000 01000000 07000000 00000000 ................ 0x00001370 07000000 00000000 07000000 01000000 ................ 0x494b8 -> 01 01 BSP 0x00001380 07000000 01000000 08000000 02000000 ................ 0x00001390 08000000 02000000 08000000 01000000 ................ 0x000013a0 08000000 01000000 08000000 01000000 ................
今回の改造でBSジャパン、BSプレミアムともにオーケー。改造後のハッシュ。
[root@dtvserver ~]# md5sum /usr/lib64/usb-px4.ko 72f3ddfb9652b502192530c935cbeb38 /usr/lib64/usb-px4.ko
参考にしたサイト
nekopanda神
撮りためた動画を圧縮すべえ、と。やっぱffmpegは最新版でなければなどと意味も分からないのにmakeして、んでスクリプト拵えて、ほい運用だ。で、暫くは問題なかった。VAAPIでハードウェアエンコ快適だったんだわ、まじで。
しかし、ぼつぼつとエンコに失敗する素材が増えてきた。BS朝日の土井善治が最初だったと思う。カメラがパンするとインターレースに関連してると思われるアーティファクトが嵐のように出現。とても見れる状態ではない。その後NHKBSプレミアムの新日本風土記も同様の症状が出るようになった。
TSのまま保存して再生しても同様のアーティファクトが現れるので、エンコーダーの問題ではなくてデコーダーの問題なのかなあと、5ch覗いてたらマンマおんなじやつめっけた。
[FFmpeg-devel] mpeg2dec: fix decoding field pictures - Patchwork
そらな、「こんなバグ、どないして見つけよってん?」ってなるわな。要するに、フィールドピクチャ(なんのことかあまり理解できてない)使ってエンコードした素材が世の中に出回ってなくて露見しなかったんだと。まあ、探しても資料ないもんね。理解を助けてくれそうなのは下のpdfくらいか。
こんっなとっころにじゃがっいもっがっ
m2tsパケットの懐石には失敗した。神は死んだのか。ほんっとに暗号化されてないのかなあ、と。こういうマルチメディア情報家電のOSは幸いLinuxで、そのほとんどがGPLだ。使ったら使ったよとどこぞに書いてあるはずなんだ。あったあった、これだわ。
https://panasonic.net/cns/oss/diga/JPRCP16D.html
cryptfsの姿は見えないし、他に怪しい御仁もござらぬ。それにe2fsの姿があるし。おおかたディスクの暗号化まではやってない模様だ。
それならば、とブロックデバイス毎testdiskやっちゃいましたよ。
dir_partition inode=2 P MS Data 10801152 11517951 716800 ext3 blocksize=4096 Large file Sparse superblock Recover, 367 MB / 350 MiB Directory / 2 drwxr-xr-x 0 0 4096 21-Jan-2018 11:07 . 2 drwxr-xr-x 0 0 4096 21-Jan-2018 11:07 .. 11 drwx------ 0 0 16384 21-Jan-2018 11:07 lost+found 29889 drwxrwxrwx 0 0 4096 29-Jan-2018 11:44 mik dir_partition inode=29889 P MS Data 10801152 11517951 716800 ext3 blocksize=4096 Large file Sparse superblock Recover, 367 MB / 350 MiB Directory /mik 29889 drwxrwxrwx 0 0 4096 29-Jan-2018 11:44 . 2 drwxr-xr-x 0 0 4096 21-Jan-2018 11:07 .. 29890 -rw-r--r-- 0 0 155648 29-Jan-2018 01:08 mik.db 29891 -rwxrwxrwx 0 0 26214400 29-Jan-2018 01:08 mik.db-journal 29892 -rw-r--r-- 0 0 434176 29-Jan-2018 01:08 mik.db-indexer X 29893 -rwxrwxrwx 0 0 0 29-Jan-2018 11:44 startup X 29894 -rw-r--r-- 0 0 0 29-Jan-2018 01:08 mik.db-indexer-journal
データベースファイルのようですな。何百本もある動画ファイルを管理しようってんだから何かしらのインデックスが必要なことぐらいこちとら百も承知。
$ sqlite3 mik.db SQLite version 3.8.2 2013-12-06 14:53:30 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .tables t_group_info t_program_info t_group_member_info t_program_name_info t_program_description_info sqlite> select * from t_program_info; 0|285212672|285212673|103|4|16626|81126000|2016-12-06 15:30:01|1|0|65535|103|BD|10|8|8|1|2|1|1|0|0 1|285212672|285212674|103|4|16626|81163500|2016-12-07 15:00:01|1|0|65535|103|BD|10|8|8|1|2|1|2|0|0 2|285212672|285212675|103|4|16626|81163500|2017-02-11 22:30:01|1|0|65535|103|BD|10|255|255|1|255|255|3|0|0 3|285212672|285212676|103|4|16626|81213000|2017-02-21 19:00:00|1|0|65535|103|BD|10|255|255|1|255|255|4|0|0 4|285212672|285212677|103|4|16626|81213000|2017-02-22 19:00:00|1|0|65535|103|BD|10|255|255|1|255|255|5|0|0 5|285212672|285212678|103|4|16626|81163500|2017-02-28 19:00:01|1|0|65535|103|BD|10|255|255|1|255|255|6|0|0 6|285212672|285212679|103|4|16626|160897500|2017-03-04 22:00:01|1|0|65535|103|BD|10|255|255|1|255|255|7|0|0 7|285212672|285212680|103|4|16626|81163500|2017-06-07 06:00:01|1|0|65535|103|BD|10|8|8|1|2|1|8|0|0 8|285212672|285212681|103|4|16626|162195000|2017-06-09 22:00:00|1|0|65535|103|BD|10|255|255|1|255|255|9|0|0 9|285212672|285212682|103|4|16626|40672500|2017-06-11 12:45:01|1|0|65535|103|BD|10|8|8|1|2|1|10|0|0 sqlite> select * from t_program_name_info; 0|岩合光昭の世界ネコ歩き「ハワイ楽園のニャン」 1|岩合光昭の世界ネコ歩き「ハワイ島の大自然」 2|岩合光昭の世界ネコ歩き「紅茶大好き~スリランカ~」 3|岩合光昭の世界ネコ歩き「コ-ヒ-と港と音楽と~ブラジル~」 4|岩合光昭の世界ネコ歩き「風車と木靴と中庭の光~オランダアムステルダム~」 5|岩合光昭の世界ネコ歩き「マンハッタンのニャン~ニュ-ヨ-ク~」 6|岩合光昭の世界ネコ歩き「京都の四季プロロ-グ」 7|岩合光昭の世界ネコ歩き選「スコットランド庭園のニャン」 8|岩合光昭の世界ネコ歩き選「イングランド」 9|岩合光昭の世界ネコ歩きMINI「鳴く」「ネコとことわざ」 sqlite>
うーん、ヒントなんだろうか。番組情報にしか見えねえけどなあ。
こんっなとっころにぎゅうにっくがっ
じゃないけど、リビングに置いてあったはずのUSBハードディスクがデスクの脇にあるぞ。どれどれ覗いてみるか。
$ sudo dd if=/dev/sde of=dump skip=0 bs=16M count=1
するとなにやら先頭に書いてある。「Panasonic DIGA RTSC」だと。おお、なんだ、レコーダー用の外付け君かいな。迷子になったんだね。もう少し覗いてみるね。
ブロックの先頭5GB程は先の文言以外空白。で、0x162D28000 byteからに興味深いデータがあった。HEXエディタで見てもひと目でわかる、PNGファイルがそのまま転がっている様子。試しにforemostに喰わせると45枚のPNG(224x126)が復元できた。どうやら動画のサムネイルのようだ。
熱くなってきました。ディスクは暗号化されていない様子。つまり、forensicな手段を使えばAVCHDなファイルをサルベージ出来るかもっつうことだ。もっと先を覗いてみると、0x1637C0000 byteにm2tsパケットらしきものを発見。でも少し変だ。188 byteでも192 byteでもない。パケットの区切りが分からないのだ。うーんお手上げ。
D5 E4 32 0B タイムスタンプ 47 同期キャラクター「0x47」 40 00 左から3bitは順にtransport_priority_bit, payload_unit_start_indicator, transport_error_indicator 残りの13bitがPID (packet identifier)=0なので、このパケットはPAT (program association table) 14 左から2bitはtransport_scramble_control, 次の2bitがadaptation_field_control, 残り4bitがcontinuing_counter ここまでがヘッダー 00 区切り文字"0x00" 00 テーブル識別 B0 11 左から4bitを除いた0x011がセクター長、この場合は17byte 40 F2 C9 00 91 14 7E 8F 7A 0x0f7a 46 3C 03 10 0x0310 07 CE F6 91 0x1691 F9 C7 25 B5 E8 C5 AB D2 32 07 97 EF CC 3B 73 C5 71 45 1A 4C 93 30 9F 45 73 8A 3F B8 07 7C 29 A2 B7 D7 1F BC DF C4 72 D4 A7 4D FE 91 17 2A 0D FC 98 82 FB 4E 22 A0 11 ED 83 F9 7E FA 1B 0E EF 8F 71 56 3B 82 AE 19 21 25 BA 0E BE DE 9F 7C B1 74 29 71 2D 77 DD 8D E4 50 35 A5 55 64 5E E8 63 B9 86 E4 E8 EF BF 18 00 E6 53 3E 92 59 F4 97 A9 9F A4 51 92 25 BB 0E F0 CC 10 D4 3F 52 4F 45 9D 2A 08 E9 C9 85 60 45 99 A7 1B 08 B1 28 9F 3A 0E DE 64 AC 38 84 DF 08 FA D9 99 09 FC A2 AF 8A FC EB 11 B1 56 0C 25 D1 A0 24 9E C3 23 6A 3C 5D 26 F5 17 DF 42 D7 02 0E 31 1E C6 C0 0C 8B 30 C8 65 D1 3D 89 BC 87 32 92 46 F6 A8 0D C9 2A A5 37 4A 00 A4 C0 09 C6 EF B3 26 FB 10 84 62 D2 8F 8E 40 97 25 9B 85 AB AF 0B A1 B5 93 5D 06 70 34 10 E7 10 1D D9 4D 26 57 78 DC 2B C8 E1 6D A0 F1 91 1F BF 5C CA BD 61 64 C8 EA 54 14 02 86 82 D6 98 07 67 95 9D 18 3E A9 2E FE 08 D1 FC E4 07 05 2D 0E 37 9C 2D F0 68 94 65 DA B4 6C 19 4E 27 2C F7 BA 09 27 0D 57 05 FE DF 8A B3 39 CD 26 7B DE CB 17 52 A5 26 38 04 15 A9 A5 A5 DD C0 FF 7D 82 C5 1B 8A 3F 86 09 61 99 0B F7 03 CC 73 E3 3D EF 60 9B 50 C0 74 BA 91 E8 FE 52 26 FC 14 D7 2E C2 7F 0F EC AD AD F7 23 B8 05 8E AD B6 A7 C7 61 38 2A C3 A5 9E E4 59 19 B5 0B 0C C3 7C B4 A4 4F B8 28 D7 47 EE AF 59 92 2A 21 A0 68 A7 9B 5F 76 B7 99 6B 6E 76 B4 E8 9F F2 54 33 25 0A 15 39 0E 82 CF 42 8C E8 E5 68 EF 52 93 48 C1 BF E2 E4 2B 79 82 16 C1 28 21 62 43 11 B0 54 02 7A D2 45 3C 5A 87 BC 08 84 2C BE 3C A4 1B 46 28 B6 8E 28 D7 B1 D8 AA 3B D1 F3 CD