【Python 代码】类似SADPTool工具,搜索海康设备
?
海康設(shè)備搜索器搜索協(xié)議解析
?參考:海康設(shè)備搜索器搜索協(xié)議解析_凹凸慢的水博客的技術(shù)博客_51CTO博客
?
vEthernet 可能會(huì)影響搜索,可以禁用。?
?代碼:
import socket import re import uuiddef getUUID():return (str(uuid.uuid4())).upper()ANY = "0.0.0.0" DES_IP = "239.255.255.250" PORT = 37020 # xml_str = b'<?xml version="1.0" encoding="utf-8"?><Probe><Uuid>B2D5D4D2-808C-40F6-87CD-694C05C2B274</Uuid><Types>inquiry</Types></Probe> ' xml_str = f'<?xml version="1.0" encoding="utf-8"?><Probe><Uuid>{getUUID()}</Uuid><Types>inquiry</Types></Probe>' xml_str=bytes(xml_str,encoding='utf-8') # 創(chuàng)建UDP socket s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) # 允許端口復(fù)用 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # 綁定監(jiān)聽(tīng)多播數(shù)據(jù)包的端口 s.bind((ANY, PORT)) # 聲明該socket為多播類(lèi)型 s.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 255) # 加入多播組,組地址由第三個(gè)參數(shù)制定 s.setsockopt(socket.IPPROTO_IP,socket.IP_ADD_MEMBERSHIP,socket.inet_aton(DES_IP) + socket.inet_aton(ANY) ) s.setblocking(False) s.sendto(xml_str, (DES_IP, PORT)) while True:try:data, address = s.recvfrom(2048)except Exception as e:# print(e)passelse:print(address)print(data)try:IPv4 = re.search(re.compile(r"<IPv4Address>(.*?)</IPv4Address>", re.S), str(data))[1]MAC = re.search(re.compile(r"<MAC>(.*?)</MAC>", re.S), str(data))[1]DeviceDescription = re.search(re.compile(r"<DeviceDescription>(.*?)</DeviceDescription>", re.S), str(data))[1]except TypeError:passelse:# print(data)print("IPv4: {}".format(IPv4))print("MAC: {}".format(MAC))print("DeviceDescription:{}".format(DeviceDescription))''' b'<?xml version="1.0" encoding="UTF-8"?> \r\n<ProbeMatch> <Uuid>BC06ADDD-2934-4B51-8246-3604E13B0A83</Uuid>\r\n <Types>inquiry</Types>\r\n <DeviceType>147256</DeviceType>\r\n <DeviceDescription>DS-2CD3T86FWDA4-LS</DeviceDescription>\r\n <DeviceSN>DS-2CD3T86FWDA4-LS20220517AACHJ90521185</DeviceSN>\r\n <CommandPort>8000</CommandPort>\r\n <HttpPort>80</HttpPort>\r\n <MAC>80-7c-62-b3-53-85</MAC>\r\n <IPv4Address>192.168.0.64</IPv4Address>\r\n <IPv4SubnetMask>255.255.255.0</IPv4SubnetMask>\r\n <IPv4Gateway>192.168.0.1</IPv4Gateway>\r\n <IPv6Address>::</IPv6Address>\r\n <IPv6Gateway>::</IPv6Gateway>\r\n <IPv6MaskLen>64</IPv6MaskLen>\r\n <DHCP>false</DHCP>\r\ <AnalogChannelNum>0</AnalogChannelNum>\r\n <DigitalChannelNum>1</DigitalChannelNum>\r\n <SoftwareVersion>V5.7.1build 220309</SoftwareVersion>\r\n <DSPVersion>V7.3 build 211201</DSPVersion>\r\n <BootTime>2022-07-09 09:07:09</BootTime>\r\n <Encrypt>true</Encrypt>\r\n <ResetAbility>false</ResetAbility>\r\n <DiskNumber>1</DiskNumber>\r\n <Activated>true</Activated>\r\n <PasswordResetAbility>true</PasswordResetAbility>\r\n <PasswordResetModeSecond>true</PasswordResetModeSecond>\r\n <SupportSecurityQuestion>true</SupportSecurityQuestion>\r\n <SupportHCPlatform>true</SupportHCPlatform>\r\n <HCPlatformEnable>true</HCPlatformEnable>\r\n <IsModifyVerificationCode>true</IsModifyVerificationCode>\r\n <Salt>f23c32b6630844732d6af341e3c32e0a8d11ec9e1d721a845fdc55397818374c</Salt>\r\n <DeviceLock>flase</DeviceLock>\r\n <SDKOverTLSPort>8443</SDKOverTLSPort>\r\n <SDKServerStatus>true</SDKServerStatus>\r\n <SDKOverTLSServerStatus>true</SDKOverTLSServerStatus>\r\n <SupportMailBox>true</SupportMailBox>\r\n <supportEzvizUnbind>true</supportEzvizUnbind>\r\n <codeEncrypt>true</codeEncrypt>\r\n </ProbeMatch>\r\n' '''相關(guān)鏈接:
PyQt5 實(shí)現(xiàn)類(lèi)似海康的設(shè)備搜索工具_(dá)文若書(shū)生的博客-CSDN博客簡(jiǎn)述 使用IP地址組播技術(shù),實(shí)現(xiàn)海康的設(shè)備搜索功能,只要設(shè)備接入局域網(wǎng)就能夠被搜索到。效果圖.功能代碼:1.scan_device_ui.py 布局文件# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'scan_device.ui'## Created by: PyQt5 UI code generator 5.15.2## WARNING: Any...https://blog.csdn.net/ZHOUYONGXYZ/article/details/120223188?python socket發(fā)送組播數(shù)據(jù)_python3通過(guò)udp實(shí)現(xiàn)組播數(shù)據(jù)的發(fā)送和接收操作_方2郭的博客-CSDN博客本文主要通過(guò)對(duì)海康攝像頭進(jìn)行抓包,模擬發(fā)送了udp包,并抓取攝像頭返回的數(shù)據(jù)包,解析并提取相關(guān)信息。通過(guò)抓包發(fā)現(xiàn),海康攝像頭發(fā)送、接收數(shù)據(jù)使用udp協(xié)議,后來(lái)比較發(fā)現(xiàn),使用python模擬起來(lái)比較簡(jiǎn)單。由于攝像頭內(nèi)置了udp協(xié)議的server端程序,本文主要使用python模擬客戶端發(fā)送udp數(shù)據(jù)包。客戶端代碼import socketimport reANY = "0.0.0.0"DES_IP ...https://blog.csdn.net/weixin_35763513/article/details/112894077
總結(jié)
以上是生活随笔為你收集整理的【Python 代码】类似SADPTool工具,搜索海康设备的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2019 DDCTF 部分writeup
- 下一篇: Opencv4.5-C++ 摄像头画面镜