''''
只监听本地127.0.0.1的端口的数据包
'''
from scapy.all import *
print("sucess import")
import sys
class Server(object):
def __init__(self,count=0):
iface = input('请输入所要监听的网卡名称:(例:Realtek PCIe GBE Family Controller #2)')
iface_1 = 'Realtek PCIe GBE Family Controller #2'
iface_wifi = 'Intel(R) Dual Band Wireless-AC 7265'
print('开始监听 \n')
sniff(filter="ip dst 127.0.0.1", prn=self.pack_callback, iface=iface, count=count)
def pack_callback(self,packet):
try:
IP = packet['IP']
# 一共12项
# 版本 首部长度 服务类型 总长度 标识
version = IP.version;
ihl = IP.ihl;
tos = IP.tos;
len = IP.len;
id = IP.id
# 标志 分片偏移 生存时间 上层协议标识 首部检验和
flags = IP.flags.value;
frag = IP.frag;
ttl = IP.ttl;
proto = IP.proto;
chksum = IP.chksum
# 源IP地址 目的IP地址
src = IP.src;
dst = IP.dst
raw = packet['Raw']
load = raw.load.decode('utf-8')
print('版本:%d \n首部长度:%d \n服务类型:%d \n总长度:%d \n标识:%d'%(version,ihl,tos,len,id))
print('标志:%d \n分片偏移:%d \n生存时间:%d \n上层协议标识:%d \n首部检验和:%d'%(flags, frag, ttl, proto, chksum))
print('源IP地址:%s \n目的IP地址:%s'%(src, dst))
print('接收的数据'+'-'*10 + '>'+load + '\n')
stdout_backup = sys.stdout
log_file = open('Analysis.log','a+')
sys.stdout = log_file
print('版本:%d \n首部长度:%d \n服务类型:%d \n总长度:%d \n标识:%d'%(version,ihl,tos,len,id))
print('标志:%d \n分片偏移:%d \n生存时间:%d \n上层协议标识:%d \n首部检验和:%d'%(flags, frag, ttl, proto, chksum))
print('源IP地址:%s \n目的IP地址:%s'%(src, dst))
print('接收的数据'+'-'*10 + '>'+load + '\n')
log_file.close()
sys.stdout = stdout_backup
except:
pass
class Client(object):
def __init__(self,count=3):
self.send(count)
def send(self,count):
print('您选择发送%d条数据'%(count,))
for i in range(1,count+1):
str = input('发送第 %d 条数据,请输入数据内容:'%(i,))
pkt=IP()/TCP()/str
send(pkt)