
我已經用 PGP 加密了一個文件,但出於“安全原因”,我認為最好損壞標頭並添加一些額外的字節,這樣即使有人找到它,也無法確定它是一個 PGP 文件作為解密檢查會失敗。
問題是現在我不記得我添加了哪些額外位元組。有什麼方法可以「強制」解密或清理檔案/刪除多餘的位元組?
更新:
我使用 Jens 提供的腳本刪除字節,直到收到輸入密碼的提示。不幸的是,我記得的密碼似乎不起作用。另外,如果我在第一個提示後繼續刪除字節,我仍然會不時收到密碼提示,所以我想知道該方法是否真的有效。請參閱下面的日誌
./a.bh
Trying bytes: 1
gpg: no valid OpenPGP data found.
gpg: processing message failed: eof
Trying bytes: 2
gpg: no valid OpenPGP data found.
gpg: processing message failed: eof
Trying bytes: 3
gpg: no valid OpenPGP data found.
gpg: processing message failed: eof
Trying bytes: 4
gpg: [don't know]: indeterminate length for invalid packet type 4
Trying bytes: 5
gpg: no valid OpenPGP data found.
gpg: processing message failed: eof
Trying bytes: 6
gpg: packet(6) with unknown version 125
Trying bytes: 7
........................
Trying bytes: 21
gpg: no valid OpenPGP data found.
gpg: processing message failed: eof
Trying bytes: 22
gpg: [don't know]: indeterminate length for invalid packet type 6
...........................
Trying bytes: 24
:literal data packet:
mode ? (4), created 2823998230, name="U\x07\x82Swo\xe6\xd9\x82\xd9[C\x16\xba\xeb\xa50r\xcd#\x03\xbd>\xec*l>\xbd\xb2\xcb\x0b\x01\xa6g0\xfeQU\xa6\xc0\x87\xdbk9\xf9o\x88\x8dr\xec\xfe\xeb\xb38\x93W\xeb\xcb\xd3\xc4\x80\xf1\xda\x9b(\x8d\xa1\xbb\xf6\xf6\x9a\xd0:v\x81\xe5rF\xe09N\xda\xf3\x90\xcd\xf0.\xb0\xabf<\x96\xf2\x8d\xbd\x8b\x95\x99\x89:q[)\x0c\xf5X\xbd2\x083\xc1\x97\xb7\xee\x84S\xf2\xcfi\xf1\xa2\x93\x15\xe9kI\xaa\x9d*;\x06\x0e\x9c\x04\x13\x87\x88u\xe7]U]\xbc\xb2\x92\x91\x02;9p\x95\x081\xe9v\xa5\xc3\x7e+#Z\xb9\xb8Ka\x18\x96\x82K\xaf6\xb0f\xb8\x8d0\x17\xe2D\xc3&\xe5\xd9\x94\xad\x05,L\xb7\xcc\xfb\x7c",
raw data: 35666 bytes
gpg: invalid marker packet
Trying bytes: 25
gpg: unknown S2K 85
gpg: invalid symkey encrypted packet
gpg: [don't know]: invalid packet (ctb=3e)
Trying bytes: 26
gpg: no valid OpenPGP data found.
gpg: processing message failed: eof
Trying bytes: 27
..................
Trying bytes: 43
gpg: no valid OpenPGP data found.
gpg: processing message failed: eof
Trying bytes: 44
--- on this line I get the password for the prompt and I simply press enter
:encrypted data packet:
length: 12402
gpg: assuming IDEA encrypted data
gpg: packet(3) with unknown version 94
gpg: WARNING: message was not integrity protected
gpg: [don't know]: invalid packet (ctb=22)
Trying bytes: 45
gpg: no valid OpenPGP data found.
gpg: processing message failed: eof
Trying bytes: 46
.........................
Trying bytes: 58
:literal data packet:
mode ? (1), created 2797635547, name="g0\xfeQU\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
raw data: 0 bytes
gpg: [don't know]: invalid packet (ctb=6b)
..........
//I get the password prompt again on this line
Trying bytes: 61
:encrypted data packet:
length: 1731264081
gpg: assuming IDEA encrypted data
Enter passphrase:
:encrypted data packet:
length: 1731264081
gpg: assuming IDEA encrypted data
gpg: encrypted_mdc packet with unknown version 235
gpg: WARNING: message was not integrity protected
:trust packet: flag=75 sigcache=00
gpg: [don't know]: invalid packet (ctb=21)
.....................
Trying bytes: 66
gpg: no valid OpenPGP data found.
gpg: processing message failed: eof
//here I get the password prompt again
Trying bytes: 67
:encrypted data packet:
length: 3230129003
gpg: assuming IDEA encrypted data
gpg: encrypted_mdc packet with unknown version 180
gpg: WARNING: message was not integrity protected
gpg: packet(2) with unknown version 59
我應該提到該檔案(實際上是目錄)是使用 PGP 加密的(現在由 Symantec 擁有)
答案1
由於您只添加了一些垃圾前綴,請嘗試再次刪除它。使用 bash,您可以輕鬆嘗試所有可能的位元組數:
for i in {1..10}; do echo "Trying bytes: ${i}"; tail -c "+${i}" garbled.pgp | gpg --list-packets; done
這將嘗試列出文件的內容,每次嘗試都會多剪切一個位元組。一旦它切斷了正確數量的字節,它就會要求輸入密碼,否則就繼續切斷一個位元組。適當調整要嘗試的最大位元組數(此處:10)。較大的數字不會造成損害,因為一旦使用ctrl+找到正確的位元組數,您就可以中斷c。
一旦找到要截斷的正確位元組數,請運行(對於 42 位元組)
tail -c +42 garbled.pgp > fixed.pgp
現在,按照fixed.pgp
通常的方式解密。