From 2d0e884cc376c653124d1539520b794e70ab004b Mon Sep 17 00:00:00 2001 From: mehrati Date: Thu, 14 Dec 2017 04:08:19 +0330 Subject: [PATCH 1/2] add start/stop_mn_service --- src/main.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/src/main.c b/src/main.c index 711ffe7..2a830d6 100644 --- a/src/main.c +++ b/src/main.c @@ -35,6 +35,7 @@ #include #include #include +#include #include "mac.h" #include "maclist.h" @@ -42,6 +43,8 @@ #define EXIT_OK 0 #define EXIT_ERROR 1 +#define STOP_NET_MAN "systemctl stop NetworkManager.service" +#define START_NET_MAN "systemctl start NetworkManager.service" static void print_help (void) @@ -109,6 +112,25 @@ random_seed (void) } +static void +network_manager_service(const char *STAT_NET_MAN){ + FILE *pfs ; + + // Stop and Start NetworkManager Service + pfs = popen(STAT_NET_MAN,"r"); + // sleep 2 sec + sleep(2); + if(strcmp(START_NET_MAN,"systemctl stop NetworkManager.service") == 0){ + printf("[*] NetworkManager.service is stoped \n"); + }else{ + printf("[*] NetworkManager.service is started \n"); + } + + pclose(pfs); + return ; + } + + int main (int argc, char *argv[]) { @@ -215,11 +237,23 @@ main (int argc, char *argv[]) } device_name = argv[optind]; + /* Tell user to run app as root */ + if(geteuid() != 0) + { + printf("you must be root privileges !!!"); + exit (EXIT_ERROR); + } + + /* Stop NetworkManager Service */ + network_manager_service(STOP_NET_MAN); + /* Seed a random number generator */ random_seed(); /* Read the MAC */ if ((net = mc_net_info_new(device_name)) == NULL) { + /* Start NetworkManager Service */ + network_manager_service(START_NET_MAN); exit (EXIT_ERROR); } mac = mc_net_info_get_mac(net); @@ -227,6 +261,8 @@ main (int argc, char *argv[]) /* --bia can only be used with --random */ if (set_bia && !random) { + /* Start NetworkManager Service */ + network_manager_service(START_NET_MAN); fprintf (stderr, "[WARNING] Ignoring --bia option that can only be used with --random\n"); } @@ -238,9 +274,13 @@ main (int argc, char *argv[]) mac_faked = mc_mac_dup (mac); if (show) { + /* Start NetworkManager Service */ + network_manager_service(START_NET_MAN); exit (EXIT_OK); } else if (set_mac) { if (mc_mac_read_string (mac_faked, set_mac) < 0) { + /* Start NetworkManager Service */ + network_manager_service(START_NET_MAN); exit (EXIT_ERROR); } } else if (random) { @@ -257,6 +297,8 @@ main (int argc, char *argv[]) } else if (permanent) { mac_faked = mc_mac_dup (mac_permanent); } else { + /* Start NetworkManager Service */ + network_manager_service(START_NET_MAN); exit (EXIT_OK); /* default to show */ } @@ -275,6 +317,9 @@ main (int argc, char *argv[]) printf ("It's the same MAC!!\n"); } } + + /* Start NetworkManager Service */ + network_manager_service(START_NET_MAN); /* Memory free */ mc_mac_free (mac); From 1a2041aa86ee4cbcabc67ff5ed4e942a48635f3e Mon Sep 17 00:00:00 2001 From: mehrati Date: Thu, 14 Dec 2017 11:28:51 +0330 Subject: [PATCH 2/2] fix bug --- src/main.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main.c b/src/main.c index 2a830d6..5fbf45c 100644 --- a/src/main.c +++ b/src/main.c @@ -120,10 +120,10 @@ network_manager_service(const char *STAT_NET_MAN){ pfs = popen(STAT_NET_MAN,"r"); // sleep 2 sec sleep(2); - if(strcmp(START_NET_MAN,"systemctl stop NetworkManager.service") == 0){ - printf("[*] NetworkManager.service is stoped \n"); + if(strcmp(STAT_NET_MAN,"systemctl stop NetworkManager.service") == 0){ + printf("[-] NetworkManager.service is stoped \n"); }else{ - printf("[*] NetworkManager.service is started \n"); + printf("[+] NetworkManager.service is started \n"); } pclose(pfs);