Synology ipkgインストーラは、名前で始まるファイルを起動します.xsh
。これらのファイルの中に何があるのか、どうすればわかりますか?
答え1
これは「自動抽出」アーカイブです。私が見つけた最初のアーカイブの一番上には、次のコードがあります。
#!/bin/sh
echo "Optware Bootstrap for syno-i686."
echo "Extracting archive... please wait"
dd if=$0 bs=205 skip=1 | tar xzv
cd bootstrap && sh bootstrap.sh && cd .. && rm -r bootstrap
exec /bin/sh --login
...これは基本的に(大きな)シェルスクリプトであることを示しています。興味深い部分は、他の行dd ... | tar xzv
がその特定のパッケージに固有のものです。
このdd
コマンドは$0
現在のファイルから読み取り、正しいバイト数をスキップし、その出力をtar
アーカイブを圧縮する必要がある人に送信します。圧縮されたtarファイルはxshファイルの正確な場所に挿入されます。
直接表示したり解凍したりするには、同じ手順に従ってください。各xshファイルは異なります! --今すぐ:
$ dd if=syno-i686-bootstrap_1.2-7_i686.xsh bs=205 skip=1 > bootstrap.tgz
$ gunzip bootstrap.tgz ## for example
$ tar tf bootstrap.tar ## for example
bootstrap/
bootstrap/bootstrap.sh
bootstrap/ipkg-opt.ipk
bootstrap/ipkg.sh
...
アーカイブ抽出のより一般的な規則として、一致がこの「バイナリ」ファイルに出力されることを示す次のdd
署名を見つけることができます。grep
$ grep -a '^dd if=$0' syno-i686-bootstrap_1.2-7_i686.xsh
dd if=$0 bs=205 skip=1 | tar xzv
...必要に応じてコピー/貼り付けしてコンテンツを表示または抽出できます。また、他のどのコマンドが実行されているかに興味があるかもしれません。この例では、再度--specを使用して同様に見てください。
$ dd if=syno-i686-bootstrap_1.2-7_i686.xsh bs=205 count=1
#!/bin/sh
echo "Optware Bootstrap for syno-i686."
echo "Extracting archive... please wait"
dd if=$0 bs=205 skip=1 | tar xzv
cd bootstrap && sh bootstrap.sh && cd .. && rm -r bootstrap
exec /bin/sh --login
1+0 records in
1+0 records out
205 bytes (205 B) copied, 4.7985e-05 s, 4.3 MB/s