Skip to content

This project covers client server interactions using both TCP and UDP. It also simulates an eavesdropper / man-in-the-middle attack, and covers digital signatures and RSA public / private key encryption.

Notifications You must be signed in to change notification settings

DanMolenhouse/Distributed-Systems-Project2-Client-Server-Interactions

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Distributed-Systems-Project2-Client-Server-Interactions

Project 2 - Distributed Systems

Project Objective:

  1. Understand client side and server side UDP and TCP sockets.
  2. Simulate a man-in-the-middle attack and understand the indicators and implications of this type of attack.
  3. Understand TCP and UDP through first-hand experience.
  4. Familiarize with the abstraction provided by Remote Procedure Calls (RPCs) and implement digital signatures in RSA.

Tasks:

  1. Modify Server & Client code from in-class Lab to print certain messages and respond to given commands.
  2. Simulate a man-in-the-middle attack
  3. Create a basic addition method on the server that is called by the client, server responds with a running total. Server keeps track of total as long as it's running (client can exit / return and see the same total).
  4. Same principle as Task 2, but adds functionality to track multiple client IDs, subtract from the total, and get the current total for any of the IDs tracked.
  5. Repeat Task 3 using TCP instead of UDP.
  6. Implement RSA & digitally sign messages (modeled after ETH signatures).

Topics/Skills covered:

  • Client/Server interactions using both TCP & UDP
  • Eavesdropper / MITM attacks
  • Digital Signatures
  • RSA public / private key encryption

Demonstration of completed tasks:

Task 0: Client console output - "Halt!" command shuts down both server / client Picture1

Server console output - echoing messages received from client Picture2

Task 1: Created an eavsdropper that intercepts messages from spoofed port (in this case, 6798), and relays the intercepted message to another port (in this case, 6789). The idea is just to demostrate what it may look like on the client side if a message is being intercepted (shows that the client doesn't know any better) task1

Task 2: Client-side console output. The client enters a number and the server adds that number to the running total, then returns the running total to the client. Ignore the spelling mistake. Picture1

Server-side console output. Shows the addition operation and the result, and what is being returned to the client. Picture1

Task 3: Expanded upon task 2, added multiple users, subtraction, and GET functionality. Client-side console output: Picture1

Server-side console output: Picture1

Task 4: Functionality is identical to Task 3, it just uses TCP instead of UDP. Client-side console output: Picture1

Server-side console output: Picture2

Task 5: Task 4 functionality with RSA & digital signatures added. Client-side console output: Picture1

Server-side console output: Picture2

About

This project covers client server interactions using both TCP and UDP. It also simulates an eavesdropper / man-in-the-middle attack, and covers digital signatures and RSA public / private key encryption.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages