【Python 代码】类似SADPTool工具,搜索海康设备
?
海康設備搜索器搜索協議解析
?參考:海康設備搜索器搜索協議解析_凹凸慢的水博客的技術博客_51CTO博客
?
vEthernet 可能會影響搜索,可以禁用。?
?代碼:
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') # 創建UDP socket s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) # 允許端口復用 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # 綁定監聽多播數據包的端口 s.bind((ANY, PORT)) # 聲明該socket為多播類型 s.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 255) # 加入多播組,組地址由第三個參數制定 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' '''相關鏈接:
PyQt5 實現類似海康的設備搜索工具_文若書生的博客-CSDN博客簡述 使用IP地址組播技術,實現海康的設備搜索功能,只要設備接入局域網就能夠被搜索到。效果圖.功能代碼: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發送組播數據_python3通過udp實現組播數據的發送和接收操作_方2郭的博客-CSDN博客本文主要通過對海康攝像頭進行抓包,模擬發送了udp包,并抓取攝像頭返回的數據包,解析并提取相關信息。通過抓包發現,海康攝像頭發送、接收數據使用udp協議,后來比較發現,使用python模擬起來比較簡單。由于攝像頭內置了udp協議的server端程序,本文主要使用python模擬客戶端發送udp數據包。客戶端代碼import socketimport reANY = "0.0.0.0"DES_IP ...https://blog.csdn.net/weixin_35763513/article/details/112894077
總結
以上是生活随笔為你收集整理的【Python 代码】类似SADPTool工具,搜索海康设备的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2019 DDCTF 部分writeup
- 下一篇: python --条件判断和语句控制