.net ZKTeco推送SDK

y4ekin9u  于 2023-10-21  发布在  .NET
关注(0)|答案(1)|浏览(151)

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

h5qlskok

h5qlskok1#

我花了一个月的时间才发现,对于PUSH SDK和ADMS,显然ZKTeco不愿意分享。所以我不得不另辟蹊径这是我已经实现的解决方案,它工作正常。

Push SDK只是ZKTeco设备向Bioserver发出的HTTP请求。您可以使用像Wireshark这样的工具来扫描您的设备发出的HTTP请求,并在您自己的服务器上实现相同的请求/响应。
对于重复,ZKTeco设备型号MB 560-VL发送如下请求

GET http://[SERVER-IP:PORT]/iclock/getrequest?SN=XXXXXXXXXX

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

OK

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

  • 请注意,您的ZkTeco设备应该有ADMS支持,这样您将首先在设备上配置SERVER-IP和PORT(请参阅ZKTeco website上的官方设备文档)*
    用户注册

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

POST /iclock/cdata?SN=XXXXXXXXXX&table=OPERLOG&Stamp=9999

HTTP缓冲区中的用户信息。就像这个

PIN=2\tName=Johny Deep\tPri=0\tPasswd=\tCard=\tGrp=1\tTZ=0000000100000000\tVerify=0\tViceCard=\tStartDatetime=0\tEndDatetime=0\n

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

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

POST /iclock/cdata?SN=XXXXXXXXXX&table=ATTLOG&Stamp=9999

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

2\t2022-07-12 16:00:20\t1\t15\t\t0\t0\t\t\t43\n

正如你所看到的,你解析这个字符串时用“\t '*”作为信息的分隔符

  • 第一个整数是 User-PIN
  • 第二部分是 * 日期和时间 *,
  • 第三部分是 clock-in if value==0clock-out if 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')

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

相关问题