如何用python方法检测UDP端口
发布网友
发布时间:2022-04-22 23:41
我来回答
共1个回答
热心网友
时间:2022-04-18 06:34
如何用python方法检测UDP端口,首先要了解什么是UDP端口及作用。个人理解是:UDP端口是含有网络服务必须的源端口和目的端口信息,用以建立和实现网络传输服务。
至于如何用python方法检测UDP端口呢?参考下边这段网友提供的代码吧。
socket、threading、time、Queue这些是要用到的python方法模块。
import socket
import threading
import time
import struct
import Queue
queue = Queue.Queue()
def udp_sender(ip,port):
try:
ADDR = (ip,port)
sock_udp = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
sock_udp.sendto("abcd...",ADDR)
sock_udp.close()
except:
pass
def icmp_receiver(ip,port):
icmp = socket.getprotobyname("icmp")
try:
sock_icmp = socket.socket(socket.AF_INET, socket.SOCK_RAW, icmp)
except socket.error, (errno, msg):
if errno == 1:
# Operation not permitted
msg = msg + (
" - Note that ICMP messages can only be sent from processes"
" running as root."
)
raise socket.error(msg)
raise # raise the original error
sock_icmp.settimeout(3)
try:
recPacket,addr = sock_icmp.recvfrom(64)
except:
queue.put(True)
return
icmpHeader = recPacket[20:28]
icmpPort = int(recPacket.encode('hex')[100:104],16)
head_type, code, checksum, packetID, sequence = struct.unpack(
"bbHHh", icmpHeader
)
sock_icmp.close()
if code == 3 and icmpPort == port and addr[0] == ip:
queue.put(False)
return
#
def checker_udp(ip,port):
thread_udp = threading.Thread(target=udp_sender,args=(ip,port))
thread_icmp = threading.Thread(target=icmp_receiver,args=(ip,port))
thread_udp.daemon= True
thread_icmp.daemon = True
thread_icmp.start()
time.sleep(0.1)
thread_udp.start()
thread_icmp.join()
thread_udp.join()
return queue.get(False)
if __name__ == '__main__':
import sys
print checker_udp(sys.argv[1],int(sys.argv[2]))
如何用python方法检测UDP端口
socket、threading、time、Queue这些是要用到的python方法模块。import socketimport threadingimport timeimport structimport Queue queue = Queue.Queue() def udp_sender(ip,port): try: ADDR = (ip,port) sock_udp = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) sock_udp.sendt...
python 网络编程——udp
使用UDP进行通信主要涉及发送与接收消息。通过创建Socket、绑定端口、发送/接收数据,最终关闭Socket这一系列步骤实现消息的交互。收消息时,我们通常使用sendto()函数,编码数据为utf-8格式,确保接收端正确显示。编码方法为字符串.encode('utf-8'),解码则使用.decode('utf-8')。在Windows系统中,发送数...
python设计UDP通信时,recvfrom()中的参数是什么意思
socket.recvfrom(bufsize[, flags])Receive data from the socket. The return value is a pair (bytes, address) where bytes is a bytes object representing the data received and address is the address of the socket sending the data. See the Unix manual page recv(2) for the meaning...
为什么使用Python发送UDP数据,发送的时候使用的却是QUIC协议
1. 因为目标端口是 80 端口。Wireshark 的 QUIC filter 仅仅就是 udp.port == 80 || udp.port == 443 2. 不要相信 Wireshark 的协议分析,因为 dissect 经常会出现偏差。
详解python并发获取snmp信息及性能测试方法
python & snmp用python获取snmp信息有多个现成的库可以使用,其中比较常用的是netsnmp和pysnmp两个库。网上有较多的关于两个库的例子。本文重点在于如何并发的获取snmp的数据,即同时获取多台机器的snmp信息。netsnmp先说netsnmp。python的netsnmp,其实是来自于net-snmp包。python通过一个c文件调用net-snmp的接口获取数据...
python怎么建立socket服务端
首先先建立一个python文件,命名为 socket_server1.py2下面是相关的步骤图.3先导入相关的模块.并且定义相关的主机及端口.4完整的socket_server1.py文件.5设置好之后,通过命令提示符测试(进行测试.开始---运行---cmd)6先使用python 运行下刚刚的那个文件. >>python socket_server1.py7客户端直接使用telnet代替测试...
如何用 python 搭建一个邮件服务器
首先是服务器端,我们使用bind()方法来赋予socket以固定的地址和端口,并使用listen()方法来被动的监听该端口。当有客户尝试用connect()方法连接的时候,服务器使用accept()接受连接,从而建立一个连接的socket:socket.socket()创建一个socket对象,并说明socket使用的是IPv4(AF_INET,IP version 4)和TCP协议(SOCK_STREAM...
如何通过Python构造一个DNS查询包
可以尝试以下步骤:ping一个域名,用wireshark抓一个DNS的query,看看各个字段分别是什么值;用python的struct将这些字段按顺序pack成二进制数据;用python的socket将构造好的数据发到DNS服务器UDP的53号端口,本地端口可以自行指定;用python的socket从buffer中读取server返回的数据;用python的struct将二进制...
python保存udp报文到文件
方法是python3读取文件的函数file.read(size),已经自动帮我们做了缓存机制,所以我们可以直接进行读取。
同一个udp端口能不能绑多次
这个端口不能绑定多次。查询博客园信息可知,python的socket的通讯流程服务端在创建socket对象后,绑定ip地址address和端口port,使用bind方法,ipv4地址为一个二元组,需注意的是一个udp端口只能被绑定一次,因此同一个udp端口能不能绑多次。