1
vonsy 2016-04-15 11:29:01 +08:00 1
签名是根据传递的参数做的 md5, sha1 的值吧
如果是 apk, 你解压缩,将 class 反编译, 分析分析估计能找到签名的生成规则 |
3
hiboshi 2016-04-15 11:45:10 +08:00 1
反编译他们的 APK ,然后获取他们的 token 和加密规则
|
4
lianz 2016-04-15 11:50:24 +08:00
说真的,不懂你在说什么,不懂你到底想要获取什么,不懂你说的数据和 Signature 有什么关联。
|
5
daiv OP @lianz post 的时候,有参数吧,其中一个参数是签名。 如果签名不对,就会不能得到数据。 而且参数改变,签名就改变。 这下清楚了吧。 楼上 2 个兄弟 都清楚呀。
|
6
lianz 2016-04-15 12:04:07 +08:00
@daiv 我没看出来他们清楚了。我认为他们完全没仔细看你的问题描述。
1. 哪里来的数据?是 App 内所有数据,还是每次点击后 POST 的数据?(我的理解是 App 往服务器 POST 的单次数据) 2. 你想从哪里获取数据?在服务端获取 app 提交的数据?还是抓包方式拦截获取?(不懂,从你的描述里看不出来) 3. 签名一般是用来确保数据准确性的(防篡改),并不会影响获取到数据本身,除非数据本身是加密传输的。 4. 你是想连续全自动获取数据,还是只要获取某一次提交的数据? |
7
JiShuTui 2016-04-15 12:11:17 +08:00 1
@lianz 你钻牛角尖了,事实上,这里回复的人,除了你,其他人都看懂了
楼主想要获取别人 APP 从服务器得到的数据,而这些数据是由 APP 发送 API 请求得到的,请求中有 Signature 来确保请求的确来自于 APP ,而不是第三方。 |
8
JiShuTui 2016-04-15 12:12:42 +08:00
@lianz 这里重点是“他人”的 APP ,所以其实相当于“偷”数据了。
不过现在大家技术人偷数据不叫偷,叫抓取数据,叫爬虫爬数据。 |
9
blacklee 2016-04-15 12:40:30 +08:00 via iPhone
反编译代码。
一般都是把请求参数做一个字典排序,然后加上特定的 key 作为 seed 进行 md5 或 sha1 编码。 这种事能不能成也要看运气。 |
10
eoo 2016-04-15 12:47:38 +08:00 via Android
我抓了快手的 APP 好像也是要签名的
|
11
bzzhou 2016-04-15 12:57:04 +08:00 1
这东西,得看规模;如果很少的数据量,觉得通过模拟器来点击,然后采集挺好的;如果规模大,再去分析请求协议。
|
12
gao117348222 2016-04-15 13:19:32 +08:00 1
直接反编译代码
|
13
daiv OP |
15
coderfox 2016-04-15 14:32:10 +08:00 via Android
反向客户端拿算法和手段。
一般算法就是 HMAC-SHA1 、 HMAC-SHA256 之类的。 密钥的话,就反编译客户端。之前刚做了一个手游的,在 so 文件里, IDA 能拿到。 |
16
fzinfz 2016-04-15 15:04:40 +08:00
|
17
r00tt 2016-04-15 15:38:38 +08:00
可以直接反编译看实现,也可以写个 xposed 模块去 hook
|
18
lianz 2016-04-15 18:36:22 +08:00
得,我懂了,就是模拟客户端扒数据。
这个没什么好办法,反编译看看算法吧。 |
19
sunchen 2016-04-15 20:20:32 +08:00
基本上大部分就是参数排个序拼成字符串加点盐然后 md5 下,徒手拆 app ,找到那个签名函数了。今天跟糯米安卓,发现最后他们用 c 实现的加密模块。 WTF 。
|
21
Ervin 2016-04-16 12:56:28 +08:00
每个 API 的 sign 还不同?我们后台给我们的所有接口都是同一个 md5 加密的字符串
|
22
TakanashiAzusa 2016-04-16 13:35:59 +08:00 via Android
@coderfox 其实我也想弄某个手游,不过这方面实在不了解,想问下有简单的入门教程么?
|
23
nekocode 2016-04-16 16:51:42 +08:00
|
24
coderfox 2016-04-17 10:29:00 +08:00 via Android
@TakanashiAzusa 这个还真没有。
我给你讲讲我的思路吧。这个签名在 请求头里,我用 IDA 定位到了输出格式化语句,然后在上下用 Presdocode 找常量,同一个函数里找到的。 还可以大体确定了签名算法,用算法里常量查签名函数,然后查函数的引用来找到密钥参数。 |