回应模式 - No.65410556


No.65410556 - 技术宅


无标题无名氏No.65410556 只看PO

2025-03-01(六)17:25:47 ID:pNj9ofX 回应

小白求助
有个网上的福利资源被上传者象征性加了密且放了加密方式,但我不会写解密脚本,
以下是上传者的说明文档:

第一个分卷已使用AES加密。您需要使用ECB/PCKS5Padding进行解密。解密脚本请自行编写。
密钥为字符串Hello World的32位md5小写值。
解密后文件的md5为3392f54ea7dbcd0c51a18b48411d6283
解密后正常打开7z文件,密码为字符串Hello World的sha256摘要(也是小写)
如此便可完全解压文件。


其中第一个秘钥我通过在线转换得到是b10a8db164e0754105b7a99be72e3fe5
第二个是a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e

但我卡在第一步了|д` )
要对这个文件进行解密,需要做一个怎样的东西呢?
jp

无标题无名氏No.65421444

2025-03-02(日)22:56:28 ID: ptSuNkj

>>No.65421405
比如这个
1o1o.xy【删】z/bo_ctfcode.html

无标题无名氏No.65422826

2025-03-03(一)01:03:51 ID: pNj9ofX (PO主)

>>No.65421444
这工具功能挺全的,但还是只支持字段解密……

无标题无名氏No.65424702

2025-03-03(一)10:43:20 ID: B6Y12Bt

from Crypto.Cipher import AES
def decrypt_file(input_file, output_file, key):
with open(input_file, 'rb') as f:
encrypted_data = f.read()
cipher = AES.new(key, AES.MODE_ECB)
decrypted_data = cipher.decrypt(encrypted_data)
# Remove PKCS7 padding
pad_len = decrypted_data0[0,-1]
pad_len = ord(pad_len) if isinstance(pad_len, bytes) else pad_len
if 1 <= pad_len <= 16:
decrypted_data = decrypted_data[:-pad_len]
# Remove trailing zero bytes
decrypted_data = decrypted_data.rstrip(b'\x00')
with open(output_file, 'wb') as f:
f.write(decrypted_data)
if __name__ == "__main__":
input_file = 'download.7z.001.encrypted'
output_file = 'download.7z.001'
key = b'b10a8db164e0754105b7a99be72e3fe5'
decrypt_file(input_file, output_file, key)

实测成功解密

无标题无名氏No.65424731

2025-03-03(一)10:45:46 ID: B6Y12Bt

怎么缩进都没了(|||゚Д゚)

无标题无名氏No.65424787

2025-03-03(一)10:53:44 ID: B6Y12Bt

https://pan.baidu.com/s/1xLZq0tHS6Mq66i4CAzMhug?pwd=6caz

无标题无名氏No.65432160

2025-03-04(二)01:50:41 ID: pNj9ofX (PO主)

>>No.65424702
这位肥哥,为什么前面的脚本只能padding incorrect呢(`・ω・)

无标题无名氏No.65439824

2025-03-04(二)22:40:30 ID: pNj9ofX (PO主)

>>No.65424731
抄下来用了,奈斯兄弟,解开了