* 目次[オンデマンドTV及びセットトップボックスハック] [#cf2d2e14]

STBハックに関しては,対象型番:Picture Mate PCSTB1(PC-STB1) [[写真:http://buffalo.jp/download/photo/p/pc-stb.html]]及び[[詳細:http://buffalo.jp/products/new/2004/089_1.html]] として行っている。


#contents

* オンデマンドTV の各種サーバ群について [#a839aa79]
** DNS及びホストレコード一覧(2007/1/13版) [#u7f0a142]

*** 基幹系サーバ [#b4e40bd1]
#table_edit2(edit=on,table_mod=close,auth_check_off,td_edit=off){{
|DNS|HOST|用途|h
|dnsv01w-v6.ondemandtv.co.jp|2001:d70:100a:1002::1|DNS|
|time.ondemandtv.co.jp|2001:d70:100a:1002::1|NTP|
|firm.ondemandtv.co.jp|2001:d70:100a:1002::1|ファームウェアの更新|
|svcd.ondemandtv.co.jp|2001:d70:100a:1002::10&br;2001:d70:100a:1002::11&br;2001:d70:100a:1002::13|ビデオの情報ファイル|
| + svcd01w-v6.ondemandtv.co.jp|2001:d70:100a:1002::10|ビデオの情報ファイル|
| + svcd02w-v6.ondemandtv.co.jp|2001:d70:100a:1002::11|ビデオの情報ファイル|
| + svcd03w-v6.ondemandtv.co.jp|2001:d70:100a:1002::13|ビデオの情報ファイル|
| + svcd04w-v6.ondemandtv.co.jp|2001:d70:100a:1002::14|ビデオの情報ファイル|
| + svcd05w-v6.ondemandtv.co.jp|2001:d70:100a:1002::15|ビデオの情報ファイル|
}}



*** 配信系サーバ [#vf5ae099]
#table_edit2(edit=on,table_mod=close,auth_check_off,td_edit=off){{
|DNS|HOST|用途|h
||2001:d70:100a:1001::26||
|vcas.ondemandtv.co.jp|2001:d70:100a:1002::102&br;2001:d70:100a:1002::103&br;2001:d70:100a:1002::104||
|srm.ondemandtv.co.jp|2001:d70:100a:1001::1000&br;2001:d70:100a:1001::1001&br;2001:d70:100a:1001::1002&br;2001:d70:100a:1001::1003|rtsp streaming server(Ondemand RTSP)|
| + srmcm1-v6.ondemandtv.co.jp|2001:d70:100a:1001::1000|rtsp streaming server(Ondemand RTSP)|
| + srmcm2-v6.ondemandtv.co.jp|2001:d70:100a:1001::1001|rtsp streaming server(Ondemand RTSP)|
| + srmcm3-v6.ondemandtv.co.jp|2001:d70:100a:1001::1002|rtsp streaming server(Ondemand RTSP)|
| + srmcm4-v6.ondemandtv.co.jp|2001:d70:100a:1001::1003|rtsp streaming server(Ondemand RTSP)|
|fecg01w-v6.ondemandtv.co.jp|2001:d70:100a:1003::1|TV Stream (Multicast Domain)|
|fecg02w-v6.ondemandtv.co.jp|2001:d70:100a:1003::2|TV Stream (Multicast Domain)|
|fecg03w-v6.ondemandtv.co.jp|2001:d70:100a:1003::3|TV Stream (Multicast Domain)|
|fecg04w-v6.ondemandtv.co.jp|2001:d70:100a:1003::4|TV Stream (Multicast Domain)|
|fecg05w-v6.ondemandtv.co.jp|2001:d70:100a:1003::5|TV Stream (Multicast Domain)|
|fecg06w-v6.ondemandtv.co.jp|2001:d70:100a:1003::6|TV Stream (Multicast Domain)|
||||
}}


* サービス詳細 [#ma523e00]
基本的には、(SSLもごく一部で使用されている)殆どが7778/TCPで情報(XML)のやりとり等が行われている。~
唯一ファームウェアのみが、Digest Authentication を用いており、アクセス制限が施されている。~
それ以外の情報に関してはAuthrationが一切施されていないようだ。~
尚、[[PPV(Pay Per View):http://ja.wikipedia.org/wiki/%E3%83%9A%E3%82%A4%E3%83%BB%E3%83%91%E3%83%BC%E3%83%BB%E3%83%93%E3%83%A5%E3%83%BC]]に関してのみ、SSLで保護されている。



** firm.ondemandtv.co.jp:7778 [#f5b767bc]

Digest認証を行っているため、認証に関してはデコードが出来ないが、接続ユーザ名はbuffaloとなっている。~
Digest認証についての詳細はこちら([[HTTP クライアントを作ってみよう(6) - Digest 認証編 -:http://x68000.q-e-d.net/~68user/net/http-auth-2.html]])を参照していただきたい。

尚、参考に、Basic認証であれば、[[base64でdecode出来る:http://x68000.q-e-d.net/~68user/net/http-auth-1.html]]ためDigest認証を用いているのだろう。デコードについては[[UNIXの部屋:openssl:http://x68000.q-e-d.net/~68user/unix/pickup?openssl]]が詳しい。


 GET /buffalo/initrd.boot HTTP/1.1
 Host: farm.ondemandtv.co.jp:7778
 Pragma: no-cache
 Accept: */*
 X-FTV-USERID: (UserID)
 X-FTV-STBID: (MacAddress)
 X-FTV-IP: (STB IPv6 Address)
 
 GET /buffalo/initrd.boot HTTP/1.1
 
 Authorization: Digest username="buffalo", realm="buffalo", nonce="*******"", 
 uri="/buffalo/initrd.boot", cnonce="MTE2ODYy", nc=00000001, qop="auth", response="*******"",
 algorithm="MD5"
 
 Host: farm.ondemandtv.co.jp:7778
 Pragma: no-cache
 Accept: */*
 X-FTV-USERID: (UserID)
 X-FTV-STBID: (MacAddress)
 X-FTV-IP: (STB IPv6 Address)
 
 
 
 HTTP/1.1 200 OK
 Date: Fri, 12 Jan 2007 19:04:22 GMT
 Server: Apache
 Authentication-Info: rspauth="*******"", cnonce="MTE2ODYy", nc=00000001, qop=auth
 Last-Modified: Fri, 12 Jan 2007 19:00:01 GMT
 ETag: "*********************"
 Accept-Ranges: bytes
 Content-Length: 2262408
 Content-Type: text/plain



*** ブラウザでアクセス [#c50721f9]
#ref(stb-firm01.png)


** svcd01w-v6.ondemandtv.co.jp:7778 [#z193961b]

 GET /ujml/service1/dlgform_change_secretmode_password.ujbc HTTP/1.1
 User-Agent: UIEPlayer-OnDemandTV-DM320-v3600-0
 Host: svcd.ondemandtv.co.jp:7778
 Accept: */*
 
 
 HTTP/1.1 200 OK
 Date: Fri, 12 Jan 2007 19:06:10 GMT
 Server: Oracle-Application-Server-10g/10.1.2.0.0 Oracle-HTTP-Server (Unix) mod_ossl/10.1.2.0.0
 mod_oc4j/3.0 mod_onsint/1.0
 Last-Modified: Tue, 26 Dec 2006 04:07:34 GMT
 ETag: "*****"
 Accept-Ranges: bytes
 Content-Length: 9244
 Connection: close
 Content-Type: text/plain; charset=ISO-8859-1

** svcd.ondemandtv.co.jp:7778(svcd03w-v6.ondemandtv.co.jp:7778) [#g03060b2]

ビデオのコンテンツ情報がXMLで提供されている。~
XMLには、
-検索用キーワード
-年、国
-映画説明
-ディレクター、-アクター
-ジャケット画像URL
- rtspアドレス
- 暗号方式(著作権保護)/verimatrix社のWaltermarking/PKIを利用([[詳細:http://www.homeelectronics.jp/products/mr21754_broadband_iptv.html]])
> トランザクションごとの電子署名によって電子証明書が「成長」する度に特定のシリアルIDを発行させ、その32桁のシリアルIDを電子すかしの方法でトランザクション・ファイルに、しかもランダムに埋め込むという方法

- PPV料金、視聴可能期限、PPV registration URL(code?)
- 放送期間(タイトルの有効期限)

  Name                    Last modified      Size  Description
 --------------------------------------------------------------------------------
 adsl_stream/            13-Jan-2007          -   
 adsl_stream_test/       13-Jan-2007          -   
 download/               13-Jan-2007          -   
 download_test/          13-Jan-2007          -   
 ftth_stream/            13-Jan-2007          -   
 ftth_stream2/           16-Dec-2006          -   
 ftth_stream2_test/      13-Jan-2007          -   
 ftth_stream_hsp/        13-Jan-2007          -   
 ftth_stream_hsp_test/   13-Jan-2007          -   
 ftth_stream_test/       13-Jan-2007          -   
 hd_stream/              16-Dec-2006          -   
 hd_stream_test/         24-Aug-2006          -   
 info/                   13-Jan-2007          -   
 jacket/                 12-Jan-2007          -   
 logo/                   26-Dec-2006          -   


** fecg*-v6.ondemandtv.co.jp [#he5e5503]

チャンネルサービスを扱っているサーバとなる。~
IPv6 Multicastを用い、Multicastに参加すると、映像が流れてくるようになる。~
チャネルはポート番号で識別している~
対応表は、後日作成予定です













* STBハードウェア仕様 [#xb9ac7a5]

- [[ADV7174 NTSC/PALビデオ・エンコーダ、チップ・スケール:http://www.analog.com/jp/prod/0,,765_798_ADV7174,00.html]]
>> insmod adv7174 d_line3

- busybox: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.6.5, dynamically linked (uses shared libs), stripped
- [[Sirial: dm320reg:http://www.yamasita.jp/linktheater/0602/060201.html]]
>> insmod dm320reg board=STB1

-- 恐らくシリアルが使えると思われる。~

** シリアルポート [#nce2c688]

写真のCN700がシリアルポートの要。~
4番ピンはGNDなのは判っているが,2,3 のどちらがTX/RXなのか現時点では不明。~
通常のRS232Cのシリアルではなく,電圧等が違うよう。~
携帯電話の通信ケーブルを持ってこれば可能の様子。
9-KEのケーブルでは繋がるような話を見つけることがでた(?)

see
#ref(PCSTB1-EA-02.jpg,PCSTB1-EA-02,25%)











* STB ファームウェアハック [#jdf68cd4]

STBハックに関しては,対象型番:Picture Mate PCSTB1(PC-STB1) [[写真:http://buffalo.jp/download/photo/p/pc-stb.html]]及び[[詳細:http://buffalo.jp/products/new/2004/089_1.html]] として行っている。


** パケットダンプしたデータの組み立て [#n6748a3e]

パケットダンプした結果を組み立てたところ,以下のような結果になった。~
initrd.boot というファイル名。gzip圧縮。圧縮を展開してmountしてみたところ以下のようになった。

 tcptrace -e hoge.pcap				# データ領域の抽出
 
 offsetがずれていたので以下のようにして修正。
 echo 1 >test.txt
 gzip test.txt
 hd test.txt.gz					# hexで表示
 hd initrd.boot |less				# hexで標示し,gzipの始まり '1f 8b'を探す。
 						# 同様のことをバイナリエディタで行っても良い
 
 dd skip=64 bs=1 if=initrd.boot of=inm.gz		# ずれたoffset(64byte)分をカット
 gzip -d inm.gz  					# gzip圧縮を展開
 mount -o loop inm /mnt				# マウント

** Kernel 及び Platform [#b7b19adc]

 # file bin/busybox
 busybox: ELF 32-bit LSB executable, ARM, version 1 (ARM), 
 for GNU/Linux 2.6.5, dynamically linked (uses shared libs), stripped

** /etc/passwd [#reb3150e]

こんなコトしなくとも,任意の好きなパスワードを直接shadowに書けば問題ないが,クラックしてみる。

 john "/etc/passwd" --wordlist="./dict.txt" 
 guesses: 0  time: 0:00:00:33 100%  c/s: 4018  trying: zymu***
 Loaded 1 password hash (FreeBSD MD5 [32/32])
//  guesses: 0  time: 0:00:00:33 100%  c/s: 4018  trying: zymurgy



** /root/version [#t6f70df7]

 # cat /root/version


** STB独自のファイルたち [#jdae713d]

 /usr/bin# ls -al
 drwxr-xr-x  2 root root  1024 2006-10-11 15:09 .
 drwxr-xr-x  5 root root  1024 2006-06-29 13:46 ..
 -rwxr-xr-x  1 root root  5156 2006-07-13 11:45 dm320_ctrl
 -rwxr-xr-x  1 root root 16808 2006-07-26 15:47 fwupdate
 -rwxr-xr-x  1 root root  9264 2006-10-12 14:29 getstbinfo
 -rwxr-xr-x  1 root root  6136 2006-10-11 14:32 httpget
 -rwxr-xr-x  1 root root   244 2006-07-05 12:48 netcheck
 -rwxr-xr-x  1 root root 10404 2006-10-12 14:26 picture
 -rwxr-xr-x  1 root root   864 2005-05-21 21:39 select_dns

 /usr/sbin# ls -la
 drwxr-xr-x  2 root root  1024 2006-07-05 13:21 .
 drwxr-xr-x  5 root root  1024 2006-06-29 13:46 ..
 -rwxr-xr-x  1 root root  3292 2005-08-25 13:16 dm320_reset
 -rwxr-xr-x  1 root root 60484 2005-03-31 21:43 ntpdate

#ref(ls.txt,ファイル一覧)



*** /usr/bin/select_dns [#t7d9ad03]

 cat /usr/bin/select_dns

この中には、DNSサーバの一覧が記載されいる。

ただし、NTT東西では、IPv6のアドレス空間割当が異なり、NTT東西ではroutingされていない前提で設計・開発されているため、NTT東西では、違うアドレスが割り振られる。そのため、次のように対策をされている。

尚、設定されるDNSサーバは次の通りである。

 DNS_W1=2001:d70:100a:1002::1
 DNS_W2=2001:d70:100a:1002::10
 DNS_E1=2001:c90:83:1002::1
 DNS_E2=2001:c90:83:1002::10

仕組みとしては、スクリプトの中を見ればすぐにわかるが、''' ''/proc/net/if_inet6'' '''の結果を見て、etherのアドレスを取得し、''' ''20010c90'' ''' が含まれていたら、''DNS_E1''、''DNS_E2''、のDNSサーバ使うように自動生成し、含まれていなければ、''DNS_W1''、''DNS_W2'' のDNSサーバを使うようになっている。

更に、pingが正常に通れば、 /etc/resolv.conf にechoを使い、書き込むように仕掛けられている。



** 箱へログインする方法 [#z20ff8d3]

上記の方法で,rootパスワードを書き換え,telnetログイン有効等にして,偽装サーバを立ち上げ,ファームウェアをSTBに流し込めばログイン出来るのではないかと考えられるが,まだ未検証。


** GPL? [#f7c8b13c]
メルコに言えば,GPLに基づく部分の開示があるのかしら!?~
それともオンデマンドTVに?

STB開発はMELCOなのですよ。





* コメント [#pc6ad178]
- 残りは後日追記なのですよ。 -- [[tomocha]] &new{2007-02-04 (日) 15:14:00};

#comment

添付ファイル: filePCSTB1-EA-02.jpg 682件 [詳細] filePCSTB1-EA-01.jpg 395件 [詳細] filels.txt 815件 [詳細] filestb-firm01.png 712件 [詳細]
TOPページへ戻る   新しいページの作成新しい下位ページの作成そのページを引用して新規作成ページ名の変更ページへのリンク元を表示   サイトのページ一覧サイト内単語検索編集したページの履歴削除したページの履歴   別ウィンドウでマニュアルページへ