首页 快递行业资讯 【逆向事例】某快递官网滑块

【逆向事例】某快递官网滑块

                                           免责声明 01 — 逆向方针 最最最最简略的滑块入门事例: aHR0cDovL3lkZ3cue…

                                          

免责声明





01

逆向方针


最最最最简略滑块入门事例:

aHR0cDovL3lkZ3cueXVuZGFzeXMuY29tOjMxNjIwL3ZpZXcvenhmdXd1L3NmYXN0Z29vZC5odG1s

02



抓包剖析

输入一个快递单号查询会呈现滑块

03



逆向进程

简略剖析下触发滑块验证的快递查询接口

在触发滑块呈现后,会呈现两个接口,两个接口的恳求参数都相同,仅仅url不同,第一个应该是提交滑块类型

      
        http://*/api/order.record/captcha_ty
      
    

第二个依据回来成果看,便是获取滑块的布景等信息

      
        http://*/api/order.record/captcha
      
    

有big  small 以及Y轴等数据


接下来看两次恳求都有相同的加密参数

这种比较特别的加密参数randomStr,直接查找就完事了

      
        var randomStr = Math.random().toString(36).substr(2);
      
      
        var signature = md5(sha1(randomStr + token + timeStamp)).toUpperCase();
      
    

首要randomStr是一个随机字符串,咱们能够挑选生成它也能够写死,这儿我就不麻烦了,直接写死。

再来看signature,它是一个md5包裹sha1的加密,参数为:

刚刚的随机字符串 + token = "API" + 当时10位时刻戳

完成:

      
        import hashlib
      
      
        import time
      
      
        
          
def get_sign(): token = "API" randomStr = "6nyfb48a52x" timeStamp = str(int(time.time())) signature_sha1 = hashlib.sha1((randomStr + token + timeStamp).encode("utf8")).hexdigest() signature_md5 = hashlib.md5(signature_sha1.encode("utf8")).hexdigest().upper() return randomStr, timeStamp, signature_md5

恳求:

然后剖析滑动滑块的进程

主要看接口提交的参数

      
        params = {
      
      
            "timeStamp": "1667532117",
      
      
            "randomStr": "irecvpkunl",
      
      
            "signature": "4D3B543EF9BED59D4EB1AED248E2BE0D",
      
      
            "x": "182",
      
      
            "y": "87",
      
      
            "tm": "432309370372169",
      
      
            "wid": "1"
      
      
        }
      
    

前三个参数是上面剖析过的,y是滑块信息里边回来的,tm是咱们查的订单号

所以这儿面只要x是需求咱们剖析的了

依据x盲猜是滑动的间隔。

辨认滑块间隔:

如同辨认间隔也没啥需求讲的,就直接用的是开源的图片辨认东西:ddddocr(https://github.com/sml2h3/ddddocr),我这边可能是用法不对辨认率并不高,三次才会有一次经过。

      
            if response_b.get("code") == 200:
      
      
                data = response_b.get("data")
      
      
                y = data.get("y")
      
      
                big = data.get("big")
      
      
                small = data.get("small")
      
      
                a = base64.b64decode(big)
      
      
                b = base64.b64decode(small)
      
      
                aa = open("back.jpg", "wb")
      
      
                aa.write(a)
      
      
                bb = open("slid.jpg", "wb")
      
      
                bb.write(b)
      
      
                orc = ddddocr.DdddOcr(det=False, ocr=False, show_ad=False)
      
      
                res = orc.slide_match(b, a)
      
      
                return res['target'][0], y
      
    

最终拿着x y提交恳求就ok了

04



算法复原

05



概括总结

 

 

本文来自网络,不代表快递资讯网立场。转载请注明出处: http://www.llaiot.com/express-industry-information/1829.html
上一篇
下一篇

为您推荐

返回顶部