Hatena::ブログ(Diary)

ぽこにっき

2018-05-22

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

2018-05-10

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やん。関係ないわ。テストなんかせんでよかった。

2018-05-09

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

参考にしたサイト

2018-04-04

nekopanda神

撮りためた動画を圧縮すべえ、と。やっぱffmpegは最新版でなければなどと意味も分からないのにmakeして、んでスクリプト拵えて、ほい運用だ。で、暫くは問題なかった。VAAPIでハードウェアエンコ快適だったんだわ、まじで。

しかし、ぼつぼつとエンコに失敗する素材が増えてきた。BS朝日の土井善治が最初だったと思う。カメラがパンするとインターレースに関連してると思われるアーティファクトが嵐のように出現。とても見れる状態ではない。その後NHKBSプレミアムの新日本風土記も同様の症状が出るようになった。

TSのまま保存して再生しても同様のアーティファクトが現れるので、エンコーダーの問題ではなくてデコーダーの問題なのかなあと、5ch覗いてたらマンマおんなじやつめっけた。

[FFmpeg-devel] mpeg2dec: fix decoding field pictures - Patchwork


そらな、「こんなバグ、どないして見つけよってん?」ってなるわな。要するに、フィールドピクチャ(なんのことかあまり理解できてない)使ってエンコードした素材が世の中に出回ってなくて露見しなかったんだと。まあ、探しても資料ないもんね。理解を助けてくれそうなのは下のpdfくらいか。

no title

2018-02-02

こんっなとっころにじゃがっいもっがっ

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> 

うーん、ヒントなんだろうか。番組情報にしか見えねえけどなあ。