protected override int Execute() { var config = FindConfig(); if (config.Selected.IPAddress == null) { return(WriteError("No IP address specified")); } WriteDebug($"Target IP address is {config.Selected.IPAddress}"); WriteDebug(); try { var mac = ExecuteDirect(config.Selected.IPAddressRaw); var strmac = EncodingConverter.ByteArrayToHexDump(mac, ":", -1, string.Empty, true); return(WriteInfoOutput(strmac, $"The MAC address of {config.Selected.IPAddress} is {strmac}")); } catch (TaskException) { throw; } catch (Exception e) { return(WriteError($"An error occured while sending ARP package: {e.Message}", e)); } }
private void SendWOL(byte[] macaddr) { var packet = new List <byte>(); for (var i = 0; i < 6; i++) { packet.Add(0xFF); } for (var i = 0; i < 16; i++) { packet.AddRange(macaddr); } WriteDebug($"Sending UDP package to [{IPAddress.Broadcast}]:{42} with data\n{EncodingConverter.ByteArrayToHexDump(packet, ":", 6, "", true)}"); WriteDebug(); using (var client = new UdpClient()) { client.Connect(IPAddress.Broadcast, 42); client.Send(packet.ToArray(), packet.Count); client.Close(); } }
private void SendWOL(byte[] macaddr, IPAddress ipaddr) { var packet = new List <byte>(); for (var i = 0; i < 6; i++) { packet.Add(0xFF); } for (var i = 0; i < 16; i++) { packet.AddRange(macaddr); } WriteDebug($"Sending UDP package to [{IPAddress.Broadcast}]:{42} with data\n{EncodingConverter.ByteArrayToHexDump(packet, ":", 6, "", true)}"); WriteDebug(); using (var client = new UdpClient()) { client.Connect(IPAddress.Broadcast, 42); client.Send(packet.ToArray(), packet.Count); client.Close(); } if (ipaddr != null && ipaddr.AddressFamily == AddressFamily.InterNetwork) { WriteDebug($"Trying to determine the broadcast adress for [{ipaddr}] in all available adapters"); WriteDebug(); foreach (var iface in NetworkInterface.GetAllNetworkInterfaces().Where(p => p.NetworkInterfaceType != NetworkInterfaceType.Loopback).OrderBy(p => p.OperationalStatus)) { var anymatch = false; foreach (var ipinfo in iface.GetIPProperties().UnicastAddresses.AsEnumerable().Where(p => p.Address.AddressFamily == AddressFamily.InterNetwork)) { if (ipaddr.IsPartOfSubnet(ipinfo.Address, ipinfo.IPv4Mask)) { WriteDebug($"Found matching subnet [{ipinfo.Address}|{ipinfo.IPv4Mask}] in adapter \"{iface.Name}\""); WriteDebug(); anymatch = true; var broadcast = ipinfo.Address.GetBroadcastAddress(ipinfo.IPv4Mask); if (broadcast == null) { continue; } WriteDebug($"Sending UDP package to [{broadcast}]:{42} with data\n{EncodingConverter.ByteArrayToHexDump(packet, ":", 6, "", true)}"); WriteDebug(); using (var client = new UdpClient()) { client.Connect(broadcast, 42); client.Send(packet.ToArray(), packet.Count); client.Close(); } } } if (!anymatch) { WriteDebug($"Found no matching subnet in adapter \"{iface.Name}\""); WriteDebug(); } } } }