相关:
https://blog.csdn.net/hih30250/article/details/136342258
在WOL介绍里说过WOL数据包的最简格式是由6个字节的255和目标计算机的48位MAC地址,重复16次组成,并且这个数据包可以包含在任何协议中,最常见的是包含在UDP中。
点击查看代码
import socket
import struct
class WOL_SEND():
def __init__(self,wake_ip,wake_mac):
self.wake_ip = wake_ip
self.wake_mac = wake_mac
pass
def create_wol_package(self):
wake_mac_list = self.wake_mac.split(":")
mac = struct.pack("BBBBBB",int(wake_mac_list[0],16),int(wake_mac_list[1],16),int(wake_mac_list[2],16),int(wake_mac_list[3],16),int(wake_mac_list[4],16),int(wake_mac_list[5],16)) # 将mac地址转二进制
broadcast_mac = b"\xff"*6 # 生成6字节的FF
wol = broadcast_mac+mac*16 #将6字节FF与目标mac的16次进行合并得到wol幻数据包
return wol
def send_wol_package(self):
sockets = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
sockets.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1) #设置广播
sockets.sendto(self.create_wol_package(),(self.wake_ip,9))
def main():
wake_ip =input("请输入唤醒设备的局域网IP地址:")
wake_mac = input("请输入即将发送wol远程唤醒数据包,请输入唤醒设备mac地址:")
ws = WOL_SEND(wake_ip,wake_mac) #创建对象,传入MAC地址与IP地址
ws.send_wol_package()
print(ws.create_wol_package())
print("[+]已发送远程指令")
if __name__ == "__main__":
main()
标签:wol,python,self,16,list,WOL,mac,wake,唤醒 From: https://www.cnblogs.com/devilmaycry812839668/p/18340281