Skip to content

Instantly share code, notes, and snippets.

@esafwan
Last active May 5, 2025 04:22
Show Gist options
  • Save esafwan/2255a4c945ed8d3bca9c4534ca813822 to your computer and use it in GitHub Desktop.
Save esafwan/2255a4c945ed8d3bca9c4534ca813822 to your computer and use it in GitHub Desktop.
Accessing video stream from E88 Drone on laptop.

Command to play:

You will need ffmpeg installed safwan@secure-server drone % ffplay rtsp://192.168.1.1:7070/webcam

Shell output:

safwan@secure-server drone % nmap -p 554,7070,8554,8555,8080,8888 --open 192.168.1.1

Starting Nmap 7.95 ( https://nmap.org ) at 2025-05-04 01:38 +04
mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 3.03 seconds
safwan@secure-server drone % ffplay rtsp://192.168.1.1:7070/webcam

ffplay version 7.1.1 Copyright (c) 2003-2025 the FFmpeg developers
  built with Apple clang version 16.0.0 (clang-1600.0.26.6)
  configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/7.1.1_1 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags='-Wl,-ld_classic' --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libharfbuzz --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox --enable-audiotoolbox --enable-neon
  libavutil      59. 39.100 / 59. 39.100
  libavcodec     61. 19.101 / 61. 19.101
  libavformat    61.  7.100 / 61.  7.100
  libavdevice    61.  3.100 / 61.  3.100
  libavfilter    10.  4.100 / 10.  4.100
  libswscale      8.  3.100 /  8.  3.100
  libswresample   5.  3.100 /  5.  3.100
  libpostproc    58.  3.100 / 58.  3.100
Input #0, rtsp, from 'rtsp://192.168.1.1:7070/webcam':   0B
  Metadata:
    title           : Test
  Duration: N/A, start: 0.000000, bitrate: N/A
  Stream #0:0: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 640x384 [SAR 1:1 DAR 5:3], 21.42 tbr, 90k tbn
[swscaler @ 0x128368000] deprecated pixel format used, make sure you did set range correctly
2025-05-04 01:38:40.823 ffplay[27957:3727918] +[IMKClient subclass]: chose IMKClient_Legacy
2025-05-04 01:38:40.823 ffplay[27957:3727918] +[IMKInputSession subclass]: chose IMKInputSession_Legacy
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
    Last message repeated 3 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
    Last message repeated 4 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
    Last message repeated 1 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 2 packets
[rtsp @ 0x143015f80] Received packet without a start chunk; dropping frame.
    Last message repeated 3 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
    Last message repeated 1 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
    Last message repeated 6 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
    Last message repeated 2 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 2 packets
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 3 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
    Last message repeated 7 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
    Last message repeated 3 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
    Last message repeated 1 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
    Last message repeated 4 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
    Last message repeated 2 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
    Last message repeated 3 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Received packet without a start chunk; dropping frame.
    Last message repeated 10 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
    Last message repeated 7 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
    Last message repeated 5 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
    Last message repeated 11 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
    Last message repeated 8 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
    Last message repeated 4 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
    Last message repeated 2 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
    Last message repeated 10 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Received packet without a start chunk; dropping frame.
    Last message repeated 7 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
    Last message repeated 1 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
    Last message repeated 12 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 11 packets
[rtsp @ 0x143015f80] RTP timestamps don't match.
[rtsp @ 0x143015f80] Received packet without a start chunk; dropping frame.
    Last message repeated 10 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 3 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
    Last message repeated 11 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 1 packets
[rtsp @ 0x143015f80] Missing packets; dropping frame.
    Last message repeated 9 times
[rtsp @ 0x143015f80] max delay reached. need to consume packet
[rtsp @ 0x143015f80] RTP: missed 2 packets

Drone Communication Protocol Specification (Model: FLOW-UFO / Similar)

1. Wi-Fi Network

  • The drone acts as a Wi-Fi access point (SSID varies by model).
  • Default IP address of the drone: 192.168.1.1
  • Accepts only one client device at a time.

2. Control Communication

  • Protocol: UDP

  • Port (Destination): 7099

  • Command Packet Format: 2 bytes

    • Example: 01 01 (Confirmed to trigger takeoff)
  • Client (Phone/App) sends this packet to the drone to initiate commands.

  • Drone (192.168.1.1) sends telemetry-like responses (11-byte UDP packets) to the client on dynamic ports.


3. Video Stream

  • Protocol: RTSP over TCP
  • Port: 7070
  • Stream URL: rtsp://192.168.1.1:7070/webcam
  • Codec: MJPEG (Motion JPEG)
  • Resolution: 640x384
  • Frame Rate: ~21.4 fps
  • Color Format: yuvj420p

4. Video Notes

  • The stream may experience packet drops or skipped frames over Wi-Fi.
  • RTSP negotiation begins with standard OPTIONS/SETUP requests to /webcam.
  • Compatible with tools like FFplay, VLC, OpenCV, and FFMPEG.

5. Port Scan Observations

  • Open TCP Ports:

    • 8080 (possibly HTTP interface, not used for video)
    • 7070 (RTSP stream)
  • Closed Ports: 554, 8554, 8888, etc.


6. Tools Used for Analysis

  • Traffic Capture: PCAPdroid (Android)
  • Analysis: Wireshark (macOS), Nmap, FFplay
  • Command Replay: Python UDP sockets
  • Video Playback: VLC, FFplay, OpenCV
@esafwan
Copy link
Author

esafwan commented May 3, 2025

Live feed from ffplay:
Screenshot 2025-05-04 at 1 44 20 AM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment