Giter VIP home page Giter VIP logo

wakemeup's Introduction

WakeMeUp

Powershell skript odesílajíc magický packet

Měl to být původně takový více fancy ekvivalent toho, jak probouzím svůj druhý notebook z linuxu - následujícím:

sudo mausezahn enp2s0 "<syrový hex řetězec>" -c 5

Myší zoubek, je mimochodem vynikající program. Doporučuji prozkoumat - https://web.archive.org/web/20170830052159/http://www.perihel.at/sec/mz/index.html.

Bohužel, nedostatkem skriptu je, že odesílaný packet není rozeznán Wiresharkem jako ethtype WoL. Je tomu tak z důvodu, že i přes použití syorvého socketu je přidána vlastní IP hlavička. Není to však bránící ve funkčnosti, jelikož při probouzení zařízení naslouchá pro synchronizační stream následován 16x zopakovanou svou MAC adresou.

Magický packet

Pro probuzení zařízení je odeslán magický packet - rámec obsahující zdrojovou a cílovou adresu. Cílová adresa může být cílového zařízení, nebo multicast/broadcast. Datový obsah paketu musí kdekoliv uvnitř (ale většinou zde jiný obsah není) obsahovat synhronizační stream - 6 bytů o hodnotě FF. Následovaný 16 krát zopakovanou MAC adresou cílového zařízení (bez oddělovače).

Užití

Z důvodu přístupu k síťovým informacím / tvorbě socketu, je nutné spouštět skript z administrátorského okna PowerShellu.

Jelikož je skript nepodepsaný, před spuštěním je nutné nastavit vhodnou ExecutionPolicy pomocí:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass			

Následně stačí už jen skript spustit.

PS C:\Users\Administrator\WoL> .\script.ps1

Zobrazí se WPF okno.

To obsahuje dva ComboBoxy, které umožňují vybrat z jakého rozhraní na jakou MAC adresu se packet pošle. Tyto údaje jsou brány přímo ze systémových údajů - řeší to oklikou validaci vstupu.

Takže pak již jen stačí vybrat, z jakého rozhraní chcete packet odesílat a kam.

$NICDevices = Get-NetAdapter | Where-Object {$_.Status -eq "Up"} 
$IfID = $NICDevices.ifIndex
$LANDevices = Get-NetNeighbor -AddressFamily IPv4 -State Reachable -ifIndex $IfID
...
# Add devices MACs to ComboBox dropdown
$NICDevices.MacAddress | ForEach-Object {[void] $FromMAC.Items.Add($_)}

$LANDevices.LinkLayerAddress | ForEach-Object {[void] $ToMAC.Items.Add($_)}
...
# On ComboBox dropdown selection change, update relevant values
$FromMAC.Add_SelectionChanged{ $IfID = $NICDevices[$FromMAC.SelectedIndex].ifIndex
                               # Format the given MAC addresses
                               $Script:SrcMAC = $($FromMAC.SelectedValue -split "-" | ForEach-Object {[Byte]"0x$_"})
}

$ToMAC.Add_SelectionChanged{ $ToIp.Content = $LANDevices[$ToMAC.SelectedIndex].IPAddress
                             # Format the given MAC addresses
                             $Script:DstMAC = $($ToMAC.SelectedValue -split "-" | ForEach-Object {
            [System.Convert]::ToByte($_, 16)
          })
}

wakemeup's People

Contributors

heijke avatar

Stargazers

Josef Malý avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.