Friday, August 26, 2011

Network Scanner for Android : A summary

Working on the Google Summer of Project with Umit has perhaps been the best learning experience for me. I am a Computer Engineering undergraduate and in our course of study, we learn about a lot of theoretical concepts and ideas. Working for this project has given me an opportunity to apply those concepts into an application that will be helpful to many users. It is a true practical application of what is in books.

Network Scanner for android is a Network administration tool that lets you monitor your network for services and hosts. It supports the following features -

1. Host Discovery
a. ICMP packet (isReachable in Java)
b. native linux ping
c. TCP Connect
d. TCP Multiport connect
e. UDP
f. ARP Scan

2. Port Scanning
a. SYN Scanning (root)
b. FIN Scanning (root)
c. TCP Connect scan
d. UDP Scan

3. Traceroute (root only)

4. A port of nmap for android (root only)

The application lets you save the scans, view log files and gather extra network information. You can find more information about the project at the Project page on

The main learnings from this project would be
1. A very in-depth study of port scanners
2. Raw packet manipulation
3. UNIX sockets programming
4. Android programming
5. Native android programming and cross-compiling
6. Various linux networking utilities
7. nmap

I got to spend a lot of time with low-level networking stuff while writing the port scanner. At one point of time I could even read raw packets and infer the flags without even looking at the reference. It was a really good learning experience.

Even though I am done with Google Summer of Code, I would really be interested in continuing the development of this project in the future. Its an interesting project and mobile is the future. And now that almost all our phones run Linux (Android :P), we should have more control over what we can do with them. This application is a very good example of exploring the power of Linux on handheld devices.

Here are some screenshots from the application -

Host Discovery

Log File Viewer

Nmap output

nmap XML parsed output

Port Scan using SYN Scan



  1. I need to create application for android that sends IP and TCP packets with headers chosen by me. I need to control some bytes inside these headers. Could you give me some hints how to do it because your application seems similar in some way?

  2. Hey, post this question in our dev mailing list: and you might get a faster and more complete answer!