python 破解 Android 解锁 Gesture.key

Ps:感谢D大神提供的代码,给我带来了很多的帮助。


这几天在作比赛,挺有意思的,听说是给大一的孩子玩的,我们这帮老人就无耻地去参加了。。

有道题,给出了一个Gesture.key,要我们破解。


这个就是SHA1的加密嘛。

在看雪有一个讲解原理的帖子:

http://bbs.pediy.com/showthread.php?t=166933


其实真不难写:

1.python的穷举怎么搞?

def product(*args, **kwds):
    # product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy
    # product(range(2), repeat=3) --> 000 001 010 011 100 101 110 111
    pools = map(tuple, args) * kwds.get('repeat', 1)
    result = [[]]
    for pool in pools:
        result = [x+[y] for x in result for y in pool]
    for prod in result:
        yield tuple(prod)

用到了:itertools.product()

那么在本次解决方案中就应该:

s="\x00\x01\x02\x03\x04\x05\x06\x07\x08"
for a,b,c,d,e,f,g,h,i in itertools.product(s,repeat=9):


2.16进制怎么整

这个其实真不算难题,只是我个人傻逼而已,很简单,\x00 就表示16进制的0


代码:

import hashlib
import itertools
s="\x00\x01\x02\x03\x04\x05\x06\x07\x08"
hashkey=open('Gesture.key','rb').read()
for a,b,c,d,e,f,g,h,i in itertools.product(s,repeat=9):
        if hashlib.sha1(a+b+c+d+e+f+g+h+i).digest()==hashkey:
                for x in a,b,c,d,e,f,g,h,i:
                        print chr(ord(x)+0x30),
                print "\n"
                break

上述代码,其实是默认解码的手势为9个点,也算是运气好吧,9个就出来key了。。

严谨点应该repeat = 9,8,7,6,5,4 都有可能!




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值