这些是“自解压缩”档案;我发现的第一个档案的顶部有以下代码:
代码语言:javascript复制#!/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..。这表明它基本上是一个(大型) shell脚本,其中有趣的部分是dd ... | tar xzv行;其他行是特定于该特定包的。
dd命令从$0 (当前文件)中读取--跳过正确的字节数;然后将输出发送给tar,后者需要一个压缩的存档。在xsh文件中的那个位置插入了一个压缩的tar文件。
要自己查看/提取它,只需遵循相同的说明-这将随xsh文件的不同而变化-即:
代码语言:javascript复制$ 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在这个“二进制”文件中输出匹配是可以的:
代码语言:javascript复制$ grep -a '^dd if=$0' syno-i686-bootstrap_1.2-7_i686.xsh
dd if=$0 bs=205 skip=1 | tar xzv..。然后,您可以复制/粘贴以查看或提取您喜欢的内容。您还可能对正在执行的其他命令感兴趣;同样地,请使用-查看这些命令
代码语言:javascript复制$ 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