BUUCTF-[GUET-CTF2019]虚假的压缩包

虚假的压缩包是伪加密,7z可以直接解压,内容如下

两个密码,一个密文,RAS加密

代码如下:

需先安装gmpy2

pip install gmpy2

import gmpy2

def rsa_decrypt(c, e, p, q):
    n = p * q
    l = (p - 1) * (q - 1)
    d = gmpy2.invert(e, l)
    decrypted = pow(c, d, n)
    return decrypted

def main():
    p = gmpy2.mpz(3)
    q = gmpy2.mpz(11)
    e = gmpy2.mpz(3)
    c = gmpy2.mpz(26)

    decrypted_text = rsa_decrypt(c, e, p, q)
    print("解密后的明文:", decrypted_text)

if __name__ == "__main__":
    main()

密码是5,我以为是5,结果不是,

密码是:答案是5,    神经病!!!

真实的压缩包解压出来是这样的

jpg点开感觉图片好小,试试改宽高

应该是对另一个文件进行与5的异或操作

代码如下,这里我把那文件名改成1了

with open('./1', 'r') as f1:
    xor_data = f1.read().strip()

dec_data = ""
for i in xor_data:
    tmp = int(i, 16) ^ 5
    dec_data += hex(tmp)[2:]

with open('./data.doc', 'wb') as f2:
    f2.write(bytes.fromhex(dec_data))
    
    
    
#这段代码首先打开文件 1 并读取其中的数据。然后,通过循环遍历每个字符,将其转换为十进制数并与 5 进行异或操作。

flag{_th2_7ru8_2iP_}

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值