首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Python构建一个IP sacanner,返回活动主机的列表。仅返回一个主机

使用Python构建IP scanner,可以通过使用socket模块来实现。以下是一个示例代码,用于扫描给定IP地址范围内的活动主机,并返回一个主机的列表。

代码语言:txt
复制
import socket

def scan_ip(ip):
    try:
        # 创建一个套接字
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.settimeout(1)  # 设置套接字超时时间

        # 尝试连接IP地址的80端口(可以根据需求更改)
        result = s.connect_ex((ip, 80))

        # 如果返回0,则表示主机的80端口是开放的,即主机是活动的
        if result == 0:
            return ip

    except Exception as e:
        pass

    finally:
        s.close()  # 关闭套接字

    return None

def ip_scanner(start_ip, end_ip):
    active_hosts = []
    ip_parts = start_ip.split('.')  # 拆分IP地址的各个部分
    base_ip = ip_parts[:-1]  # IP地址的前三个部分

    # 遍历IP范围内的所有地址
    for i in range(int(ip_parts[-1]), int(end_ip.split('.')[-1])+1):
        ip = '.'.join(base_ip + [str(i)])
        active_host = scan_ip(ip)
        if active_host:
            active_hosts.append(active_host)
            break  # 返回第一个活动主机的IP地址

    return active_hosts

# 输入起始和结束IP地址范围
start_ip = '192.168.1.1'
end_ip = '192.168.1.255'

# 扫描活动主机
active_hosts = ip_scanner(start_ip, end_ip)
print(active_hosts)

以上代码使用socket模块创建套接字,并尝试连接给定IP地址的80端口。如果连接成功,则表示主机是活动的,将该IP地址添加到活动主机列表中。最后,返回一个主机的列表。请注意,代码中的超时时间可以根据需要进行调整。

这个IP scanner的应用场景包括网络管理、系统管理、安全测试等领域。对于推荐的腾讯云相关产品,可以考虑使用腾讯云的云服务器(CVM)来托管和运行Python代码。您可以参考腾讯云云服务器的产品介绍和文档:腾讯云云服务器

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

kali的Ettercap(0.8.3.1)GUI界面中文化

如果它是一个A请求,返回IP地址。如果是一个PTR请求,在文件中搜索ip并且这域名被返回(除了那些通配符)。MX请求需要一个精心准备一个特别的应答。...主机通过一个虚假的主机’mail.host’来解决并且额外的记录包含的ip地址。返回一个地址或域名来匹配。要小心这顺序。...它可能是有用的检测是否有人使用etercap find_ip搜索子网中未使用的IP地址 在目标列表中查找用户指定范围内的第一个未使用的IP地址。...您可以使用find_conn确定LAN的IP地址,然后查找IP。你必须建立主机列表才能使用这个插件,这样你就不能在非恶意模式下使用它。...首先,它会检查列表中的两个主机是否具有相同的 mac 地址。这可能意味着其中一个正在毒害我们假装是另一个。它可能会在代理 arp 环境中产生许多误报。您必须构建主机列表才能执行此检查。

1.5K20

Kali Linux 网络扫描秘籍 第二章 探索扫描(二)

演示中使用的主机当前拥有在此端口上运行的 Apache 服务。 为此,我们需要构建我们的请求的每个层级。 要构建的第一层是IP层。...将 Scapy 与 Python 结合使用,我们可以快速循环访问/ 24网络范围中的所有地址,并向每个系统上的仅一个 TCP 端口发送单个 ACK 数据包。...通过评估每个主机返回的响应,我们可以轻易输出活动 IP 地址列表。 #!...如果返回异常,脚本将会跳过。 生成的输出是活动目标 IP 地址的列表。 此脚本可以使用句号和斜杠,后跟可执行脚本的名称执行: root@KaliLinux:~# ....然后这些技术中的每一个都可以在 Python 脚本中使用,来对多个主机或地址范围执行发现。

3.5K10
  • Python——编写一个叫做find_dups的函数,其输入参数为一个整数列表,找出其中出现了两次或两次以上的值,并以集合的形式返回。

    不假思索的代码不是好代码,注重解题方式的同时,更要学会灵活应用综合技能:以下是本题涉及的其他重点知识 可以去除列表中的重复元素 使用核心方法:列表查重 字符串和列表的转化 python如何将列表中的字符串变成数字...列表转集合(去重) #核心:引入库counter计数重复 from collections import Counter #查重 def find_dups(listnumber): number...listnumber = input("输入重复的数字,通过函数去重,并筛选出重复的数字(请以空格分隔):").split() # 字符串——整数 listnumber = list...(map(int,listnumber)) #调用查重函数: #注意参数为列表传递的是地址 find_dups(listnumber) main() D:\Python_Demo...\homework_2.1\venv\Scripts\python.exe D:/Python_Demo/homework_2.1/homework_11other_02.py 输入重复的数字,通过函数去重

    1.6K10

    python模块学习----nmap模块

    安装nmap模块: pip install python_nma nmap模块说明: python-nmap是一个帮助使用nmap端口扫描器的python库。...:用于存储和访问主机扫描结果的特殊小类 PortScannerYield:通过生成器使用Python中的nmap Process:表示在单独的过程中运行的活动,应该是控制扫描进程之类的 convert_nmap_output_to_encoding...listscan(hosts='127.0.0.1'):不要扫描,但解释目标主机并返回一个主机列表 nmap_version():如果检测到返回nmap版本 scan(hosts='127.0.0.1...,则返回true,否则返回False has_udp(port):如果udp端口有info,则返回true,否则返回False hostname():返回用户记录或列表主机名的第一个主机名 hostnames...():返回主机名列表 ip(port):返回信息的IP端口 sctp(port):返回信息的sctp端口 state():返回主机状态 tcp(port):返回tcp端口的信息 >>> nm['

    1.3K10

    Kali Linux 网络扫描秘籍 第二章 探索扫描(一)

    ; 在此子网上执行 ARP 扫描,然后根据来自这些 IP 的主机的响应输出 IP 地活动址列表。...为了在我们的脚本中使用这个 IP 地址列表,我们需要在 Python 中执行一些文件处理。 工作脚本的示例如下所示: #!...此脚本还可以修改为从输入文件读取,并仅验证此文件中列出的主机是否处于活动状态。 对于以下脚本,你需要拥有 IP 地址列表的输入文件。...此操作完成后将执行脚本,并从输入的 IP 地址列表返回实时 IP 地址列表。 使用与前面讨论的相同的方式,此脚本的输出可以通过尖括号轻易重定向到输出文件。...但是,当使用网络地址值执行时,任务序列开始执行,并返回活动 IP 地址的列表。 如前面的脚本中所讨论的那样,此脚本的输出也可以重定向到文本文件,来供将来使用。

    3K30

    Graboid蠕虫分析

    攻击者入侵了一个不安全的docker守护进程,从Docker Hub中提取的恶意docker容器,从C2下载脚本和易受攻击的主机列表,并选择下一个目标来传播蠕虫。...4、worm.sh下载文件“ IP”,其中包含2000多个IP的列表。这些IP是不安全docker API的主机。...图4显示了IP文件中列出的2,034台主机的位置,其中57.4%的IP源自中国,其次是美国的13%。在恶意软件使用的15台C2服务器中,有14台是列在IP文件中,一台主机中有50多个已知漏洞。...攻击者攻击渗透了这些主机并将其用作C2服务器。 ? 蠕虫模拟 为了更好地了解蠕虫的有效性及其整体挖掘能力,我们创建了一个简单的Python程序来模拟蠕虫。...由于受感染主机上的矿工可以随机启动和停止,因此每个矿工仅在65%的时间内处于活动状态,每个采矿周期平均仅持续250秒。

    98540

    《Python黑帽子》:原始套接字和流量嗅探

    在某些情况下,你可能会使用Wireshark(http://wireshark.org)监听流量,也可能会使用基于Python的解决方案如Scapy。...在本文中,我们将使用原始套接字来访问诸如IP 和ICMP 头等底层的网络信息。在下面的例子中,我们只对IP 层和更高层感兴趣,因此我们不会去解码以太网头中的信息。...当你发送一个UDP 数据包到主机的某个关闭的UDP 端口上时,目标主机通常会返回一个ICMP 包指示目标端口不可达。...挑选一个不太可能被使用的UDP 端口来确保这种方式的有效性是必要的,为了达到最大范围的覆盖度,我们可以查探多个端口以避免正好将数据发送到活动的UDP 服务上。 为什么使用UDP 呢?...在第一个例子中,我们只需设置原始套接字嗅探器,读取一个数据包,然后退出即可。 首先,我们通过构建套接字对象对网络接口上的数据包嗅探进行必要的参数设置①。

    1.3K20

    官方博文 | Zabbix Agent自动注册

    无需引入超复杂的API脚本等,因为有一个称为Zabbix Agent活动注册的内置功能。它用于自动将主机添加到Zabbix前端。 ? 动作标签 转到配置>动作。...这是用于配置触发器的同一选项卡,但有时用户不会注意到它也可用于自动注册。 ? 有一个下拉菜单,你可以在其中将事件源从触发器切换到自动注册。 主机名 返回到CLI。...Zabbix Agent配置文件 在文件内部,有一个名为Server的参数,这是你的Zabbix服务器或 Agent的IP或DNS名称。...Agent将仅接受来自此IP或DNS名称的通信,并且通信的方向始终是从服务器到 Agent。...你可以在Hostname之后添加任何字符串,并且当 Agent执行活动 Agent注册时,它将使用指定的文本作为前端中的主机名。但是,在部署大量主机时,每个主机都需要一个唯一的主机名。

    75610

    Nmap安全扫描器

    : 任何网络侦察任务的第一步就是将一组(有时是巨大的)IP范围缩减为一组活动或有趣的主机。...这些探针的目的是征求表明IP地址实际上处于活动状态(正在由主机或网络设备使用)的响应。在许多网络上,在任何给定时间只有一小部分IP地址处于活动状态。...以下选项控制主机发现: -sL (列表扫描) 列表扫描是主机发现的一种简写形式,它仅列出指定网络中的每个主机,而不发送任何数据包到目标主机。...列表扫描是一个很好的检查,以确保您拥有适合目标的IP地址。如果主机使用您不认识的域名,则值得进一步调查以防止扫描错误的公司网络。...与列表扫描一样,将跳过正确的主机发现,但是Nmap不会停止并打印目标列表,而是继续执行请求的功能,就像每个目标IP处于活动状态一样。

    1.6K40

    Kali Linux 网络扫描秘籍 第三章 端口扫描(一)

    向僵尸主机发送另一个 SYN+ACK 封包,并求出所返回的 RST 响应中的最后的 IPID 值。如果这个值增加了 1,那么扫描目标上的端口关闭。如果增加了 2,那么扫描目标上的端口开放。...最后,应该向僵尸主机发送另一个 SYN+ACK 封包,这会返回 RST 封包并再次增加 IPID。增加 2 的 IPID 表示所有这些事件都发生了,目标端口是开放的。...我们将要使用 Scapy 操作的这种技巧是识别关闭的端口的 ICMP 不可达响应。为了向任何给定端口发送 UDP 请求,我们首先需要构建这个请求的一些层面,我们需要构建的第一层就是 IP 层。...可以使用破折号符号,并且定义最后一个 IP 段的值的范围,来扫描范围内的主机。...每个主机都被扫描来识别是否在 53 端口上运行了 DNS 服务。另一个用于扫描多个主机替代选项,就是使用 IP 地址输入列表。

    1.6K30

    Envoy架构概览(3):服务发现

    DNS结果中的每个返回的IP地址将被视为上游群集中的显式主机。这意味着如果查询返回三个IP地址,Envoy将假定集群有三个主机,并且三个主机都应该负载平衡。...但是,并不是严格考虑DNS查询的结果,而是假设它们构成整个上游集群,而逻辑DNS集群仅使用在需要启动新连接时返回的第一个IP地址。因此,单个逻辑连接池可以包含到各种不同上游主机的物理连接。...此服务发现类型适用于必须通过DNS访问的大型Web服务。这种服务通常使用循环法的DNS来返回许多不同的IP地址。通常会为每个查询返回不同的结果。...如果在这种情况下使用严格的DNS,Envoy会认为集群的成员在每个解决时间间隔期间都会发生变化,这会导致连接池,连接循环等消失。相反,使用逻辑DNS,连接保持活动状态,直到它们循环。...原始目标服务发现必须与原始目标负载均衡器一起使用。 服务发现服务(SDS) 服务发现服务是Envoy用来获取集群成员的通用REST API。 Lyft通过Python发现服务提供了一个参考实现。

    1.7K50

    代码远程执行主机命令-Paramiko入门

    Paramiko是一个Python实现的SSHv2协议的库,可以用于在远程服务器上执行命令、上传和下载文件等操作。它使用了加密算法,可以提供安全的远程访问。...由于其简单易用的API和丰富的功能,Paramiko被广泛用于自动化运维和云计算等领域。 1 使用的目的 执行远程主机脚本。 发起接口测试以后查询系统日志。...2 Paramiko 安装 使用效果图 demo类 可以看到查询需要用到的信息,主要是ip,用户名,密码,端口号 这些我们可以配置到yaml文件里面维护 3 使用yaml文件配置主机连接信息...,所以可以host配置成列表的。...大家可以根据自己实际情况在自己的项目里使用。 目前我是封装到了我的测试类里面,请求和返回之后会根据返回的报文解析关键字去主机查询日志,里面再根据json或者xml格式化输出。

    92920

    渗透测试信息收集工具篇

    工具 在进行了基本域名收集以后,如果能通过主域名得到所有子域名信息,再通过子域名查询其对应的主机 IP,这样我们能得到一个较为完整的信息。...域名对话框直接输入域名就可以进行扫描了,工具显示比较细致,有域名、解析 ip、cnd 列表、web 服务器和网站状态,这些对于一个安全测试人员,非常重要。如下操作: ? 回显示大部分主要二级域名。...主机发现的基本用法: -sL: List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。 -sn: Ping Scan 只进行主机发现,不进行端口扫描。...--system-dns: 指定使用系统的DNS服务器 --traceroute: 追踪每个路由节点 扫描局域网 192.168.80.1/24 范围内哪些 IP 的主机是活动的。...扫描局域网 192.168.80.100-200 范围内哪些 IP 的主机是活动的。 命令如下: nmap –sP 192.168.80.100-200 ?

    3.4K00

    Tello SDK 2.0使用指南(上)

    这个地方是对程序中的一些地方进行了截图 目标主机的 IP 和端口 如果我们需要向别的主机发送数据,我们需要改主机的 IP 地址和相应的端口号。...在使用 Socket 进行通信时,需要将两个信息写在一元组中,元组的第一项为目标主机 IP 地址,第二项为接受数据的端口号: targetAddr = ("192.168.0.1", 8080) ?...[(),()] 其中,IP 地址使用字符串类型,端口号使用数字类型. 绑定本机的端口 如果不绑定端口,每次使用 Socket 时都会由操作系统动态分配一个端口,我们也可以绑定为某个固定的端口。...除了使用方法外,线程模块同样提供了Thread类来处理线程,Thread类提供了以下方法: run(): 用以表示线程活动的方法。 start():启动线程活动。...这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或者抛出未处理的异常-或者是可选的超时发生。 isAlive(): 返回线程是否活动的。 getName(): 返回线程名。

    2.1K40

    一文带你了解Python Socket 编程

    前言 Socket又称为套接字,它是所有网络通信的基础。网络通信其实就是进程间的通信,Socket主要是使用IP地址,协议,端口号来标识一个进程。...('www.baidu.com') #不支持IPV6解析 socket.gethostbyname_ex('www.baidu.com') #返回三元组,(主机名,相同地址的其它可用主机名的列表,IPv4...地址列表) #网络ip地址 socket.gethostbyname(socket.getfqdn(socket.gethostname())) #将ip地址转化为主机名,返回三元组(主机名,相同地址的其它可用主机名的列表...',5434),0) #判断是否支持IPV6 socket.has_ipv6 #返回服务所使用的端口号 socket.getservbyname('https','tcp') #第一个参数为服务协议...(name) #返回网卡信息的列表(仅限于Unix) socket.if_nameindex() #32位字节存储Ip地址(序列化) socket.inet_aton('127.0.0.1') #

    44110

    IT运维面试问题总结-运维工具、开源应用(Ansible、Ceph、Docker、Apache、Nginx等)

    使用loop使管理员不必编写使用相同模块的多个任务。 复杂(嵌套)循环: with_nested键用于嵌套循环,循环在循环中运行。它需要一个包含两个或多个列表的列表。...如果一个或多个任务都调用handler程序,它将在剧中的所有其他任务完成后仅运行一次。 因为handler程序是任务,所以可以在handler程序中使用与处理任何其他任务相同的模块。...通常,handler程序用于重新启动主机和重新启动服务。 handler程序可以视为非活动任务,只有在使用notify语句显式调用时才会触发这些任务。 12、简述Ansible Block?...容器将不会虚拟出自己的网卡,不会配置独有的IP等,而是使用宿主机的IP和端口。...Flannel为每个host分配一个subnet,容器从subnet中分配IP,这些IP可以在host间路由,容器间无需使用nat和端口映射即可实现跨主机通信。

    3.7K10

    21.2 Python 使用Scapy实现端口探测

    Scapy 是一款使用纯Python编写的跨平台网络数据包操控工具,它能够处理和嗅探各种网络数据包。...21.2.2 ICMP构建与发送 首先我们先来构建并实现一个ICMP数据包,在之前的文章中笔者已经通过C语言实现了数据包的构建,当然使用C语言构建数据包是一件非常繁琐的实现,通过运用Scapy则可以使数据包的构建变得很容易...ip' 上述代码中我们已经构造了一个IP包头,接着我们还需要构造一个ICMP包头,该包头的构造可以使用ICMP()并传入两个参数,如下则是构造好的一个ICMP包头。...ICMP的探测过程,我们可以将这段代码进行组合封装实现ICMP_Ping函数,该函数只需要传入一个IP地址即可返回特定地址是否在线,同时我们使用ipaddress.ip_network则可生成一整个C段中的地址信息...TTL为1的数据包,这样到达第一个路由器的时候就已经超时了,第一个路由器就会返回一个ICMP通知,该通知包含了对端的IP地址,这样就能够记录下所经过的第一个路由器的地址。

    42710

    使用Adidnsdump转储Active Directory DNS

    DNS域传送漏洞是在黑客常用的一种漏洞攻击手段。要实现域传送漏洞,就需要一个不安全配置的DNS服务器,允许匿名用户传输所有记录并收集有关网络中主机的信息。...在大量IP地址上运行EyeWitness等发现工具通常会返回大量默认的Apache / IIS页面,因为大多数站点都配置为侦听DNS名称而不是IP地址。...因此,我认为访问AD的DNS记录非常有价值。为此我编写了一个可以转储这些DNS记录的Adidnsdump。你既可以直接在网络中的主机运行它,也可以通过SOCKS隧道利用。...令我惊讶的是,早在2013年,就有人开发出可以提取DNS记录的PowerShell脚本,但它并没有完全符合我的要求,所以我决定用Python编写一个版本,并添加一些选项来枚举比默认情况下更多的记录。...所以最好的办法是及时检测DNS查询活动的出现,通过监控大量DNS查询或启用对DNS区域列表的审计可能是一种更好的缓解措施。

    1.6K20

    网络配置信息查看命令一览表

    -j host-list 与主机列表一起的松散源路由(仅适用于 IPv4) -w timeout 等待每个回复的超时时间(以毫秒为单位) -R 跟踪往返行程路径...(仅适用于 IPv6) -S srcaddr 要使用的源地址(仅适用于 IPv6) -4 强制使用 IPv4 -6 强制使用 IPv6...: #ls命令不带参数将返回所有的地址和名称服务器的列表 ls [-a|d|t type] domain > filename -a:返回别名和正式名称 -d:将返回所有的数据 -t type:根据类型进行赛选...如果指定 inet_addr,则只显示指定计算机的 IP 地址和物理地址,如果不止一个网络接口使用 ARP,则显示每个 ARP 表的项 -d 删除 inet_addr 指定的主机,...Internet 地址,如果不存在,则使用第个适用的接口 基础实例: #1.查看和处理ARP缓存,ARP是名字解析的意思,负责把一个IP解析成一个物理性的MAC地址。

    4.3K32
    领券