分页: 1 / 2

Linux下打开rar/zip/7z自解压格式文件的技巧

发表于 : 2009-08-06 14:10
careone
Linux下打开rar/zip/7z自解压格式文件的技巧

Linux 下支持多种压缩文件格式,但是Windows 下生成的 rar/zip/7z等自解压格式文件,在 Linux下却没有相应的程序能打开或解压缩。其实我们也可以通过一些简单的处理,把自解压文件变成普通压缩文件,就可以正常打开。

一、原理
rar/zip/7z自解压格式文件,其实就是在普通的压缩文件的文件头,添加了一个自解压模块,自解压模块的文件名一般是Default.SFX, 或者Zip.SFX, 或者7z.sfx。只是zip自解压格式稍微复杂一点,它还修改了普通zip格式压缩文件末尾的5个字节(普通zip格式压缩文件末尾的5个字节内容一般是5个 0x00)。

二、需要用到的linux命令和程序

1 dd 命令(用于跳过自解压文件头,直接把普通压缩文件复制出来);
对于 rar/zip/7z自解压格式文件, 只用这个命令就行了。再在linux用解压缩软件直接打开压缩文件就行了。

2 二进制编辑器 (主要用于编辑 zip自解压格式文件的末尾5个字节)
如 gnome 下的 ghex, bless; KDE 下的 khexedit; 文本模式的 qemacs, hexedit 等。
安装方法:

代码: 全选

sudo apt-get install ghex bless khexedit gemacs hexedit
3 cat 命令 (主要用于合并自解压模块和普通压缩文件,生成一个新文件)

三、技术常识
3.1 WinRAR 3.71 for Windows 的自解压模块的大小:
* Default.SFX (rar自解压模块): 103424字节;
* Zip.SFX (zip自解压模块): 67584字节;

3.2 7-zip 自解压模块的大小:
* 7z.sfx (7z自解压模块): 60928字节;

说明:不同的程序使用的自解压模块,不同的程序版本号,不同的自解压模块版本,上面的大小可能不同。如果无法正常打开处理后的压缩文件,请用二进制编辑器查看自解压格式文件的压缩模块结尾和普通压缩文件的文件头,确定有效的自解压模块大小,再进行处理。

四、操作实例:
4.1 提取 WinRAR 3.71 for Windows 生成的rar自解压文件中的普通压缩文件

代码: 全选

dd if=old.rar.exe of=new.rar bs=103424 skip=1
警告: 使用dd 命令有一定的风险,使用时尽可能以普通用户身份运行,并且 if,of,等号(=)的前后不要有空格。使用错误的参数可能带来不可预知的后果或数据损坏!!!
上面的 old.rar.exe 是旧文件名,
new.rar 是新文件名,
103424 是自解压模块的大小,单位是字节(byte)
skip=1 代表复制时跳过文件前面的自解压模块103424字节*1 =103424

4.2 提取 WinRAR 3.71 for Windows 生成的zip自解压文件中的普通压缩文件

代码: 全选

dd if=old.zip.exe of=new.zip bs=67584 skip=1
这时提取出的 new.zip 是不能正常打开的,还需要用二进制编辑器(如 gnome 下的 ghex, bless; KDE 下的 khexedit; 文本模式的 qemacs, hexedit 等),把文件末尾最后的5个字节改为 5个 0x00, 这才变成地地道道的 zip 普通压缩文件,再用其它解压缩软件打开。

4.3 提取 7-zip 生成的7z自解压文件中的普通压缩文件

代码: 全选

dd if=old.7z.exe of=new.7z bs=60928 skip=1
再用解压缩软件打开得到的新文件 new.7z 即可。

五、自己把普通压缩文件处理成自解压文件
5.1 先制作一个普通的 rar/7z 压缩文件,再运行下面的命令即可。
(注意:不推荐生成 zip 自解压文件,因为要对文件末尾进行处理,操作较复杂)

代码: 全选

cat rar.sfx old.rar > new.rar.exe
(生成rar自解压文件)
------------------

代码: 全选

cat 7z.sfx old.7z > new.7z.exe
(生成7z自解压文件)
上面的 rar.sfx 和 7z.sfx 分别是自解压模块。如果没有,也可按下面的命令进行提取:

代码: 全选

dd if=old.rar.exe of=rar.sfx bs=103424 count=1

代码: 全选

dd if=old.zip.exe of=zip.sfx bs=67584 count=1

代码: 全选

dd if=old.7z.exe of=7z.sfx bs=60928 count=1
重复说明:不同的程序使用的自解压模块,不同的程序版本号,不同的自解压模块版本,上面的大小可能不同。如果无法正常打开处理后的压缩文件,请用二进制编辑器查看自解压格式文件的压缩模块结尾和普通压缩文件的文件头,确定有效的自解压模块大小,再进行处理。

下面是一些压缩文件格式的文件头和文件尾内容,可供有一定经验的用户参考。
11winrar3.71.rar.head-end.png
11winrar3.71.rar.head-end.png (7.82 KiB) 查看 12841 次
12winrar3.71.rar-exe.head.png
12winrar3.71.rar-exe.head.png (10.22 KiB) 查看 12841 次
21winrar3.71.zip.head-end.png
21winrar3.71.zip.head-end.png (8.48 KiB) 查看 12841 次
22winrar3.71.zip-exe.head.png
22winrar3.71.zip-exe.head.png (10.23 KiB) 查看 12841 次
23winrar3.71.zip-exe.end.png
23winrar3.71.zip-exe.end.png (10.36 KiB) 查看 12841 次
31-7z.head.png
32-7z.end.png
33-7z-exe.head.png
把上面的图片打了包:
sfx-pic.tar.gz
(82.32 KiB) 已下载 126 次

Re: Linux下打开rar/zip/7z自解压格式文件的技巧

发表于 : 2010-03-05 18:42
黄美姬
消灭零回复

Re: Linux下打开rar/zip/7z自解压格式文件的技巧

发表于 : 2010-03-05 18:49
delectate
wormhole

Re: Linux下打开rar/zip/7z自解压格式文件的技巧

发表于 : 2010-03-05 19:00
黄美姬
终于找到这个超时空帖贴了: :em04
07年的问题, 09年才回贴。 :em06
http://diybbs.zol.com.cn/3/12_27326.html

Re: Linux下打开rar/zip/7z自解压格式文件的技巧

发表于 : 2010-03-05 19:15
wangdu2002
这个坟挖得不错。。。某也乐于鞭尸了。 :em11

Re: Linux下打开rar/zip/7z自解压格式文件的技巧

发表于 : 2010-03-05 19:55
photor
wangdu2002 写了:这个坟挖得不错。。。某也乐于鞭尸了。 :em11
:em06 :em06 :em06

Re: Linux下打开rar/zip/7z自解压格式文件的技巧

发表于 : 2010-03-24 15:01
rediscover
来Mark一下。。。

Re: Linux下打开rar/zip/7z自解压格式文件的技巧

发表于 : 2010-03-25 13:02
yqh1203
干嘛不直接用wine呢?不是很方便吗?

Re: Linux下打开rar/zip/7z自解压格式文件的技巧

发表于 : 2010-03-30 14:08
wanderer11
Windows 下生成的 rar/zip/7z等自解压格式文件,在 Linux下却没有相应的程序能打开或解压缩


没搞懂啥子意思?

ubntu:
rar:
sudo apt-get install rar

zip:
自带

7z:

sudo apt-get install p7zip


安装候你试试,能不能压缩、解压这些格式???????

Re: Linux下打开rar/zip/7z自解压格式文件的技巧

发表于 : 2010-05-22 10:51
xliu.cn
感觉还是很复杂,办公使用最重要的是简单,易用,其他的都是零。

Re: Linux下打开rar/zip/7z自解压格式文件的技巧

发表于 : 2010-05-22 16:44
jioyo源
:em03 遇到这样的飞鸽叫别人帮我解下,或者直接删除……

Re: Linux下打开rar/zip/7z自解压格式文件的技巧

发表于 : 2010-05-25 10:37
playeryang
:em06

Re: Linux下打开rar/zip/7z自解压格式文件的技巧

发表于 : 2010-12-20 18:40
mark1991
wanderer11 写了:Windows 下生成的 rar/zip/7z等自解压格式文件,在 Linux下却没有相应的程序能打开或解压缩


没搞懂啥子意思?

ubntu:
rar:
sudo apt-get install rar

zip:
自带

7z:

sudo apt-get install p7zip


安装候你试试,能不能压缩、解压这些格式???????
自解压格式 是不是exe的?

Re: Linux下打开rar/zip/7z自解压格式文件的技巧

发表于 : 2010-12-20 22:43
thorne
我觉得从来没有解压缩的麻烦或者困惑
KDE下ark
gonme下的file-roler
都很不错 直接右键解压就是了
需要这么些个么?
TULK:

Re: Linux下打开rar/zip/7z自解压格式文件的技巧

发表于 : 2011-03-18 16:30
shouyushi
careone, delectate,