Pi MitM is a Raspberry Pi-based man-in-the-middle solution built on Raspberry Pi OS Lite. It was developed on a Raspberry Pi 4.

It turns a Raspberry Pi into a network access point that forwards HTTP and/or HTTPS traffic to a proxy server on another computer, such as Charles, Burp, Fiddler, mitmproxy etc, allowing said traffic to be inspected and/or manipulated.

It also provides throttling capability, allowing a developer to test their applications under varying network conditions.

The access point’s SSID is pi-mitm and the password is abcd1234. These will be configurable in an upcoming release.

The image can be downloaded from here and the manual is below.

proxyHttp proxy_ip [http_port]
Enables http (port 80) forwarding to the proxy PC (Charles, Burp, Fiddler, etc.) residing at the provided IP address. Default port is 8888.

proxyHttps proxy_ip [http_port] [https_port]
Enables http (port 80) and https (port 443) forwarding to the proxy PC (Charles, Burp, Fiddler, etc.) residing at the provided IP address. Default ports are 8888 for http and 8889 for https. An SSL certificate will need to be installed on the target device. Devices that do not support the installation of such a certificate (such as Roku) are limited to http proxying.

unproxy
Disables port forwarding.

throttle downlink_speed uplink_speed
Throttles the network connection to the provided speeds (in kilobytes per second).

unthrottle
Unthrottles the network connection.

lanIp
Outputs the Pi MITM's LAN IP address.

wifiIp
Outputs the Pi MITM's WIFI IP address.

updateSystem
Updates the OS and its packages to the latest versions.

reboot
Reboots the Pi MITM device.

shutdown
Shuts down the Pi MITM device.