zoukankan      html  css  js  c++  java
  • wireshake抓包,飞秋发送信息,python

    http://wenku.baidu.com/link?url=Xze_JY8T15pqI9mBLRpTxWF2d6MP-32xb6UwuE6tsUmitRDheJe-Ju87WlDEDBGuI5MFyhtBfn4QeKxfq5GVaMnx9O5a3ngQ1f-sMA8LYJa

    # coding=utf-8
    #import socket    
    #udp=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    #udp.connect(('localhost',2425)) 
    #udp.send('1:100:aaaaa:zhang:32:hello every body')
    #udp.send('1_lbt4_10#32899#002481627512#0#0#0:1289671407:flyingzl:flyingz l:288:一日不见,如三月兮')
    #coding=utf-8
    import dpkt
    import sendpkt
    from socket import inet_aton 
    from time import strftime
    import socket
    import types
    import uuid
    #本地网关MAC地址,可以通过如下方式获取:
    #C:UsersAdministrator>arp -a
    #接口: 192.168.0.100 --- 0xb
    #  Internet 地址  物理地址              类型
    #  192.168.0.1    00-03-47-ca-e4-5c     动态
    MASK_MAC='4c-5e-0c-b1-50-29'
    def get_local_mac():
     '''
    获得本机Mac地址
     '''
     mac=uuid.uuid1().hex[-12:]
     return '-'.join([mac[(i-1)*2:2*i] for i in range(1,7)])
    def send_msg(kwargs):
     '''
    发送消息,kwargs参数为一个dict对象
     '''
     if type(kwargs) is not types.DictType: 
      return
    #本机ip地址 
    local_ip=kwargs.get('src',socket.gethostbyname(socket.gethostname()))
    #转码后的源ip地址
    src_ip=inet_aton(local_ip)
    #转码后的目的ip地址
    dst_ip=inet_aton(kwargs.get('dst'))
    #本机mac地址
    local_mac=kwargs.get('src_mac',get_local_mac())
    #转码后的源mac地址
    src_mac=pack_mac(local_mac)
    #判断remote_ip和local_ip是否在同一个网段
    #转码后的目的mac地址
    dst_mac=pack_mac(kwargs.get('dst_mac'))
    if trans(local_ip)==trans(kwargs.get('dst')) else pack_mac(MASK_MAC)
    host=kwargs.get('host',socket.gethostname())
    user=kwargs.get('user','User')
    msg=kwargs.get('msg','Hello')       
    #找到第一个网络端口,根据自己的情况修改  
    #安装了VirtualBox、VMWare或者有无线网卡的同学得自己修改下  
    device=sendpkt.findalldevs()[0]    
    #飞鸽监听本地的UDP 2425端口     
    udp=dpkt.udp.UDP(dport=2425,sport=2425)  
    #向飞鸽发送消息命令字  
    #6291458表示下线  
    #6291457表示上线  
    #288表示发送信息  
    #如果是飞秋,65664这个状态会在对方上显示为两个太阳  
    msg="1_lbt4_10#65664#%s#0#0#0:%s:%s:%s:288:%s" 
    %(local_mac.replace('-',''),int(strftime('%m%d%H%M%S'))+100000000,user,host,msg)  
    msg=msg.encode("utf-8")  
    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的长度,不然消息发送不出去  
    ip.len=len(ip)  
    	      
    ether=dpkt.ethernet.Ethernet(  
           dst=dst_mac,  
           src=src_mac,  
           type=0x0800,  
           data=ip  
    )  
    sendpkt.sendpacket(str(ether),device)  
    	  
    def trans(ip,mask='255.255.255.0'):  
     ''' 
       判断两个ip地址是否在同一个网段 
     ''' 
     str=[]  
     ip=ip.split(".")  
     mask=mask.split(".")  
     for index,item in enumerate(ip):  
       str.append(int(item)&int(mask[index]))  
     return str  
    	  
    	  
    def pack_mac(mac,pattern='-'):  
     ''' 
     网卡地址转为以太网Mac地址 
     例如将"08-00-27-ba-f7-e5"转为"x08x00'xbaxf7xe5" 
     '''  
     mac=mac.split(pattern.lower())  
     return "".join([chr(int('0x'+x,16)) for x in mac])  
    	  
    if __name__=="__main__":  
     s={  
        'src':'192.168.155.1',  
    	       'dst':'192.168.155.1',  
    	       'src_mac':'ff-ff-ff-ff-ff-ff',  
    	       #这个地址最好别写错,可以从飞鸽上看到好友的Mac地址  
    	       'dst_mac':'ff-ff-ff-ff-ff-ff', 
    	       	'host':'哈哈',  
    	       'user':'呵呵',  
    	       'msg':'加班呀?'  
    }  
    send_msg(s)  
    
  • 相关阅读:
    div错位解决IE6、IE7、IE8样式不兼容问题
    DIV背景半透明文字不半透明的样式
    Div 自适应屏幕大小
    mysql 设置外键 四大属性 CASCADE SET NULL NO ACTION RESTRICT 理解
    msyql 主从配置
    全国最新区划数据-四级-省-市-县(区)-乡(镇)
    ThinkPHP3.2 伪静态配置
    色彩网站
    Javascript php 异常捕获
    jQuery 操作大全
  • 原文地址:https://www.cnblogs.com/zhangzs000/p/6042581.html
Copyright © 2011-2022 走看看