如果获取 APP 中的数据?(每次 POST 的时候 headers 中,都有不同 Signature。)

2016-04-15 11:26:04 +08:00
 daiv
一个数据 APP ,想要获取数据,可是用抓包软件分析后,发现 每次 POST 的时候 headers 中,都有不同 Signature 。

现在有什么办法获取数据吗?


难道要在手机点一遍,然后用抓包软件导出来?


谢谢
12117 次点击
所在节点    Android
24 条回复
vonsy
2016-04-15 11:29:01 +08:00
签名是根据传递的参数做的 md5, sha1 的值吧
如果是 apk, 你解压缩,将 class 反编译, 分析分析估计能找到签名的生成规则
daiv
2016-04-15 11:38:31 +08:00
@vonsy 肯定是根据 参数做的,长度一致 344. 对 java 不是很熟悉,硬着头皮试试。
hiboshi
2016-04-15 11:45:10 +08:00
反编译他们的 APK ,然后获取他们的 token 和加密规则
lianz
2016-04-15 11:50:24 +08:00
说真的,不懂你在说什么,不懂你到底想要获取什么,不懂你说的数据和 Signature 有什么关联。
daiv
2016-04-15 11:52:54 +08:00
@lianz post 的时候,有参数吧,其中一个参数是签名。 如果签名不对,就会不能得到数据。 而且参数改变,签名就改变。 这下清楚了吧。 楼上 2 个兄弟 都清楚呀。
lianz
2016-04-15 12:04:07 +08:00
@daiv 我没看出来他们清楚了。我认为他们完全没仔细看你的问题描述。

1. 哪里来的数据?是 App 内所有数据,还是每次点击后 POST 的数据?(我的理解是 App 往服务器 POST 的单次数据)
2. 你想从哪里获取数据?在服务端获取 app 提交的数据?还是抓包方式拦截获取?(不懂,从你的描述里看不出来)
3. 签名一般是用来确保数据准确性的(防篡改),并不会影响获取到数据本身,除非数据本身是加密传输的。
4. 你是想连续全自动获取数据,还是只要获取某一次提交的数据?
JiShuTui
2016-04-15 12:11:17 +08:00
@lianz 你钻牛角尖了,事实上,这里回复的人,除了你,其他人都看懂了
楼主想要获取别人 APP 从服务器得到的数据,而这些数据是由 APP 发送 API 请求得到的,请求中有 Signature 来确保请求的确来自于 APP ,而不是第三方。
JiShuTui
2016-04-15 12:12:42 +08:00
@lianz 这里重点是“他人”的 APP ,所以其实相当于“偷”数据了。
不过现在大家技术人偷数据不叫偷,叫抓取数据,叫爬虫爬数据。
blacklee
2016-04-15 12:40:30 +08:00
反编译代码。
一般都是把请求参数做一个字典排序,然后加上特定的 key 作为 seed 进行 md5 或 sha1 编码。
这种事能不能成也要看运气。
eoo
2016-04-15 12:47:38 +08:00
我抓了快手的 APP 好像也是要签名的
bzzhou
2016-04-15 12:57:04 +08:00
这东西,得看规模;如果很少的数据量,觉得通过模拟器来点击,然后采集挺好的;如果规模大,再去分析请求协议。
gao117348222
2016-04-15 13:19:32 +08:00
直接反编译代码
daiv
2016-04-15 13:42:29 +08:00
@lianz 谢谢你的认真、细致。 虽然我没有说的特别详细,但是好像大家都清楚了。

@JiShuTui 谢谢你,我是个人用的,如果是商用,都是去源头自己抓了。

@bzzhou 模拟器点击 都有点麻烦了。我现场时编译
daiv
2016-04-15 14:14:22 +08:00
@bzzhou 你有推荐的模拟器点击软件么
coderfox
2016-04-15 14:32:10 +08:00
反向客户端拿算法和手段。

一般算法就是 HMAC-SHA1 、 HMAC-SHA256 之类的。

密钥的话,就反编译客户端。之前刚做了一个手游的,在 so 文件里, IDA 能拿到。
fzinfz
2016-04-15 15:04:40 +08:00
r00tt
2016-04-15 15:38:38 +08:00
可以直接反编译看实现,也可以写个 xposed 模块去 hook
lianz
2016-04-15 18:36:22 +08:00
得,我懂了,就是模拟客户端扒数据。
这个没什么好办法,反编译看看算法吧。
sunchen
2016-04-15 20:20:32 +08:00
基本上大部分就是参数排个序拼成字符串加点盐然后 md5 下,徒手拆 app ,找到那个签名函数了。今天跟糯米安卓,发现最后他们用 c 实现的加密模块。 WTF 。
des
2016-04-15 21:17:06 +08:00
@sunchen 有点安全意识的都会用 c 吧?高级的还有反调试

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/271265

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX