我已知gict和c怎么求出正确的flag
时间: 2024-09-21 10:09:07 浏览: 17
如果你已经知道了`gift`和`c`的具体值,你可以尝试通过以下步骤来逆向AES Plus加密,以找到原始的`flag`:
1. **分隔gift和ciphertext**:
- 将`gift`拆分为明文(`plaintext_hex`)和经过AES Plus加密的密文(`ciphertext_hex`)。例如:
```
plaintext_hex, ciphertext_hex = gift.split("|")
```
2. **将十六进制转换回二进制**:
- 将`plaintext_hex`和`ciphertext_hex`转换为二进制,以便进行解密操作。例如:
```
plaintext = bytes.fromhex(plaintext_hex)
ciphertext = bytes.fromhex(ciphertext_hex)
```
3. **创建主密钥数组**:
- 按照代码中的`keys`列表构造主密钥数组,注意要按随机顺序排列。
4. **还原加密过程**:
- 分别执行AES Plus的解密过程,从最后一个比特位开始反向操作。这意味着你需要遍历32次,并根据每次的比特设置选择相应的密钥(`key_a`或`key_b`)进行解密。
- 可能需要一些试错或循环来找出解密后的二进制数据对应原始的`flag`。
由于这段代码没有公开具体的`gift`和`c`值,你可能需要实际运行代码或找到对应的输入值才能进行逆向工程。一旦得到解密后的二进制数据,通常会将其转换为字符串(去掉前缀和后缀),检查是否符合`"susctf{"`和`"}"`之间的旗面格式,并提取旗面内容。
如果你有具体的`gift`和`c`值,可以直接尝试以上步骤,如果没有,你可能需要先模拟或者获得实际的加密数据来进行解密。
阅读全文