使用scapy制作udp扫描器时始终返回None

发布于 2022-09-04 23:01:29 字数 1377 浏览 24 评论 0

初学python,之前在Freebuf上找到了一个UDP端口扫描的代码:

#! /usr/bin/python

import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import *

dst_ip = "10.0.0.1"
src_port = RandShort()
dst_port=53
dst_timeout=10

def udp_scan(dst_ip,dst_port,dst_timeout):
    udp_scan_resp = sr1(IP(dst=dst_ip)/UDP(dport=dst_port),timeout=dst_timeout)
    if (str(type(udp_scan_resp))==""):
        retrans = []
        for count in range(0,3):
            retrans.append(sr1(IP(dst=dst_ip)/UDP(dport=dst_port),timeout=dst_timeout))
        for item in retrans:
            if (str(type(item))!=""):
                udp_scan(dst_ip,dst_port,dst_timeout)
        return "Open|Filtered"
    elif (udp_scan_resp.haslayer(UDP)):
        return "Open"
    elif(udp_scan_resp.haslayer(ICMP)):
        if(int(udp_scan_resp.getlayer(ICMP).type)==3 and int(udp_scan_resp.getlayer(ICMP).code)==3):
            return "Closed"
        elif(int(udp_scan_resp.getlayer(ICMP).type)==3 and int(udp_scan_resp.getlayer(ICMP).code) in [1,2,9,10,13]):
            return "Filtered"

print udp_scan(dst_ip,dst_port,dst_timeout)

这段代码在实际测试时发现一直在循环扫描,发现udp_scan_resp中的值始终都是udp(不管目标机器的udp端口是否开放,这个变量存储的返回值始终都是None),在网上找了很多udp端口扫描的脚本都是一样都在这里返回了none,来请问各位这里到底应该怎么使用?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

烟酉 2022-09-11 23:01:30

明白了,我是在BT5虚机对实机进行测试的,网卡是同一块,测试其他机器就没问题了

未央 2022-09-11 23:01:30

一直在循环扫描 vs. 发现udp_scan_resp中的值始终都是udp
这2个怎么可能同时出现,一直在循环扫描,肯定是这个条件成立了啊,if (str(type(udp_scan_resp))==""):

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文