Scan Ip
Network scanning application developed with Flutter, Dart, Python and C.
History
Scan IP is a project that emerged as an idea in late 2024. Initially, it wasn't even planned to become an application. During that same period, I was applying for a postgraduate position in Information Security and decided that, regardless of the selection process outcome, I would study the basics of the security field.
I started by reviewing fundamental topics such as operating systems, auditing, and among them, networks — a subject I had already seen in college. Out of curiosity (something that always accompanies me), I decided to go beyond theory and move to practice. I started with the Python language, making small requests and using third-party libraries. Over time, I began to delve deeper into the internal workings of these libraries to better understand how everything happened "under the hood".
Then the question arose: what if I connected all this with Flutter, which I already use in my daily life as a mobile developer? From there, the project began to take shape. For what I had initially thought, the result was within expectations, but I wanted to go further.
At a certain point, my home network was quite unstable. To investigate, I used a web speed test tool and, shortly after, I found myself thinking: why not create my own tool? It was exactly at this point that Scan IP was born for good.
The initial idea was to develop a mobile application capable of measuring internet speed, similar to well-known web tools. However, as I was focused on studies aimed at information security, I decided to go further. One of the topics I was studying at the time was network scanning, so I thought: why not add this functionality as well? Thus, Scan IP began to differentiate itself from other applications in the same segment.
With daily use and the evolution of the project, new ideas and features naturally emerged. Some of them, however, were left out of the first version, mainly because they depended on more advanced permissions, such as root access. Therefore, I chose not to make them available initially, at least until I found viable and safe alternatives to implement them.
Project Architecture
UI / Presentation
Flutter Widgets & Charts
(fl_chart • user interaction)
Application & Orchestration Layer (Dart)
• Speed Test Controller
• Network Scan Controller
• State Management (Provider)
• Business Rules
• Isolates (compute)
Local Persistence Layer
SQLite (sqflite_ffi)
- Test history
- Detected devices
- Metrics and offline cache
Platform Controller
Platform Management
Windows
FFI Bridge (dart:ffi)
Dynamic loading
• C ↔ Dart Mapping
• Progress Callbacks
Native Network Engine (C)
• Thread orchestration
• Flow control
• Parallelism
• Monitoring
Speed Test • Network Scan
Android
Flutter Libs Usage
• Dart: IO
• flutter_internet_speed_test_pro
Linux
Linux Implementation
pthread
BSD Sockets
netlink / ioctl
Backend Services
Python REST API
- Functional extension
- Auxiliary operations
- Data normalization
- Global services
Operating System & Network Stack
Kernel • NIC • ARP • TCP/IP • System APIs