说一下Python代码怎么做到扫描存活ip的
时间: 2023-05-20 18:07:07 浏览: 222
您好,以下是一个简单的 Python 代码示例,可以扫描存活的 IP 地址:
```
import socket
def scan_ip(ip):
try:
socket.inet_aton(ip)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(1)
result = s.connect_ex((ip, 80))
if result == 0:
print(ip + " is up!")
s.close()
except socket.error:
pass
for i in range(1, 255):
ip = "192.168.1." + str(i)
scan_ip(ip)
```
这个代码会扫描 192.168.1.1 到 192.168.1.254 这些 IP 地址,如果某个 IP 地址的 80 端口是开放的,就会输出该 IP 地址。当然,您可以根据需要修改代码来扫描其他 IP 地址和端口。
相关问题
python扫描存活ip
在Python中,扫描存活IP通常是指通过网络编程来检测某个IP地址是否可以正常通信。这通常是通过ping命令或者TCP/IP连接来实现的。以下是一个简单的示例,展示如何使用`socket`模块检查IP是否可达:
```python
import socket
def is_ip_alive(ip_address):
try:
socket.setdefaulttimeout(5) # 设置超时时间
socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect((ip_address, 80)) # 连接HTTP默认端口
return True
except (socket.timeout, ConnectionRefusedError, FileNotFoundError): # 如果连接失败,捕获异常
return False
except Exception as e: # 其他未知错误
print(f"An unexpected error occurred: {str(e)}")
return False
# 使用示例
ips_to_test = ["192.168.1.1", "8.8.8.8"] # 输入你想要测试的IP列表
for ip in ips_to_test:
if is_ip_alive(ip):
print(f"{ip} is alive.")
else:
print(f"{ip} is not reachable.")
利用Python以及scapy实现IP存活扫描、端口扫描
在Python中,可以使用`scapy`库来执行IP存活扫描和端口扫描,它是一个非常强大的网络协议分析工具。下面简要概述如何使用`scapy`进行这两项任务:
**IP存活扫描(Pingsweep)**:
```python
from scapy.all import srp, Ether, ARP
def ping(ip):
# 创建ARP请求包
packet = ARP(pdst=ip)
# 发送并获取响应
response = srp(packet, timeout=2, verbose=0)[0]
# 检查是否有回应,如果有的话,IP被认为存活
return response is not None and len(response) > 0
# 对目标列表执行扫描
target_ips = ['192.168.1.1', '10.0.0.2'] # 替换为你想要测试的IP地址
live_ips = [ip for ip in target_ips if ping(ip)]
```
**端口扫描(Portscan)**:
```python
from scapy.all import TCP, sr
def port_scan(ip, ports):
packets = []
for port in ports:
pkt = TCP(sport=RandShort(), dport=port, flags="S")
packets.append(pkt)
answers = sr(packets, timeout=2, verbose=0)
open_ports = []
for sent, received in answers:
if received:
if received[TCP].flags == "SA":
open_ports.append(received[TCP].dport)
return open_ports
# 扫描特定IP范围内的某个端口
ip_to_scan = '192.168.1.1'
ports_of_interest = range(1, 1000) # 可以为你需要扫描的端口号范围
open_ports = port_scan(ip_to_scan, ports_of_interest)
```
**注意事项**:
- `scapy`的操作可能会受到防火墙限制,并且可能被视为潜在的攻击行为,所以在实际使用中请谨慎操作,仅限于合法用途。
-
阅读全文