People who have their computers stolen while they are still logged on face huge risks of personal info and data theft. Therefore, we created an app that makes people's lives safer and easier by giving them the ability to shut off their machine at their fingertips. When a user realizes somebody stole their computer while it was unlocked, they can just shut it off remotely and the thief is locked out behind a password. Also, as a plus, it helps lazy people shut off their computers in bed or wherever they please.
What it does
User will enter the password they previously set up on the client machine (the one that is getting killed). The user can click a button to shut off the computer instantly, no matter where the computer is (granted it is connected to the Internet). Also, we hope to extend the features to include being able to track the location of the computer through the app, and being able to display an accustomed user-inputted message on the computer screen for potential thieves to see.
How I built it
The project was structured around the Google Cloud Publisher and Subscriber (Pub/Sub) service to transfer messages through the cloud. On the sending end, there is an Android app with a button that, when pressed, sends a HTTP POST request to a node.js web server. Also included on the Android app is a spot for the user to enter a password to send to the client machine as part of the request. The web server then uses the Pub/Sub API to send a message to the Google Cloud. On the receiving end, there is a Java program that listens for and interprets each message, parses out the user-inputted password, and checks against a secure password hidden on the client computer. If everything checks out, the computer is promptly shut down in the fastest time possible, forcibly closing all running processes and tasks. Because we used command-line scripts to shut the computer down, we were easily able to convert the program to multiple different OS (Linux, Windows, and Mac).
Challenges I ran into
A lot of the challenges we had dealtwith the usage of various libraries (including Pub/Sub and OkHttp for POST requests). We noticed that the documentation and references online were out-of-date (specifically Google's docs that were straight-up wrong) and had to do a lot of research and testing to work out the kinks. Every other problem had a quick fix that took a few seconds to get up and running.
Accomplishments that I'm proud of
Our project has 4 separate components that we needed to work together (Google Cloud, Java on the Client, Android App, and Node.js Server) in order for the project to function flawlessly. Overall we did a good job with managing errors and making sure we don't screw up the programs too much during testing.
What I learned
We learned how to further use Google Cloud's capabilities to its fullest. We will be much more experienced next time we need to use it.
What's next for Kill Switch
We aim to establish a two-way connection between the client and the Android app. This would allow us to send live location data, reverse the kill switch's effects to the android, and send back success/failure messages to notify the user if the shutdown worked. We didn't have enough time to include this stuff already.