Senior Design

Using Open Source Intelligence to Visualize Industrial Controller Risk

This project aims to utilize existing open source intelligence to help operators of industrial control systems (ICS) better understand the cyber-security related risks their devices face. We aim to use search engines such as Shodan and Censys to find exposed ICS devices, and then correlate these exposed devices with vulnerabilities found in the National Vulnerability Database or the Common Vulnerabilities and Exposures database. This project is still in progress. My role on the project is "Test Engineer."

You can check out the project website here.

CyBots

Winner of Computer Science 309 'Best Project' Award (Voted #1 out of 59 group projects)

Cybots is a web-based platform for battling real life-robots in a laser-tag-like game. Users log onto the CyBots website, head to the lobby and choose their role. They can choose between two prebuilt robots, each with their own advantages and disadvantages. Once they choose which robot they want, they have to choose which job they want on the robot: driver or gunner. The driver uses the web interface to maneuver the robot around the room, while the gunner uses the arrow keys to move the camera and mounted infrared laser around.

Once all players are connected, the game begins. The driver has to maneuver his robot to try to dodge the enemy blasts, and the gunner has to try and shoot his laser at the opposing robot. Everytime a robot is hit by a laser, it loses health. As it loses health, it starts to move slower and slower, until the health reaches zero and the game is lost.

Each robot has the following:

We built two robots for this project. The first was affectionately named Cornelius:

Cornelius the Robot

And we named the second Mr. Robot:

Mr. Robot

Vinny the Chatroom Moderator

Fall 2016 HackISU Project

Vinny is the name we gave to a moderating bot for the instant messaging application Discord. Two of my friends and I created Vinny at an ISU Hackathon to replace a moderator bot that was being used in our Discord server, but was no longer being maintained. Vinny’s original goal was to perform basic moderating tasks such as preventing spam and harsh language. Eventually we added more features, such as the ability to play songs over the chat channel.

I was in charge of writing Python code that would allow Vinny to access data from other websites via various API’s. I used API’s from Clarifai, Reddit, and other image websites to allow Vinny to access funny pictures and automatically post them in chat. In doing this, I learned a lot about ReSTful API’s and how to program in Python.

Vinny helps reduce the workload of Discord server moderators so they can spend more time interacting with people on their servers. Vinny is on Github and currently moderates over 300 servers.

Mars Rover

Final project for CprE 288: Embedded Systems.

The project involved programming a specialized Roomba to navigate a treacherous obstacle course, without being able to see the robot.

I wrote most of the “Rover” code: the code that ran on the actual robot, while my teammates wrote most of the “Mission Control” code, which is the code that ran on the computer that was wirelessly connected to the robot. This project presented many unique challenges for one reason: the robot’s processor was incredibly simple, and the memory was very small. This forced me to rethink how I wanted to write a lot of my code, because complex solutions that took a lot of memory were simply not possible.

While we probably won’t be putting a Roomba on Mars, there are many important applications of the same principles of embedded software that I learned during this project. The same principles of lightweight and reliable design can be applied to any low-cost embedded platform.

Mars Rover

Infrared Light Sensor

Final Project for EE 230: Electronic Circuits and Systems

The goal of this project was to make two devices that can wirelessly communicate using only infrared light. The first device, the 'transmitter' has an infrared LED that sends pulses of IR light towards the receiver. The transmitter has a switch that lets the user choose between two different pulse frequencies for the LED. The second device, a.k.a. the 'receiver', will either light up a red LED or yellow LED depending on which frequency the users chose on the transmitter.

This project serves as a basic representation of how wireless communication might be achieved using filters. Similar concepts are used in devices like TV remotes.

Transmitter

Transmitter Transmitter Diagram

Receiver

Receiver Receiver Diagram