java : Passwd.getBytes()
python : bytearray(passwd)
java
String secret = "secret";
byte[] thebytes = secret.getBytes();
python3
secret = "secret"
secret.encode()
python27
s = 'secret'
b = bytearray(s)
for i in b:
print i
这次的安卓代码审计,主要依靠工具JD-GUI,并且使用搜索功能,只要把想要知道的变量名
一个个的搜索,总会找到相要的代码,不要不耐烦.
这次遇到很多不熟悉的函数
map()
数据的进制转换
int() 可以将 二进制,八进制,十六进制转换成十进制整型
>>> int('1111', 2)
15
>>> int('f', 16)
15
>>> int('17', 8)
15
chr() 将整型数字转换为字符
ord() 将字符转换为整型
hex() 将十进制转换为十六进制
oct() 将十进制转换为八进制
bin() 将十进制转换为二进制
ASCII码 与 字符 相互转换
ord() 字符 转 数字
chr() 数字 转 字符
base64 编码与解码
import base64
text = 'test'
cipher = base64.b64encode(text)
re_text = base64.b64decode(cipher)
print cipher
print re_text
下面是python2.7代码的实现
import base64
# 密码转成字节码
password = "123456"
passwd = bytearray(password)
def trans_code(trans_type, para_dict):
if trans_type == 'en':
# 编码
for (x,y) in para_dict.items():
# 参数转成字节码
bytecode = bytearray(y)
j = 0
cryptoValue = ''
ascii_words = ''
for i in range( len(bytecode) ):
# 将 参数字节码 与 密码字节码 做异或操作,异或是对称加解密算法
cryptoValue = bin( bytecode[i] ^ passwd[j] )
# 密码长度有限,需要循环使用
j += 1
if j > len(passwd):
j = 0
# 二进制 转 十进制
decimal = int(cryptoValue, 2)
# 十进制 转 ASCII字符
ascii_words += chr( decimal )
# base64 编码 ASCII字符
cipher = base64.b64encode(ascii_words)
print x + ' : ' + y + ' : ' + cipher
print '='*10 + 'encode finish' + '='*10
参考链接:
1. 异或加密原理
2. ASCII码对照表
3. Python: convert string to byte array
没有评论:
发表评论