<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.yobi.be/index.php?action=history&amp;feed=atom&amp;title=Kernel_AODV_Hack</id>
	<title>Kernel AODV Hack - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.yobi.be/index.php?action=history&amp;feed=atom&amp;title=Kernel_AODV_Hack"/>
	<link rel="alternate" type="text/html" href="https://wiki.yobi.be/index.php?title=Kernel_AODV_Hack&amp;action=history"/>
	<updated>2026-05-23T18:42:52Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki.yobi.be/index.php?title=Kernel_AODV_Hack&amp;diff=2838&amp;oldid=prev</id>
		<title>PhilippeTeuwen at 00:06, 26 February 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.yobi.be/index.php?title=Kernel_AODV_Hack&amp;diff=2838&amp;oldid=prev"/>
		<updated>2008-02-26T00:06:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;Converted with [[MediaWiki#HTML-WikiConverter|HTML::WikiConverter::MediaWiki]] from my old phpwiki site&amp;#039;&amp;#039;&lt;br /&gt;
----&lt;br /&gt;
== Permettre l&amp;#039;injection locale de paquets HELLO pour réaliser un noeud KernelAodvReseauCitoyen ==&lt;br /&gt;
&lt;br /&gt;
=== Remarques préalables sur l&amp;#039;injection de paquets forgés ===&lt;br /&gt;
&lt;br /&gt;
* cf [[Kernel AODV Spoof Hello]] pour les premiers tests d&amp;#039;injection de paquets HELLO dans kernel_aodv réalisés au laboratoire de Bombolong&lt;br /&gt;
* Lorsque plusieurs interfaces sont reconnues par kernel_aodv, il &amp;#039;&amp;#039;&amp;#039;faut&amp;#039;&amp;#039;&amp;#039; parler à l&amp;#039;IP principale reconnue comme telle par kernel_aodv (cf messages de démarrage du module)&amp;lt;br /&amp;gt;L&amp;#039;IP principale est simplement la dernière IP que kernel_aodv intègre à sa table.&lt;br /&gt;
* Il faut spoofer l&amp;#039;adresse de la source sinon cela risque d&amp;#039;avoir des conséquences fâcheuses pour la mise à jour de la table de routage.&lt;br /&gt;
&lt;br /&gt;
Voir &amp;#039;&amp;#039;Injection dynamique de routes dans la table AODV&amp;#039;&amp;#039; sur [http://reseaucitoyen.be/?AodvNistInternals ReseauCitoyen:AodvNistInternals]&lt;br /&gt;
&lt;br /&gt;
=== Notes techniques sur la modification du module kernel_aodv ===&lt;br /&gt;
&lt;br /&gt;
* Protection du &amp;#039;&amp;#039;hack&amp;#039;&amp;#039; par un flag de compilation afin de pouvoir compiler le code original si on le souhaite.&lt;br /&gt;
* Seconde protection (puisque par défaut le &amp;#039;&amp;#039;hack&amp;#039;&amp;#039; sera compilé):&amp;lt;br /&amp;gt;Ajout d&amp;#039;un paramètre au module: &amp;quot;self_injection=0(default)/1&amp;quot; pour activer le code d&amp;#039;injection locale&lt;br /&gt;
* Dans la fonction packet_in() qui se trouve dans le fichier packet_in.c, qui est la fonction accrochée au Netfilter et récupérant les paquets qui arrivent sur la machine, nous ajoutons un code d&amp;#039;interception des paquets envoyés sur le device &amp;quot;lo&amp;quot; qui ont pour destination notre IP AODV principale, nous les vérifions un minimum et nous les passons à la queue de traitement des paquets fraîchement arrivés, après quoi nous disons à Netfilter qu&amp;#039;il peut se débarrasser du paquet forgé.&amp;lt;br /&amp;gt;Cela donne:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
     // If self_injection is active and we receive a locally forget packet:&lt;br /&gt;
     if (SELF_INJECTION &amp;amp;amp;&amp;amp;amp; (strcmp(dev-&amp;amp;gt;name,&amp;quot;lo&amp;quot;)==0) &amp;amp;amp;&amp;amp;amp; (ip-&amp;amp;gt;daddr==g_my_ip))&lt;br /&gt;
       {&lt;br /&gt;
         //still sanity check...&lt;br /&gt;
         aodv_type = (int)packet-&amp;amp;gt;data[start_point];&lt;br /&gt;
         if (check_packet(packet-&amp;amp;gt;len-start_point,aodv_type,packet-&amp;amp;gt;data+start_point))&lt;br /&gt;
           {&lt;br /&gt;
             printk(KERN_NOTICE &amp;quot;AODV: Packet of type: %d and of size %u failed packet check!\n&amp;quot;,aodv_type,packet-&amp;amp;gt;len-start_point);&lt;br /&gt;
             return NF_DROP;&lt;br /&gt;
 &lt;br /&gt;
           }&lt;br /&gt;
         //place packet in the event queue!&lt;br /&gt;
         insert_event_queue_entry(aodv_type,packet);&lt;br /&gt;
         //drop our locally forget packet&lt;br /&gt;
         return NF_DROP;&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
* Il reste un problème dans la fonction find_interface_by_dev() du fichier interface_list.c car si nous avons intercepté un paquet forgé en provenance de &amp;quot;lo&amp;quot; nous n&amp;#039;avons pas changé cette information de provenance et la fonction find_interface_by_dev() perd les pédales.&amp;lt;br /&amp;gt;Voici le code à ajouter pour éviter cela:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
     tmp_ip = tmp_indev-&amp;amp;gt;ifa_list-&amp;amp;gt;ifa_address;&lt;br /&gt;
 &lt;br /&gt;
 #ifdef AODV_SELF_INJECTION&lt;br /&gt;
     // if self_injection code is active and we receive a local packet&lt;br /&gt;
     if (SELF_INJECTION &amp;amp;amp;&amp;amp;amp; (strcmp(dev-&amp;amp;gt;name,&amp;quot;lo&amp;quot;)==0))&lt;br /&gt;
         // change 127.0.0.1 to our active IP&lt;br /&gt;
         tmp_ip=g_my_ip;&lt;br /&gt;
 #endif&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Remarque: nous aurions peut-être pu spoofer le device de provenance du paquet forgé mais lorsque j&amp;#039;ai fait quelques tentatives j&amp;#039;ai réussi à perdre complètement mon interface loopback jusqu&amp;#039;au reboot suivant!&lt;br /&gt;
* Remarque 2: le spoof de l&amp;#039;adresse source n&amp;#039;a pas l&amp;#039;air nécessaire pour les machines à une seul hop.&lt;/div&gt;</summary>
		<author><name>PhilippeTeuwen</name></author>
	</entry>
</feed>