Skip to content

DiarmuidByrne/DistributedSystems-Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

DistributedSystems-Project

4th Year Distributed Systems RMI project

Diarmuid Byrne

This project is a Vigenere Cypher cracker using Remote Method Invocation (RMI). It works through the Tomcat server, which, when ran brings the user to a web page that allows them to input the cyphertext to be decrypted, the max key length, and an IP for the servant to run on. It the user leaves the IP address blank, the RMI will be ran on the local machine.

To run the application:

  • From the command line, while you're in the same folder as the jar, run java -cp vigenere.jar ie.gmit.sw.VigenereServant
  • Make sure the cracker.war file is in tomcat's webapps folder.
  • Ensure the included vigenere.jar file is added to Apache's lib folder
  • Run Tomcat and navigate to localhost:8080/cracker

This project is split into two sections:

  • The RMI-powered Vigenere Cypher Breaker (Vigenere.jar)
  • The Server that sends RMI requests (cracker.war)

Vigenere.jar: The Vigenere contains multiple classes.

  • Vigenere decrypts and encrypts a given plaintext entry with a given key.
  • Key Enumerator enumerates a number of generated keys, while decoding the cyphertext with them. It then scores that result based on the (logged) frequency it occurs in a given text file (The default file is War and Peace). The frequency is logged to prevent very common quadgrams from influencing the result.
  • QuadgramMap parses the specified text file and scores all the quadgrams in the list using a HashMap. It also scores the keys generated by KeyEnumerator.
  • VigenereBreaker is a remoteInterface. VigenereBreakerImpl is the implementation of VigenereBreaker which handles the cracking.
  • VigenereService is another remoteInterface. It adds a layer of abstraction by encapsulating an instance of VigenereBreaker. VigenereServiceImpl is the remote object.

Cracker.war: The war file controls the server-side tasks, such as creating requests with given parameters. It also provides functionality for threading.

  • CrackerHandler takes the parameters the user entered and passes the request off to an in queue. It also takes the result from an out queue and displays the information on screen.
  • Request encapsulates the parameters the user entered.
  • VigenereHandler does a Naming.Lookup on the localhost. If the user specified a different ip, it runs a Naming.Lookup on that address instead.
  • VigenereRequestManager manages the requests using threads.

About

4th Year Distributed Systems RMI project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published