def test_notparam(self): """测试对findalldevs()函数传递参数时抛出异常""" e = None try: devlist = sendpkt.findalldevs("faeij") except Exception, e: pass
def test_nt_generic(self): """测试nt类操作系统下,肯定有个网口是通用设备""" if os.name == "nt": default_devname = "\\Device\\NPF_GenericDialupAdapter" devlist = sendpkt.findalldevs() self.assertEqual((default_devname in devlist), True) return
def test_nt_generic(self): """测试nt类操作系统下,肯定有个网口是通用设备""" if os.name == 'nt': default_devname = "\\Device\\NPF_GenericDialupAdapter" devlist = sendpkt.findalldevs() self.assertEqual((default_devname in devlist), True) return
def test_notparam(self): """测试对findalldevs()函数传递参数时抛出异常""" e = None try: devlist = sendpkt.findalldevs('faeij') except Exception, e: pass
def setUp(self): self.packet = "a" * 80 devlist = sendpkt.findalldevs() if devlist: if os.name == "nt": self.device = devlist[-1] # \\NPF\\.... elif os.name == "posix": self.device = devlist[0] # eth0 else: self.device = devlist[0] else: self.device = "" raise OSError, "You must run in root mode" return
def setUp(self): self.packet = "a" * 80 devlist = sendpkt.findalldevs() if devlist: if os.name == "nt": self.device = devlist[-1] #\\NPF\\.... elif os.name == "posix": self.device = devlist[0] #eth0 else: self.device = devlist[0] else: self.device = "" raise OSError, "You must run in root mode" return
def send_msg(kwargs): if type(kwargs) is not types.DictType: #这个格式判断可以学习一下。虽然在这个程序里没什么用。 return #源ip地址,如果字典里没添,就获取真实地址 src_ip=inet_aton(kwargs.get('src', socket.gethostbyname(socket.gethostname()))) #目的ip地址 dst_ip=inet_aton(kwargs.get('dst')) #源mac地址,如果字典里没添,就获取真实mac地址 src_mac=pack_mac(kwargs.get('src_mac',get_local_mac())) #目的mac地址 dst_mac=pack_mac(kwargs.get('dst_mac')) host=kwargs.get('host',socket.gethostname()) user=kwargs.get('user') msg=kwargs.get('msg') #288表示发送信息 #msg="1_lbt2_2#0#002564CA9C71#0#0#0:%s:%s:%s:288:%s" %(int(strftime('%m%d%H%M%S'))+100000000, user, host, msg) #应用层的数据 msg="1_lbt2_2#0#002564CA9C71#0#0#0:%s:%s:%s:209:%s" %(int(strftime('%m%d%H%M%S'))+100000000, user, host, msg) #应用层的数据 msg=msg.decode('utf-8').encode("gb2312") udp=dpkt.udp.UDP(dport=2425, sport=2425) udp.data+=msg #传输层的数据 udp.ulen=len(udp) ip = dpkt.ip.IP(src=src_ip, dst=dst_ip, data=udp, p=dpkt.ip.IP_PROTO_UDP) #网络层的数据 ip.len=len(ip) #重新计算ip的长度,不然消息发送不出去 ether = dpkt.ethernet.Ethernet( #数据链路层的以太网帧 dst = dst_mac, src = src_mac, type = 0x0800, data = ip ) device=sendpkt.findalldevs()[0] sendpkt.sendpacket(str(ether), device) # 直接利用网卡。整个数据帧都是我构造的。
def send_msg(kwargs): local_ip=inet_aton(kwargs['src']) remote_ip=inet_aton(kwargs['dst']) local_mac=pack_mac(kwargs['src_mac']) #判断remote_ip和local_ip是否在同一个网段 remote_mac=pack_mac(kwargs['dst_mac'])\ if trans(kwargs['src'])==trans(kwargs['dst']) else pack_mac(MASK_MAC) host=kwargs['host'] user=kwargs['user'] msg=kwargs['msg'] device=sendpkt.findalldevs()[0] #飞鸽监听本地的UDP 2425端口 udp=dpkt.udp.UDP(dport=2425,sport=2425) #向飞鸽发送消息命令字 #6291458表示下线 #6291457表示上线 #288表示发送信息 msg="1_lbt4_10#65664#%s#0#0#0:%s:%s:%s:288:%s" \ %(kwargs['src_mac'].replace('-',''),int(strftime('%m%d%H%M%S'))+1000000000,user,host,msg) msg=msg.encode("gbk") udp.data+=msg udp.ulen=len(udp) ip=dpkt.ip.IP(src=local_ip,dst=remote_ip,data=udp,p=dpkt.ip.IP_PROTO_UDP) #重新计算ip的长度,不然消息发送不出去 ip.len=len(ip) ether=dpkt.ethernet.Ethernet( dst=remote_mac, src=local_mac, type=0x0800, data=ip ) sendpkt.sendpacket(str(ether),device)
def test_findalldevs(self): """测试获取设备列表函数""" devlist = sendpkt.findalldevs() self.assertEqual((len(devlist) >= 1), True) return