SkyJack: A Drone to Hack All Drones


Fresh hacks every day
DECEMBER 6, 2013
SkyJack: A Drone to Hack All Drones

December 6, 2013 by Josh Marsh 9 Comments

Quadcopters are gradually becoming more affordable and thus more popular; we expect more kids will unwrap a prefab drone this holiday season than any year prior. [Samy’s] got plans for the drone-filled future. He could soon be the proud new owner of his own personal army now that he’s built a drone that assimilates others under his control.

The build uses a Parrot AR.Drone 2.0 to fly around with an attached Raspberry Pi, which uses everybody’s favorite Alfa adapter to poke around in promiscuous mode. If the SkyJack detects an IEEE-registered MAC address assigned to Parrot, aircrack-ng leaps into action sending deauthentication requests to the target drone, then attempts to take over control while the original owner is reconnecting. Any successfully lassoed drone doesn’t just fall out of the sky, though. [Samy] uses node-ar-drone to immediately send new instructions to the slave.

You can find all his code on GitHub, but make sure you see the video below, which gives a thorough overview and a brief demonstration. There are also a few other builds that strap a Raspberry Pi onto a quadcopter worth checking out; they could provide you with the inspiration you need to take to the skies.

580 total views, no views today

The Dark Pi Rises – Robot parts and code



The Dark Pi Rises

Submitted by algorhythmic on Mon, 20/08/2012 – 22:02

Did you think that the Raspberry Pi will only be limited to benign uses? Did you think that the Raspberry Pi will always bask in the light of day? Well this Raspberry Pi…has embraced the darkness.

Okay I might have overdone it a bit =) no thanks to iMovie’s trailer templates! This will be a series of tutorials and code on the construction of Xaver Mk.2. Watch this space! For the next few weeks this article will be a work in progress.

The Architecture

To use the Raspberry Pi in a robot, we need to get the Raspberry Pi mobile first. I used a Tecknet IEP387 USB power pack which provides 7000mAh at 5 volts, which is enough to power the Raspberry Pi for several hours. The power pack has 2 USB power outputs, and I used the first one for the Raspberry Pi, the second one for the powered USB hub using a USB-A to 3.5mm DC jack cable.

I then connected an Arduino to the Raspberry Pi using the USB cable. This enables the Arduino to receive commands from the Raspberry Pi using the serial interface (/dev/ttyACM0), and the Arduino then deals with the hardware such as LEDs and motors. This set-up enables me to keep adding things to be controlled – currently 2 servos, a 5mW red laser diode, a white LED, a 940nm IR LED, as well as the main car motor. This set-up is only limited by the number of available pins on the Arduino (currently 3 motor outputs and 3 digital pins are unused).

Finally, I connected a PS3 eye to the USB hub to serve as the robot’s onboard camera. I also removed the IR filter on this camera. This makes colours look a bit strange in daylight, but is essential for the night vision capability of Xaver Mk.2.

Setting Up The Wifi

First, you need to install the Raspbian image into an SD card. Once the image is loaded on the SD card, it will be recognised on a linux computer as containing 2 partitions. On the 2nd partition, navigate to /etc/network and as root, edit the file ‘interfaces’. Put:

Replacing, of course, the ssid and password with your own network ssid and password. The Raspberry Pi forums and website contains more details on getting wifi set up on the Raspberry Pi. One tip – use a USB wifi dongle which uses a Ralink or Atheros chipset. Unfortunately, the very small wifi dongles (like the Edimax EW-7811un) use a Realtek chipset which is not as capable on linux yet. If you’re going for those wifi dongles anyway, I recommend using the Adafruit Occidentalis version of Raspbian, as they get recognized automatically.

Once you start the Raspberry Pi, it should then connect automatically to the access point. You can connect the Raspberry Pi to a monitor to see its IP address, or you can use Nmap and scan for open SSH ports.

So assuming everything went well, log in through SSH:

Now you have control over your Raspberry Pi without connecting it to a keyboard or monitor!

Setting Up The Webcam

After some trouble with other webcams, I settled on using the PS3 eye webcam. You can buy used ones from game stores for about £5. One good thing about the PS3 eye is its extremely fast frame rates at low resolution (60-120 fps), and for £5, that’s very good value for money!

To use it, let’s install some required programs:

There are several ways to stream the webcam output to the network, but I settled on GStreamer because 1) I couldn’t get VLC to work, 2) ffserver, motion and mjpeg consumed more CPU when I tried them. The following command gives me 10fps at 320×240, at only 25-30% CPU usage:

UPDATE: The Raspberry Pi Foundation has updated the firmware to enable H.264 encode on the GPU – I’ll be working on getting this working as this could enable phenomenal improvement in the webcam streaming while using *less* CPU!

To open the Raspberry Pi’s stream on your desktop, just fire up VLC and click ‘File->Open Network Stream’ and type in ‘tcp://’ in the location bar (replace the IP address with your Raspberry Pi’s IP address!).

Now you should have ‘live’ streaming from your Raspberry Pi!

Using A PS3 Controller

In one of my earlier posts, I enabled control of a robotic arm through a PS3 sixaxis controller. To do this, we need to install the qtsixa package on the LAPTOP/DESKTOP we’re using to control the robot:

This should hopefully pull in the sixad daemon which we need to recognise the PS3 sixaxis as a joystick. Alternatively, you can just use a normal PC joystick.

Follow the instructions on the qtsixa website to connect your PS3 controller to your computer. Finally, you need to install pygame (again, still on the laptop/desktop you’re using to control the Raspberry Pi):

Setting Up Ad-Hoc Wifi

To actually be able to use wi-fi outdoors, I followed debian’s documentation on setting up an ad-hoc network:

RASPBERRY PI /etc/network/interfaces:

On the linux laptop: use gnome network manager to connect to MYNETWORK, but set a manual IP address of, with a gateway of Take note that ad-hoc is NOT supported in all of linux wifi drivers. (Ralink 2500 does not support it, neither do most Realtek chips)

All in all, the control architecture of Xaver Mk.2 can be represented by the diagram below:

PS3 + TCP client in python:

The TCP server running on Xaver:

The Arduino sketch:


1,364 total views, no views today