Adam Caudill

Security Leader, Researcher, Developer, Writer, & Photographer


I recently finished building my first MiniPwner – a tiny OpenWrt-based system for pen-testing. At only 2.25 x 2.25 inches, the device plus battery is still extremely small – it easily fits in a pocket, and could be hidden anywhere.

The device is based on the TP-LINK TL-WR703N, which uses a 400Mhz Atheros AR7240 CPU – not exactly a power-house, but enough power for standard pen-testing (or even just as a super-portable linux box). In cases where the 400Mhz CPU and 32MB RAM aren’t enough, you can easily use OpenVPN as a tunnel to run your tests remotely.

The total investment for the build was only $38 – though next time I’ll pay a little extra and get the 16GB drive – mostly for extra room when working with logs. The 4GB drive used in the standard build has plenty of room for the software – but I’d rather have the extra room to work with.

The build process was process was simple – thankfully the instructions are quite good, though I did have to change a few things to make it all work.

Step 1): To save looking, here’s a direct link to the OpenWrt image.

Step 4): I formated the thumb drive by mounting it in a Ubuntu VM, and used GParted to delete the existing partition, and created a 512MB swap partition, then the rest is ext4.

Step 16): Read step 17 first so you don’t feel so stupid for wasting time trying to figure out why step 16 doesn’t seem to do anything.

Step 21): I use WPA2 on my network, so I had to edit the /etc/config/wireless a little differently:

config wifi-iface
        option device   wlan0
        option network  wan
        option mode     sta
        option ssid     <ssid>
        option encryption psk2+tkip
        option key <password>

More information about the wireless setup can be found here.

Step 24): My local wireless network is in the 192.168.1.x range, so this wasn’t working for me. Seeing as changing the wireless doesn’t make sense for me (way too many static devices), I had to change the IP address of eth0 to deal with the issue. I updated my /etc/config/network to look something like this:

config 'interface' 'lan'
        option 'ifname' 'eth0'
        option 'type' 'bridge'
        option 'proto' 'static'
        option 'ipaddr' ''
        option 'netmask' ''

Once the change is made, you’ll need to execute /etc/init.d/network restart – then update your PC’s static IP address to “” and reconnect your telnet session.

Step 27): When executing the installs I was receiving this error:

opkg_install_cmd: Cannot install package <package-name>

To correct this error, I had to run opkg update – after this the installs started working fine.

Step 27b): The install for samba2-client was failing, as there isn’t a package by that name – though samba36-client installed fine.

Overall, it’s a great little setup – I’m quite pleased.

Adam Caudill