1.列出网络上所有活跃的主机
1).使用Python判断主机是否活跃
import subprocess import threading def is_reacheable(ip): if subprocess.call(["ping", "-c", "10", ip]): print("{0} is alive".format(ip)) else: print("{0} is unreacheable".format(ip)) def main(): with open('ips.txt') as f: lines = f.readlines() threads = [] for line in lines: thr = threading.Thread(target=is_reacheable, args=(line,)) thr.start() threads.append(thr) for thr in threads: thr.join() if __name__ == '__main__': main()
2).使用生产者消费者模型减少线程的数量
import subprocess import threading from Queue import Queue from Queue import Empty def call_ping(ip): if subprocess.call(["ping", "-c", "10", ip]): print("{0} is alive".format(ip)) else: print("{0} is unreacheable".format(ip)) def is_reacheable(q): try: while True: ip = q.get_nowait() call_ping(ip) except Empty: pass def main(): q = Queue() with open('ips.txt') as f: for line in f: q.put(line) threads = [] for i in range(10): thr = threading.Thread(target=is_reacheable, args=(q,)) thr.start() threads.append(thr) for thr in threads: thr.join() if __name__ == '__main__': main()
2.端口扫描
1).使用Python编写端口扫描器
使用简单的socket接口编写一个端口扫描器 from socket import * def conn_scan(host, port): conn = socket(AF_INET, SOCK_STREAM) try: conn.connect((host, port)) print(host, port, ' is available') except Exception as e: print(host, port, ' is not available') finally: conn.close() def main(): host = "192.168.147.135" for port in range(3000,4000): conn_scan(host, port) if __name__ == '__main__': main()
2).使用nmap扫描端口
3).使用python-nmap进行端口扫描
3.使用IPy进行IP地址管理
IPy模块是一个处理IP地址的模块
pip install ipy
4.使用dnspython解析DNS
dnspython是Python实现的一个DNS工具集
pip install dnspython
5.网络嗅探器Scapy
1).Scapy简介与安装
2).Scapy的基本使用