开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 45522|回复: 55
收起左侧

[技术文章] 安卓协yi-微密APP详细的登录分析

[复制链接]
结帖率:88% (7/8)
发表于 2015-11-25 08:58:48 | 显示全部楼层 |阅读模式   重庆市重庆市
本帖最后由 波哥野结衣 于 2015-11-25 09:00 编辑

某易友要的微密APP登录...大清早的叫我起床是要请我吃个早饭吧。。。


源登录包数据:

POST http://passport.wemi.mobi/user/login?userid=0&deviceid=40390160571bf631432ed7e5d3cba665&platform=android&network=wifi&version=3.6.2&rand=0.9418808299753513&netspeed=0&time=1448408113&guid=c7c764567f208ba652aebc09972fb0ab&device=S898tp&model=Lenovo+S898t%2B&androidversion=4.4.2&androidversioncode=19 HTTP/1.1
User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; zh-cn; Lenovo S898t+ Build/KOT49H) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
Accept-Encoding: gzip
Content-Length: 82
Content-Type: application/x-www-form-urlencoded
Host: passport.wemi.mobi
Connection: Keep-Alive
number=WvPuh%2FhQi12u1EVc4C3UJQ%3D%3D%0A&password=25f9e794323b453885f5181f1b624d0b


number=这是登录的手机号码 15223297153 - 貌似是个base64编码
password=这是密码MD5(123456789)

提交返回数据:
HTTP/1.1 200 OK
Server: nginx/1.2.9
Date: Tue, 24 Nov 2015 23:35:13 GMT
Content-Type: application/json; charset=utf8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.2.5

56
{"errno":1102,"errmsg":"\u7528\u6237\u4e0d\u5b58\u5728","consume":6,"time":1448408113}==》》》》解码数据为:{"errno":1102,"errmsg":"用户不存在","consume":6,"time":1448408113}
0



红色标记处为加密处。边写边找。算直播贴了吧。。。
POST地址里面的红色标记数据应该是MD5,我猜的。调试看看。先定位。。



根据POST的地址来看,应该就是这儿了。找找e函数。看看是否是MD5



确实是MD5,下断点调试看看

断点数据为:00000000-61e1-ae1c-ffff-ffff99d603a9  看看MD5加密后是什么。。 MD5加密结果为: 40390160571bf631432ed7e5d3cba665  先继续走,最后看看本次发送的数据有没有相同的。。。
继续走。。然后又被断下来了。。。



断点数据为:deviceid=40390160571bf631432ed7e5d3cba665netspeed=0network=wifiplatform=androidrand=0.24392687371670263time=1448408934userid=0version=3.6.2eac63e66d8c4a6f0303f00bc76d0217c  看看MD5加密后是什么。。 MD5加密结果为: 173a0ccb2e3d7739c030efdbcd697c7e
继续走。。。看看本次的发送数据。对比一下看看

POST http://passport.wemi.mobi/user/login?userid=0&deviceid=40390160571bf631432ed7e5d3cba665&platform=android&network=wifi&version=3.6.2&rand=0.24392687371670263&netspeed=0&time=1448408934&guid=173a0ccb2e3d7739c030efdbcd697c7e&device=S898tp&model=Lenovo+S898t%2B&androidversion=4.4.2&androidversioncode=19 HTTP/1.1
User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; zh-cn; Lenovo S898t+ Build/KOT49H) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
Accept-Encoding: gzip
Content-Length: 82
Content-Type: application/x-www-form-urlencoded
Host: passport.wemi.mobi
Connection: Keep-Alive

number=WvPuh%2FhQi12u1EVc4C3UJQ%3D%3D%0A&password=25f9e794323b453885f5181f1b624d0b


很明显 deviceid=MD5(00000000-61e1-ae1c-ffff-ffff99d603a9)gudi=MD5(deviceid=40390160571bf631432ed7e5d3cba665netspeed=0network=wifiplatform=androidrand=0.24392687371670263time=1448408934userid=0version=3.6.2eac63e66d8c4a6f0303f00bc76d0217c)


貌似手机是个base64..尝试看看。。。。注意!!!java的base64编码和易语言不太一样。。先转到字节。
输入登录账号15223297153,但是结果不一样。What Fuck??????? I FUCK YOU APP!
好吧,看来不是这样玩的。估计处理过的。咋们继续。。。
想了个办法。在提交表单数据前下断点。。。这样可以获取到明文的账号信息。调试看看。

看来是可行的。。。
然后继续走啊走啊走啊走啊。。。。。。。。。。。

来到这个地方我发现了DES算法的特征,看看。。。

还真是。。
那么就是---》账号——》DES加密——》BASE64编码


JAVA的DES和易语言的不一样。。。所以我打算偷个懒。调用jar生成。。。反正我只是打个酱油是吧。。。





不难看出 DES的加密结果是字节 而这个BASE64编码后的结果也是字节 然后转换到文本就直接返回加密后的结果。
但是发生了蛋疼的事。。。可以看到这个BASE64在反编译的包里是没有的。。


我尼玛!!!木有!


看来只能给它动点小手术了。。。


首先我把这个加密的玩意放到了ad.smail里。

然后这个base64是个问题,于是乎我打算从别的地方搞一个进去。。先尝试搜索看看有木有base64的。。。

还真有,还是TX的。。。借来用用吧。。。但是它这个返回的是文本型???看来还得再改改。。。


这样就行了。编码后直接返回。。。
编译一下APK 在把JAR提取出来。试试看看。。。

{:soso_e140:}{:soso_e118:}{:soso_e140:}{:soso_e118:}{:soso_e140:}{:soso_e118:}{:soso_e140:}{:soso_e118:}{:soso_e140:}{:soso_e118:}{:soso_e140:}{:soso_e118:}{:soso_e140:}{:soso_e118:}
我X。居然忘了一件事。。。DES的密码呢??????????????????
回去调试看看。。。


看来密码就是这个玩意了---Hzu4jV31


咋们用E调用试试

执行结果    * [2015年11月25日8时49分59秒] | “加密结果:WvPuh%2FhQi12u1EVc4C3UJQ%3D%3D”


和提交的是一样的啦:number=    WvPuh%2FhQi12u1EVc4C3UJQ%3D%3D%0A     &password=25f9e794323b453885f5181f1b624d0b

易语言代码为:
  
子程序名返回值类型公开备 注
微密手机号码加密文本型 
参数名类 型参考可空数组备 注
手机号码文本型
变量名类 型静态数组备 注
虚拟机Java虚拟机 
本地接口Java本地接口 
类标志符整数型 
静态方法名称文本型 
静态方法签名文本型 
要加载的类名称文本型 
方法标记符整数型 
返回结果整数型 
执行结果文本型 
Jar路径文本型 
Jar路径 = 取运行目录 ()“\weimi.jar”
要加载的类名称 = “com.weimi.ad”
静态方法名称 = “d”
静态方法签名 = “(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;”
虚拟机.创建 (Jar路径, )
类标志符 = 本地接口.加载类 (要加载的类名称)
方法标记符 = 本地接口.取静态方法标志符 (类标志符, 静态方法名称, 静态方法签名)
本地接口.对象方法 (类标志符, 方法标记符, 返回结果, 手机号码, “Hzu4jV31”)
执行结果 = 本地接口.取字符串文本 (返回结果, )
返回 (编码_URL编码 (执行结果, 真, ))


i支持库列表   支持库注释   
JavalibJava支持库



OK OK。这样我们就完成了。。写个登录验证一下。。。

这样就完成了。。。。返回数据与抓包数据一致。。换个账号和密码再次登陆验证看看



完工。。。九点半上班。走咯


  
子程序名返回值类型公开备 注
微密登录  
参数名类 型参考可空数组备 注
手机号码文本型
登录密码文本型
变量名类 型静态数组备 注
deviceid文本型 
guid文本型 
rand文本型 
time文本型 
url文本型 
device文本型 
model文本型 
rand = 文本_取随机数字 (16)
time = 时间_取现行时间戳 ()
deviceid = 取数据摘要 (到字节集 (“00000000-”文本_取随机字符 (4)“-”文本_取随机字符 (4)“-ffff-ffff99d603a0”))
device = 文本_取随机字符 (5)
model = 多项选择 (到整数 (文本_取随机范围数字 (1, 14)), “Nokia”, “motorola”, “samsung”, “sonyericsson”, “philip”, “panasonic”, “lenovo”, “dopod”, “haier”, “LG”, “HP”, “mitsubishi”, “coolpad”, “xiaomi”)
guid = 取数据摘要 (到字节集 (“deviceid=” + deviceid + “netspeed=0network=wifiplatform=androidrand=0.” + rand + “time=” + time + “userid=0version=3.6.2eac63e66d8c4a6f0303f00bc76d0217c”))
url = http://passport.wemi.mobi/user/login?userid=0&deviceid= + deviceid + “&platform=android&network=wifi&version=3.6.2&rand=0.” + rand + “&netspeed=0&time=” + time + “&guid=” + guid + “&device=” + device + “&model=” + model + “+” + device + “&androidversion=4.4.2&androidversioncode=19”
调试输出 (取现行时间 (), 编码_usc2到ansi (到文本 (网页_访问_对象 (url, 1, “number=”微密手机号码加密 (手机号码)“&password=”取数据摘要 (到字节集 (登录密码))))))


i支持库列表   支持库注释   
dp1数据操作支持库一
spec特殊功能支持库










本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 15好评 +13 精币 +35 收起 理由
873219502 + 1 + 2 请问 AES/CBC/PKCS5Padding 加密的何时出个教程哇 嘿嘿
新人学习 + 1 + 2 请问 AES/CBC/PKCS5Padding 加密的何时出个教程哇 嘿嘿
ixiaobai + 1 + 2 感谢发布原创作品,精易因你更精彩!
pupu123 + 1 + 2 虽然看不懂,还是要支持下,给力。
半夏时光 + 1 + 5 不错。
yshell + 1 + 2 感谢分享,很给力!~
x纯洁的我x + 1 + 1 奉上小小红包希望笑纳
bdching + 1 波哥能否提供下全套工具的下载地址
hui135135 + 1 + 2 感谢你的支持,精易有你更精彩
hehehero + 1 + 2 感谢分享,很给力!~
oldlee + 1 + 2 JAVA的DES可以用JS来运行,CBC PCKS5PADDING都弄出来了~
无语凝噎 + 1 感谢分享,很给力!~
精易客服 + 1 + 5 精彩文章希望继续努力
果子 + 2 感觉棒棒的
冰点 + 1 + 5 感谢发布原创作品,精易因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发表于 2020-9-21 06:26:31 | 显示全部楼层   湖北省武汉市
小小心意,意思一下
回复 支持 反对

使用道具 举报

结帖率:100% (8/8)

签到天数: 2 天

发表于 2020-1-2 07:48:30 | 显示全部楼层   河北省唐山市
打算学习这方面知识 希望老师能闲来无趣的时候能出个具体教学
回复 支持 反对

使用道具 举报

发表于 2019-12-10 08:18:58 | 显示全部楼层   湖南省*
把我看懵逼了
回复 支持 反对

使用道具 举报

发表于 2019-12-8 01:10:28 | 显示全部楼层   浙江省湖州市
太深奥了。晕乎乎的
回复 支持 反对

使用道具 举报

发表于 2019-10-24 18:41:15 | 显示全部楼层   广东省深圳市
好想学习啊 ,不知道啥!
回复 支持 反对

使用道具 举报

结帖率:86% (24/28)

签到天数: 15 天

发表于 2018-6-13 23:33:41 高大上手机用户 | 显示全部楼层   河南省焦作市
赞一个,多学习学习,
回复 支持 反对

使用道具 举报

结帖率:42% (5/12)

签到天数: 23 天

发表于 2018-6-3 16:03:07 | 显示全部楼层   湖南省永州市
写的很好!
回复 支持 反对

使用道具 举报

发表于 2018-5-11 14:00:05 | 显示全部楼层   山东省临沂市
给我看困了,只想睡觉
回复 支持 反对

使用道具 举报

发表于 2018-5-6 22:44:34 | 显示全部楼层   福建省厦门市
写的很好!
回复 支持 反对

使用道具 举报

发表于 2017-11-21 21:46:38 | 显示全部楼层   陕西省西安市
向大牛学习
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表