Inspiration

After our cybersecurity class averaged a 69% on the first midterm, we realized that we needed a better way to learn about the most challenging section of the midterm: iptables. So, we decided to create a simulation that would visualize the intricacies of packet flow throughout a network system in an easy-to-understand manner.

What it does

Our program provides a visualization for packet travel between devices on a network. The user can add NAT routing rules, filter rules, and connections between devices through the command line in our program’s GUI in order to configure the simulated network and test different network structures and scenarios, such as data traffic congestion and man-in-the-middle attacks. Our program’s GUI also has sliders on the right side of the screen to enable fine-tuning - the user can adjust the rate at which packets are sent and how often the program updates, as well as allowing the user to zoom in and out to better examine the network.

How we built it

Our simulation was built using the Java programming language and the Slick2D graphics library with the Eclipse IDE. We chose Java over other languages due to its many program paradigms which can be used to easily build and scale complex systems. Part of these considerations included object oriented abstractions which enable many design patterns, as well as the many native libraries Java provides which provides a basis for more sophisticated algorithms.

Coming into Bitcamp, we knew we wanted to make something big. In order to do so, we needed a workflow that would best utilize everyone’s skills. This was done by using GitHub source control, alongside program modularization to streamline our collaboration on a single codebase. Additionally, we emphasized close cooperation to obtain everyone’s input before implementing new ideas or major changes.

Challenges we ran into

Networks are complex, and are far too comprehensive to completely simulate. As a result, we needed to decide which network components to highlight in the simulation, requiring tons of forehand research and planning. Due to the intricacies and interdependencies between every component, we found it tricky to select and seamlessly integrate individual parts from the larger network ecosystem, to create an accurate network system.

Accomplishments that we're proud of

We’re proud of creating a deliverable that does everything that we mentioned above, all in a day and a half! Our program exceeded our expectations both visually and functionally, and we were all happy to work on something we’re passionate about.

What we learned

Our team members had little to no experience with the Slick2D library, so we learned how to use it in order to develop the program’s GUI. Our team members also did not have much experience with Github, so we gained a deeper understanding of it as well.

What's next for Hot Packets

After Bitcamp, we will add more functionalities to Hot Packets. One feature we plan to add is the ability to import real metadata into our simulation via a NetFlow log, which can be used to run network diagnostics and perform digital forensics.

Built With

Share this project:

Updates