From e6cbe7c24a57e4d0cf6fcaf4b6c4d5a1d2ddcc9d Mon Sep 17 00:00:00 2001 From: h3xduck Date: Sun, 15 May 2022 15:15:43 -0400 Subject: [PATCH] Updated client to work with multiple network interfaces --- src/client/client.c | 73 ++++++++++++++++++++++++++++++++++++++++++++ src/client/client.o | Bin 31688 -> 33352 bytes src/client/injector | Bin 64128 -> 64408 bytes 3 files changed, 73 insertions(+) diff --git a/src/client/client.c b/src/client/client.c index 008c922..4ba94c0 100644 --- a/src/client/client.c +++ b/src/client/client.c @@ -1,3 +1,4 @@ +#define _GNU_SOURCE #include "lib/RawTCP.h" #include #include @@ -10,6 +11,8 @@ #include #include #include +#include +#include #include "../common/constants.h" #include "../common/c&c.h" @@ -57,11 +60,81 @@ void check_ip_address_format(char* address){ } } +/** + * @brief Improved version of getting local IP + * Based on the man page: https://man7.org/linux/man-pages/man3/getifaddrs.3.html + * + * @return char* + */ char* getLocalIpAddress(){ char hostbuffer[256]; char* IPbuffer = calloc(256, sizeof(char)); struct hostent *host_entry; int hostname; + + char buf[BUFSIZ]; + printf(">> Which network interface do you want to use?>: "); + fgets(buf, BUFSIZ, stdin); + if ((strlen(buf)>0) && (buf[strlen(buf)-1] == '\n')){ + buf[strlen(buf)-1] = '\0'; + } + + struct ifaddrs *ifaddr; + int family, s; + char host[NI_MAXHOST]; + + if (getifaddrs(&ifaddr) == -1) { + perror("getifaddrs"); + exit(EXIT_FAILURE); + } + + /* Walk through linked list, maintaining head pointer so we + can free list later. */ + + for (struct ifaddrs *ifa = ifaddr; ifa != NULL;ifa = ifa->ifa_next) { + if (ifa->ifa_addr == NULL) + continue; + + family = ifa->ifa_addr->sa_family; + + /* Display interface name and family (including symbolic + form of the latter for the common families). */ + + //printf("%-8s %s (%d)\n",ifa->ifa_name,(family == AF_PACKET) ? "AF_PACKET" :(family == AF_INET) ? "AF_INET" :(family == AF_INET6) ? "AF_INET6" : "???",family); + /* For an AF_INET* interface address, display the address. */ + + if (family == AF_INET || family == AF_INET6) { + s = getnameinfo(ifa->ifa_addr, + (family == AF_INET) ? sizeof(struct sockaddr_in) : + sizeof(struct sockaddr_in6), + host, NI_MAXHOST, + NULL, 0, NI_NUMERICHOST); + if (s != 0) { + printf("getnameinfo() failed: %s\n", gai_strerror(s)); + exit(EXIT_FAILURE); + } + + //printf("\t\taddress: <%s>\n", host); + if(strcmp(ifa->ifa_name, buf)==0){ + //Interface we chose + printf("["KBLU"INFO"RESET"]""Attacker IP selected: %s (%s)\n", ifa->ifa_name, host); + return IPbuffer; + } + } + + } + printf("["KRED"ERROR"RESET"]""That was not a valid interface\n"); + + freeifaddrs(ifaddr); + + exit(FAIL); +} + +char* getLocalIpAddress_old(){ + char hostbuffer[256]; + char* IPbuffer = calloc(256, sizeof(char)); + struct hostent *host_entry; + int hostname; hostname = gethostname(hostbuffer, sizeof(hostbuffer)); if(hostname==-1){ diff --git a/src/client/client.o b/src/client/client.o index ab698296153ba909efb77f19eb8b2d02aca5c16e..d5d1e702734fba5aa6bb18d3258d70854d57b474 100644 GIT binary patch literal 33352 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 B^pOAn diff --git a/src/client/injector b/src/client/injector index 61ceb3724d201710355c241550e95e00e60165cc..073dbe28202a3c1ef10064a575d11288f73e0f21 100755 GIT binary patch delta 13225 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 delta 11792 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 o^wT|eZ*^}?TTq{#KJDst