Un type au prénom pas commun

Si tu crois que ton piano comporte 102 touches, reste un peu.

Posts Tagged ‘réseau

Quelques raccourcis pour modifier son adresse MAC sous Linux et Windows

with 8 comments

On me l’a bien fait remarqué, ça fait longtemps que je n’ai plus rien publié. Et pour cause, j’ai de moins en moins de temps pour moi. Certains articles, comme celui-ci, sont pourtant bien avancés, mais pas le temps de finir. C’est dommage que je n’aie pas pu terminer celui-ci, mais on m’a demandé l’information qu’il contient ce matin alors tant pis! Vous remarquerez que la solution Windows est un rien plus développée que la Linux. C’est uniquement par manque de temps. J’entends d’ici les railleries de certains de mes condisciples de l’INPRES, et je leur réponds d’avance que c’est un bonne chose que de bien connaître son ennemi! 😉

On entend parfois qu’on « ne peut pas changer son adresse MAC », ce qui ne signifie pas grand chose. Certes on ne peut pas modifier la véritable adresse MAC d’une carte, mais on peut choisir d’ajouter dans l’entête des paquets une autre que celle de la carte . Il s’avère que, pour des raisons compliquées, je dois changer d’adresse MAC plusieurs fois par jours. Rapidement je me suis donc fait quelques raccourcis qui ne demandent l’installation d’aucun logiciel particulier, et qui intéresseront peut-être quelque un. Il s’agit seulement de quelques solutions, parmi d’autres auxquelles je n’ai pas pensé ou que je n’ai pas eu le temps de développer…

– Sous Linux

Remplacez eth0 par votre interface, et les 6 nombres hexadécimaux par votre mac. Le caractère de séparation entre les groupes sont facultatifs. La commande demande les droits d’administrateur, par conséquent il peut être nécessaire d’ajouter sudo devant la commande (fonction de la distribution bien entendu).

ifconfig eth0 hw ether 00:12:23:45:56:67

Ensuite il est nécessaire d’informer mon serveur DHCP de ce changement. Il est configuré pour associer une IP précise à chaque MAC; il me donnera donc celle qui correspond à ma nouvelle MAC.

#sudo...
dhclient eth0

Le logiciel client DHCP varie d’une distribution à l’autre, dhclient sous Ubuntu et systèmes apparentés, « dhcpcd » sous Archlinux, « udhcpc » sous SliTaz (très bonne mini distribution par le choix de ses paquets), « pump » sous Damn Small Linux, « udhcpd »…

En ce qui concerne le changement de MAC, à la place d’ifconfig on pourrait également utiliser:

ip link set eth0 address 00:12:23:45:56:67

Sous certaines versions, de certaines distributions, il peut être nécessaire de préalablement désactiver l’interface dont on modifie la MAC.

Par exemple, sous Archlinux et certaines version de Linux Mint:

ifconfig eth0 down
ifconfig eth0 hw ether 00:12:23:45:56:67
dhcpcd eth0 # Arch
#Mint (distro basé sur Ubuntu) ->  dhclient eth0

Et pour désactiver l’interface sans ifconfig:

/etc/init.d/network stop

Ça c’est pour l’occasionnel. Pour une utilisation régulière, on peut par exemple mettre ces commandes dans des petits scripts, un par MAC, qu’on pose sur le bureau. Maintenant on peut faire un peu mieux. Une solution est par exemple de créer des alias de commandes à placer dans le fichier ~/.bashrc

alias mac-originale=sudo ifconfig eth0 hw ether 00:12:23:45:56:67 && sudo dhclient eth0
alias mac-adam=sudo ifconfig eth0 hw ether 00:16:2d:45:ff:b2 && sudo dhclient eth0
alias mac-donald=sudo ifconfig eth0 hw ether 00:11:3a:b4:12:91 && sudo dhclient eth0

Ainsi, il me suffit de taper mac-adam dans un terminal pour…

Sous Archlinux et Mint jusqu’à la version 5, la ligne pour utiliser la MAC de Adam se présente comme ceci (dhclient à la place de dhcpcd pour Mint):

alias mac-adam=ifconfig eth0 down && ifconfig eth0 hw ether 00:16:2d:45:ff:b2 && dhcpcd eth0 #...le client dhcp réactive l'interface

Notez que, pour ces commandes chainées, il ne faut pas oublier d’ajouter sudo devant chaque commande chez Ubuntu & co. Vous n’aurez malgré tout à taper le mot de passe qu’une seule fois, à moins que vous ayez modifié le timing dans sudoers.

– Sous Windows

Sous Windows, si l’on veut utiliser la ligne de commande, c’est un peu plus compliqué parce qu’on doit passer par la base de registre. Pour trouver votre MAC actuelle, vous savez sans doute qu’il suffit de taper:

ipconfig -all

(si ça ne fonctionne pas, vous avez peut-être tapé ifconfig par habitude 😉 )

Toutes ces méthodes changent la MAC de manière permanente, c’est à dire malgré les redémarrages, contrairement aux solutions présentées plus haut pour Linux.

On peut changer l’adresse MAC en mode graphique, et même si c’est pénible il est intéressant de le faire une fois pour bien comprendre ce qu’il se passe, ainsi que pour trouver facilement l’endroit dans la base de registre où cette MAC est ajoutée. En mode graphique, quand on clique sur les propriétés de la connexion, et qu’on choisi « Configurer » (parlant de la carte), puis l’onglet « Avancé », on a devant nous une liste déroulante de propriétés. Cliquons sur « Adresse réseau », on voit que l’adresse est en mode « Absente ». Ceci signifie non pas qu’il n’y a pas de MAC, mais bien sûr qu’on en a pas spécifié d’autre à la place de celle de la carte. Pour l’instant il n’y a pas d’adresse MAC non plus qui soit renseignée dans la base de registre. On aurait pu imaginer qu’il y ait celle de la carte, mais non, cette valeur est bien « absente ». On peut sélectionner l’autre mode grâce au bouton radio correspondant, et indiquer la MAC dans la zone texte. Lorsqu’on clique sur « Appliquer », une valeur est ajoutée dans la base de registre, à l’endroit correspondant à la carte modifiée. Pour trouver cette valeur dans la base de registre il suffit d’effectuer une petite recherche (rappel: menu de windows (démarrer) > exécuter > regedit) de la clef « NetworkAddress ». Vous voyez la valeur de la MAC? faites un clique de droite sur la clef (dossier) contenant cette valeur, et choisissez « Copier le nom de clef ».

Maintenant que nous avons le chemin de la clef, nous pouvons commencer notre batch. Comme sous linux, il faut un terminal avec les droits d’administrateur. Pour ajouter la MAC de Adam à la base de registre on peut utiliser la commande reg add (remplacer la MAC et le chemin dans la base de registre par les vôtres):

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0007 /v NetworkAddress /t REG_SZ /d 00:16:2d:45:ff:b2 /f

Remarquez que, contrairement à la version linux du procédé, remettre la MAC originale ne consistera pas à changer la valeur, mais à la supprimer de la base de registre…

reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0007 /v NetworkAddress /f

Enfin, il faut désactiver et réactiver l’interface réseau pour que la nouvelle MAC soit prise en compte et que le DHCP soit contacté. Le soucis est que les accents ne passent pas dans le terminal quand un batch est exécuté. Si votre interface s’appelle « Connexion au réseau local », la solution la plus simple est de renommer l’interface en choisissant un nom sans accent. En l’occurrence j’ai opté pour un nom beaucoup plus court: « LAN », tout simplement…

netsh interface set interface="Connexion au réseau local" newname="LAN"

Pour désactiver et activer l’interface, j’utilise encore une fois netsh…

netsh interface set interface name="LAN" disabled
netsh interface set interface name="LAN" enabled

Le batch complet qui permet de changer d’adresse MAC et d’obtenir à nouveau le réseau est aussi simple que ces trois lignes:

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0007 /v NetworkAddress /t REG_SZ /d 001CC41C5CFF /f
netsh interface set interface name="LAN" disabled
netsh interface set interface name="LAN" enabled

Remarque: HKEY_LOCAL_MACHINE peut être raccourci en HKLM.

On peut l’appeler « mac Adam.bat », le déposer sur le bureau, opérer un clique de droite et choisir « Exécuter en mode administrateur » à chaque fois que nous en aurons besoin. On fera de même pour les autres MAC…

J’ai cherché, et n’ai pas trouvé de solution convaincante pour définir des alias comme sous linux. Une autre solution est de mettre ces quelques scripts dans le répertoire Windows ou n’importe lequel de ceux qui sont renseignés dans la variable d’environnement PATH (taper PATH dans le terminal pour en avoir la liste), afin de pouvoir facilement appeler le script dans un terminal. Le mieux, selon moi, afin de ne pas pourrir les dossier du système, est de faire un dossier « MesBatchs » et de le renseigner dans le PATH.

mkdir c:\MesBatchs
PATH %PATH%;C:\MesBatchs"
reg add HKCU\Environment /v path /t REG_SZ /f /d "%PATH%"

Remarque: avant XP le chemin était différent jusqu’aux variables d’environement -> HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

Mais pour finir j’ai préféré faire un script plus général. Mon script utilise un fichier texte « nom-mac.txt » dans lequel j’ai donné les correspondances nom-mac évidemment! Exemple:

Fichier de configuration de "mac.bat".
Nom associé à la MAC;La MAC elle-même

adam;00:16:2d:45:ff:b2
donald;00:11:3a:b4:12:91

Ce fichier est exploité par le script suivant

@ echo off

reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0007 /v NetworkAddress /f > nul

if "%1" == "origine" goto reinit

for /f "skip=3 tokens=* delims=;" %%a in (c:\MesBatchs\nom-mac.txt) do call :test_nom %1 %%a %%b

:reinit
echo.
echo Desactivation de l'interface reseau...
netsh interface set interface name="LAN" disabled
echo Reactivation de l'interface reseau...
netsh interface set interface name="LAN" enabled
goto fin

:test_nom
if "%1" NEQ "%2" goto fin
echo.
echo La MAC de "%2" va etre donnee a ce PC.
echo.
echo Modification de la base de registre...
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0007 /v NetworkAddress /t REG_SZ /d %3 /f

:fin

Ainsi je n’ai plus qu’à taper en ligne de commande

mac adam

mac origine

mac donald

etc. pour passer d’une MAC à l’autre.

Il ne s’agit que de quelques possibilités à adapter à votre situation. Si le besoin se fait sentir d’explications quelconques, que vous voulez ajouter quelque précision, ou encore rectifier… les commentaires sont la pour ça, n’hésitez pas!

Quelques références pêle-mêle:

Attaques ethernet sur les vlan -> http://www.authsecu.com/attaque-ethernet-vlan/attaque-ethernet-vlan.php

REG Command in Windows XP -> http://www.petri.co.il/reg_command_in_windows_xp.htm

Forum: Win98 registry key with variables? -> http://www.msfn.org/board/lofiversion/index.php/t34207.html

Wikipedia: Variable d’environnement -> http://fr.wikipedia.org/wiki/Variable_d%27environnement

Techniques avancées concernant le registre Windows -> http://www.hotline-pc.org/basederegistre.htm

Le Registre -> http://www.jurixt.com/bdr/bdr_1-1.htm

Written by Florimond

février 26, 2010 at 11:13