Quick start guide - MadWizardDE/ARPergefactor GitHub Wiki

The goal of this guide is to lead you to a minimal working configuration, in order for you to check if ARPergefactor suits your needs and is compatible with your setup. You will need the following:

  • a server system, that you want to access over the network and which is configured to suspend itself when idle
  • a client system running Windows, Linux or macOS, which needs to use one or more services of the server system
  • (optionally) a third independent system on the same link / broadcast domain, which can monitor network traffic and act as a transparent Sleep Proxy for your client systems

You also need to gather the following information:

  • the MAC address of the server system, so that it can be woken with a Magic Packet later
  • (optionally) a port number of a network service, that should trigger the wake-up only

Prerequisites

Prior to start the program you have to make sure that the .NET Runtime (9.0, or later) is installed and can be found in the environment. You neither need "ASP.NET Core" nor ".NET Desktop" – the basic runtime library is sufficient.

If you are on Linux, you can use this convenient script to download .NET (which takes up less than 100 MB of disc space) for your architecture into the default location:

curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --channel 9.0 -runtime dotnet --install-dir /usr/share/dotnet

If you are on Windows, you also need to install the npcap packet capture library, unless you have Wireshark already installed.

Configuration file

You need to provide a configuration file, which describes the parts of your network for which we should take actions. You should be able to easily adapt this minimal example configuration to your needs:

<?xml version="1.0" encoding="UTF-8"?>
<ExpergefactorConfig version="2" scope="network">

  <Network interface="eth0" autoDetect="IPv4|IPv6|Router">
    <WatchHost name="morpheus" MAC="00:1A:2B:3C:4D:5E">
      <ServiceFilterRule name="SSH" port="22" must />
    </WatchHost>
  </Network>

</ExpergefactorConfig>
  • First you have to decide on an appropriate scope for the ARPergefactor to run in.
  • If you run the program on a linux device, eth0 will probably be the correct interface name. If it doesn't work, you maybe have to replace this.
  • And of course, you have to replace the hostname morpheus with the name of your actual server system, which is the name that you normally would try to connect to it, and the MAC address with the physical address of it's network interface.
  • Also you will most likely want to use ARPergefactor with one or more service filters, so that it can reliably determine whether the network host needs to be woken. Replace SSH with something different or add further services for your needs.
  • We try to resolve the IP addresses of the host automatically here, because you don't want to have this information repeated in your configuration, if possible. If this doesn't work for some reason, you can configure them manually, instead.

Save the configuration as config.xml and simply place it in the same folder as the executable.

Showtime

To test ARPergefactor, you can download the latest release from GitHub and extract it to your computer into a folder of your choice. You can then run the executable, either by navigating to it in your preferred terminal emulation or simply by double clicking. Depending on how you installed npcap, it may be necessary to run the application as administrator or root.

If everything goes well, the next time when you try to access the configured service of the suspended host, you should see something like this in the console:

 INFO :: Monitoring network interface "eth0", MAC=51:6C:CE:67:B4:AD, IPv4=192.168.178.5 [MaxResponsiveness]
 INFO :: Send Magic Packet to "morpheus", using 22/tcp ("SSH"), triggered by 192.168.178.20 ("MacBookPro") [7129 ms]

This will tell you which host was woken up with a Magic Packet, (optionally) the used service and the requesting host by address and name. The time at the end measures how long it took for the target host to respond after sending the Magic Packet.

⚠️ **GitHub.com Fallback** ⚠️