發(fā)送魔術(shù)包
- 將喚醒魔術(shù)包發(fā)送到被喚醒機(jī)器的網(wǎng)卡上,魔術(shù)包指AMD公司開發(fā)的喚醒數(shù)據(jù)包,具有遠(yuǎn)程喚醒的網(wǎng)卡都支持這個(gè)標(biāo)準(zhǔn),用16進(jìn)制表示如下:
6對(duì)“FF”前綴+16次重復(fù)MAC地址組成
- 無(wú)線喚醒(Wake-on-Wireless-LAN,WoWLAN)作為 WOL 的補(bǔ)充技術(shù),使用無(wú)線網(wǎng)卡去喚醒計(jì)算機(jī),但是需要無(wú)線網(wǎng)卡支持。
- 在局域網(wǎng)外喚醒局域網(wǎng)內(nèi)特定計(jì)算機(jī),可以使用路由器的 DNS 與端口轉(zhuǎn)發(fā)
- 有時(shí)魔術(shù)包內(nèi)還會(huì)緊接著4-6字節(jié)的密碼信息。這個(gè)幀片段可以包含在任何協(xié)議中,最常見的是包含在 UDP 中
FF FF FF FF FF FF FF 被喚醒端MAC 地址 × 16 4-6字節(jié)的密碼(可空)
- 被喚醒端網(wǎng)卡需要配置
bios模式下打開wakeup by pci PCI Express Power management類似選項(xiàng)
網(wǎng)卡配置中電源管理選項(xiàng)卡中勾選允許此設(shè)備喚醒計(jì)算機(jī)
- 使用python發(fā)包腳本構(gòu)建udp魔術(shù)數(shù)據(jù)包發(fā)送,局域網(wǎng)環(huán)境可實(shí)現(xiàn)下成功喚醒有線網(wǎng)卡主機(jī)。
Code
python 需要pip3 install scapy
#!/usr/bin/python
#-- coding: utf-8 --
#author: Zbertj
from scapy.all import *
padding = "000000000000"
data = []
mac_pc2 = [0x3C,0x97,0x0E,0x07,0x4B,0x27]
for i in range(6):
data.append(0xff)
for n in range(16):
for a in mac_pc2:
data.append(a)
print(data)
b = bytes(data)
print(b)
# 數(shù)據(jù)包應(yīng)用層數(shù)據(jù)部分
# 發(fā)送端IP地址10.0.3.83不是本機(jī)ip地址 目的端IP地址不詳 傳輸層的TCP并未指明數(shù)據(jù)包類型:syn fin ack 窗口大小 數(shù)據(jù)包如果分片,要指明序號(hào)
# SRC 192.168.8.239 172.16.100.97
# DST 192.168.8.248 172.16.100.77
pkt = IP(src='192.168.8.239', dst='172.16.100.77') / UDP(sport=12345, dport=9) / b
while True:
send(pkt, inter=5, count=5)