每次加解密都需要重新生成一个AES对象。
在CBC模式,同个AES对象,所有之前的加解密会影响下一次加解密(加密解密谁先谁后影响都一样),因为CBC是Blockchained的,加密的时候是串行的,需要依赖上个块的加解密结果,可以理解为它是有记录中间状态的过程,所以下一次加解密使用原来的AES对象存在问题,ECB模式则没有这个问题,解决方法:每次加解密都需要重新生成一个AES对象。
乱码是指由于本地计算机在用文本编辑器打开源文件时,使用了不相应字符集而造成部分或所有字符无法被阅读的一系列字符。乱码包括文本乱码、文档乱码等。
1、Wondershare USB加密软件
通用U盘加密软件Wondershare USB Drive Encryption本身是收费软件,但已经被汉化免费过了,所以我们可以用它来加密任意的U盘,不限制品牌和类型,所以是比较推荐的一款U盘加密软件了。
2、Idoo USB Encryption
也是一款通用的U盘加密软件,基于256位AES加密技术,忘记密码无法破解,加密后切记密码,本来也是收费的,已经被注册,加密级别很高,也是把你的U盘分出一个加密分区,专门存放你的重要文件,剩下的分区是正常U盘分区,可以放入常用文件,遗憾的它只有英文版,但使用起来并不困难,要解密必须在安装有此软件的电脑上。
3、EncryptStick中文版
一样通用任何U盘的加密软件,它加密级别很高,软件是中文的已经注册的版本,可以对任意文件夹进行加密,跟上面的两款不同的是,它不会分区,只是对文件夹进行加密,所以你必须把程序拷贝到U盘运行,不能使用程序自带的安装到U盘功能,基于1024位AES加密算法,所以依然无法破解,加密后自己一定要记得密码。
4、Rohos Disk Encryption中文版
一样基于AES加密算法的U盘加密软件,通用级别,它一样把U盘分出一个专门的加密分区,它的特点就是不受电脑限制,加密后,任意一台电脑都可以进行解密加密操作,当然加密后,需要你把软件拷贝到U盘公共分区里。
5、伊豆U盘加密软件
这是一款国产的免费的通用U盘加密软件,原理一样是把U盘分出一个区来放加密的文件,可自行设置加密分区的容量大小,通过滑块来划分,软件是绿色的,你需要把它拷贝到U盘根目录下运行来进行加密和解密操作,不受电脑限制,可在任何电脑上解密。
接下去两篇文章我们主要介绍安全分析过程中burp抓包完解密 经过加密的请求数据 ,并在新建的消息编辑器中打印输出。这篇文章主要先介绍测试app中加解密算法的分析与还原。
一、分析请求数据的加密算法
结果如下所示
二、还原加密算法并测试
在下一篇文章中,将介绍app请求数据解密插件的编写。该篇文章分析中用到frida脚本与还原后的算法,如果有需要,可以在公众号回复" AES Decrypt1 "获取。
破解压缩包密码的软件有ARCHPR。
ARCHPR是一款强大又专业的密码恢复工具,软件主要是用于解密RAR压缩包的密码,它能够帮助用户轻松的解锁各种带有密码的压缩包文件。解锁受密码保护的ZIP和RAR档案!完美底层优化有助于更快地完成工作。
能够保证在一小时之内恢复特定类型的压缩文件。恢复加密的ZIP和RAR压缩文件的密码具有已知明文攻击,底层优化可提供同类产品中的最佳性能支持最新RAR和ZIP格式的AES加密破解支持:ZIP/PKZip/WinZip,RAR/WinRAR,ARJ/WinARJ,ACE/WinACE(1.x),AES加密,自解压档案,可使用字典攻击和暴力攻击。
压缩包介绍
压缩包的基本原理是查找文件内的重复字节,并建立一个相同字节的“词典”文件,并用一个代码表示,比如在文件里有几处有一个相同的词“中华人民共和国”,用一个代码表示并写入“词典”文件,这样就可以达到缩小文件的目的。
这篇文章主要介绍burp解密http请求数据插件的编写。根据上篇文章分析得到的AES加解密算法,我们要编写一个AES解密插件,将指定host的请求数据解密,并在新建的消息编辑器中显示。
一、AES解密插件用到的接口
二、解密插件的实现与使用
抓取我们过滤的特定的请求包测试
可以看到对特定的每个请求数据解密后在消息编辑器中输出
综上所述,该篇文章主要介绍了burp中自定义消息编辑器解密插件的编写。其中,我们可以依据自己的个人需求来指定需要过滤的请求,比如可以按照请求数据中包含的参数名称、请求头中包含的host、user-agent、Content-Type、请求链接url等,多个条件一起判断也可以。有需要插件源码的童鞋,可以在公众号回复" AES Decrypt2 "。
用户输入密码,App把这些信息用RSA公钥加密:(用户名,密码,时间,mac,随机数),并发送到服务器。
服务器用RSA私钥解密,判断时间(可以动态调整1天到7天),如果不在时间范围之内,则登陆失败。如果在时间范围之内,再调用coreservice判断用户名和密码。
这里判断时间,主要是防止攻击者截取到加密串后,可以长久地利用这个加密串来登陆。
如果服务器判断用户成功登陆,则用AES加密:(随机salt,用户名,客户端类型,时间),以(用户名+Android/IOS/WP)为key,存到缓存里。再把加密结果返回给客户端。
客户端保存服务器返回的加密串
App发送保存的加密串到服务器,(加密串,用户名,mac,随机数)==RSA公钥加密
服务器用RSA私钥解密,再用AES解密加密串,判断用户名是否一致。如果一致,再以(用户名+Android/IOS/WP)为key到缓存里查询。如果判断缓存中的salt值和客户端发送过来的一致,则用户登陆成功。否则登陆失败。
不用AES加密,用RSA公钥加密也是可以的。AES速度比RSA要快,RSA只能存储有限的数据。RSA算法最好选择2048位的。搜索" rsa 1024 crack"有很多相关的结果,google已经将其SSL用的RSA算法升级为2048位的。