- 下载文件得到py脚本,有报错,肯定想让我们修改代码,能正常运行下去,但是我不干!
- 有两种解法
1. 第一种就是直接使用西二风大佬的RSA脚本
a. 先计算出模数N,再计算出D,计算得到密文
b. 最后再转换为flag就可以了
2. 第二种就是修改代码
a. 先运行看报错,显示需要字节对象
b. 原因是:b2a_hex(flag)
来将 flag
转换为十六进制,但实际上 b2a_hex
的输入应该是字节序列,而不是字符串。因此,需要首先将 flag
转换为字节,然后再进行十六进制转换。
脚本小子目前实力有限,直接用ai生成
from Crypto.Util.number import *
from binascii import b2a_hex, a2b_hex
# RSA 参数
p = 262248800182277040650192055439906580479
q = 262854994239322828547925595487519915551
e = 65533
n = p * q
phi_n = (p - 1) * (q - 1)
# 计算私钥 d
d = inverse(e, phi_n)
# 原始 flag
flag = "flag{example_flag}"
# 加密过程
flag_bytes = flag.encode('utf-8') # 转换为字节
flag_hex = int(b2a_hex(flag_bytes), 16) # 转换为十六进制整数
# 加密 (c = m^e % n)
c = pow(flag_hex, e, n)
print(f"密文 (整数): {c}")
# 解密过程
# 解密 (m = c^d % n)
m_decrypted = pow(c, d, n)
# 将解密后的整数转换回字节
m_bytes = long_to_bytes(m_decrypted)
# 将字节解码回 UTF-8 字符串
flag_decrypted = m_bytes.decode('utf-8')
print(f"解密后的 flag: {flag_decrypted}")