[GNU/Linux] Script per modificare MAC address

Ho scritto uno script bash che permette in Linux di manipolare l’indirizzo MAC di una scheda di rete, la cui operazione in gergo viene detta spoofing. Lo script può essere usato su tutte le principali distribuzioni e permette di cambiare l’indirizzo MAC con uno generato casualmente oppure con uno indicato dall’utente. Le istruzioni per eseguire lo script sono le seguenti:

Usage: macs.sh [OPTIONS]
Spoof your wired or wireless network adapter with a new MAC address.
Options:
-r <interface>: spoof an interface with a random MAC address
-s <interface> <address>: spoof an interface with a new MAC address
-o <interface>: restore an interface with the original MAC address
-v <interface>: show the MAC address and the vendor of an interface
-p <vendor>: show the MAC prefix of a vendor
-a: show the MAC address of every network interface
-h: show this help

—————————————————————-
Examples:
sh macs.sh -r eth0
sh macs.sh -s wlan1 001122334455
sh macs.sh -s eth3 00:1C:39:FB:6C:88
sh macs.sh -o eth0
sh macs.sh -p IBM
sh macs.sh -p Microsoft

Tra le funzionalità vi è anche quella di visualizzare il vendor della scheda di rete, e tutti i prefissi MAC proprietari di uno specifico vendor.

Si tratta di uno script bash, dunque deve essere lanciato con l’interprete sh e con i privilegi di root. Vediamo alcuni esempi:

# sh macs.sh -r eth1 modifica l’indirizzo dell’interfaccia eth1 con uno random
# sh macs.sh -s eth1 00:0C:29:FB:6C:4B modifica l’indirizzo di eth1 con 00:0C:29:FB:6C:4B
# sh macs.sh -o eth3 ripristina l’indirizzo MAC reale di eth3
# sh macs.sh -v eth2 visualizza l’indirizzo MAC e vendor di eth2
# sh macs.sh -a visualizza gli indirizzi MAC e vendor di tutte
# sh macs.sh -p Microsoft visualizza i prefissi MAC proprietari Microsoft

Lo script è rilasciato con licenza GNU GPL v3, ed è scaricabile a questi link:

Matteo

[GNU/Linux] Configurare la rete

Sotto Linux, i due comandi principali che permettono di controllare e configurare i parametri di rete sono due: ifconfig e route. Altri due comandi utili, che però non verranno trattati in questo howto, sono iwconfig, per la gestione specifica delle schede di rete wireless, e il comando ip, che è una sorta di comando universale con funzionalità simili a ifconfig e route. Vediamo in dettaglio cosa permettono di fare ifconfig e route.

Internet

Il comando ifconfig serve sia per ottenere informazioni sulle configurazioni delle schede di rete, sia per configare le schede stesse. Per visualizzare le configurazioni è necessario digitandorlo da solo senza alcun parametro. Un esempio di output è il seguente

# ifconfig
eth0 Link encap:Ethernet HWaddr 00:1B:24:27:59:84
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Memory:da000000-da020000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:41 errors:0 dropped:0 overruns:0 frame:0
TX packets:41 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4740 (4.6 KiB) TX bytes:4740 (4.6 KiB)
wlan1 Link encap:Ethernet HWaddr 00:1B:77:22:CD:2D
inet addr:172.20.100.77 Bcast:172.20.100.255 Mask:255.255.255.0
inet6 addr: fe80::21b:77ff:fe22:cd2d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2805 errors:0 dropped:0 overruns:0 frame:0
TX packets:2720 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1993718 (1.9 MiB) TX bytes:477093 (465.9 KiB)

Come è visibile nell’esempio precedente, solitamente le interfacce mostrate da ifconfig sono le seguenti:

  • eth0, eth1, … sono le schede di rete presenti sulla macchina;
  • wlan1, … sono le interfacce wireless;
  • lo è l’interfaccia logica, denominata anche di loopback, e a cui è assegnato l’indirizzo IP 127.0.0.1. Questa interfaccia indica la macchina stessa e deve essere sempre attiva, anche se il sistema non è collegato ad alcuna rete.

Nel caso in cui si voglia usare ifconfig per la configurazione di una scheda di rete, è necessario prima disattivare la scheda che si vuole andare a modificare, e solo dopo inserire i nuovi parametri. La sintassi è la seguente:

# ifconfig <interfaccia> <indirizzo_ip> down
# ifconfig <interfaccia> <indirizzo_ip> netmask <subnet_mask> broadcast <indirizzo_broadcast>

Il comando route invece serve per gestire l’instradamento dei dati, sia per visualizzare le impostazioni correnti del sistema, sia per definirne di nuove. Senza alcun parametro, o con il parametro n (per avere in output dei valori numerici), mostra le tabelle di instradamento attuali. Ecco un esempio:

# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.20.100.0 0.0.0.0 255.255.255.0 U 2 0 0 wlan1
0.0.0.0 172.20.100.254 0.0.0.0 UG 0 0 0 wlan1

Importante, nonché utile, è l’opzione con cui si può definire un nuovo default gateway (per tutti gli indirizzi):

# route add default gw <indirizzo_ip>

Di seguito viene mostrato un semplice esempio. Supponiamo di voler configurare la scheda di rete eth0 con l’indirizzo IP 192.168.1.4, maschera di rete 255.255.255.0, e gateway 192.168.1.1. I comandi da digitare sono i seguenti:

# ifconfig eth0 down
# ifconfig eth0 192.168.1.4 netmask 255.255.255.0 broadcast 192.168.1.255
# ifconfig eth0 up
# route add default gw 192.168.1.1

Con pochi e semplici comandi è possibile configurare una qualsiasi scheda di rete. Dopo aver apportato delle modifiche è buona norma riavviare il servizio che si occupa delle rete, anche se non è sempre necessario. Ecco come fare sulle distro Red Hat-like:

# service network restart

e sulle distro Debian-like:

# /etc/init.d/networking restart

Link di approfondimento:

http://www.coresis.com/extra/linuxcorsobase/12-1.htm

http://www.firenze.linux.it/~piccardi/corso/netadmin/node12.html

Matteo