HDL-GS petit hack
忠告
この作業は、自己所有の機械に対し、自己責任で行ってください。最悪の場合、起動不能となり、単なるHDDに成り下がります。改造に該当しますので、メーカの保障は一切受けられません。他人の機械に無断で適用すると犯罪になります。かかる作業による損害は、作業者に起因します。当方は一切関知しませんので悪しからず。
偽装アップデータ for HDL-GS
「'ひとはそれをトロイの木馬と呼ぶ'」
この作業にはunixマシンが必要です。私はアップデータを公開するほど心やさしくありません。「この程度の作業を行うスキルの無い方は止めておきなさい」と忠告しておきます。
1.純正アップデータを入手する。
HDL-GSシリーズ ファームウェア 2007/12/18 1.01
2.tar xvzf でアップデータ本体を解凍
3.tar xvzf で変更ディレクトリを解凍
4./usr/local/public に sudo.cgi を追加
これがsudo.cgiという木馬
#!/usr/bin/perl print "content-type: text/plain\n\n"; $_ = $ENV{QUERY_STRING}; s?%20? ?g; print `sudo $_`; exit;
5.tar cvzf で変更ディレクトリを圧縮
6.for_HDL-GS_seriseを修正
1.01 -> 1.01.01
7.tar cvzf でアップデータ本体を圧縮
8.ブラウザでログインします
ssh接続に備え、rootパスワードを設定しておきましょう。
9.ブラウザでファームウエア・アップデート〜再起動
10.以降、ブラウザよりsudo.cgiでsudoが実行できる
http://landisk-XXXXXX/sudo.cgi?ls%20/
これで、やりたい放題だが、ワン・ライナでは不便。
11.sshdを起動する
http://landisk-XXXXXX/sudo.cgi?/usr/sbin/sshd
12.ssh端末からプレーンsshでログイン
13./ がroでmountされている
$ sudo mount -o remount,rw /
再起動すると元の木阿弥、ro。
14.これで本当にやりたい放題。
HDL-GS の telnet
14 # TELNET(for debug) 15 # busybox telnetd -l /bin/sh
と、あるので、15行目のコメントアウトをはずし再起動すれば動きだす。
もちろんワンタイムで手打ちしてやってもよい。こんな感じ。
LANDISK-XXXXXX:/# /bin/busybox telnetd -l /bin/shcgiでやる場合は
http://landisk-XXXXXX/sudo.cgi?/bin/busybox%20telnetd%20-l%20/bin/sh
認証なしでルート・ログインできてしまう。恐ろしい。確かにfor debugだ。
dpkg や apt や aptitude が使いたい
/mnt/hda5/landisk |-- apt/ =====================> /var/lib/apt | `-- lists/ | |-- lock | `-- partial/ |-- apt-cache/ ===============> /var/cache/apt | `-- archives/ | `-- partial/ |-- aptitude/ ================> /var/lib/aptitude |-- debconf-cache/ ===========> /var/cache/debconf `-- dpkg/ ====================> /var/lib/dpkg |-- available |-- info/ |-- status `-- updates/
mkdir /mnt/hda5/landisk mkdir /mnt/hda5/landisk/apt mkdir /mnt/hda5/landisk/apt/lists touch /mnt/hda5/landisk/apt/lists/lock mkdir /mnt/hda5/landisk/apt/lists/partial mkdir /mnt/hda5/landisk/apt-cache mkdir /mnt/hda5/landisk/apt-cache/archives mkdir /mnt/hda5/landisk/apt-cache/archives/partial mkdir /mnt/hda5/landisk/aptitude mkdir /mnt/hda5/landisk/debconf-cache mkdir /mnt/hda5/landisk/dpkg touch /mnt/hda5/landisk/dpkg/available mkdir /mnt/hda5/landisk/dpkg/info touch /mnt/hda5/landisk/dpkg/status mkdir /mnt/hda5/landisk/dpkg/updates ln -s /mnt/hda5/landisk/dpkg /var/lib/dpkg ln -s /mnt/hda5/landisk/apt /var/lib/apt ln -s /mnt/hda5/landisk/aptitude /var/lib/aptitude ln -s /mnt/hda5/landisk/apt-cache /var/cache/apt ln -s /mnt/hda5/landisk/debconf-cache /var/cache/debconfこの時点で
# dpkg -l
で、エラーの出ない事を確認。
/etc/init.d/rc.local に以下を追加。
/usr/sbin/sshd ln -s /mnt/hda5/landisk/dpkg /var/lib/dpkg ln -s /mnt/hda5/landisk/apt /var/lib/apt ln -s /mnt/hda5/landisk/aptitude /var/lib/aptitude ln -s /mnt/hda5/landisk/apt-cache /var/cache/apt ln -s /mnt/hda5/landisk/debconf-cache /var/cache/debconf下記を wgetして
ftp://ftp2.jp.debian.org/debian/pool/main/d/db1-compat/libdb1-compat_2.1.3-9_arm.deb ftp://ftp2.jp.debian.org/debian/pool/main/g/gcc-4.1/libgcc1_4.1.1-21_arm.deb ftp://ftp2.jp.debian.org/debian/pool/main/g/gcc-3.3/libstdc++5_3.3.6-15_arm.deb ftp://ftp2.jp.debian.org/debian/pool/main/g/gcc-3.3/gcc-3.3-base_3.3.6-15_arm.deb ftp://ftp2.jp.debian.org/debian/pool/main/g/gcc-4.1/libstdc++6_4.1.1-21_arm.deb ftp://ftp2.jp.debian.org/debian/pool/main/g/gcc-4.1/gcc-4.1-base_4.1.1-21_arm.deb ftp://ftp2.jp.debian.org/debian/pool/main/n/ncurses/libncurses5_5.5-5_arm.deb ftp://ftp2.jp.debian.org/debian/pool/main/d/dpkg/dselect_1.13.25_arm.deb ftp://ftp2.jp.debian.org/debian/pool/main/d/dpkg/dpkg_1.13.25_arm.deb ftp://ftp2.jp.debian.org/debian/pool/main/g/glibc/libc6_2.3.6.ds1-13etch5_arm.deb ftp://ftp2.jp.debian.org/debian/pool/main/t/tzdata/tzdata_2007j-1etch1_all.deb
# dpkg -i --force-depends libdb1-compat_2.1.3-9_arm.deb : : :
ってな感じで、エラーを出しつつ、インストールしてゆく。そのうち、apt-get も aptitude もエラー無しで通るようになる。
gcc3.3 がらみは不要かもしれません。 すんません、この手順どおりやればOKというのは確立していません。
先人たちのバージョンはすでに過去のものだし、これらのバージョンも変動してゆくでしょう。
とにかく aptitude が動き出せばこっちのもの。
めでたく aptitude がうごきだしたら
LANDISK-XXXXXX:/~# aptitude update 取得:1 http://ftp.jp.debian.org etch Release.gpg [378B] 発見 http://ftp.jp.debian.org etch Release 取得:2 http://security.debian.org etch/updates Release.gpg [189B] 取得:3 http://security.debian.org etch/updates Release [37.6kB] 無視 http://ftp.jp.debian.org etch/main Packages/DiffIndex 無視 http://ftp.jp.debian.org etch/main Sources/DiffIndex 発見 http://ftp.jp.debian.org etch/main Packages 発見 http://ftp.jp.debian.org etch/main Sources 無視 http://security.debian.org etch/updates/main Packages/DiffIndex 無視 http://security.debian.org etch/updates/main Sources/DiffIndex 取得:4 http://security.debian.org etch/updates/main Packages [304kB] 取得:5 http://security.debian.org etch/updates/main Sources [48.3kB] 390kB を 5s 秒でダウンロードしました (76.8kB/s) パッケージリストを読み込んでいます... 完了 LANDISK-XXXXXX:/~# aptitude upgrade パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています... 完了 拡張状態情報を読み込んでいます パッケージの状態を初期化しています... 完了 タグのデータベースを構築しています... 完了 インストール・削除・更新されるパッケージがありません。 更新: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。 0B のアーカイブを取得する必要があります。展開後に 0B のディスク領域が新たに消費されます。 LANDISK-XXXXXX:/~#
快適快適。
rsync を動かしたい
aptitude が動いていれば楽勝。
# aptitude install rsync
rsync で現状を /mnt/hda6 とか、他のマシンにバックアップしましょう。
USB I/F 外付けHDDを付ける
IDE500G が転がっていたので<30>で接続してみた。
# dmesg
sda1に付いた様だ。
# fdisk /dev/sda1
# mkfs -t ext3 /dev/sda1
# mkdir -p /media/usb-hdd # mount /dev/sda1 /media/usb-hdd
これで cron/rsync で、夜中に/mnt/hda6 のバックアップができるぞ。
コンソールを動かしたい。(ハード改造が必要)
固定IPにしようと思ったら、ネットワーク上から消えてしまった。
セグメントから外れたか?最後の手段。コンソールをつないでみる。
LEDのある正面から見て、右側が蓋。丸印の10箇所で嵌合している。マイナスドライバなどであおる。うまくやれば、指だけでもOKなはず。
アルミ板が両面テープで蓋、及び×印のHDD板金と貼りついている。嵌合部をはずして、ゆっくり剥がすと、きれいにはずれるでしょう。
私は先にアルミ板を無理やり剥がして曲げてしまいました。
ボー・レート:115200 データ :8 パリティ :none ストップ :1 フロー制御 :none
で通信できる様です。
理由は不明だが、/sbin/ifup だの /sbin/ifconfig だのネットワークがらみのバイナリが消滅している。消去した覚えはない。無理無理アップデートの祟りか?
rsync で /mnt/hda6 に退避しておいたバイナリを元に戻す。
ヘタこいた。手持ちのコネクタを付けたら背が高くて蓋が閉まらなくなった。電線直半田付けすべきだったorz
GMP (GNU Multi-Precision)ライブラリを入手、コンパイルする
the GNU Multiple Precision Arithmetic Library
$ wget ftp://ftp.gnu.org/gnu/gmp/gmp-4.2.2.tar.gz $ tar zxvf gmp-4.2.2.tar.gz $ cd gmp-4.2.2 $ ./configure $ make $ sudo make install
円周率100万桁を計算させる
GNU/Linux上で円周率の計算をおこなうの「すずきひろのぶ」氏のソースを使用させていただきました。 結果:
$ time ./pi > pi.txt real 5m57.685s user 5m38.960s sys 0m11.680s
んーさすがに遅い。
2008/05/06現在のdpkg -l
LANDISK-XXXXXX:/~# dpkg -l 要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)維持 | 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール |/ エラー=(空欄)無/(H)維持/(R)要再インストール/X=両方(状態,エラーの大文字=異常) ||/ 名前 バージョン 説明 +++-================-================-================================================ ii apt 0.6.46.4-0.1 Advanced front-end for dpkg ii aptitude 0.4.4-4 terminal-based apt frontend ii aptitude-doc-en 0.4.4-4 English manual for aptitude, a terminal-based ap ii base-passwd 3.5.11 Debian base system master password and group fil ii binutils 2.17-3 The GNU assembler, linker and binary utilities ii coreutils 5.97-5.3 The GNU core utilities ii cpp 4.1.1-15 The GNU C preprocessor (cpp) ii cpp-4.1 4.1.1-21 The GNU C preprocessor ii debconf 1.5.11etch1 Debian configuration management system ii debconf-i18n 1.5.11etch1 full internationalization support for debconf ii debian-archive-k 2007.07.31~etch1 GnuPG archive keys of the Debian archive ii dpkg 1.13.25 package maintenance system for Debian ii dselect 1.13.25 user tool to manage Debian packages ii gcc 4.1.1-15 The GNU C compiler ii gcc-3.3-base 3.3.6-15 The GNU Compiler Collection (base package) ii gcc-4.1 4.1.1-21 The GNU C compiler ii gcc-4.1-base 4.1.1-21 The GNU Compiler Collection (base package) ii gnupg 1.4.6-2 GNU privacy guard - a free PGP replacement ii gpgv 1.4.6-2 GNU privacy guard - signature verification tool ii ifupdown 0.6.8 high level tools to configure network interfaces ii iputils-ping 20020927-6 Tools to test the reachability of network hosts ii libacl1 2.2.41-1 Access control list shared library ii libattr1 2.4.32-1 Extended attribute shared library ii libbz2-1.0 1.0.3-6 high-quality block-sorting file compressor libra ii libc6 2.3.6.ds1-13etch GNU C Library: Shared libraries ii libc6-dev 2.3.6.ds1-13etch GNU C Library: Development Libraries and Header ii libclass-accesso 0.30-1 Automated accessor generator ii libdb1-compat 2.1.3-9 The Berkeley database routines [glibc 2.0/2.1 co ii libdb4.2 4.2.52+dfsg-2 Berkeley v4.2 Database Libraries [runtime] ii libdb4.4 4.4.20-8 Berkeley v4.4 Database Libraries [runtime] ii libgcc1 4.1.1-21 GCC support library ii libgcrypt11 1.2.3-2 LGPL Crypto library - runtime library ii libgdbm3 1.8.3-3 GNU dbm database routines (runtime version) ii libgnutls13 1.4.4-3 the GNU TLS library - runtime library ii libgpg-error0 1.4-1 library for common error values and messages in ii libgpmg1 1.19.6-25 General Purpose Mouse - shared library ii libhtml-parser-p 3.55-1 A collection of modules that parse HTML text doc ii libhtml-tagset-p 3.10-2 Data tables pertaining to HTML ii libhtml-template 2.8-1 HTML::Template : A module for using HTML Templat ii libio-string-per 1.08-2 Emulate IO::File interface for in-core strings ii libldap2 2.1.30-13.3 OpenLDAP libraries ii liblocale-gettex 1.05-1 Using libc functions for internationalization in ii liblzo1 1.08-3 data compression library (old version) ii libmudflap0 4.1.1-21 GCC mudflap shared support libraries ii libmudflap0-dev 4.1.1-21 GCC mudflap support libraries (development files ii libncurses5 5.5-5 Shared libraries for terminal handling ii libncursesw5 5.5-5 Shared libraries for terminal handling (wide cha ii libopencdk8 0.5.9-2 Open Crypto Development Kit (OpenCDK) (runtime) ii libparse-debianc 1.0-1 parse Debian changelogs and output them in other ii libpopt0 1.10-3 lib for parsing cmdline parameters ii libreadline5 5.2-2 GNU readline and history libraries, run-time lib ii libsasl2-2 2.1.22.dfsg1-8 Authentication abstraction library ii libsasl2-modules 2.1.22.dfsg1-8 Pluggable Authentication Modules for SASL ii libselinux1 1.32-3 SELinux shared libraries ii libsepol1 1.14-2 Security Enhanced Linux policy library for chang ii libsigc++-2.0-0c 2.0.17-2 type-safe Signal Framework for C++ - runtime ii libssl0.9.8 0.9.8c-4etch1 SSL shared libraries ii libssp0 4.1.1-21 GCC stack smashing protection library ii libstdc++5 3.3.6-15 The GNU Standard C++ Library v3 ii libstdc++6 4.1.1-21 The GNU Standard C++ Library v3 ii libtasn1-3 0.3.6-2 Manage ASN.1 structures (runtime) ii libtasn1-3-bin 0.3.6-2 Manage ASN.1 structures (binaries) ii libtext-charwidt 0.04-4 get display widths of characters on the terminal ii libtext-iconv-pe 1.4-3 converts between character sets in Perl ii libtext-wrapi18n 0.06-5 internationalized substitute of Text::Wrap ii libtimedate-perl 1.1600-5 Time and date functions for Perl ii liburi-perl 1.35-2 Manipulates and accesses URI strings ii libusb-0.1-4 0.1.12-5 userspace USB programming library ii libwrap0 7.6.dbs-13 Wietse Venema's TCP wrappers library ii libxml-libxml-co 0.13-5 Perl module for common routines & constants for ii libxml-libxml-pe 1.59-2 Perl module for using the GNOME libxml2 library ii libxml-namespace 1.09-3 Perl module for supporting simple generic namesp ii libxml-sax-perl 0.12-5 Perl module for using and building Perl SAX2 XML ii libxml-simple-pe 2.14-5 Perl module for reading and writing XML ii libxml2 2.6.27.dfsg-2 GNOME XML library ii links 0.99+1.00pre12-1 Character mode WWW browser ii linux-kernel-hea 2.6.18-7 Linux Kernel Headers for development ii lsb-base 3.1-23.2etch1 Linux Standard Base 3.1 init script functionalit ii m4 1.4.8-2 a macro processing language ii make 3.81-2 The GNU version of the "make" utility. ii makedev 2.3.1-83 creates device files in /dev ii ncurses-bin 5.5-5 Terminal-related programs and man pages ii net-tools 1.60-17 The NET-3 networking toolkit ii netbase 4.29 Basic TCP/IP networking system ii openbsd-inetd 0.20050402-6 The OpenBSD Internet Superserver ii perl 5.8.8-7etch3 Larry Wall's Practical Extraction and Report Lan ii perl-base 5.8.8-7etch3 The Pathologically Eclectic Rubbish Lister ii perl-modules 5.8.8-7etch3 Core Perl modules ii readline-common 5.2-2 GNU readline and history libraries, common files ii rsync 2.6.9-2etch2 fast remote file copy program (like rcp) ii sed 4.1.5-1 The GNU sed stream editor ii sgml-base 1.26 SGML infrastructure and SGML catalog file suppor ii tcpd 7.6.dbs-13 Wietse Venema's TCP wrapper utilities ii tree 1.5.0-2 displays directory tree, in color ii tzdata 2007j-1etch1 Time Zone and Daylight Saving Time Data ii update-inetd 4.27-0.5 inetd.conf updater ii xml-core 0.09-0.1 XML infrastructure and XML catalog file support ii zlib1g 1.2.3-13 compression library - runtime LANDISK-XXXXXX:/~#
links と tree は、あくまで私の趣味。これが何かが分からない人は各自調べる様に。 ってか、横に書いてあるじゃないか。読み給へ。
参考にさせていただいた先人の皆様のサイト 感謝!
IO DATA LANDISK HDL-Gシリーズを apt-get可能に|http://www.kameda-lab.org/_local/imagelab.tsukuba.ac.jp/computer/IO-data-Landisk/ 亀田能成氏 HDL-G Hack kazu_o氏
Keyword(s):[HDL-GS]
References: