2. System requirements¶
Requirements for deploying and running PEAT, including platforms it can run on, hardware requirements, and other requirements such as network connectivity.
2.1. Supported platforms¶
Note
The PEAT “executable” (peat on Linux, peat.exe on Windows, peat_macos_arm64 or peat_macos_x86_64 on macOS) is the standard method of using PEAT. The executable is distribution-agnostic and should work on most distributions of Linux, releases of Windows, and macOS 15 or newer. The supported platforms for PEAT development or using the PEAT Python API is far more restricted and is generally recent releases of Ubuntu, Windows, or macOS.
- Linux
- Ubuntu
Ubuntu 14.04+ :
peatexecutableUbuntu 22.04+ is required for PEAT development or using the Python API (PEAT requires Python 3.11 - 3.13)
- Red Hat Enterprise Linux (RHEL)
RHEL 6: Works with the pre-built executable or
podmanand the PEAT container image
- Kali Linux
2018+ :
peatexecutable
Other distributions: Debian, Debian-based distributions, and RHEL-based distributions (e.g. Fedora and CentOS) should work with the
peatexecutable, but are not regularly tested. It has been known to work under Debian 9.
- Windows
Windows 7 SP2+: While Windows 7 has been tested with the pre-built executable, it’s not regularly tested and support is not maintained. Your Mileage May Vary.
Windows 10 1809+/Windows Server 2019+ (build 17763):
peat.exeexecutable, development, and Python API are fully supported and regularly tested on Windows desktop and server build 17763 and newer. 1703+ may work, but hasn’t been tested in a while.Windows 11: Windows 11 is not currently tested or formally supported. It may not work with the executable, but it may work with a direct Python install.
- Windows Subsystem for Linux (WSL)
PEAT will work in any WSL Linux distro that’s supported by PEAT (e.g. Ubuntu, Kali), listed above.
Certain network-related features will not work in WSL, notably MAC address lookups, and a few other functions may not work fully.
- Docker
Docker 18.03+, Linux host: PEAT is fully supported on Linux-based Docker hosts. PEAT is regularly tested on Docker 20+.
Windows and macOS Docker hosts should work but are untested. Note that Docker Desktop on macOS runs containers in a Linux VM, so the container can’t scan the host’s networks directly (
--network hostreaches the VM, not the Mac). Use the native macOS executable or Python package for scanning from a Mac.Versions of Docker older than 18.03 may work, but are unsupported and may not work in recent releases of PEAT.
- macOS
macOS is fully supported for the
peatexecutable, development, and the Python API, on both Apple Silicon (arm64) and Intel (x86_64) Macs.- Tested in CI (GitHub Actions) on every commit:
macOS 15 Sequoia (Apple Silicon): Python 3.11, 3.12, and 3.13
macOS 15 Sequoia (Intel): Python 3.12
macOS 26 Tahoe (Apple Silicon): Python 3.12
The macOS executables are built on macOS 15, and require macOS 15 or newer. Older releases of macOS may work with a direct Python install, but are not tested.
Refer to macOS limitations for the features that are limited or unavailable on macOS.
2.2. Hardware¶
The system hardware requirements for running PEAT are minimal. The limits vary slightly by system.
Minimum 64-bit x86 CPU (Linux), 32-bit x86 CPU (Windows), or Apple Silicon or 64-bit Intel CPU (macOS); Dual-core 2.4Ghz 64-bit x86 CPU is recommended. Additional cores will not noticeably improve performance.
Minimum of 64MB available memory (RAM); 256MB is recommended for scanning very large networks or when running PEAT as a container.
Minimum of 50MB disk space in the platform’s temporary directory (
/tmpon Linux,$TMPDIRon macOS, orAppDataon Windows). This is needed to extract and execute the Python code.Minimum of ~100MB disk space in the configured output directory; 1Gb is recommended for storing multiple runs and increased output verbosity, 5-10GB is recommended if pulling from 100+ devices, especially if those devices have significant amounts of logic or configuration.
2.2.1. Network¶
PEAT requires network connectivity to carryout any active operations (scan, pull, and push). Specific considerations are listed below:
Local subnet - Connection to same subnet as devices (OSI Model Layer 2 broadcast domain) is required for broadcast scanning and using ARP requests to check if hosts are online.
Non-local subnets - Routes to connectivity are required if the devices being queried are not on the local subnet. The router(s) must allow TCP and UDP traffic, and ICMP traffic if efficient online checks of hosts in non-local subnets is desired.
Firewall configuration - The firewall on the system executing PEAT, as well as any firewalls on the network (e.g. a gateway firewall), must be configured to allow outbound TCP and UDP requests to either all hosts or the specific hosts and subnets being queried. Outbound ICMP should also be allowed if efficient online checks of hosts in non-local subnets is desired.
IDS configuration - The network Intrusion Detection System (IDS) exceptions for the host performing the scanning. PEAT’s network operations are inherently suspicious to an IDS, especially one tuned for OT networks, and it will likely generate numerous false positive alerts during the course of a operation.
2.2.2. System configuration¶
Access to a terminal is recommended for running PEAT.
(Windows-only) PowerShell is the preferred terminal on Windows. PEAT will run fine in a legacy Windows cmd terminal, but some terminal-related functionality may be degraded (e.g. text formatting and colors).
- Administrator (Windows) or root (Linux and macOS) permissions are required for some network features. Note that these permissions are NOT required for the offline functions of PEAT (parsing, pillage, etc.).
Permissions are required to use of lightweight ARP and ICMP requests for host status checking. These methods have less impact on the devices being scanned and are significantly faster than using TCP SYNs.
Lack of permissions potentially affects PEAT’s ability to do broadcast scanning
Lack of permissions potentially affects PEAT’s ability to use serial devices
Ability to write output directory is required unless file output is disabled using the appropriate configuration options. Refer to Configure for details on configuration options.
Ability to run executables is required for all distributions other than the container.
Ability to write and execute temporary files is required if using the executable distribution of PEAT (
peatorpeat.exe). This is necessary for the executable to unpack and run.Host endpoint protection (anti-malware/anti-virus) software may interfere with PEAT’s operations. If this occurs, we recommend whitelisting PEAT and it’s output directories, or as a last resort temporarily disabling the software. Note that this is highly unlikely and we have yet to witness it in the wild.
2.2.3. Optional software¶
- PEAT documentation: A modern web browser is required to view the HTML version of the PEAT documentation. Most Chromium-based browsers should work, including the Microsoft Edge, Opera, and others. Firefox will also work just fine.
Chrome: version 63 or newer
Firefox: version 60 or newer
Edge
Containerization: Docker or Podman are required to run the containerized distribution of PEAT. See Supported platforms above for details on specific versions required.
2.3. macOS limitations¶
PEAT’s features work the same on macOS as on Linux, with the following exceptions, most of which are inherent to the platform.
Root is required for ARP and ICMP host checks. Scapy sends and receives raw packets on macOS using Berkeley Packet Filter devices (
/dev/bpf*), which only root can open by default. Run PEAT withsudofor the fastest and lightest host discovery. Without it, PEAT falls back to TCP SYN online checks (the same as an unprivileged Linux user) and logs a warning. Installing the “ChmodBPF” launch daemon that ships with Wireshark gives members of theaccess_bpfgroup access to the BPF devices withoutsudo, and PEAT will detect and use that access.Pillage disk image mounting is not supported.
peat pillageon raw disk images requires Linux-specific tools (qemu-nbdand kernel modules). Pillaging a directory of files works on macOS.Serial port names are different. macOS names serial devices after the adapter (e.g.
/dev/cu.usbserial-1410) instead of numbering them. Pass--serial-ports(-s) the device path (/dev/cu.usbserial-1410) or the device name (usbserial-1410) to select a specific device. Port numbers and ranges (e.g.0or0-4) also work, and on macOS they’re an index into the sorted list of/dev/cu.*devices (0is the first device, excluding the built-in Bluetooth and debug console ports). Use the/dev/cu.*“callout” devices, not/dev/tty.*, since opening attydevice waits for a carrier detect signal that most devices never send.YMODEM transfers to SEL relays need lrzsz. Install it with Homebrew:
brew install lrzsz.ARP cache lookups use the
arpcommand. macOS doesn’t have/proc/net/arp, so MAC address resolution runsarp -an. This is slightly slower than on Linux, but otherwise works the same.The default macOS filesystem (APFS) is case-insensitive. Files that differ only by case (e.g.
CONFIG.TXTandconfig.txtpulled from a device) will overwrite each other in PEAT’s output. If this matters for your use case, set the output directory (-o) to a case-sensitive APFS volume.The local firewall may prompt. If the macOS Application Firewall is enabled, it may ask whether to allow the
peatexecutable (or Python) to accept incoming connections the first time PEAT listens for broadcast responses. Allow it, or broadcast scanning may not find devices.The executables are not signed or notarized. The installer script and
curldownloads are not affected, but if the executable is downloaded with a web browser, macOS Gatekeeper will block it. Remove the quarantine attribute to run it:xattr -d com.apple.quarantine ./peat_macos_arm64.
2.4. Virtual Machine (VM) requirements and limitations¶
Requirements and limitations for using PEAT inside of a Virtual Machine (VM).
The use of hardware passthrough to a physical adapter connected to the network being scanned is recommended. If not possible, a bridged network adapter will also work as a fallback, though there are some potential issues with using a bridged adapter, such as the host OS interfering with the adapter’s configuration or applying firewall rules.
VM hypervisors: PEAT has been tested with VMWare Workstation Pro (14+), VirtualBox (6+), and QEMU+KVM as class 2 hypervisors with a Linux guest OS (Ubuntu, RHEL, Kali, and others). PEAT also fully supports being run inside a SCEPTRE experiment, which is hosted with minimega and QEMU. PEAT has not been tested with class 1 hypervisors, e.g. Microsoft Hyper-V or Xen, but it should work in those environments with minimal or no issues.
2.4.1. Containers¶
Refer to Containers (Docker/Podman) for details on requirements and limitations when using the container distribution of PEAT.