如果获取 APP 中的数据?(每次 POST 的时候 headers 中,都有不同 Signature。) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
daiv

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

  •  1
     
  •   daiv 2016 年 4 月 15 日 17142 次点击
    这是一个创建于 3661 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个数据 APP ,想要获取数据,可是用抓包软件分析后,发现 每次 POST 的时候 headers 中,都有不同 Signature 。

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


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


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

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

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

    @bzzhou 模拟器点击 都有点麻烦了。我现场时编译
    daiv
        14
    daiv  
    OP
       2016 年 4 月 15 日
    @bzzhou 你有推荐的模拟器点击软件么
    coderfox
        15
    coderfox  
       2016 年 4 月 15 日 via Android
    反向客户端拿算法和手段。

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

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

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

    还可以大体确定了签名算法,用算法里常量查签名函数,然后查函数的引用来找到密钥参数。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2879 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 76ms UTC 13:08 PVG 21:08 LAX 06:08 JFK 09:08
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86