微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

^ 不支持的操作数类型:'bytes' 和 'bytes' 与 XOR

如何解决^ 不支持的操作数类型:'bytes' 和 'bytes' 与 XOR

我在关闭之前问过这个问题作为重复我尝试了重复链接但没有任何效果

完整代码

import requests
import base64
import urllib.parse
import operator




username = "badministrator"
password = "Password1"
URL = "http://url/login.PHP"
values = {'username' : username,'password' : password}

def first_login(url_login,value):
    with requests.Session() as c:
        c.post(url_login,data = value)
        response = c.get(url_login,verify=False,allow_redirects=True)
        Cookie = [value for key,value in c.cookies.get_dict().items()]
        cookie,IV = Cookie
        return cookie,IV

def base64_decode():
    cookie,IV = first_login(URL,values)
    decode_cookie = base64.b64decode(urllib.parse.unquote_to_bytes(cookie))
    decode_IV = base64.b64decode(urllib.parse.unquote_to_bytes(IV))
    return decode_cookie,decode_IV

def xor_exp():
    decoded_cookie,decoded_IV = base64_decode()
    decoded_IV[0] = bytes(map(operator.xor,b'a',b'b',decoded_IV[0]))
    decoded_cookie[0] = b'a'
    return decoded_IV,decoded_cookie


print(xor_exp())

我无法以字节为单位进行迭代,也无法将三口异或在一起

解决方法

bytes 是不可变的,所以如果你想改变它们的内容,你可以构造一个新的 bytes 对象(就像你对字符串或元组所做的那样)或创建一个 bytearray .我将在下面展示它们:

def xor_exp():
    decoded_cookie,decoded_IV = base64_decode()
    decoded_IV = bytes([3 ^ decoded_IV[0]]) + decoded_IV[1:]
    decoded_cookie = b'a' + decoded_cookie[1:]
    return decoded_IV,decoded_cookie
def xor_exp():
    decoded_cookie,decoded_IV = base64_decode()
    decoded_cookie = bytearray(decoded_cookie)
    decoded_IV = bytearray(decoded_IV)
    decoded_IV[0] = 3 ^ decoded_IV[0]
    decoded_cookie[:1] = b'a'
    return bytes(decoded_IV),bytes(decoded_cookie)

尝试 2:

如果您知道 bytes 对象只包含一个字符,我会简单地对它们调用 ord

decoded_IV[0] = ord(b'a') ^ ord(b'b') ^ decoded_IV[0]

其中,给定这些特定值等于

decoded_IV[0] = 3 ^ decoded_IV[0]

尝试 1:

Python 中不能直接异或 bytes 对象,但可以对 int 对象进行异或,并且 bytes 实现 Iterable[int],这意味着你可以:

import operator

...

decoded_IV[0] = bytes(map(operator.xor,b'a',b'b',decoded_IV[0]))

这使用了标准库函数 operator.xor 和内置函数 map

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。