本帖最后由 波哥野结衣 于 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=40390160571bf631432ed7e5d3cba665 netspeed=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编码 ( 执行结果, 真,
真 ) )
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=” +
取数据摘要 ( 到字节集 ( 登录密码
) )
) )
) )
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
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
感谢发布原创作品,精易因你更精彩!
查看全部评分