* 目次[オンデマンド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
  # 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ページへ戻る   新しいページの作成新しい下位ページの作成そのページを引用して新規作成ページ名の変更ページへのリンク元を表示   サイトのページ一覧サイト内単語検索編集したページの履歴削除したページの履歴   別ウィンドウでマニュアルページへ