V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
daiv
V2EX  ›  Android

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

  •  1
     
  •   daiv · 2016-04-15 11:26:04 +08:00 · 13694 次点击
    这是一个创建于 3178 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个数据 APP ,想要获取数据,可是用抓包软件分析后,发现 每次 POST 的时候 headers 中,都有不同 Signature 。

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


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


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

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

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

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

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

    密钥的话,就反编译客户端。之前刚做了一个手游的,在 so 文件里, IDA 能拿到。
    fzinfz
        16
    fzinfz  
       2016-04-15 15:04:40 +08:00
    r00tt
        17
    r00tt  
       2016-04-15 15:38:38 +08:00
    可以直接反编译看实现,也可以写个 xposed 模块去 hook
    lianz
        18
    lianz  
       2016-04-15 18:36:22 +08:00
    得,我懂了,就是模拟客户端扒数据。
    这个没什么好办法,反编译看看算法吧。
    sunchen
        19
    sunchen  
       2016-04-15 20:20:32 +08:00
    基本上大部分就是参数排个序拼成字符串加点盐然后 md5 下,徒手拆 app ,找到那个签名函数了。今天跟糯米安卓,发现最后他们用 c 实现的加密模块。 WTF 。
    des
        20
    des  
       2016-04-15 21:17:06 +08:00 via Android
    @sunchen 有点安全意识的都会用 c 吧?高级的还有反调试
    Ervin
        21
    Ervin  
       2016-04-16 12:56:28 +08:00
    每个 API 的 sign 还不同?我们后台给我们的所有接口都是同一个 md5 加密的字符串
    TakanashiAzusa
        22
    TakanashiAzusa  
       2016-04-16 13:35:59 +08:00 via Android
    @coderfox 其实我也想弄某个手游,不过这方面实在不了解,想问下有简单的入门教程么?
    nekocode
        23
    nekocode  
       2016-04-16 16:51:42 +08:00
    coderfox
        24
    coderfox  
       2016-04-17 10:29:00 +08:00 via Android
    @TakanashiAzusa 这个还真没有。

    我给你讲讲我的思路吧。这个签名在 请求头里,我用 IDA 定位到了输出格式化语句,然后在上下用 Presdocode 找常量,同一个函数里找到的。

    还可以大体确定了签名算法,用算法里常量查签名函数,然后查函数的引用来找到密钥参数。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2505 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 15:30 · PVG 23:30 · LAX 07:30 · JFK 10:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.