家庭局域网中电脑唤醒 —— WOL远程唤醒(python实现)

相关:

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
def create_wol_package(self):
wake_mac_list = self.wake_mac.split("-")
print(wake_mac_list)
mac = struct.pack("BBBBBB", *[int(wake_mac_list[i],16) for i in range(6)]) # 将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, 8))
def main():
# wake_ip =input("请输入唤醒设备的局域网IP地址:")
wake_ip = "192.168.1.112"
# wake_mac = input("请输入即将发送wol远程唤醒数据包,请输入唤醒设备mac地址:")
wake_mac = "D4-5D-64-08-16-81"
# B4.2E.99.C3.DD.EC
ws = WOL_SEND(wake_ip, wake_mac) #创建对象,传入MAC地址与IP地址
ws.send_wol_package()
print(ws.create_wol_package())
print("[+]已发送远程指令")
if __name__ == "__main__":
main()


posted on   Angry_Panda  阅读(188)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
历史上的今天:
2023-08-03 python3.9的nogil版本编译pytorch2.0.1源码报错——失败
2023-08-03 关于python的GIL的解除——PEP 703 – Making the Global Interpreter Lock Optional in CPython
2023-08-03 x86_64 ubuntu22.04环境下编译版本python3.13.0 alpha 0源码——python3.13.0 alpha 0的源码编译
2023-08-03 PEP 703作者给出的一种no-GIL的实现——python3.9的nogil版本
2023-08-03 python3.13是否移除了GIL的限制
2021-08-03 Ubuntu18.04 server 双网卡,一个设置为静态IP, 一个设置为动态IP
2021-08-03 【转载】 Ubuntu 中开机自动执行脚本的两种方法

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示