用python的scapy包写一个扫描的IP是否存活脚本,写一个扫描端口是否开放的脚本,用函数封装在一个py文件中
时间: 2023-05-26 18:07:08 浏览: 51
以下是一个封装了IP存活扫描和端口开放扫描的Python文件:
```python
from scapy.all import *
import socket
def scan_ip_alive(ip_addr):
"""
扫描给定IP地址是否存活
"""
ping_pkt = IP(dst=ip_addr)/ICMP()
reply = sr1(ping_pkt, timeout=2, verbose=0)
if not (reply is None) and reply.haslayer(ICMP):
if reply[ICMP].type == 0:
return True
else:
return False
def scan_port_open(ip_addr, port):
"""
扫描给定IP地址上给定端口是否开放
"""
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(2)
try:
sock.connect((ip_addr, port))
sock.close()
return True
except:
return False
# 示例
if __name__ == '__main__':
ip = '192.168.1.1'
if(scan_ip_alive(ip)):
print(f'{ip} 存活')
else:
print(f'{ip} 不存活')
port = 80
if(scan_port_open(ip, port)):
print(f'{ip} 的端口 {port} 开放')
else:
print(f'{ip} 的端口 {port} 未开放')
```
可以通过调用 `scan_ip_alive()` 函数扫描给定 IP 地址是否存活,返回 `True` 表示存活,返回 `False` 表示不存活。
例如:
```python
ip = '192.168.1.1'
if(scan_ip_alive(ip)):
print(f'{ip} 存活')
else:
print(f'{ip} 不存活')
```
可以通过调用 `scan_port_open()` 函数扫描给定 IP 地址上给定端口是否开放,返回 `True` 表示开放,返回 `False` 表示未开放。
例如:
```python
ip = '192.168.1.1'
port = 80
if(scan_port_open(ip, port)):
print(f'{ip} 的端口 {port} 开放')
else:
print(f'{ip} 的端口 {port} 未开放')
```