中控智慧推送SDK

lid*_*ica 1 .net c# sdk device zkteco

我是 ZKteco 设备的新手!我正在使用 Zkteco 设备。我有一个 Zkteco 设备,并且下载了一个独立的 SDK,但该 SDK 不会触发事件(例如 OnVerify 或 OnAttTransaction)。所以,我在一些文章中看到,我需要使用Push SDk,但我找不到它。

Her*_*eng 12

我花了一个月的时间才发现,对于那个PUSH SDK和ADMS,显然中控智慧并没有公开分享。所以我不得不尝试以其他方式进行。这是我实施的解决方案,它工作正常。

推送SDK只是中控智慧设备向Bioserver发出的HTTP请求。您可以使用Wireshark等工具扫描您的设备发出的 HTTP 请求,并在您自己的服务器上实现相同的请求/响应。

例如,ZKTeco 设备型号 MB560-VL 发送这样的请求

GET http://[SERVER-IP:PORT]/iclock/getrequest?SN=XXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)

如果像 BioTime 软件一样,您的服务器只需发送

OK 
Run Code Online (Sandbox Code Playgroud)

作为text/plain的响应,您的设备会将您的服务器视为“BioTime”

请注意,您的中控科技设备应具有 ADMS 支持,以便您首先在设备上配置 SERVER-IP 和 PORT(请参阅中控科技网站上的官方设备文档)

用户注册

当用户在设备上注册时,设备会发送此请求

POST /iclock/cdata?SN=XXXXXXXXXX&table=OPERLOG&Stamp=9999
Run Code Online (Sandbox Code Playgroud)

HTTP 缓冲区上的用户信息。像这样的东西

PIN=2\tName=Johny Deep\tPri=0\tPasswd=\tCard=\tGrp=1\tTZ=0000000100000000\tVerify=0\tViceCard=\tStartDatetime=0\tEndDatetime=0\n
Run Code Online (Sandbox Code Playgroud)

您的服务器应该只解析此数据并响应此请求

用户日志(clock_in/clock_out) 设备请求

POST /iclock/cdata?SN=XXXXXXXXXX&table=ATTLOG&Stamp=9999
Run Code Online (Sandbox Code Playgroud)

设备在 HTTP 数据缓冲区上发送的数据如下所示

2\t2022-07-12 16:00:20\t1\t15\t\t0\t0\t\t\t43\n
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,您使用'\t'作为信息分隔符来解析该字符串

  • 第一个整数是User-PIN
  • 第二部分是日期和时间
  • 第三部分是如果 value==0 则打卡如果 value==1 则打卡下班

下面是一个用Python实现的例子

@http.route('/iclock/getrequest', type='http', auth="public", csrf=False)
def zk_bio_device_ping(request):
    print("----------DEVICE PING-----------")
    print(request.GET)
    return HttpResponse("OK", content_type='text/plain')

@http.route('/iclock/getrequest', type='http', auth="public", csrf=False)
def zk_bio_device_push(request):
    print("----------DEVICE SEND DATA----------")
    print(request.GET) 
    print(request.body.decode('utf-8'))   
    return HttpResponse("OK", content_type='text/plain')
Run Code Online (Sandbox Code Playgroud)

设备不使用任何身份验证与服务器通信!我很确定这是一个很大的安全问题。

  • “安全问题”是中控智慧的标志。 (2认同)