python:UnicodeDecodeError:'utf8'编解码器无法解码位置0的字节0xc0:无效的起始字节

奇偶校验位

我正在尝试编写一个脚本,该脚本通过创建随机utf-8编码的字符串,然后将其解码为unicode来生成随机unicode。对于单个字节,它工作正常,但是对于两个字节,它将失败。

例如,如果我在python shell中运行以下命令:

>>> a = str()

>>> a += chr(0xc0) + chr(0xaf)

>>> print a.decode('utf-8')

UnicodeDecodeError: 'utf8' codec can't decode byte 0xc0 in position 0: invalid start byte

根据utf-8方案https://en.wikipedia.org/wiki/UTF-8#Description,字节序列0xc0 0xaf应以0xc0开头1100xaf开头都有效10


这是我的python脚本:

def unicode(self):
    '''returns a random (astral) utf encoded byte string'''
    num_bytes = random.randint(1,4)
    if num_bytes == 1:
        return self.gen_utf8(num_bytes, 0x00, 0x7F)
    elif num_bytes == 2:
        return self.gen_utf8(num_bytes, 0xC0, 0xDF)
    elif num_bytes == 3:
        return self.gen_utf8(num_bytes, 0xE0, 0xEF)
    elif num_bytes == 4:
        return self.gen_utf8(num_bytes, 0xF0, 0xF7)

def gen_utf8(self, num_bytes, start_val, end_val):
    byte_str = list()
    byte_str.append(random.randrange(start_val, end_val)) # start byte
    for i in range(0,num_bytes-1):
        byte_str.append(random.randrange(0x80,0xBF)) # trailing bytes
    a = str()
    sum = int()
    for b in byte_str:
        a += chr(b) 
    ret = a.decode('utf-8')
    return ret

if __name__ == "__main__":
    g = GenFuzz()
    print g.gen_utf8(2,0xC0,0xDF)
迪特里希·埃普

实际上,这是无效的UTF-8。在UTF-8中,只能使用两个字节对U + 0080到U + 07FF(含)范围内的代码点进行编码。仔细阅读Wikipedia文章,您将看到相同的内容。结果,该字节0xc0可能永远不会出现在UTF-8中。的情况也是如此0xc1

某些UTF-8解码器具有错误的解码序列,例如C0 AF有效的UTF-8,这在过去已导致安全漏洞。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

json.dump-UnicodeDecodeError:'utf8'编解码器无法解码位置0的字节0xbf:无效的起始字节

来自分类Dev

Google SDK gcloud 崩溃(UnicodeDecodeError):“utf8”编解码器无法解码位置 29 中的字节 0xf8:起始字节无效

来自分类Dev

UnicodeDecodeError:'utf8'编解码器无法解码位置1266中的字节0xba:无效的起始字节

来自分类Dev

UnicodeDecodeError:'utf8'编解码器无法解码位置178175077中的字节0xf6:无效的起始字节

来自分类Dev

UnicodeDecodeError:'utf8'编解码器无法解码位置3131中的字节0x80:无效的起始字节

来自分类Dev

Python'utf8'编解码器无法解码位置72的字节0xc3:无效的连续字节

来自分类Dev

UnicodeDecodeError:'utf-8'编解码器无法解码位置0的字节0xff:无效的起始字节

来自分类Dev

UnicodeDecodeError:'utf-8'编解码器无法解码位置0的字节0x90:无效的起始字节

来自分类Dev

UnicodeDecodeError: 'utf-8' 编解码器无法解码位置 0 中的字节 0x80:起始字节无效

来自分类Dev

UnicodeDecodeError:'utf-8'编解码器无法解码位置2的字节0xb5:无效的起始字节

来自分类Dev

UnicodeDecodeError:“ utf-8”编解码器无法解码位置10的字节0xa9:无效的起始字节

来自分类Dev

如何解决UnicodeDecodeError:'utf-8'编解码器无法解码位置3的字节0xa1:无效的起始字节?

来自分类Dev

“UnicodeDecodeError:‘utf-8’编解码器无法解码位置 2491 中的字节 0xad:起始字节无效”

来自分类Dev

UnicodeDecodeError:'utf8'编解码器无法解码位置34的字节0xc3:数据意外结束

来自分类Dev

UnicodeDecodeError:'utf8'编解码器无法解码位置34的字节0xc3:数据意外结束

来自分类Dev

使用Pycrypto Python的AES解密异常:'builtins.UnicodeDecodeError:'utf-8'编解码器无法解码位置0的字节0x80:无效的起始字节'

来自分类Dev

我使用cmd.exe运行脚本,但出现错误:UnicodeDecodeError:'utf8'编解码器无法解码位置77的字节0xc9:无效的连续字节

来自分类Dev

Robot_framework UnicodeDecodeError:'utf-8'编解码器无法解码位置42的字节0xe0:无效的连续字节

来自分类Dev

UnicodeDecodeError:'utf-8'编解码器无法解码位置1的字节0xe3:无效的继续字节

来自分类Dev

builtins.UnicodeDecodeError:'utf-8'编解码器无法解码位置17的字节0xd2:无效的连续字节

来自分类Dev

发生异常:UnicodeDecodeError'utf-8'编解码器无法解码位置的字节0xf1

来自分类Dev

在UnicodeDecodeError压缩的文件上,熊猫read_csv失败:'utf-8'编解码器无法解码位置1的字节0x8b:无效的起始字节

来自分类Dev

UnicodeDecodeError:'ascii'编解码器无法解码位置8的字节0xc3:序数不在范围内(128)

来自分类Dev

UnicodeDecodeError: 'utf-8' 编解码器无法解码位置 127 中的字节 0xd0:数据意外结束

来自分类Dev

'utf8'编解码器无法解码位置59的字节0xdf:无效的连续字节

来自分类Dev

'utf8'编解码器无法解码位置59的字节0xdf:无效的连续字节

来自分类Dev

python UnicodeDecodeError:“ utf8”编解码器无法解码字节

来自分类Dev

utf8'编解码器无法解码位置的字节0xae

来自分类Dev

UnicodeDecodeError:“ charmap”编解码器无法解码位置106的字节0x8f:字符映射为<undefined>

Related 相关文章

  1. 1

    json.dump-UnicodeDecodeError:'utf8'编解码器无法解码位置0的字节0xbf:无效的起始字节

  2. 2

    Google SDK gcloud 崩溃(UnicodeDecodeError):“utf8”编解码器无法解码位置 29 中的字节 0xf8:起始字节无效

  3. 3

    UnicodeDecodeError:'utf8'编解码器无法解码位置1266中的字节0xba:无效的起始字节

  4. 4

    UnicodeDecodeError:'utf8'编解码器无法解码位置178175077中的字节0xf6:无效的起始字节

  5. 5

    UnicodeDecodeError:'utf8'编解码器无法解码位置3131中的字节0x80:无效的起始字节

  6. 6

    Python'utf8'编解码器无法解码位置72的字节0xc3:无效的连续字节

  7. 7

    UnicodeDecodeError:'utf-8'编解码器无法解码位置0的字节0xff:无效的起始字节

  8. 8

    UnicodeDecodeError:'utf-8'编解码器无法解码位置0的字节0x90:无效的起始字节

  9. 9

    UnicodeDecodeError: 'utf-8' 编解码器无法解码位置 0 中的字节 0x80:起始字节无效

  10. 10

    UnicodeDecodeError:'utf-8'编解码器无法解码位置2的字节0xb5:无效的起始字节

  11. 11

    UnicodeDecodeError:“ utf-8”编解码器无法解码位置10的字节0xa9:无效的起始字节

  12. 12

    如何解决UnicodeDecodeError:'utf-8'编解码器无法解码位置3的字节0xa1:无效的起始字节?

  13. 13

    “UnicodeDecodeError:‘utf-8’编解码器无法解码位置 2491 中的字节 0xad:起始字节无效”

  14. 14

    UnicodeDecodeError:'utf8'编解码器无法解码位置34的字节0xc3:数据意外结束

  15. 15

    UnicodeDecodeError:'utf8'编解码器无法解码位置34的字节0xc3:数据意外结束

  16. 16

    使用Pycrypto Python的AES解密异常:'builtins.UnicodeDecodeError:'utf-8'编解码器无法解码位置0的字节0x80:无效的起始字节'

  17. 17

    我使用cmd.exe运行脚本,但出现错误:UnicodeDecodeError:'utf8'编解码器无法解码位置77的字节0xc9:无效的连续字节

  18. 18

    Robot_framework UnicodeDecodeError:'utf-8'编解码器无法解码位置42的字节0xe0:无效的连续字节

  19. 19

    UnicodeDecodeError:'utf-8'编解码器无法解码位置1的字节0xe3:无效的继续字节

  20. 20

    builtins.UnicodeDecodeError:'utf-8'编解码器无法解码位置17的字节0xd2:无效的连续字节

  21. 21

    发生异常:UnicodeDecodeError'utf-8'编解码器无法解码位置的字节0xf1

  22. 22

    在UnicodeDecodeError压缩的文件上,熊猫read_csv失败:'utf-8'编解码器无法解码位置1的字节0x8b:无效的起始字节

  23. 23

    UnicodeDecodeError:'ascii'编解码器无法解码位置8的字节0xc3:序数不在范围内(128)

  24. 24

    UnicodeDecodeError: 'utf-8' 编解码器无法解码位置 127 中的字节 0xd0:数据意外结束

  25. 25

    'utf8'编解码器无法解码位置59的字节0xdf:无效的连续字节

  26. 26

    'utf8'编解码器无法解码位置59的字节0xdf:无效的连续字节

  27. 27

    python UnicodeDecodeError:“ utf8”编解码器无法解码字节

  28. 28

    utf8'编解码器无法解码位置的字节0xae

  29. 29

    UnicodeDecodeError:“ charmap”编解码器无法解码位置106的字节0x8f:字符映射为<undefined>

热门标签

归档