这个库允许您使用Python2和Python3中的原始套接字实现自定义的第2层通信,同步和异步,有或没有回调。
rawsocketp的Python项目详细描述
#rawsocketpy
[api文档](https://raw socket python.readthedocs.io/en/latest/api.html)
raw socket是一个用于仅使用mac地址进行通信的第2层python库。
这允许您创建一个定制的以太网/wifi通信系统,该系统**不**使用IP或TCP/UDP,或调试自定义帧,如SERCOS III、PROFIBUS、ARP、PTP,…
python版本测试:
-[x]2.7.x
-[x]3.5.x
-[]Linux 14.04
-[x]Linux 16.04
-[]Linux 18.04
-[]windows 10
-[]mac osx
**优点:**
-低层
-不使用tcp-udp/ip
-非常简单
-可以广播
-MTU 1500
-异步服务器
-异步服务器
-有状态能力
**缺点:*
>
>
>
>-低层
-不使用tcp-udp/ip
-无加密
-无碎片
->
-**无需根根根**
->-低层
-低层
-低层
-乙r/>-mtu的1500
`` bash `` bash `
`很快
sudo-h pip install rawsocket py
` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `在一台计算机上进行快速测试:
``bash
rawsoc的sudo python-c"rowsocketpy-import-rawsocket
sock=rawsocket('wlp2s0',0xeefa)
etpy import rawsocket;导入时间
sock=rawsocket('wlp2
while true:
sock.send('boo')
print('boo已经被发送了)
time.sleep(0.5)
```
`
` ` ` ` ` `
` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `输入
完整的官方列表可用这里是:https://regauth.standards.ieee.org/standards ra web/pub/view.html registries
direct link:https://standards.ieee.org/develop/regauth/ethertype/eth.csv
您可以使用任何您想要的类型,但是使用已经使用的类型可能会有意外的行为。
sock=rawsocket("wlp2s0",0xeefa)
sock.send("some data")broadcast"some d"以太类型为0xeefa
sock.send("个人数据",dest="\xaa\xbb\xxbc\xdd\xde\xee\xff"dest="\xaa\xbb\xbc\xdc\xdd\xde\xee\xff"的"个人数据"发送到以太类型为0xeefa
sock.send("其他数据",ether type="\xee\xff""\xee\xff"以太类型为"其他数据"的"其他数据"广播"其他数据"以太类型为0xeeff
```
<<
<
<
,您可以取消以下操作:
``python
从rawsocketpy import rawsocket,到_str
packet=sock.recv()
ses bytearray.
print(packet) # Pretty print
packet.dest # string "\xFF\xFF\xFF\xFF\xFF\xFF" or bytearray(b"\xFF\xFF\xFF\xFF\xFF\xFF")
packet.src # string "\x12\x12\x12\x12\x12\x13" or bytearray(b"\x12\x12\x12\x12\x12\x13")
packet.type # string "\xEE\xFA" or bytearray([b"\xEE\xFA"]
packegt.data # string "some data" 或者bytearray(b"一些数据"]
print(to_str(packet.dest)个人可读mac:ff:ff:ff:ff:ff:ff
print(to_str(packet.type,"");可读类型:eefa
````
无状态阻塞服务器
```` python
:
定义句柄(自身):
时间。睡眠(1)
打印(self.packet)
def finish(self):
print("end")
def setup(self):
print("begin")
rs=rawserver("wlp2s0",0xeefa,longtasktest)
rs.spin()
:
main()
```
有状态异步服务器
handler.setup()
handler.handle()
print("begin")
def main():
rs=rawasyncservercallback("wlp2s0",0xeefa,longtasktest,callback)
rs.spin()
!
欢迎使用以下功能:
-windows兼容性
-更多python版本和操作系统测试
\credits
-alexis paques-[@alexistm](https://github.com/alexistm/)
[api文档](https://raw socket python.readthedocs.io/en/latest/api.html)
raw socket是一个用于仅使用mac地址进行通信的第2层python库。
这允许您创建一个定制的以太网/wifi通信系统,该系统**不**使用IP或TCP/UDP,或调试自定义帧,如SERCOS III、PROFIBUS、ARP、PTP,…
python版本测试:
-[x]2.7.x
-[x]3.5.x
-[]Linux 14.04
-[x]Linux 16.04
-[]Linux 18.04
-[]windows 10
-[]mac osx
**优点:**
-低层
-不使用tcp-udp/ip
-非常简单
-可以广播
-MTU 1500
-异步服务器
-异步服务器
-有状态能力
**缺点:*
>
>
>
>-低层
-不使用tcp-udp/ip
-无加密
-无碎片
->
-**无需根根根**
->-低层
-低层
-低层
-乙r/>-mtu的1500
`` bash `` bash `
`很快
sudo-h pip install rawsocket py
` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `在一台计算机上进行快速测试:
``bash
rawsoc的sudo python-c"rowsocketpy-import-rawsocket
sock=rawsocket('wlp2s0',0xeefa)
etpy import rawsocket;导入时间
sock=rawsocket('wlp2
while true:
sock.send('boo')
print('boo已经被发送了)
time.sleep(0.5)
```
`
` ` ` ` ` `
` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `输入
完整的官方列表可用这里是:https://regauth.standards.ieee.org/standards ra web/pub/view.html registries
direct link:https://standards.ieee.org/develop/regauth/ethertype/eth.csv
您可以使用任何您想要的类型,但是使用已经使用的类型可能会有意外的行为。
sock=rawsocket("wlp2s0",0xeefa)
sock.send("some data")broadcast"some d"以太类型为0xeefa
sock.send("个人数据",dest="\xaa\xbb\xxbc\xdd\xde\xee\xff"dest="\xaa\xbb\xbc\xdc\xdd\xde\xee\xff"的"个人数据"发送到以太类型为0xeefa
sock.send("其他数据",ether type="\xee\xff""\xee\xff"以太类型为"其他数据"的"其他数据"广播"其他数据"以太类型为0xeeff
```
<<
<
<
,您可以取消以下操作:
``python
从rawsocketpy import rawsocket,到_str
ses bytearray.
print(packet) # Pretty print
packet.dest # string "\xFF\xFF\xFF\xFF\xFF\xFF" or bytearray(b"\xFF\xFF\xFF\xFF\xFF\xFF")
packet.src # string "\x12\x12\x12\x12\x12\x13" or bytearray(b"\x12\x12\x12\x12\x12\x13")
packet.type # string "\xEE\xFA" or bytearray([b"\xEE\xFA"]
packegt.data # string "some data" 或者bytearray(b"一些数据"]
print(to_str(packet.dest)个人可读mac:ff:ff:ff:ff:ff:ff
print(to_str(packet.type,"");可读类型:eefa
````
无状态阻塞服务器
```` python
:
定义句柄(自身):
时间。睡眠(1)
打印(self.packet)
def finish(self):
print("end")
def setup(self):
print("begin")
rs.spin()
:
main()
```
有状态异步服务器
handler.setup()
handler.handle()
print("begin")
def main():
rs=rawasyncservercallback("wlp2s0",0xeefa,longtasktest,callback)
rs.spin()
!
欢迎使用以下功能:
-windows兼容性
-更多python版本和操作系统测试
\credits
-alexis paques-[@alexistm](https://github.com/alexistm/)