当我向API提交来自移动应用程序的POST请求时,我试图了解移动应用程序是如何加密密码的,这样我就可以制作一个python代码,它可以使用相同的算法向API发送加密的密码,就像移动应用程序一样。
我厌倦了捕捉移动应用程序的私有API,我收到了应用程序发送请求的请求,但有趣的是,应用程序在通过POST请求将密码发送到API之前对密码进行加密--这是密码在请求中的样子:
password=GmdKoBhIne4g3KR8JeR/Cg==
移动应用程序正在编码密码,当它向API发送请求时,我已经知道密码了,但是我想要的是捕捉这个移动应用程序加密密码的方式,加密类型不是Base64 (当然是lol),我很想在没有加密的情况下向API发送一个请求,但我得到了一个错误。这意味着API正在解密密码。
所以我厌倦了对这个移动应用程序进行反编译,我得到了源代码,它很麻烦,代码来源很复杂,带有随机函数名,这使得我很难读lol,在我解压缩apk之后,变量就随机生成了。
因此,我厌倦了在代码源代码中搜索关键字,比如(密码,API.),最后我找到了一条可以开始的行,我正在试图捕捉移动应用程序如何将密码字符串转换为未知的加密类型,在两天前,我解压缩了一个APK文件,但加密仍然很难捕捉:(我发现:
该函数返回:
if (str21 != null) {
i = str21.hashCode();
}
return hashCode23 + i;
但仍然无法从加密算法中了解任何东西:
我在代码源代码上搜索,我发现了两个文件CERT.SF & CERT.RSA,我不知道,但我觉得这两个文件可以帮助我,CERT.SF文件包括许多SHA-256摘要和我无法阅读的RSA。
我试着用我在应用程序上发布请求的形式测试字母,例如:我认为我可以捕捉到这样的字母(A,B,C.1,2,3.)但是当我发布A时,我在Burp套件上收到密码再次生成为像以前一样的随机字符串,所以没有什么变化。
如果有密码学的人能帮我解决这个问题,那就太神奇了。
谢谢。
发布于 2021-11-13 06:54:14
所以,感谢一些中文文章帮助我解决这个问题。
移动应用程序被混淆了,但感谢上帝,我发现了应用程序正在使用AES/CBC/PKCS5Padding,的一些痕迹,所以我跳起来,我的设备根根,我绕过SSL平移,我安装了友好的弗里达服务器在我的设备外壳,我得到了移动应用的PID,我发现了许多脚本,帮助检测手机上的秘密密钥,但没有脚本工作。因此,我很想了解Frida如何能够检测到秘密密钥,于是我编写了一个定制python脚本,该脚本将移动应用程序中的密钥报废。对于定制的python脚本,我无法共享,因为它包含了我在其上预测试的移动应用程序功能。但是我可以帮助一些来源了解Frida是如何绕过密码算法的
弗里达:https://github.com/frida/frida
利用代码:https://github.com/Kc57/blog_post_code/tree/master/frida-python-bindings-example
https://stackoverflow.com/questions/69930794
复制