首页 > 编程语言 >家庭局域网中电脑唤醒 —— WOL远程唤醒(python实现)

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

时间:2024-08-03 11:51:08浏览次数:19  
标签:wol python self 16 list WOL mac wake 唤醒

相关:

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

相关文章

  • python3解析wav文件获取dtmf值
    操作系统:Windows10_x64Python版本:3.9.2从事FreeSwitch相关工作,大概率会遇得到DTMF,DTMF的传递方式有三种:In-bandRFC2833SIP-INFO使用RFC2833或SIP-INFO传递方式的DTMF,FreeSwitch可以在日志中打印出来,但遇到inband模式的DTMF,FreeSwitch的日志就打印不出来了。如果是会议......
  • Python框架-FastAPI
    FastAPI是一个现代、快速(高性能)的web框架,用于构建API。官网:https://fastapi.tiangolo.com/源码:https://github.com/fastapi/fastapi安装#安装FastAPIpipinstallfastapi#安装Uvicorn(用于运行ASGI服务器)pipinstalluvicorn创建一个main.pyfromfastapiimpor......
  • 12:Python列表属性
    #list类,列表li=[1,2,6,'adfadsf','fadfe',['fda',5,["wdf",4],'中国人']]#中国号括起来,逗号分开,可以是数字、字符串、列表、布尔值,列表可以嵌套任何类型print(li)print(li[5])#索引取值print(li[3:6])#切片结果也是列表print(li[3:-1])foriteminli:......
  • python 滑动验证码爬取思路
    参考文章:python爬虫之滑动验证码[完整版]-简书内附个人理解注释示例代码:fromseleniumimportwebdriverfromselenium.webdriver.common.action_chainsimportActionChainsimporttimefromselenium.webdriver.common.byimportByfromselenium.webdriver.support.......
  • 使用Python自动将照片文件夹转换为PowerPoint幻灯片
    在这个数字时代,我们经常需要快速创建照片幻灯片来展示我们的回忆或工作成果。今天,我们将探讨如何使用Python来自动化这个过程,将一个文件夹中的所有照片转换为一个精美的PowerPoint演示文稿,每张照片占据一页,并以文件名作为标题。C:\pythoncode\new\jpeginsertppt.py全......
  • Python的GDAL库绘制多波段、长时序遥感影像时间曲线图
      本文介绍基于Python中的gdal模块,对大量长时间序列的栅格遥感影像文件,绘制其每一个波段中、若干随机指定的像元的时间序列曲线图的方法。  在之前的文章中,我们就已经介绍过基于gdal模块,对大量多时相栅格图像,批量绘制像元时间序列折线图的方法。不过当时文章中的需求,每1个时......
  • 仅从 Dash Python 中的表中提取过滤后的数据
    我用DashPython构建了一个网站,并将csv文件的所有数据显示在一个可以过滤的表中。我希望用户能够从表中提取数据。当没有过滤器时,我希望他能够提取完整的数据,当他过滤数据时,我希望他能够提取过滤后的数据。为此,我使用dcc.download组件,它是工作得很好,我还使用d......
  • 如何使用pipenv解决Python包依赖关系?
    我正在使用pipenv处理Python包依赖项。Python包使用两个包(名为pckg1和pckg2),它们依赖于名为pckg3的同一个包,但来自两个不同的包版本显示依赖关系树:$pipenvgraphpckg1==3.0.0-pckg3[required:>=4.1.0]......
  • 存在的开放路径不起作用 - python
    代码获取测试logs\log.jsonl的根路径,该路径在图像中显然在那里,但无法打开它#doesntworkdir_path=os.path.dirname(os.path.realpath(__file__))withopen(os.path.join(dir_path,"logs\\log.jsnol"),'r')asjsondata:data=json.load(jsondata)wit......
  • 如何在系统PATH中永久添加路径? - Python
    我正在为我的一个项目创建一个安装程序,下载该项目的二进制文件(在ZIP文件中),然后将其解压缩到操作系统程序文件夹中的一个目录中,我想将此目录添加到|||。我的脚本是一个带有UI的安装程序,其目的是编译为PATH/可执行文件。如果你能找到我一种.exe平台无关......