Inspiration

We were inspired to create this software by the legendary port scanner application nMap. We wanted to do something related to networking because we all have a networking background and it fits with the theme of connectivity. We are new to C++ and this seemed like a great project to learn more about this beautiful language.

What it does

The TCP/IP port scanner scans a list of well-defined ports or a custom port that you specify. It accepts IPv4 and IPv6 addresses as arguments. It will return OPEN or CLOSED based on the status of the TCP port. It does not include UDP at this time.

How we built it

We used a asynchronous IO library from Boost to build the socket logic. We also used a dictionary with key-value pairs to store all the data for the ports and descriptions. We worked together to provide APIs that each person could use to accomplish our shared goal.

Challenges we ran into

We used a SFML library to create sockets at first, but this proved to not be useful for our goal of support IPv6. We eventually switched over to Boost as it would provide the support we needed.

Accomplishments that we're proud of

Everything! Well, it was nice to support IPv6 after all, and it was definitely cool to see all of our classes working together. We have a team from many different experience levels and background, and we all were able to work together to accomplish something great.

What we learned

Asynchronous IO, C++ vectors, static variables in classes, lots of stuff that we haven't covered in CptS 122 yet!

What's next for TCP/IP(v4/v6) Port Scanner

We would like to allow a range of IP addresses to be scanned, or to put in a bitmask and automagically calculate the host IP addresses in that network to scan. (For example, 192.168.10.1/25 would scan 192.168.10.1-192.168.10.126).

Built With

Share this project:

Updates