Encryption

知道明文機密的前 8 個字元後,如何解密 RC4 加密文本?

  • February 7, 2022

我在解密作為 CTF 的一部分的秘密消息時遇到困難,我想知道如何解密已使用 pycrypto RC4 加密的加密文本以及何時知道純文字機密的前 8 個字元。這是程式碼中的秘密:

secret = b'Sff3az11oTAChXcnaCvx2i/P7pZWLMPWX7xV0zxFY2XYRhqbik8bS6kQOymHYi3j0ZoP4NFLTtJHR8iXFtljDcDpoFeEnZU0KqQNYPR+ovQ9eQ2iNE0+yCl3+5gLKp838zH26Wdu/N1rr43fYIahah2OxpahqpG/7RmUbhjpSttu+UFk0lytQOM82IIo8B1aPgbBVFNJIxb1f+UQIcUHksW5aG8nQq3/4XNYvMAN2wCWsigvGJAalXShoiA3YSGQCVrMyOlKaJteeU9aehYXzzHyNGEcz1twpVJwfSB/rJ/gYtVh44locd+oCfuKP2UkvFF/PkRm5Cg4Ps1Nn0GBWFzKNR7zwVlQQSx7xEF6yEpR7YH5otNdK55/+LgjXREAR6oD91xL0uY1FossRnAZFag3NxW17wEpeGUwS5yw9GwnB6lhy3jnmZpS2FIRJkl6r6RMXCBIC6lTj0IGm87dNygmoB3pi98exSFsT+l+gFtij36HQp5BOE3UsDz8prfvjM7KQsSI4xWCwC7H+q0MxZXGdfOWlWaYxEJigQ11N53+DUResbWpMA2cwDeLhDIuou2YP90EryOrvvL512FVQWiYblE983sDpRUvtY+jYQuYAu8qeSCA5yRXT//EMZC0z6QaLavZUnZqA54JilNxiZydK9ib46A+cHgKeq7yh1eIKiMph7uMuH67Y9tcDRVMQd5aACmEYSejkCggRoNVkVn+xYsf2nadJ03+L0D33IXGDesbgPciW6bBrvMQn4XG7WB8DR/7i28DhHnBWNtpDmZ196hWa5ANxS89LHeBZA/cazb/8YVRFVKiewjgsHwdncR722uL+isklguTa6C+JS+hhr476Wccf+Ey7R4D7SFnZ+hiUPYMXcmerGpGn2HJE3aalKxgatbL+LhEqwNJFYrT63hbDDJ6GSUCjULQlq39jdOcRCPMM0Mss+Df5pSw/aavrtsCDsTx2w6FS599LARBdHeyJHPZfvFaADiV7GCEJwIfSPGO7hiqjLzr9WAa8NIkRJ7yJhv5LAViU3VH5R+FclJ8VA34J3jyagTHOeyBMWGdZeA81g43mEWZJWQV2gIqhu6bwfWk+abNRcr1NQ4GUVIEN/HcAKh6fsDF569PRnuVvjnvCS6P1xiJZwyAP3PiDElIsIJ+dL5CIAcn8PV5SPyBDn7CJ1LRnqni+9dUMx450FOqnPJYeDSq/r4i3rDGrYfz0ti1AmgYecxVbpbToplMCEd/TFDJiYJdsVbVRwJeLGSBeF/ULfo6oqpz70Gnhv/Q2es8kVrOJId7Ktfwy5N+sTdqg1wTuHCly3mGihROW5Ye+dFPNRU/B/OlRz76UpbQjzaui7ZJhWU6ub+cg3ODriW7sBCIUrk8O3//jd7BaUvhSrxx9O9DNvttnkAeGmYjCOZkTmkTg5Cre/0D5+VQBiHCmh6ntSOcwK6PJIsbexcjRxbJQbXVTtXcWqp8kLbD4po5uT5I4doFNFJM8VwARvGIbaAPMs1Xu01d2tKITCo1nySck+FbaM9Qx39VpTkkS2BeGZygWHMtWdfOC/Td3Tsr+FVWNp+yX16HR3UOkhB7wjBEQmRC5kpK6SN0mY/OY1FUeAN82gLyQw5Yks1tcq8vLQ06tEGnCC0bacEhYTZFAWjsfjtMQd+1yk862UTTfJng3fYfL2AnDiRVtM/wzCGbjVumtQsD4Ktrac63nvWD1BQDV1z0VHzUiQ4syLdH2I67duc/pK9HpvBN/6biexczLSXxAXtIFQh0vdlS1oO8CR8WlDbxmD+aoP25dJpab5uYnJC9JkexB6oWnBZm0viRapmy8JGJe00880SZLLfiAvUevJYskrkw2HbP+Lje2/w/Z3yuLIgGiuc/6VBdX5iPk5Z1cs19co7agQXeRFeiXivr6psZu6Y1L3lW1tZCeNx00MGK+Uw7zJ8Qe8JjysKM0S+OV6u4kZsqQx1/kfBVkTQrKFd10hmGO3Uyz3hSXb1PHvTDuBa8nhzjL3fkWmFA7a4a7ABghBiyLcvP3dTWTZ+7Nz4ghYJdm4Wb0J30fZ/cZr+8WZzi2W5767pktvcGiXuLJSVo6f3BuEvjyFS0BYMp9viFjyeSzDRnFUkp1f+s55HK0bTibgDKDAHPegibTAPCaoiaeaNBbYSePJRiXgkCm0bQWEYMGc1BQQlnenfHmEL6U0GXB6SPxQxIAxHpP5sIWl4sMJ8+EfWkPKPuOOAy8oiidAXQD7Drdodi2W15qZcJvAZ+NMks98xFDPwMpX7Jq49upYz1tFFFr+saFgN52ZKGJCv9P0jQL2PyLvgVVHwBeWVOxKmLOFw+7ltTSGryCr7f9D9L4M/tRkrXNo0Fa/7+N4kAevmhFJ8vOQMRrYZ+yOINB0Cy66pbTC62Gz4xl87I+SZzrCPafEKti2taE6Dqmv4FWK82ZvlHOLV/U47a2eN7ESylrGb/VYY9eRdCSBDpT1LfCz0qKvHlN4C5JmBclsXGefRpJO+Vw9Xxc0G7mmqBx1vvNESuDGzFbsyshoY/usM3MkQWyDfITgD1Qvoqyv9lygHIobckR0Hx+O6JSAjAbv/a8S2xSecQVUa9GbGaZBzeot3p0Uwtpvpy7L8bVAhLvH7dGHwxoc7BNYz+IefKVzNWHm9BovALTt3uyhr/HzdldM+se2zW9OrUxRjFrnSF/AJHoAGUT20g5u5hQCJnMjba28vtUz3zFH65WyIjmqv6Vm8eDm7oSUOhZkDFyRV5x+xdYZUNWZS1D7cHVW0FMy0yO7FrYnwMWC2DrAOHCexJtkvT+nDHr8cMNkctWovwSsdgwLsJwFPwiqN2wqitO7wmi7yizcO/keuCzdJh4Vs64tRZi8TLNt6OTNWLzI3TfMeiY0/5rU8bQuU3YbRL0L1neQKF87Vzz28d9ifiQhmPectf1FpRzdEA5uGI7SBrOUVvYq/Co3AXcvA8wkpvGuYa9DNCnFH/R4IP3ug7bUZHfFUKUs2EcZ0TsM9Ceco/q70VL8rsBvl7N0fSO4mCFZVAKRNG6ZMzfXqY40OuD5TdJ3rgIVX9Y0T3d8D+FlWK/pDXeZY2egEwEiFRzAoWgj/oOJHBDr2F80XIDsVcRLeSPontP6WEl9woWURpan2Ysipv5ehjAPFgDMQYTyyZkYM0a3J+Mh1hQfqbTUycrJh9t6Dxc6nId5pkFX13pUnlXsghdmLc4+ezy5iE55SO8oK93MuFUMo0E5A+B/amsfGgBiQa90C7XXClX3UXtPm4cpYQ6GRQT+cND5VoGiDrEycqXVntRWWJDMPRnhxBC4nP9CL/2jEukiFeOT6n3FLrJZM2KhsVq9g='

以下是解密文本的前 8 個字元:VQ0NCgAA

這也是為任何想知道的人提供的完整程式碼:

import base64
import marshal
import io
from Crypto.Cipher import ARC4
key = input('Enter correct key: ').encode('utf8')
cipher = ARC4.new(key)
secret = b' ---- snip -----'
plain = cipher.decrypt(base64.b64decode(secret))
if b'VQ0NCgAA' == plain[:8]:
   print('Correct')
   bytescode = io.BytesIO(base64.urlsafe_b64decode(plain))
   bytescode.seek(16)
   implant = marshal.load(bytescode)
   exec(implant)
else:
   print('Wrong')

抱歉,如果這是一個菜鳥問題,但我是密碼學的新手,並且真的很好奇如何實現這樣的事情。

顯而易見的方法是暴力破解它。也許密鑰很短,或者類似於字典中的單詞。至少我想不出更好的辦法。

附言。一旦你找到了密鑰,我希望你不會在不先修改它的情況下執行該程式碼。如果前綴匹配,它將載入並執行加密有效負載中的任何程式碼。您是否絕對 100% 相信它不會破壞您的系統或安裝隱藏的後門?我不會……

答案似乎是找到正確的鑰匙。也許你應該更加努力?

我找到了一個生成所需明文的密鑰,植入程序列印出 R0VOWntoMG5leV9oMG5leV9oMG5leV9wMHRfZnVsbF9vZl9tMG5leX0K 但是,這似乎只是垃圾。也許還有其他答案。

引用自:https://crypto.stackexchange.com/questions/98501