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

Threads:

pthread

Network:

BSD Sockets

ARP:

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