借助 python3 实现快速转换编码
★ 转换unicode
在分析smali文件时(或者其他时候),经常会遇到unicode码,例如:
const-string v2, "\u6821\u9a8c\u4e0d\u901a\u8fc7"
通过python3可以知道 “\u6821\u9a8c\u4e0d\u901a\u8fc7” 是什么字符。
例如:直接在python的环境下输入 “\u6821\u9a8c\u4e0d\u901a\u8fc7”, 然后回车。
$ python3
Python 3.6.1 (default, Mar 21 2017, 21:49:16)
>>> "\u6821\u9a8c\u4e0d\u901a\u8fc7"
'校验不通过'
★ 转换8进制编码
在wireshark截获的HTTP请求中,经常有8进制的编码,例如: “\346\234\213\345\217\213\345\234\210”。这个编码也可以用python来转换。
例如,b"\346\234\213\345\217\213\345\234\210".decode()
>>> b"\346\234\213\345\217\213\345\234\210".decode()
'朋友圈'
在 “\346\234\213\345\217\213\345\234\210” 前面的b
是将字符串转换为字节数组,然后调用 bytes的接口decode()
来转换8进制的编码。
将8进制转换为16进制:
>>> b"\346\234\213\345\217\213\345\234\210"
b'\xe6\x9c\x8b\xe5\x8f\x8b\xe5\x9c\x88'
★ 将中文转换为16进制
例如,将『微信』转换为16进制的字节数组:
>>> '微信'.encode()
b'\xe5\xbe\xae\xe4\xbf\xa1'
例如,将『微信』转换为16进制字符串:
>>> '微信'.encode().hex()
'e5beaee4bfa1'
将16进制字符串转换为字节数组。
>>> bytes.fromhex('e5beaee4bfa1')
b'\xe5\xbe\xae\xe4\xbf\xa1'
将16进制字符串转换为中文:
>>> bytes.fromhex('e5beaee4bfa1').decode()
'微信'