91精产品自偷自偷综合官网版下载-91精产品自偷自偷综合下-91精品-91精品91久久久-91精品成人-91精品成人www

網站建設資訊

NEWS

網站建設資訊

修復損壞的gz或tar.gz壓縮文件之方法篇

GZIP結構圖:
修復損壞的gz或tar.gz壓縮文件之方法篇
修復一個損壞的gzip文件的關鍵環節在于找到下一個正常壓縮包的起始點。根據結構圖中的信息可知,每個壓縮包的開始結構中有是否到達尾部標志、使用的哈夫曼樹類型、以及3個哈夫曼樹的樹元素個數等。如果某個gzip文件中間有一個壞扇區,要找到壞扇區后的一個正常起點,僅需按位右移,一直移位到可以正常解壓的某個位,就可能找到了正確的壓縮包起始。而根據gzip文件的壓縮作業窗口為32KB大小推算,這個遍歷不會超過64KB即可找到。在內存中快速循環可以很快找到,但需要有明確的判斷錯誤的方法。
首先可以明確的是結尾標志,應該為0(我們是從損壞的點向后查)。而哈夫曼樹類型也大致應該是動態哈夫曼(0x02),cl1的元素個數應該取值為257到286之間(包含邊界),cl2的元素個數應小于等于30,ccl的元素個數取值可為1-15(包含邊界)。
其實,還可以參考的東西有,解開的哈夫曼樹是否異常,或者通過規律性原則找到最后一個取值為256的值,但這些算法應該是較為麻煩的,有上面的算法連續校驗幾個壓縮塊就足夠了。
具體方法是對gzip的源碼做修改,進行遍歷。因時間關系,未做成通用工程,僅快速修改了部分代碼。大致的修改點為:
一、找到損壞點:
在unzip.c中,
error("invalid compressed data--format violated");
這一行前,獲取當前解碼字節位置即可。
?
二、遍歷找到損壞點:
1、inflate.c文件中,改
if (nl > 286 || nd > 30)
#endif
return 1;
為:
if (nl > 286 || nd > 30||nl <257 || nd <1)
#endif
return 1;
2、inflate.c文件中,在int inflate_block(e)函數中
在如下代碼前
bb = b;
bk = k;
加入代碼:
if ((t != 2) || (e != 0))
return 2;
3、inflate.c文件中,在int inflate_block(e)函數尾部
把if (t == 0) 與if (t == 1)的情況都直接返回錯誤值2
4、inflate.c文件中,函數int inflate()中,改
if ((r = inflate_block(&e)) != 0)?
return r;
end
為:
unsigned t; /
block type /
register ulg b; /
bit buffer /
register unsigned k; /
number of bits in bit buffer /
while (inptr <= insize)
{
unsigned int tptr = inptr;?
unsigned int tbk = bk;?
unsigned long tbb = bb;?
unsigned int twp = wp;?
long long tstart =
(long long*)(inbuf + tptr);
if ((r = inflate_block(&e)) != 0)
{
inptr = tptr;
bb = tbb;
bk = tbk;
wp = twp;
b = bb;
k = bk;
NEEDBITS(1)
DUMPBITS(1)
}
else
{
printf("get by www.datahf.net!"); //也可輸出tstart,bb,bk 值
}
}
此4步完成后,試著調試這個錯誤的.gz文件,當然,也可以在代碼中解釋完頭部結構后加一個seek,直接seek到損壞位置。
通常情況下,輸出printf(“get by www.datahf.net!”)這行代碼時,已經找到了正確的起始位

應縣ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為成都創新互聯的ssl證書銷售渠道,可以享受市場價格4-6折優惠!如果有意向歡迎電話聯系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!


當前名稱:修復損壞的gz或tar.gz壓縮文件之方法篇
URL網址:http://www.yuzhuanjia.cn/article/jjejei.html
主站蜘蛛池模板: 潮喷大喷 | 午夜国产成人在线 | 91视频免费网址 | av免费无码一区二区 | 午夜福利视频网 | 日韩av视屏 | 91精品高跟丝袜在线 | 91精品国偷自产在线电影 | 丰满人妻一区二区三区视频 | 午夜韩国理论片在线观看 | 99久久国产精品无码 | 波多野吉衣在线观看 | 国产成a人片在线观看 | 国产av精品一区二区三区视频 | 午夜影院高清不卡 | a级国产乱理伦片 | 91香蕉成人污污污在线观看 | 96在线看片免费视频国产 | 成人午夜影院免费观看 | 91久久精品一区二区三 | 91免费视| 午夜福利激情av | 国产AV一区二区三区天堂综合网 | av在线有码人 | 97人妻碰碰免费 | 午夜免费福利网站 | 97视频在线观看视频 | 99久久婷婷国产自综合青草 | 二区三区高清人妻 | 国产v片在线观看精品亚洲 国产v日本v欧美v一二三四区 | 午夜少妇男人h黑人亚洲加勒比无码一区二区 | 海角国精产品免费 | 日韩av有码在线播放二区 | 91网红福利精品区一区二 | www成人| 91麻豆国产自产激情在线看 | 动漫精品一区二区三区在线 | 东京热久久精品视频 | 午夜影院无码 | 91亚色视频在线观看 | av福利无码中文字幕 |