From 157b9c24040ed0e85f72a5a4daf777768bca7b7e Mon Sep 17 00:00:00 2001 From: aneesh <achattaraj@student.unimelb.edu.au> Date: Fri, 24 May 2019 15:11:01 +1000 Subject: [PATCH] dh --- dh | Bin 0 -> 13232 bytes dh.c | 157 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 157 insertions(+) create mode 100644 dh create mode 100644 dh.c diff --git a/dh b/dh new file mode 100644 index 0000000000000000000000000000000000000000..24c681b6e0e77c9d46f9b0aaa97a5dd4efdb9e37 GIT binary patch literal 13232 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 literal 0 HcmV?d00001 diff --git a/dh.c b/dh.c new file mode 100644 index 0000000..5365b62 --- /dev/null +++ b/dh.c @@ -0,0 +1,157 @@ +/* A simple client program for server.c + + To compile: gcc client.c -o client + + To run: start the server, then the client */ +#include <stdbool.h> + +#include <sys/types.h> + +#include <sys/socket.h> + +#include <netinet/in.h> + +#include <unistd.h> + +#include <arpa/inet.h> + +#include <netdb.h> + +#include <unistd.h> + +#include <signal.h> + +#include <stdio.h> + +#include <string.h> + +#include <fcntl.h> + +#include <errno.h> + +#include <sys/time.h> + +#include <stdlib.h> + +#include <memory.h> + +#include <ifaddrs.h> + +#include <net/if.h> + +#include <stdarg.h> + +// https://www.techiedelight.com/c-program-demonstrate-diffie-hellman-algorithm/ + +int compute(int g, int b, int p) { + int r; + int y = 1; + + while (b > 0) { + r = b % 2; + + // fgst exponention + if (r == 1) + y = (y * g) % p; + g = g * g % p; + + b = b / 2; + } + + return y; +} + +int main(int argc, char ** argv) { + int sockfd, portno, n, b, f; + struct sockaddr_in serv_addr; + struct hostent * server; + portno = 7800; + char buffer[256]; + + b = atoi(argv[1]); + + bzero((char * ) & serv_addr, sizeof(serv_addr)); + /* Translate host name into peer's IP address ; + * This is name translation service by the operating system + */ + server = gethostbyname("172.26.37.44"); + + if (server == NULL) { + fprintf(stderr, "ERROR, no such host\n"); + exit(0); + } + + /* Building data structures for socket */ + + bzero((char * ) & serv_addr, sizeof(serv_addr)); + + serv_addr.sin_family = AF_INET; + + bcopy(server->h_addr_list[0], (char *)&serv_addr.sin_addr.s_addr, server->h_length); + + serv_addr.sin_port = htons(portno); + + /* Create TCP socket -- active open + * Preliminary steps: Setup: creation of active open socket + */ + + sockfd = socket(AF_INET, SOCK_STREAM, 0); + + if (sockfd < 0) { + perror("ERROR opening socket"); + exit(0); + } else { + printf("Socket connection successful\n"); + } + + if (connect(sockfd, (struct sockaddr * ) & serv_addr, sizeof(serv_addr)) < 0) { + perror("ERROR"); + exit(0); + } + + bool protocol = true; + char * message_phase[] = { + "send_username", + "send_gb_mod_p", + "send_ga_mod_p", + "success", + "end" + }; + char * current_phase = "send_username"; + + printf("Send Usename"); + char * username = "achattaraj\n"; + bzero(buffer, 256); + sprintf(buffer, username); + n = write(sockfd, buffer, strlen(buffer)); + current_phase = message_phase[1]; + + printf("send gb mod p \n"); + bzero(buffer, 256); + b = compute(15, atoi(argv[1]), 97); + sprintf(buffer, "%d\n", b); + n = write(sockfd, buffer, strlen(buffer)); + current_phase = message_phase[2]; + + printf("send ga mod p \n"); + bzero(buffer, 256); + n = read(sockfd, buffer, 255); + int a = atoi(buffer); + bzero(buffer, 256); + a = compute(a, atoi(argv[1]), 97); + sprintf(buffer, "%d\n", a); + n = write(sockfd, buffer, strlen(buffer)); + + n = 0; + while (strstr(buffer, "Success") == NULL) { + n = read(sockfd, buffer, 255); + + current_phase = "end"; + buffer[n] = 0; + printf("%s\n", buffer); + + close(sockfd); + return 0; + + } +} -- GitLab