V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
u3985567
V2EX  ›  问与答

charles 爬虫贝壳短信 API 接口迷惑

  •  
  •   u3985567 · 2019-08-13 15:03:44 +08:00 · 2043 次点击
    这是一个创建于 1930 天前的主题,其中的信息可能已经有所发展或是发生改变。

    curl -H 'Host: app.api.ke.com' -H 'Authorization: MjAxODAxMTFfaW9zOjc1YzNiY2MzMWYwNzg5MzBjNWNiYjZmMDJmOWVmZTQxYzRiMWE0Y2Q=' -H 'Lianjia-Im-Version: 1' -H 'Accept: /' -H 'Lianjia-Version: 2.14.0' -H 'Device-Info: scale=3.0;screenwidth=1125;screenheight=2436' -H 'Lianjia-Timestamp: 1565679371.828276' -H 'Accept-Language: zh-Hans-CN;q=1' -H 'Referer: profile' -H 'extension: lj_idfa=C95766CA-1F9D-4C0F-A587-559BFD6CFD15&lj_idfv=9E0D1ED3-94E2-44E9-8F33-5A99F541D740&lj_device_id_ios=1BF89208-F7BC-4E9B-A66A-04D4F57ED3A5&lj_keychain_id=7C23282D-08D3-4039-9364-003DA5B3ACB4&lj_duid=D21zC1MRpc/pnWifBLXRSU1jniDxchicq1Xn79RBiTsHYXe3' -H 'Page-Schema: register%2Ffastlogin' -H 'Lianjia-City-Id: 330100' -H 'User-Agent: Beike 2.14.0;iPhone10,3;iOS 12.1.4;' -H 'Cookie: lianjia_uuid=1BF89208-F7BC-4E9B-A66A-04D4F57ED3A5; lianjia_ssid=7EA763B1-D19F-47F3-97E4-1EAA3AD1224D; lianjia_udid=7C23282D-08D3-4039-9364-003DA5B3ACB4' -H 'Lianjia-Device-Id: 7C23282D-08D3-4039-9364-003DA5B3ACB4' --compressed 'https://app.api.ke.com/user/account/sendverifycodeforbindmobilev2?mobile_phone_no=13758218569&request_ts=1565679371'

    charles 爬到的 curl 地址,再次访问显示操作成功,但是只要修改手机号 mobile_phone_no 或者时间戳 request_ts 立马返回无效请求,有没有大神知道这个后台是怎么校验的

    7 条回复    2020-01-13 09:13:25 +08:00
    python35
        1
    python35  
       2019-08-13 15:27:44 +08:00
    有一个 Http 头字段是 Authorization,base64 解开是 20180111_ios:75c3bcc31f078930c5cbb6f02f9efe41c4b1a4cd,冒号后面的部分长度为 40 位,猜测是包含手机号和 Ts 的 sha1 摘要,可能加了盐,作为参数的校验值,防止参数被篡改
    hkitdog
        2
    hkitdog  
       2019-08-13 15:34:23 +08:00 via iPhone
    MjAxODAxMTFfaW9zOjc1YzNiY2MzMWYwNzg5MzBjNWNiYjZmMDJmOWVmZTQxYzRiMWE0Y2Q
    Decode 后是一个魔改过的签名算法,之前搞过安卓版本,签名算法写在了加固过的 so...最后就没搞了
    u3985567
        3
    u3985567  
    OP
       2019-08-13 15:49:20 +08:00
    @python35 大佬,贝壳这种骚操作是不是可以替代图形验证码 防止短信攻击了
    daquandiao2
        4
    daquandiao2  
       2019-08-13 16:07:15 +08:00
    接口签名防篡改 请求参数进行某种 hash 算法,服务端会校验签名,你篡改了肯定不会通过,除非你逆向 app,知道如何进行 hash 的,然后自己构造
    locoz
        5
    locoz  
       2019-08-13 16:09:30 +08:00
    里面有加密参数,需要逆向 APP,我没见过这个 APP 所以不清楚具体难度如何,你可以先拿 inspeckage 试试,不会用的话可以翻一下我之前写的文章,里面有个 APP 加密参数破解 [秒破篇] 。
    python35
        6
    python35  
       2019-08-13 16:11:13 +08:00
    如二楼所说,在 Android 上面一般计算过程放在加固的 so 里面,在 ios 里面应该也差不多,破解难度较高,我以前写应用的时候也会这么干,设置一个参数作为校验,并且会加上一个时间戳参数 ts 校验,如果服务器的时间戳与客户端得时间戳相差过大则 拒绝这个请求来防止参数重放攻击
    teacherxiong
        7
    teacherxiong  
       2020-01-13 09:13:25 +08:00
    我现在正在做这个,想请教你几个问题,有时间还请回复下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2957 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 13:19 · PVG 21:19 · LAX 05:19 · JFK 08:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.