-
-
[原创]第一题AliCrackme,用Python提取png中的密码
-
发表于: 2015-1-23 20:34 2601
-
确实是练手题,拿JEB直接就看到验证过程:

映射表和密码都在logo.png里,直接拿Python处理了:
接着还原 bytesToAliSmsCode 函数,其实就是data的低8位查表,但因为输入是byte[],导致这里只能用ascii码:
查看密码的输出为: 义弓么丸广之
然后写个根据字符逆向查表的函数,循环对pwd的字符查结果,最后转成字符串就是密码:
附件中是完整python脚本和logo.png

映射表和密码都在logo.png里,直接拿Python处理了:
1 2 3 4 5 6 7 8 9 | def getTableFromPic(): with open ( "logo.png" , "rb" ) as f: f.seek(89473) return f. read (768) def getPwdFromPic(): with open ( "logo.png" , "rb" ) as f: f.seek(91265) return f. read (18) |
接着还原 bytesToAliSmsCode 函数,其实就是data的低8位查表,但因为输入是byte[],导致这里只能用ascii码:
1 2 3 4 5 6 | def bytesToAliSmsCode(table, data): result = "" for i in range(len(data)): index = ord(data[i]) & 255 result += charAt(table, index) return result |
查看密码的输出为: 义弓么丸广之
然后写个根据字符逆向查表的函数,循环对pwd的字符查结果,最后转成字符串就是密码:
1 2 3 4 5 6 7 8 9 10 | def reverseAliSmsCode(table, uchar): return table.index(uchar) def crack(table, pwd ): result = "" for i in range(len( pwd ) /3 ): uchar = charAt( pwd , i) target_byte = reverseAliSmsCode(table, uchar) result += chr(target_byte) return result |
附件中是完整python脚本和logo.png
赞赏
他的文章
谁下载
谁下载
赞赏
雪币:
留言: