Welcome to our Community
Wanting to join the rest of our members? Feel free to sign up today.
Sign up

Enumerating Parrot Anafi's API endpoints (part 1 of 3)

rudispropmgmt

Member
Joined
Nov 1, 2022
Messages
7
Reaction score
2
Location
Denver, CO (USA)
Website
marcusboydresearch.wordpress.com
Hi ParrotPilots Community! This is a longer post & 1 of 3 part series, but I hope the content is valuable.
TL;DR - see below for a list of API endpoints for the Parrot drone & SkyController3.

Intro/Background​

I've been searching for a way to create double-grid flight plans so I can create 3D models of cemetery sites for the purpose of historic preservation. Pix4DCapture is a great app but has the 1 limitation that doesn't allow for flying below 10 meters. I've been exploring other methods highlighted on the forum and wanted to share some interesting findings along the way that I haven't seen covered in this forum.

The Parrot Drone & SkyController3 run as webservers when the devices are in operation. This means you can "log on" to both the drone & controller to get valuable information while the devices are running. To checkout the drone's webserver you must:
  1. Turn on the drone
  2. Connect to the drone's wifi network - probably something like "ANAFI-0123456"
  3. Put this into your web browser: 192.168.42.1 - this is the IP address of the drone's webserver.
  4. (Optional) Plug phone that's running FF6 into SkyController as if you were going to fly the drone. Note this is required for seeing the controller's webserver.
Clicking around the available screens/tabs was fun but the real fun part about web servers & web services is they lend themselves to programmatic access. Many webapps are built on APIs (Application Programming Interface) & I've seen several references to a flightplan upload API endpoint on this forum. I knew there must be more so I set out to find/enumerate any other API endpoints.

Getting Started​

First, my the tools for the job:

My Hardware:s​

  • Parrot Drone: firmware version 1.8.2
  • SkyController3: firmware version 1.8.1
  • Android phone running FF6 App v6.7.6
  • Windows 10 laptop running the software below.

Software tools used​


The process​

Second, I wanted to identify any devices running on the Anafi's network. Angry IP Scanner searches on a range of IP addresses so I started searching from 192.168.42.1 to 192.168.42.255 while connected to the drone's wifi network. Doing this allowed me to identify the IP address of the controller. In my case it was 192.168.42.47 but your results may vary & I've seen other IP addresses for the SkyController3 on this forum.

Third, I started Wireshark while on the drone's Wifi network. Wireshark is a hacking/snooping tool perfect for monitoring unsecured traffic over a network. As Wireshark was running I clicked around the drone's webserver on my internet browser. I clicked all buttons I could find including downloading & deleting media. I also played with every stick/button on the controller. I also took a few pics & recorded video with the controller which will be useful later. Performing these actions generated a lot of data within Wireshark as it logged all the traffic between the controller & drone and computer & drone. It took several minutes to click around all tabs/pages. Next I did the same thing on the controller with the IP address provided by Angry IP Scanner.

Fourth, I read through all the data generated by Wireshark to uncover many API endpoints that I haven't seen mentioned on any forums or elsewhere on the internet. Note that APIs can be used to GET (read) information which is the focus of this post. APIs can also be push to POST/PUT (write) & DELETE information, but I don't explore those functions here. For the Anafi drone, I identified the following API endpoints:

Anafi Drone Webserver API Endpoints​

http://192.168.42.1/api/v1/fdr/lite_records http://192.168.42.1/api/v1/fdr/records http://192.168.42.1/api/v1/info/properties http://192.168.42.1/api/v1/media/medias http://192.168.42.1/api/v1/pud/puds http://192.168.42.1/api/v1/report/reports http://192.168.42.1/api/v1/sdk/description http://192.168.42.1/api/v1/update/version http://192.168.42.1/api/v1/upload/flightplans http://192.168.42.1/api/v1/web/model http://192.168.42.1/api/v1/web/modules http://192.168.42.1/data/media/<specific_image_filename>.JPG http://192.168.42.1/data/fdr/<specific_fdr_log_filename>.bin

For the SkyController3, I identified the following:

Anafi SkyController3 Webserver API Endpoints​

http://192.168.42.47/api/v1/drones/list http://192.168.42.47/api/v1/fdr/records http://192.168.42.47/data/fdr/<specific_fdr_log_filename>.bin http://192.168.42.47/api/v1/info/properties


Fifth, I used Postman to organize & handle all the API calls. In this case Postman provides convenience but is not necessary. If you open a command prompt on a windows machine you can export the results of any API endpoint to a file on your local machine with a command like this:

curl http://192.168.42.1/api/v1/info/properties > info_properties.json

Finally, go check it out for yourself! If you'd like to see some examples of the type of data provided by the APIs above, check out my second post on this topic. If you find additional API endpoints please share!

Last, I need to give credit to a few posts that were an inspiration to this post:
 

Attachments

  • drone-webserver.PNG
    drone-webserver.PNG
    36.8 KB · Views: 4
  • skycontroller-webserver.PNG
    skycontroller-webserver.PNG
    33.1 KB · Views: 4
  • Like
Reactions: BRC

Latest threads

Members online

No members online now.

Forum statistics

Threads
5,030
Messages
43,668
Members
7,282
Latest member
ilizafi