Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,16 @@
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>

#include "mac.h"
#include "maclist.h"
#include "netinfo.h"

#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)
Expand Down Expand Up @@ -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(STAT_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[])
{
Expand Down Expand Up @@ -215,18 +237,32 @@ 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);
mac_permanent = mc_net_info_get_permanent_mac(net);

/* --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");
}

Expand All @@ -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) {
Expand All @@ -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 */
}

Expand All @@ -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);
Expand Down