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:\Users\Administrator>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"转为"\x08\x00'\xba\xf7\xe5"
'''
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)

wireshake抓包,飞秋发送信息,python的更多相关文章

  1. win7系统下的飞秋发送文件失败问题

    飞秋发送文件失败这个问题大多数是由防火墙引起的1.检查windows自带的防火墙设置,在左侧的"允许程序通过windows防火墙"查看飞秋是否存在,不存在则增加之,公网.专网都勾选 ...

  2. 让Chrome浏览器抓包接口数据秒变 python 代码

    简介 uncurl是一个库,允许您将curl请求转换为使用requests 的python代码.由于Chrome网络检查器具有的“copy as cURL”,因此该工具对于用python重新创建浏览器 ...

  3. 利用WinPcap模拟网络包伪造飞秋闪屏报文

    起因 不知道从什么时候开始,同事开始在飞秋上发闪屏振动了,后来变本加厉,成了每日一闪.老闪回去也比较麻烦,作为程序猿呢,有没有什么偷懒的办法呢?(同事负责用户体验,不大懂编程).然后尝试了以下思路: ...

  4. Python+Requests接口测试教程(1):Fiddler抓包工具

    本书涵盖内容:fiddler.http协议.json.requests+unittest+报告.bs4.数据相关(mysql/oracle/logging)等内容.刚买须知:本书是针对零基础入门接口测 ...

  5. day29 python 套接字socket TCP udp 形式发送信息的区别

    我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信. socket起源于UNIX,在 ...

  6. Wireshark抓包实例分析TCP重复ACK与乱序

    转载请在文首保留原文出处: EMC 中文支持论坛https://community.emc.com/go/chinese 介绍 TCP 的一大常见问题在于重复 ACK 与快速重传.这一现象的发生也是由 ...

  7. Android 抓包,监控流量工具之 mitmproxy

    转:http://greenrobot.me/devpost/how-to-debug-android-http-get-started/ mitmproxy实践教程之调试 Android 上 HTT ...

  8. Ubuntu下的iptux和Windows下的飞秋互传文件

    1.问题 当Linux下的iptux是安装源里的版本时,存在下面的问题:Windows下的飞秋可以向Linux下的iptux发送文件,iptux接受正常Linux下的iputx给Windows下的飞秋 ...

  9. 第三百三十节,web爬虫讲解2—urllib库爬虫—实战爬取搜狗微信公众号—抓包软件安装Fiddler4讲解

    第三百三十节,web爬虫讲解2—urllib库爬虫—实战爬取搜狗微信公众号—抓包软件安装Fiddler4讲解 封装模块 #!/usr/bin/env python # -*- coding: utf- ...

随机推荐

  1. Android 常见对话框

    1.对话框通知(Dialog Notification) 当你的应用需要显示一个进度条或需要用户对信息进行确认时,可以使用对话框来完成. 下面代码将打开一个如图所示的对话框: public void ...

  2. Android 创建一个新的Activity

    本文转载自:http://www.cnblogs.com/wuyudong/p/5658020.html 新建一个项目,创建一个java类,继承自Activity 新建一个Android.xml文件: ...

  3. jax-rs中的一些参数标注简介(@PathParam,@QueryParam,@MatrixParam,@HeaderParam,@FormParam,@CookieParam)

    先复习一下url的组成: scheme:[//[user:password@]host[:port]][/]path[?query][#fragment] jax-rs anotation @Path ...

  4. iOS Unicode和汉字互转

    //unicode转中文 NSString* strA = [@"%E4%B8%AD%E5%9B%BD"stringByReplacingPercentEscapesUsingEn ...

  5. NSString方法与NSMutableString方法

    NSString方法+(id) stringWithContentsOfFile:path encoding:enc error:err创建一个新字符串并将其设置为path指定的文件的内容,使用字符编 ...

  6. iOS--归档和解档(Archiver)、(UnArchiver)

    一.已有类型的归档和解档 首先来看一个简单的例子: //第一方式:归档对象 //对象-->文件 NSArray *array = [NSArray arrayWithObjects:@" ...

  7. XML解析方案

    在iOS中,解析XML的手段有很多 苹果原生 NSXMLParser:SAX方式解析,使用简单 第三方框架 libxml2:纯C语言,默认包含在iOS SDK中,同时支持DOM和SAX方式解析 GDa ...

  8. 我的android学习经历5

    android在strings.xml文件中,写string对象时,如何加入空格 <string name="password">密    码:</string& ...

  9. vs 只能没有智能提示的解决方法

    我vs今天出现一点比较诡异的情况,莫名奇妙就不能自动生成我拖的控件的后端代码了(****.aspx.designer.cs) 我在网上找了下,找到一个解决方法,这里把解决方法贴下来. 网上解决方法的出 ...

  10. #VSTS定制#全新的模版定制能力

    在应用生命周期管理(ALM)领域中,存在各种不同的管理模型,如:传统的瀑布(waterfall)模型,CMMI模型以及最近一些年开始流行的敏捷模型,Scrum模型,kanban等等.每个不同的管理模型 ...