我正在研究交錯兩種類型的原始字節塊的文件格式。交錯bzip2和非bzip2數據
一個塊將包含一個bzip2壓縮數據塊,其中包含一個包含通常bzip2的頭部(BZh9
)。
第二個塊將包含其他感興趣的數據,其中包含一個包含不同幻數(TBD)的標題。
這兩個幻數將用於不同地尋找,識別和處理兩個數據塊類型。
我的問題是:是否有一個神奇的數字,我可以選擇第二個塊類型,這是不可能(或更好,不可能)在bzip2壓縮的字節塊內找到?
換句話說,在壓縮時,是否存在bzip2排除的特定字節,在某些統計閾值內,我可以將其用於同一文件中另一種數據類型的標頭?
一種選擇是,當我找到第二個塊類型的頭字節時,我只會嘗試在第二個塊類型中處理數據,如果處理失敗,那麼我假設我意外地在壓縮的bzip2塊。但是,我想知道是否有可能在bzip2塊中找不到字節,或者不可能找到字節。
它終止於一個字節還是位邊界? bzip2流之間的終端位或字節是否一致?也許我可以從我的第二個數據集的標題字節向後讀取? –
Adler,你確定bzip2塊是字節對齊的嗎?在我看來,它們不是:http://www.forensicswiki.org/wiki/Bzip2「壓縮塊是位對齊的,不會出現填充。」; http://stackoverflow.com/questions/18262703/bzip2-block-header-1aysy。 bzip2recover使用位掃描來搜索塊;不是字節:https://www.ncbi.nlm.nih.gov/IEB/ToolBox/CPP_DOC/lxr/source/src/util/compress/bzip2/bzip2recover.c(main - BLOCK_HEADER_HI,BLOCK_HEADER_LO) – osgx
我的不好。我假定搜索並行解壓縮的塊模式是字節對齊的,但它們不是。我只是搜索了一個bz2文件,並發現了任意位邊界的簽名。 –