Initial commit
This commit is contained in:
Executable
+87
@@ -0,0 +1,87 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using System.Net.NetworkInformation;
|
||||
|
||||
namespace WoL_Manager
|
||||
{
|
||||
class Magic_Packet
|
||||
{
|
||||
private byte[] data;
|
||||
|
||||
private int size;
|
||||
|
||||
public Magic_Packet(string mac_adress)
|
||||
{
|
||||
size = 135;
|
||||
data = new byte[6];
|
||||
for (int t1 = 0; t1 < 6; t1++)
|
||||
{
|
||||
data[t1] = byte.Parse(mac_adress.Substring(t1 * 2, 2), System.Globalization.NumberStyles.HexNumber);
|
||||
}
|
||||
}
|
||||
|
||||
public int getSerializeLength()
|
||||
{
|
||||
return size;
|
||||
}
|
||||
|
||||
|
||||
public int serialize(ref byte[] buffer, int index)
|
||||
{
|
||||
if (buffer.Length - index < size)
|
||||
{
|
||||
throw new Exception("ERROR:Buffer-Overflow detected");
|
||||
}
|
||||
for (int t = 0; t < 6; t++)
|
||||
{
|
||||
buffer[index+t] = 0xFF;
|
||||
}
|
||||
for (int t = 0; t < 16; t++)
|
||||
{
|
||||
Array.Copy(data, 0, buffer, index + 6 + 6 * t, 6);
|
||||
}
|
||||
char[] temp = "\0\0Wake on Lan provided by MatzMan".ToCharArray();
|
||||
for (int t = 0; t < 33; t++)
|
||||
{
|
||||
buffer[index + 102 + t] = Convert.ToByte(temp[t]);
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
|
||||
public string getPayloadType()
|
||||
{
|
||||
return "WoL";
|
||||
}
|
||||
|
||||
public static bool sendPacket(Host host)
|
||||
{
|
||||
int temp1;
|
||||
byte[] temp2;
|
||||
if (!MainWindow.checkMAC(host.MAC))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
Magic_Packet packet = new Magic_Packet(host.MAC);
|
||||
temp1 = packet.getSerializeLength();
|
||||
temp2 = new byte[temp1];
|
||||
packet.serialize(ref temp2, 0);
|
||||
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Raw);
|
||||
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AcceptConnection, false);
|
||||
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);
|
||||
IPEndPoint ipepServer = new IPEndPoint(host.Broadcast, 0);
|
||||
EndPoint epServer = (ipepServer);
|
||||
int temp;
|
||||
for (int t1 = 0; t1 < 3; t1++)
|
||||
{
|
||||
temp = socket.SendTo(temp2, epServer);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user