This is a little setup to completely automate the configuration on a fresh raspbian. It will install GO, Bettercap and Pwnagotchi. Next to that it will enable OTG as Ethernet Gadget and create some automation services.
sudo apt update
sudo apt full-upgrade -y
sudo apt install bc git libpcap-dev libnetfilter-queue-dev libusb-1.0-0-dev build-essential python3 python3-pip3 dkms raspberrypi-kernel-headers -y
pip3 install --upgrade pip setuptools
# install go
wget https://go.dev/dl/go1.17.6.linux-armv6l.tar.gz
sha256sum go1.17.6.linux-armv6l.tar.gz
rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.17.6.linux-arm6l.tar.gz
#export PATH=$PATH:/usr/local/go/bin
echo PATH="$PATH:/usr/local/go/bin" >> ~/.profile
source ~/.profile
rm go1.17.6.linux-arm6l.tar.gz
# bigger swap
sed 's/# CONF_SWAPSIZE=100/CONF_SWAPSIZE=1024/' /etc/dphys-swapfile
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start
# install bettercap
go install github.com/bettercap/bettercap@latest
sudo mv go/bin/bettercap /usr/bin/
sudo bettercap -eval "caplets.update; ui.update; quit"
# install pwngrid
git clone https://github.com/evilsocket/pwngrid.git
cd pwngrid
make
make install
sudo pwngrid -generate -keys /etc/pwnagotchi
cd
# install pwnagotchi
git clone https://github.com/evilsocket/pwnagotchi.git
cd pwnagotchi
sudo pip3 install -r requirements.txt
sudo pip3 install .
cd
# OTG configuration
echo "dtoverlay=dwc2" >> /boot/config.txt
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
echo "nameserver 8.8.8.8" >> /etc/network/interfaces
sed 's/# rootwait / rootwait modules-load=dwc2,g_ether /' /boot/cmdline.txt
# for static address
# echo -e "interface usb0 \nstatic ip_address=169.254.64.64" | sudo tee -a /etc/dhcpcd.conf
# add wifi driver rtl88x2bu
git clone https://github.com/cilynx/rtl88x2bu
cd rtl88x2bu/
sed -i 's/I386_PC = y/I386_PC = n/' Makefile
sed -i 's/ARM_RPI = n/ARM_RPI = y/' Makefile
VER=$(sed -n 's/\PACKAGE_VERSION="\(.*\)"/\1/p' dkms.conf)
sudo rsync -rvhP ./ /usr/src/rtl88x2bu-${VER}
sudo dkms add -m rtl88x2bu -v ${VER}
sudo dkms build -m rtl88x2bu -v ${VER}
sudo dkms install -m rtl88x2bu -v ${VER}
echo 8812bu | sudo tee -a /etc/modules
ip addr
cd
# add wifi driver rtl88x2a
git clone https://github.com/gnab/rtl8812au.git
cd rtl8812au/
sed -i 's/I386_PC = y/I386_PC = n/' Makefile
sed -i 's/ARM_RPI = n/ARM_RPI = y/' Makefile
sudo make dkms_install
echo 8812au | sudo tee -a /etc/modules
ip addr
cd
# create autostart services and launchers
## bettercap autostart
sudo tee /etc/systemd/system/bettercap.service <<EOF
[Unit]
Description=bettercap api.rest service.
Documentation=https://bettercap.org
Wants=network.target
After=pwngrid.service
[Service]
Type=simple
PermissionsStartOnly=true
ExecStart=/usr/bin/bettercap-launcher
Restart=always
RestartSec=30
[Install]
WantedBy=multi-user.target
EOF
## bettercap launcher
sudo tee /usr/bin/bettercap-launcher <<EOF
#!/usr/bin/env bash
/usr/bin/monstart
if [[ $(ifconfig | grep usb0 | grep RUNNING) ]] || [[ $(cat /sys/class/net/eth0/carrier) ]]; then
# if override file exists, go into auto mode
if [ -f /root/.pwnagotchi-auto ]; then
/usr/bin/bettercap -no-colors -caplet pwnagotchi-auto -iface mon0
else
/usr/bin/bettercap -no-colors -caplet pwnagotchi-manual -iface mon0
fi
else
/usr/bin/bettercap -no-colors -caplet pwnagotchi-auto -iface mon0
fi
EOF
## pwngrid autostart
sudo tee /etc/systemd/system/pwngrid-peer.service << EOF
[Unit]
Description=pwngrid peer service.
Documentation=https://pwnagotchi.ai
Wants=network.target
[Service]
Type=simple
PermissionsStartOnly=true
ExecStart=/usr/bin/pwngrid -keys /etc/pwnagotchi -address 127.0.0.1:8666 -client-token /root/.api-enrollment.json -wait -log /var/log/pwngrid-peer.log -iface mon0
Restart=always
RestartSec=30
[Install]
WantedBy=multi-user.target
EOF
## pwnagotchi configuration
sudo tee /etc/pwnagotchi/config.toml <<EOF
main.name = "pwnagotchi"
main.lang = "en"
main.whitelist = [
"EXAMPLE_NETWORK"
]
main.plugins.grid.enabled = true
main.plugins.grid.report = true
main.plugins.grid.exclude = [
"YourHomeNetworkHere"
]
ui.display.enabled = true
ui.display.type = "waveshare_2"
ui.display.color = "black"
EOF
Share your Network connection with RPiZero over OTG
On the host PC
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward > /dev/null
sudo iptables -P FORWARD ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 10.0.0.1/24
sudo ifconfig usb0 10.0.0.1 netmask 255.255.255.0
route
Then on the Zero
ping -c 3 8.8.8.8 #google domain server
echo "nameserver 8.8.8.8." >> /etc/resolv.conf
ping -c 3 google.com
To disable forwarding network packets, on your host PC
echo 0 | sudo tee /proc/sys/net/ipv4/ip_forward > /dev/null
sudo iptables -t nat -F POSTROUTING
More information:
- https://developer.ridgerun.com 🔗
- Pwnagotchi 🔗
- https://learn.adafruit.com/turning-your-raspberry-pi-zero-into-a-usb-gadget/ethernet-tweaks
💬 Comments
Comments are not enabled for this article yet.