开始
最近又开始逛酷安,发现自己还是酷安认证开发者。然后我就看到了一款熟悉的应用 KilGesture 。
这是一款什么软件?以我软件工程专业角度来说,这不叫软件,因为没文档,没更新,没维护,只能算的上一款工具或者说是玩具🤣。这款 app 是我高二的时候心血来潮写的,大概长这个样子:
酷安还没下架
App页面
明确的说,现在这款 app 已经不能用了。但是为什么要说它?因为这款它的原理极其狗血。
原理
Github <--源码在这,有兴趣可以看看。但是写的比较...你懂的。偷偷告诉你,一些排序的代码还是借鉴的🤫。
实际上 Android 4 及以下的九宫格密码就是简单的排列然后用 SHA-1 算一下,然后保存,每次解锁的时候把你输入的再算一下然后对比,一样的话就开锁。
什么是 SHA-1 加密?
SHA-1(英语:Secure Hash Algorithm 1,中文名:安全散列算法 1)是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS)。SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。
SHA-0和SHA-1可将一个最大 比特的消息,转换成一串160位的消息摘要;其设计原理相似于MIT教授Ronald L. Rivest所设计的密码学散列算法MD4和MD5。
-- wikipedia
再直白一点,就是你给我一段任意数据,我能算出一个 160 位的数据。 另外,这种操作是不可逆的。不像我们学过的函数,可以反解。
九宫格密码与 SHA-1
前面说到九宫格密码的原理就是 SHA-1 算一遍。怎么算?
到我操作的时候了😎。
- 再看看那张 App 的首页图
App页面
九个点,我们从 0 开始编号(为什么不从 1 开始?简单的问题,自己思考下)。总共有多少种方式?
4个数的密码个数为9*8*7*6=3024。
5个数的密码个数为15120个。
6个数的密码个数为60480个。
7个数的密码个数为181440个。
8个数和9个数的密码个数都是36288个
然后就拼接,例如 0003060708 这其实就是一个 L 解锁密码。然后计算 0003060708 的 SHA-1 的值,保存在 /DATA/SYSTEM/GESTURE.KEY 中。
这款工具做了什么?
我说了这其实是一款玩具。使用这款工具的要求是能获取到 gesture.key 文件。而获取不是已经简单的事情:
- 获取 root 权限
- 复制自己到 SD 卡下
虽然局限非常大,但是对于居心叵测的人,这都不是问题。它们可能还有别的办法。
所以只能自己玩一玩。跑题了,这款工具做了什么?
工作过程是这样的:
Main ->
Run_pd ->
Read_gesture ->
Arrange_pd ->
Combine_pd ->
比较是否相同,然后出结果
就是这么简单。回忆下当初青涩(苦涩🤣)的代码,可以不看,想看的话也提供了 Github 的地址。
public class Main
{ public static long start= System.currentTimeMillis();
public static Run_pd run;
public static void main(String[] args)
{//String ac[]=new int[100];
//sha s=new sha();
//String o=sha.ith(0)+sha.ith(1)+sha.ith(2)+sha.ith(3);
//System.out.println(sha.getSha1("\0x00\0x01\0x02\0x03"));
//sha s=new sha();
//
//System.out.println(s.sha1code("00010203"
//用线程跑
run = new Run_pd();
run.start();
}
//找到密码的回调
public static void Found_d(String password){
System.out.println("图案锁密码是"+password);
long end= System.currentTimeMillis();
System.out.println("总耗时"+(end-Main.start)/1000.00000+"s"+"\n Design by TAOFU");
}
}
这就结束了?
不,虽然从 Android 5 开始取消了这种加密方式,但是:
2017年2月23日,CWI Amsterdam与Google宣布了一个成功的SHA-1碰撞攻击,发布了两份内容不同但SHA-1散列值相同的PDF文件作为概念证明。但SHA-1仍可用做HMAC。
现在还有更强的工具,我用到的撞库的工具例如 Hashcat。Hashcat 还可以利用你显卡的高速计算能力进行计算,例如计算 Wifi 密码(这个下次再单独说)。
END
让我看看谁还敢用 SHA-1? 欧,都在用啊,那没事了🙃。
事实上,SHA-1 还有其他用处的比如校验文件。
改了个人信息,酷安把我开发者徽章下了,说还在审核个人信息,希望徽章还在吧。
最后,新人博主,请多关照!!!大佬轻喷。 另外我的博客地址 blog.tttfu.top/