中控智慧推送SDK

问题描述 投票:0回答:2

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

c# .net sdk device zkteco
2个回答
8
投票

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

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

例如中控智慧设备型号 MB560-VL 发送这样的请求

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

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

OK 

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

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

用户注册

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

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

如您所见,您使用 ' ' 作为信息分隔符解析此字符串

  • 第一个整数是用户密码
  • 第二部分是日期和时间
  • 第三部分是 如果 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')

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


0
投票

我正在尝试在 Apache 服务器和 PHP 之上实现一个简单的解决方案。

我对读者进行考勤记录时,读者(iface900)发送的信息有疑问。

您有更多相关信息吗?

谢谢你

© www.soinside.com 2019 - 2024. All rights reserved.