1

わかりましたので、セキュリティとスーパーユーザーで拒否された後、3度目の疑いが生じます:(

だから私はここ でドキュメントを読みましたこの回答も役に立ちました。

暗号化には主に 3 つのモードがあるようです。モック ドキュメントを作成し、パスワードで保護しました。いくつかのスヌーピングの後、私のドキュメントは RC4 暗号化方式を使用していると思います。0x1200アドレスにある暗号化ヘッダーは次のとおりです。

01 00 01 00 27 cf 34 9f a9 86 50 53 ad 66 58 e9 
42 c4 bb 8c 11 00 41 26 f1 a9 37 d7 6e 1c d0 37 
3d fb 97 02 a6 9b c0 8f 71 df 28 a2 6b 6f 83 69 
fc 69 57 e3 70 a9 9d fc b3 8d 4f 35 0e ff d0 8c 
da b2 b5 67 0f 50 40 6b b8 54 58 e2 41 8e f3 f8

ドキュメントによると、最初の 4 バイトはメジャー バージョン、マイナー バージョンであり、その後に Salt、EncryptedVerifier、EncryptedVerifierHash がそれぞれ 16 バイト続きます。

鍵導出アルゴリズムは次のとおりです。

私のドキュメントのパスワードはx(1 文字) です。最初のものを導出しようとしていますEncryptedVerifier(これは乱数だと思います)。ただし、異なる結果が得られます:(暗号化されたキー導出アルゴリズムは、TruncatedHashを導出するまでは非常に簡単です。この後、何をすべきか混乱しています。

ドキュメントからを取得EncryptedVerifierし、キーを使用して RC4 アルゴリズムを使用して復号化していますが、MD5(TruncatedHash + 00000000).これをハッシュして (復号化後) と比較するとEncryptedVerifierHash、2 つの結果は異なります。

コードの一部は次のとおりです。

>>> import hashlib
>>> h0 = hashlib.md5()
>>> h0.update('x')
>>> h0 = h0.hexdigest()
>>> h0
'9dd4e461268c8034f5c8564e155c67a6'
>>> h0tr = h0[0:10]
>>> h0tr
'9dd4e46126'
>>> ibuff = h0tr + '27cf349fa9865053ad6658e942c4bb8c'
>>> buff = ibuff * 16
>>> len(buff)/2
336
>>> h1 = hashlib.md5()
>>> h1.update(buff)
>>> h1 = h1.hexdigest()
>>> h1tr = h1[0:10]
>>> hf = hashlib.md5()
>>> hf.update(h1tr + '00000000')
>>> hf = hf.hexdigest()
>>> hf
'43e94942913b933273f5c65d3c859723'

RC4 暗号化/復号化にこのWeb サイトを使用しています。

私は何を間違っていますか?ドキュメントの追加コンテンツが必要な場合はお知らせください。ありがとう!

4

0 に答える 0