利用scapy实现IP存活扫描器、端口扫描器
时间: 2024-09-27 14:17:39 浏览: 96
Scapy是一个强大的网络协议分析工具,它允许用户动态地创建和发送网络数据包,非常适合用于实现网络探测任务,如IP存活扫描和端口扫描。下面简单解释一下如何利用Scapy来做这两个操作:
**IP存活扫描(Ping扫):**
Scapy中的`ping`函数可以轻松地检查目标主机是否在线。例如,你可以编写这样的代码:
```python
from scapy.all import IP, ICMP
def ping_host(ip):
pkt = IP(dst=ip) / ICMP()
response = sr1(pkt, timeout=2, verbose=False)
return bool(response)
# 使用示例
host_ips = ['192.168.0.1', '8.8.8.8']
for ip in host_ips:
if ping_host(ip):
print(f"{ip} 是在线的")
```
**端口扫描(TCP/UDP扫描):**
Scapy的`socket`模块提供了一种方法来检测哪些端口开放。比如,对特定IP进行TCP扫描:
```python
from scapy.all import IP, TCP, sr
def port_scan(ip, ports):
ans, unans = sr(IP(dst=ip)/TCP(dport=ports, flags="S"), timeout=2, verbose=False)
open_ports = [p.sprintf("%d") for p in ans]
return open_ports
# 对80和443端口进行扫描
open_ports = port_scan('example.com', [80, 443])
print(f"开放的TCP端口: {open_ports}")
```
同样,对于UDP扫描,只需将TCP替换为UDP即可。
阅读全文