python
2016-07-25 22:30
447 查看
import socket import os import struct from ctypes import * host = "192.168.0.187" class IP(Structure): _fields_ = [ ("ihl", c_ubyte,4), ("version",c_ubyte,4), ("tos",c_ubyte), ("len",c_ushort), ("id",c_ushort), ("offset",c_ushort), ("ttl",c_ubyte), ("protocol_num",c_ubyte), ("sum",c_ushort), ("src",c_ulong), ("dst",c_ulong) ] def __new__(self,socket_buffer=None): return self.from_buffer_copy(socket_buffer) def __init__(self,socket_buffer=None): self.protocol_map = {1:"ICMP",6:"TCP",17:"UDP"} self.src_address = socket.inet_ntoa(struct.pack("<L",self.src)) self.dst_address = socket.inet_ntoa(struct.pack("<L",self.dst)) try: self.protocol = self.protocol_map[self.protocol_num] except: self.protocol = str(self.protocol_num) if os.name == "nt": socket_protocol = socket.IPPROTO_IP else: socket_protocol = socket.IPPROTO_ICMP sniffer = socket.socket(socket.AF_INET,socket.SOCK_RAM,socket_protocol) sniffer.bind((host,0)) sniffer.setsockopt(socket.IPPROTO_IP,socket.IP_HDRINCL,1) if os.name == "nt": sniffer.ioctl(socket.SIO_RCVALL,socket.RCVALL_ON) try: while True: raw_buffer = sniffer.recvfrom(65565)[0] ip_header = IP(raw_buffer[0:20]) print "Protocol:%s %s -> %s" % (ip_header.protocol,ip_header.src_address,ip_header.dst_address) except KeyboardInterrupt: if os.name == "nt": sniffer.ioctl(socket.SIO_RCVALL,socket.RCVALL_OFF) def IP(): pass
本文出自 “专注php” 博客,请务必保留此出处http://jingshanls.blog.51cto.com/3357095/1829890
相关文章推荐
- python 学习 (七) 循环嵌套
- python(二) N的阶乘对M取余
- Python中的分片
- python笔记---需求文件requirements.txt的创建及使用
- python基础 - 文件读写
- windows64 配置numpy,scipy,theano
- python函数式编程
- Python 添加自定义模块
- Python 添加自定义模块
- python——基本数据类型+常用操作符+循环
- Python语言_思维导图
- 【python】choice函数
- 看python和莫名其妙学做网页。。。。
- Python画柱状统计图
- python 学习(五) While 循环语句
- Ubuntu下安装Python
- Python(List和Tuple类型)
- Python3.x 爬虫学习笔记——判断网页的编码方式
- Python图表绘制:matplotlib绘图库入门
- python闭包