Un type au prénom pas commun

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

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 à 11:13

8 Réponses

Subscribe to comments with RSS.

  1. Simple question, quand tu écris
    ifconfig eth0 down
    ifconfig eth0 hw ether 00:12:23:45:56:67
    dhcpcd eth0

    tu aurais pas oublié de remonter ton interface avant d’utiliser dhcp ?
    ifconfig eth0 up ?

    Sinon ça fonctionne bien, merci

    oli

    février 27, 2010 at 3:02

  2. Et bien ça varie sûrement selon les cas… mais je pense que dans tout ceux que j’ai connu jusqu’ici, mon expérience est que l’usage du client DHCP réactive automatiquement l’interface. Donc j’évite d’allonger inutilement la chaine de commandes en omettant un « ifconfig eth0 up ». Mais je vérifierai probablement ce soir sous d’autres distribution que les « debian based »… Merci pour cette question🙂

    Florimond

    février 27, 2010 at 3:28

  3. Il existe aussi macchanger (et macchanger-gtk), qui a l’avantage de générer des adresses aléatoires. ils sont tous deux dans les dépots.

    kiosques

    avril 2, 2010 at 7:16

  4. Salut,
    Merci pour ces explications.
    J’ai du corriger certaines lignes pour que ca fonctionne chez moi, je suis sous windows:

    Pour changer le nom:

    Ne fonctionne pas: netsh interface set interface= »Connexion au réseau local » newname= »LAN »
    Fonctionne: netsh interface set interface name= »Connexion au réseau local » newname= »LAN »

    (J’ai du rajouter « name= »)

    Mais finalement je n’ai pas renommé ma connexion réseau car pour que les accents soient pris en compte il suffit d’ouvrir le batch dans wordpad et d’enregistrer sous: »fichier ms-dos ».

    J’ai aussi eu un problème avec le format de l’adresse mac indiqué sur cette ligne:

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

    Ca ne marche pas avec les « : » entre chaque paire de caractère, voici donc la ligne qui fonctionne chez moi:

    reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}007 /v NetworkAddress /t REG_SZ /d 00162d45ffb2 /f

    Voic maintenant le batch complet qui fonctionne chez moi avec réactivation de la carte:

    reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}007 /v NetworkAddress /t REG_SZ /d 00162d45ffb2 /f
    netsh interface set interface name= »Connexion au réseau local » disabled
    netsh interface set interface name= »Connexion au réseau local » enabled

    (Rappel: il faut changer l’adresse regedit avec la votre et enregistrer le tout avec wordpad au format ms-dos pour que les accents soient pris en compte).

    J’aimerais maintenant réussir à faire un batch automatique qui bascule automatiquement entre 2 adresses uniquement: l’original et une perso, et j’aimerais que le batche vérifier tout seul l’adresse active pour passer à la perso si c’est l’originale qui est active, ou revenir à l’originale si c’est la perso qui est active.
    Pour ca j’aurais besoin d’un coup de main.

    Merci

    nonob

    octobre 29, 2012 at 10:06

    • Ouf, c’est déjà un vieil article, et je devais tester ça sous 2000 et XP. Vous, en revanche, devez être sous 7. Ceci explique sans doute les petites différences que vous relevez, et je vous remercie de les partager!

      Concernant votre problème: je suis un peu à court de temps pour y réfléchir. Et c’est en écrivant cet article que j’ai chipoté pour la dernière fois avec batch… Cependant je peux peut-être vous donner des pistes. Pour moi il faut simplement récupérer la valeur actuelle de la MAC dans la base de registre et la mettre dans une variable. Il faut ensuite comparer cette variable à une de vos deux MAC. S’il s’agit de la MAC 1, passer à la 2, et réciproquement.
      En pseudo code:

      variable = reg query…
      reg delete MAC_ACTUELLE
      if variable = MAC1
      reg add MAC2
      else
      reg add MAC1

      Pour les variables -> http://www.progmatique.fr/article-112-Batch-utilisation-variables.html
      Pour les structures conditionnelles -> http://www.robvanderwoude.com/if.php
      Enfin, vous trouverez de nombreux forum où des gens essaient de récupérer une valeur du registre dans une variable batch. Les solutions proposées piquent un peu les yeux, mais je crois que vous trouverez une bonne explication ici -> http://answers.yahoo.com/question/index?qid=20081002162944AAjNKbS

      Florimond

      octobre 29, 2012 at 11:12

      • Merci pour votre réponse mais mes connaissances en programmation étant inexistantes je risque de galérer pas mal pour gagner un clic.., je préfère donc laisser tomber si je ne trouve pas la solution toute faite..
        D’autant que le logiciel « Trechnitium » permets d’automatiser tout ca.., le problème étant juste qu’il faille d’abord lancer le logiciel.., ce que j’aimerais éviter…
        Au fait, je viens d’essayer les commandes sous xp et je confirme que je dois faire les meme modifications que j’explique plus haut pour que ca fonctionne, comme sous windows 7.

        Par contre j’ai un autre problème sous xp:

        la commande netsh pour désactiver/réactiver la connexion réseau ne fonctionne pas.J’ai fait quelques recherches sur le net, il semblerait que ca ne fonctionne pas sous xp en effet…. A voir…

        nonob

        octobre 29, 2012 at 12:31

  5. Pour désactiver/réactiver la carte réseau sous xp il faut utiliser devcon avec la commande restart.
    @+

    nonob

    octobre 29, 2012 at 2:53

  6. Reblogged this on jpainam.

    jpainam

    janvier 14, 2013 at 11:02


Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :