With the introduction of Microsoft's new clipboard history and cross-platform clipboard capabilities, we thought it would be an interesting challenge to create a clipboard utility that keeps your clipboard contents secure. We wanted everything in our clipboard to be encrypted to increase privacy and prevent keyloggers and other malware from stealing sensitive information from the clipboard. As cyber security students we have also had to work with malicious URLs that would compromise anyone that accidentally clicks on the link and visits the website. When sending potentially malicious links it is a best practice to “defang” them, by adding brackets around the periods the link can never become a hyperlink, preventing accidental clicks. We envisioned a program that could do both of these ideas at once, while also scanning the URL through VirusTotal.
What it does
Sclippy is a lightweight clipboard encryption and protection application. When Sclippy detects clipboard activity it will encrypt and scan the content. If the data is detected to be an IP or URL address, Sclippy can both defang and scan the address with VirusTotal to see if it is malicious. Sclippy will then alert the user when a malicious IP or URL is detected by VirusTotal.
Depending on the user's preferences, which can be set in the Settings pane, Sclippy can be set to defang only malicious IPs and URLs, all URLs and IPs, or completely turn off scanning with VirusTotal.
How we built it
We first decided to create a scope of the project. Which ideas we'd have time to implement, what we'd have to cut, what design routes to take, etc. Matt and Ian began working on the hard code of the project while Sam began sketching out UI ideas, and Daniel was helping with both the GUI and the Firefox extension. Sadly, we eventually had to scrap the Firefox extension as we began working on the integration too late in the competition.
I used Qt Designer to create the GUI for our project. The beginning was rough, I had zero experience in GUI's before this Hackathon and hadn't touched Python in a couple months. After struggling to just brute-force my way into making a UI, I decided to start reading some documentation as well as watched a few tutorial videos to understand how Qt Designer's interface worked. Once I had the basics down, I created a rough draft of the UI and sent it off to Matt and Ian so they could integrate the core functions with the UI objects. Since the rough draft had the same object names as the final version, it was super easy to integrate the code with the final UI. -Sam
Challenges we ran into
The biggest challenges we ran into were with the code itself. Creating each piece of the code, such as scanning through VirusTotal, defanging links, and glueing everything together caused a lot of bugs and headaches that resulted in many Google and Stack Overflow tabs open at the same time. - Ian
Figuring out which buttons and fields would work best for displaying our data, essentially trial and error with a lot of designs.- Sam
Creating a Firefox extension for Sclippy was a priority for us. The extension is designed to allow users to send any URL they find while browsing the Internet to Sclippy. However, there were complications in getting copying and writing to the clipboard to work with the extension. At the end of the day, the limited amount of time we had prompted us to cut this feature from our submission. However, we managed to create a context menu for the application with its icon when right-clicking on a URL. The extension could get worked on again in the future. - Daniel
Accomplishments that we’re proud of
Learning a whole GUI design environment was challenging as I've never made a GUI before, and I hadn't touched Python in a couple months. I'm proud that I was able to get a rough understanding of designing and implementing Python GUIs. -Sam
I worked with Sam on creating a GUI using Qt Designer. It was a bit challenging to learn the ropes on creating a GUI but it felt refreshing to jump over those hurdles. Creating a Firefox extension for the project was also a rewarding experience for me as I learned a lot over the past 24 hours on how to develop a browser extension. -Daniel
What I learned
Learning how to integrate so many different pieces of the program together was a great, and somewhat frustrating experience. - Ian
It's easy to make a GUI that works, but it's hard to make one that looks good. -Sam
I learned how to use PyQt5 and Qt Designer for creating a GUI for our project. I also learned the basics on creating a Firefox extension such as the .json file, creating a browser menu, and inserting custom images as icons - Daniel
What's next for Sclippy
We would like to expand Sclippy into something like a browser extension, so you can right-click and send a link to Sclippy right in your browser.