<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Segmentation fault &#187; drivers</title>
	<atom:link href="http://www.segmentationfault.fr/tag/drivers/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.segmentationfault.fr</link>
	<description>Projets d’un consultant en sécurité informatique</description>
	<lastBuildDate>Fri, 15 Feb 2019 08:02:10 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>Problèmes liés aux interruptions</title>
		<link>http://www.segmentationfault.fr/securite-informatique/problemes-lies-aux-interruptions/</link>
		<comments>http://www.segmentationfault.fr/securite-informatique/problemes-lies-aux-interruptions/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 18:52:31 +0000</pubDate>
		<dc:creator>Emilien Girault</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Reverse Engineering]]></category>
		<category><![CDATA[Sécurité informatique]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[drivers]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[ring 0]]></category>
		<category><![CDATA[x86]]></category>

		<guid isPermaLink="false">http://www.segmentationfault.fr/?p=609</guid>
		<description><![CDATA[Dans le cadre de mon stage, je m&#8217;intéresse au fonctionnement des interruptions de l&#8217;architecture x86. Il s&#8217;agit d&#8217;un mécanisme complexe mais extrêmement important pour comprendre comment un système d&#8217;exploitation arrive à fonctionner. Si j&#8217;écris ce post, c&#8217;est parce que je me suis pris la tête sur des problèmes qui y sont liés&#8230;  Je viens d&#8217;en [...]]]></description>
			<content:encoded><![CDATA[<p>Dans le cadre de mon stage, je m&rsquo;intéresse au fonctionnement des interruptions de l&rsquo;architecture x86. Il s&rsquo;agit d&rsquo;un mécanisme complexe mais extrêmement important pour comprendre comment un système d&rsquo;exploitation arrive à fonctionner. Si j&rsquo;écris ce post, c&rsquo;est parce que je me suis pris la tête sur des problèmes qui y sont liés&#8230;  Je viens d&rsquo;en trouver les causes, et je pense que cela pourra en intéresser plus d&rsquo;un.<span id="more-609"></span></p>
<h3>Généralités sur les interruptions</h3>
<p>Une interruption est un événement particulier qui peuvent se produire lors de l&rsquo;exécution d&rsquo;un programme. A chaque type d&rsquo;interruption est associé un numéro appelé <em>vecteur d&rsquo;interruption</em>, connu du ou des processeur(s). Pour simplifier, les interruptions peuvent provenir de deux sources : le logiciel et le matériel. Les interruptions matérielles sont générées par les périphériques (clavier, souris, cartes, timers, disques durs&#8230;) et sont transmises au processeur par l&rsquo;APIC (<em>Advanced Programmable Interrupt Controller</em>).  Les interruptions logicielles peuvent être quant à elles déclenchées volontairement par une instruction (<em>int</em>) ou de façon accidentelle par une erreur arithmétique, logique, de protection, etc. Dans ce cas, on parle souvent d&rsquo;<em>exception</em> et de <em>fautes</em>.</p>
<p>Généralement, les interruptions (aussi bien matérielles que logicielles) sont susceptibles de se déclencher à n&rsquo;importe quel moment dans l&rsquo;exécution d&rsquo;un programme, et chaque processeur doit savoir comment traiter chacune d&rsquo;entre elles. A chaque vecteur d&rsquo;interruption on associe alors un <em>handler d&rsquo;interruption</em>, qui est une fonction qui sera appelée automatiquement quand l&rsquo;interruption sera générée.  On place ces fonctions dans une table, l&rsquo;IDT, pour <em>Interrupt Descriptor Table</em>. Il est important de noter qu&rsquo;il y a une IDT par processeur, afin que chacun puisse avoir si besoin un comportement différent pour chaque interruption.</p>
<p>Il existe deux types d&rsquo;interruptions matérielles, les masquables (les IRQ) et les non masquables (la NMI et la SMI) qu&rsquo;on ne traitera pas ici en raison de leur grande particularité. Chaque interruption matérielle possède une priorité, qui est gérée par l&rsquo;APIC. Pour faire simple, ce composant est relié aux périphériques par des lignes d&rsquo;IRQ (Interrupt Requests) et se charge de faire le médiateur entre tous ces périphériques et le ou les processeur(s). Son rôle est en gros de transformer ces IRQ en demandes d&rsquo;interruptions avec le vecteur associé.  Comme plusieurs IRQ peuvent intervenir en même temps, l&rsquo;APIC définit des priorités afin de transmettre les plus urgentes d&rsquo;abord.</p>
<p>Dans certains cas, le processeur peut ne pas vouloir être dérangé par une interruption. C&rsquo;est le cas par exemple lorsqu&rsquo;il est en train de modifier des structures globales en mémoire. Il a alors la possibilité d&rsquo;ignorer les interruptions qu&rsquo;il va recevoir de deux manières. La première, que je ne détaillerai pas, est de ne masquer que celles dont la priorité est inférieure à un certain seuil (appelé IRQL sous Windows) en communiquant avec l&rsquo;APIC. La deuxième est de masquer la totalité des interruptions et c&rsquo;est celle que nous allons détailler.</p>
<h3>Subtilité sur le masquage</h3>
<p>C&rsquo;est le registre EFLAGS  et plus précisément son bit IF (bit 9) qui contrôle si les interruptions masquables sont activées ou non. Ce bit est modifiable par l&rsquo;intermédiaire des instructions <code>cli</code> pour masquage et <code>sti</code> pour démasquage, ou bien en utilisant <em>pushf</em> / <em>popf</em> associés à des masques.</p>
<p>Attention, le masquage des interruptions n&rsquo;affecte que les interruptions matérielles ! Les interruptions logicielles (ainsi que les interruptions NMI et SMI, très particulières) ne sont pas affectées par ces opérations. Autrement dit, vous aurez beau baisser l&rsquo;IRQL ou faire un <code>cli</code>, une exception due à une division par zéro ou à un défaut de page pourra toujours survenir.</p>
<h3>Problème n°1 : DbgPrint(), c&rsquo;est le mal</h3>
<p>J&rsquo;ai fait tous mes tests en machine virtuelle. Comme le développement de driver n&rsquo;est jamais sûr à 100% et que je voulais tout de même avoir quelque chose de fonctionnel, j&rsquo;ai réalisé un petit script qui charge le driver et le décharge 100 fois de suite, en lançant en plus des programmes divers pour solliciter l&rsquo;OS un maximum. Le tout étant de prouver que le driver n&rsquo;explose pas à la première interruption, bien entendu.</p>
<p>Dans mon cas, je devais hooker l&rsquo;interruption n°14 correspondant au défaut de page (<em>page fault</em>), en insérant du code avant de rappeler le handler par défaut de Windows. Je rappelle que cette exception (logicielle) se produit quand une page virtuelle n&rsquo;est mappée à aucune adresse physique (soit parce qu&rsquo;elle a été swappée sur disque, soit parce qu&rsquo;elle n&rsquo;existe tout simplement pas). Cela se produit quand on tente d&rsquo;accéder à une page dont le descripteur PTE a son premier bit (bit P) à 0.</p>
<p>J&rsquo;ai donc commencé par concevoir un handler minimal qui ne faisait rien à part empiler tous les registres, les dépiler puis appeler le handler de Windows, <code>KiTrap0E</code>. Jusqu&rsquo;ici, tout fonctionne, sauf que je n&rsquo;ai pas vraiment de preuve que ma routine est appelée (vu que je n&rsquo;ai aucune trace).</p>
<p>Je me décide donc à insérer des <code>DbgPrint()</code> dans le code de la routine. Et là, c&rsquo;est le drame : j&rsquo;obtiens des traces certes, mais j&rsquo;en obtiens tellement que la VM freeze ou affiche un écran bleu au bout de quelques secondes. Il faut croire que les défauts de page sont très nombreux sous Windows&#8230; Mais pourquoi ça plante maintenant et pas avant ? L&rsquo;explication est liée au visualisateur de traces (j&rsquo;utilise DebugView). Lorsque <code>DbgPrint()</code> est appelé, le message est récupéré par le noyau puis par DebugView. Je ne sais pas exactement pourquoi, mais apparemment quand il y a beaucoup de messages de récupérés, DebugView commence à provoquer des défauts de page (probablement à cause du fait qu&rsquo;il se fait swapper par l&rsquo;OS). Comme ces défauts de pages sont à leur tour catchés par mon handler, ils entraînent d&rsquo;autres appels à <code>DbgPrint()</code>&#8230; Bref, une belle boucle qui finit par exploser tôt ou tard.</p>
<p>Au final, je renonce donc  à afficher des traces, vu que cela perturbe plus le système qu&rsquo;autre chose. En plus j&rsquo;ai ma preuve que mon handler est appelé, vu que ça plante <img src='http://www.segmentationfault.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Problème n°2 : sti, c&rsquo;est aussi le mal</h3>
<p>Le réel but de mon handler est de modifier une structure assez cruciale du noyau sous certaines conditions. Afin d&rsquo;éviter que cette modification entraîne des problèmes de concurrence, je décide de masquer les interruptions avant le traitement (<code>cli</code>), et de les démasquer ensuite à l&rsquo;aide de  et <code>sti</code>. Je lance le driver. Pas de crash. Je commence à crier victoire, et au moment ou je lance mon script de déchargement, j&rsquo;ai le droit à un écran bleu. Je regarde le code de déchargement, il ne fait absolument rien de méchant. Je relance, idem. Je finis par comprendre que ce n&rsquo;est pas le déchargement du driver qui foire, mais juste le fait de lancer un programme, car cela provoque un défaut de page&#8230; C&rsquo;est donc bien mon handler qui pose problème, mais où ?</p>
<p>Je supprime ma modification de variable globale, ça plante toujours. Pourtant je n&rsquo;ai plus que <code>cli</code> et <code>sti</code> dans mon handler (en plus de l&rsquo;appel au handler par défaut). Je retire <code>sti</code> et je constate que ça marche ! C&rsquo;est donc cette instruction qui est responsable du plantage du driver&#8230; mais pourquoi ? En fait, il se trouve que lors des appels au handler de défaut de page, les interruptions sont <em>déjà masquées</em>. C&rsquo;est dû au fait que l&rsquo;interruption correspondant au défaut de page possède un descripteur dans l&rsquo;IDT qui précise que l&rsquo;IF doit être mis à 0 lors de l&rsquo;appel du handler (c&rsquo;est une <em>interrupt gate</em>, selon Intel). Ainsi, lors de l&rsquo;appel au handler, l&rsquo;instruction <code>cli</code> ne fait absolument rien (le bit IF d&rsquo;EFLAGS est déjà à 0)&#8230; Le problème, c&rsquo;est que <code>sti</code> le passe à 1, ce qui autorise les interuptions ! Si jamais le défaut de page s&rsquo;est produit dans une zone critique de l&rsquo;OS et qu&rsquo;une interruption survient précisément à ce moment, le kernel se vautre. Cela ne se produit peut-être pas à tous les coups, mais croyez moi, ça arrive (faites le test pour vous en convaincre).</p>
<p>Comment patcher cela ? Ne pas masquer les interruptions dans un handler de défaut de page, puisqu&rsquo;elles le sont déjà. La solution, c&rsquo;est tout simplement de ne rien faire <img src='http://www.segmentationfault.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Conclusion</h3>
<p>Morale de l&rsquo;histoire : utiliser <code>DbgPrint()</code> ou <code>sti</code> dans un handler de défaut de page est une mauvaise idée. Pour déboguer, préférez utiliser des variables globales plutôt que des fonctions à effet de bords incontrôlables. Et ne cherchez pas à masquer (et surtout à démasquer) les interruptions qui le sont déjà . J&rsquo;espère que ce post vous aura épargné un long moment de galère. En tout cas, j&rsquo;aurais aimé en lire un du même type plus tôt !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.segmentationfault.fr/securite-informatique/problemes-lies-aux-interruptions/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Drivers Wifi RT73 et Ubuntu Hardy, le retour</title>
		<link>http://www.segmentationfault.fr/linux/ubuntu/drivers-rt73ubuntu-hardy/</link>
		<comments>http://www.segmentationfault.fr/linux/ubuntu/drivers-rt73ubuntu-hardy/#comments</comments>
		<pubDate>Sun, 18 May 2008 21:57:10 +0000</pubDate>
		<dc:creator>Emilien Girault</dc:creator>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[drivers]]></category>
		<category><![CDATA[ralink]]></category>
		<category><![CDATA[wifi]]></category>

		<guid isPermaLink="false">http://www.segmentationfault.fr/?p=28</guid>
		<description><![CDATA[Dans un précédent article, j&#8217;ai expliqué comment installer et utiliser le driver rt73 pour les cartes Wifi Ralink. Cela fonctionnait très bien, jusqu&#8217;à ce que la nouvelle monture d&#8217;Ubuntu, Hardy heron, n&#8217;arrive. En fait, cela est du au passage à un nouveau noyau (2.6.24-17). Voici donc la marche à suivre pour s&#8217;en sortir&#8230; Tout d&#8217;abord, [...]]]></description>
			<content:encoded><![CDATA[<p>Dans un <a href="http://www.segmentationfault.fr/systeme/drivers-wifi-rt73-injection-wpa-ubuntu/" target="_self">précédent article</a>, j&rsquo;ai expliqué comment installer et utiliser le driver rt73 pour les cartes Wifi Ralink. Cela fonctionnait très bien, jusqu&rsquo;à ce que la nouvelle monture d&rsquo;Ubuntu, Hardy heron, n&rsquo;arrive. En fait, cela est du au passage à un nouveau noyau (2.6.24-17). Voici donc la marche à suivre pour s&rsquo;en sortir&#8230;<span id="more-28"></span></p>
<p>Tout d&rsquo;abord, téléchargez les derniers drivers d&rsquo;Aircrack pour profiter de l&rsquo;injection, puis décompressez-les :</p>
<pre>wget http://rt2x00.serialmonkey.com/rt73-cvs-daily.tar.gz
tar -zxvf rt73-cvs-daily.tar.gz
cd rt73-cvs*/Module</pre>
<p>Si ce n&rsquo;est pas déjà fait, blacklistez les anciens modules qui peuvent empêcher rt73 de fonctionner en éditant /etc/modprobe.d/blacklist et en y ajoutant :</p>
<pre>blacklist rt73usb
blacklist rt2570
blacklist rt2500usb
blacklist rt2x00lib</pre>
<p>Au cas où, déchargez ces modulez éventuels :</p>
<pre>sudo modprobe -r rt73usb
sudo modprobe -r rt2570
sudo modprobe -r rt2500usb
sudo modprobe -r rt2x00lib</pre>
<p>Puis compilez et installez le module :</p>
<pre>make
sudo make install</pre>
<p>Si jamais vous obtenez un message du style :</p>
<pre>!!! WARNING: Module file much too big (&gt;1MB)
!!! Check your kernel settings or use 'strip'</pre>
<p>Alors lancez les commandes :</p>
<pre>make
strip -S rt73.ko
sudo make install</pre>
<p>Ensuite, copiez le module :</p>
<pre>sudo mkdir /lib/modules/$(uname -r)/extra
sudo cp rt73.ko /lib/modules/$(uname -r)/extra/rt73.ko</pre>
<p>Puis chargez-le :</p>
<pre>sudo depmod -ae
sudo modprobe rt73</pre>
<p>Normalement, vous devriez pouvoir activer votre interface :</p>
<pre>sudo ifconfig wlan0 up</pre>
<p>Notez que désormais l&rsquo;interface a un nom du style wlan* et non plus en rausb*.</p>
<p>Maintenant, votre connexion Wifi et Aircrack devraient fonctionner à nouveau. Vous devrez très certainement éditer votre /etc/network/interfaces pour remplacer les occurrences de rausb0 par wlan0.</p>
<p>Et voila ! Au besoin, référez-vous au README situé dans l&rsquo;archive des drivers, il est bien fourni et décrit les configurations classiques (WEP, WPA, WPA2) de la carte.</p>
<p>Sources :</p>
<ul>
<li><a href="http://forum.ubuntu-fr.org/viewtopic.php?pid=1747722#p1747722" target="_blank">Forum Ubuntu</a></li>
<li><a href="http://aircrack-ng.org/doku.php?id=rt73" target="_blank">Aircrack, drivers rt73</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.segmentationfault.fr/linux/ubuntu/drivers-rt73ubuntu-hardy/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Drivers Wifi Ralink rt73, injection et WPA sous Ubuntu</title>
		<link>http://www.segmentationfault.fr/linux/ubuntu/drivers-wifi-rt73-injection-wpa-ubuntu/</link>
		<comments>http://www.segmentationfault.fr/linux/ubuntu/drivers-wifi-rt73-injection-wpa-ubuntu/#comments</comments>
		<pubDate>Sun, 24 Feb 2008 09:33:52 +0000</pubDate>
		<dc:creator>Emilien Girault</dc:creator>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[aircrack]]></category>
		<category><![CDATA[drivers]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[ralink]]></category>
		<category><![CDATA[wifi]]></category>

		<guid isPermaLink="false">http://www.segmentationfault.fr/systeme/drivers-wifi-rt73-injection-wpa-ubuntu/</guid>
		<description><![CDATA[Suite à une mise à jour critique du noyau de Linux (due à une faille de sécurité permettant de faire un local root), j&#8217;ai mis à jour mes machines, et donc installé la dernière mise à jour du noyau. Cela s&#8217;est passé sans problème sur mon ordinateur fixe, mais j&#8217;ai eu un petit soucis sur [...]]]></description>
			<content:encoded><![CDATA[<p>Suite à une mise à jour critique du noyau de Linux (due à une faille de sécurité permettant de faire un local root), j&rsquo;ai mis à jour mes machines, et donc installé la dernière mise à jour du noyau. Cela s&rsquo;est passé sans problème sur mon ordinateur fixe, mais j&rsquo;ai eu un petit soucis sur mon portable. En fait, ce portable possède une carte Wifi Ralink intégrée, et le driver de base fourni par Ubuntu est défectueux (on peut voir les réseaux Wifi, mais pas s&rsquo;y connecter). J&rsquo;avais donc utilisé les drivers fournis par Aircrack, qui permettent en plus de faire de l&rsquo;injection de packets <img src='http://www.segmentationfault.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Et comme il faut compiler ce module, une réinstallation du noyau nécessite de le recompiler une fois de plus. Ce n&rsquo;est pas dur, mais il faut le savoir ! Après avoir expliqué comment (re)compiler le driver, je montrerai comment utiliser le cryptage WPA avec l&rsquo;interface Wifi.</p>
<p><span id="more-17"></span></p>
<h3>Compilation du driver</h3>
<p>Voici donc la marche à suivre pour compiler et utiliser ces drivers. Tout d&rsquo;abord, placez-vous en root dans le dossier /usr/src :</p>
<blockquote></blockquote>
<pre>sudo -s</pre>
<pre>cd /usr/src</pre>
<blockquote></blockquote>
<p>Assurez-vous d&rsquo;avoir les outils pour la compilation (GCC et compagnie). Au cas où, installez le paquet build-essential :</p>
<blockquote></blockquote>
<pre>aptitude install build-essential</pre>
<blockquote></blockquote>
<p>Ensuite, téléchargez le driver, et décompressez-le :</p>
<blockquote></blockquote>
<pre>wget http://homepages.tu-darmstadt.de/~p_larbig/wlan/rt73-k2wrlz-2.0.1.tar.bz2</pre>
<pre>tar jxvf rt73-k2wrlz-2.0.1.tar.bz2</pre>
<blockquote></blockquote>
<p>Placez-vous dans le dossier du driver, compilez-le et installez-le :</p>
<blockquote></blockquote>
<pre>cd rt73-k2wrlz-2.0.1/Module</pre>
<pre>make</pre>
<pre>make install</pre>
<blockquote></blockquote>
<p>Si jamais vous obtenez un message d&rsquo;erreur de ce type à la compilation (après &laquo;&nbsp;make&nbsp;&raquo;)  :</p>
<blockquote></blockquote>
<pre>!!! WARNING: Module file much too big (&gt;1MB)
!!! Check your kernel settings or use 'strip'</pre>
<blockquote></blockquote>
<p>Dans ce cas (et dans ce cas seulement), il faut utiliser l&rsquo;utilitaire &laquo;&nbsp;strip&nbsp;&raquo; et recompiler le driver :</p>
<blockquote></blockquote>
<pre>strip -S rt73.ko</pre>
<pre>make</pre>
<pre>make install</pre>
<blockquote></blockquote>
<p>Une fois que c&rsquo;est fait, il faut bannir (blacklister) les modules Wifi de base d&rsquo;Ubuntu en ajoutant ceci à la fin du fichier /etc/modprobe.d/blacklist, si ce n&rsquo;est pas déjà fait :</p>
<blockquote></blockquote>
<pre>blacklist rt73usb
blacklist rt2570
blacklist rt2500usb
blacklist rt2x00lib</pre>
<blockquote></blockquote>
<p>Pour être sur que l&rsquo;ancien driver ne provoque pas de conflit, déchargeons tous les modules susceptibles de causer des problèmes :</p>
<blockquote></blockquote>
<pre>modprobe -r rt73usb</pre>
<pre>modprobe -r rt2570</pre>
<pre>modprobe -r rt2500usb</pre>
<pre>modprobe -r rt2x00lib</pre>
<blockquote></blockquote>
<p>Testons maintenant le driver ! Allumez votre interface (si vous disposez d&rsquo;un bouton Wifi sur votre machine), chargez le driver et testez l&rsquo;interface :</p>
<blockquote></blockquote>
<pre>modprobe rt73</pre>
<pre>ifconfig rausb0 up</pre>
<blockquote></blockquote>
<p>Normalement, ça marche ! Au cas où ça ne serait pas le cas, une possibilité est de prendre une version antérieure du driver sur la page http://homepages.tu-darmstadt.de/~p_larbig/wlan/ (allez dans la section &laquo;&nbsp;<span style="font-weight: bold">RaLink RT73 USB Enhanced Driver</span>&laquo;&nbsp;) et réeffectuez les étapes précédentes (en adaptant le nom de l&rsquo;archive).</p>
<h3>Utiliser le WPA</h3>
<p>Pour ceux qui sont toujours connectés en WEP, permettez-moi de vous rappeler que cette méthode d&rsquo;encryption est depuis longtemps dépassée car trop facilement crackable ! Avec Aircrack et quelques connaissances, il faut environ 30min pour cracker une clé, et avec la dernière version (et un peut de chance) on peut même atteindre quelques minutes seulement. Si j&rsquo;ai le temps, je montrerai dans un prochain billet comment utiliser Aircrack pour casser une clé WEP. Mais en attendant, passez donc au WPA !</p>
<p>Pour activer le WPA sur l&rsquo;interface, ce n&rsquo;est pas bien compliqué. Tout se passe dans le fichier /etc/network/interfaces. Il faut que vous ajoutiez  des lignes de configuration basées sur ce modèle :</p>
<blockquote></blockquote>
<pre>auto rausb0
iface rausb0 inet dhcp
        pre-up ifconfig rausb0 up  # a enlever si ca marche pas
        pre-up iwconfig rausb0 essid Livebox-XXXX  # le nom du réseau
        pre-up iwconfig rausb0 mode managed
        pre-up iwpriv rausb0 set AuthMode=WPAPSK
        pre-up iwpriv rausb0 set EncrypType=TKIP
        pre-up iwpriv rausb0 set WPAPSK="XXXXXXXXXXXXXXXXXXXXXXXXXX" # la clé WPA</pre>
<blockquote></blockquote>
<p>Cette configuration est celle que j&rsquo;utilise pour me connecter sur ma livebox en WPA. Adaptez-la si besoin. Et assurez-vous que le WPA est activé sur la borne&#8230; Attention toutefois pour les Livebox Inventel : il faut absolument prendre l&rsquo;option &laquo;&nbsp;WPA seulement&nbsp;&raquo; et pas &laquo;&nbsp;WEP et WPA&nbsp;&raquo; dans le menu de configuration, sinon cela ne marche pas. Si votre borne Wifi nécessite l&rsquo;appui sur une touche pour permettre l&rsquo;association Wifi de nouveaux périphériques, appuyez dessus sinon vous ne pourrez pas vous connecter (c&rsquo;est le cas pour les Livebox)</p>
<p>Ensuite, redémarrez les interfaces réseau :</p>
<blockquote></blockquote>
<pre>/etc/init.d/networking restart</pre>
<blockquote></blockquote>
<p>Et si tout va bien, vous devriez obtenir une adresse IP et vous serez alors connectés ! Si jamais cela ne marche pas, c&rsquo;est probablement du à une erreur dans la clé, ou bien à un conflit avec une autre interface. En effet, n&rsquo;essayez pas de vous connecter à la fois en filaire et en Wifi, car au niveau des adresses IP attribuées par le DHCP, il risque d&rsquo;y avoir des problèmes (elles seront toutes les deux dans le même réseau). Essayez de désactiver votre interface réseau en tapant :</p>
<blockquote></blockquote>
<pre>ifconfig eth0 down</pre>
<blockquote></blockquote>
<p>Assurez-vous également qu&rsquo;il n&rsquo;y a pas de ligne du type &laquo;&nbsp;auto eth0&Prime; dans le fichier /etc/network/interfaces, et redémarrez une nouvelle fois les interfaces.</p>
<p>Si vous obtenez un message du style</p>
<blockquote></blockquote>
<pre>DHCPACK from 192.168.1.1
bound to 192.168.1.161 -- renewal in 32485 seconds.</pre>
<blockquote></blockquote>
<p>alors vous êtes connectés !</p>
<p>Attention, le module installé ne fonctionnera pas avec les outils graphiques du style NetworkManager. Enfin, n&rsquo;oubliez pas qu&rsquo;à chaque mise à jour de noyau, il faudra le recompiler (refaire un &laquo;&nbsp;make&nbsp;&raquo; et &laquo;&nbsp;make install&nbsp;&raquo; dans le dossier des sources du driver).</p>
<h3>Conclusion</h3>
<p>J&rsquo;espère que ce billet vous aura été utile, car trouver toute cette procédure m&rsquo;aura demandé un certain temps de recherche. Voici quelques pages qui m&rsquo;ont pas mal servi :</p>
<ul>
<li><a href="http://aircrack-ng.org/doku.php?id=rt73" target="_blank">La page des drivers rt73 sur Arcrack</a></li>
<li><a href="http://homepages.tu-darmstadt.de/~p_larbig/wlan/" target="_blank">Les drivers Ralink supportant l&rsquo;injection </a></li>
<li><a href="http://doc.ubuntu-fr.org/wpa#methode_alternative" target="_blank">La page WPA sur la doc d&rsquo;Ubuntu-fr</a> (la partie intéressante est à la fin, nommée &laquo;&nbsp;<strong>Méthode alternative</strong>&laquo;&nbsp;)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.segmentationfault.fr/linux/ubuntu/drivers-wifi-rt73-injection-wpa-ubuntu/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
