Les Forums

Les Forums

Les forums sont fermés. Ils restent présent pour consultation et archivage.
Vous pouvez désormais poser vos questions directement dans les commentaires en bas de chaque page du site.
Alors n'hésitez pas à participer

FrameIP et ARP

Bonjour je souhaite tester mes equipements à la sensibilité d'un pic ARP.

Donc du coup j'utilise FrameIp en mode console.
Avant de faire des betises, je souhaite creer ma requete ARP.
Est ce que le type ARP (contenu dans la couche Ethernet), doit etre specifié avec l'option -mac_type ?

exemple:
- 0806 pour ARP
- 0800 pour IP
Enfin c'est des idées, donc si quelqu'un l'a deja fait ou sait comment faire, je suis preneur.

Merci d'avance.
Lu Rod,

Oui tu as raison, il faut spécifier -mac_type et tu dois lui donné une valeur en décimal. Donc comme x0806 = 2054, tu dois indiquer l'argument :

-mac_type 2054

@+
_SebF - Sébastien FONTAINE
Pour le type ARP c'est bon.
Maintenant ca se corse un peu.

Ce sont les parametres de la couche ARP que j'essaie d'entrer.
Pour simplifier, je me suis dis que je pouvais les saisir comme la partie DATA encapsulée par l'Ethernet mais apparement, ca ne fonctionne pas exactement comme cela.

je specifie l'Ethernet par 0x0001
puis l'IP par 0x0800
puis l'adr Eth 0x06
puis le format IPv4 0x04
puis une requete 0x0001
ensuite l'adresse MAC source
ensuite l'IP source (exemple 0xC0 A8 00 0A)
Puis 6 fois le caractere 0x00 (il semble que ce soit normal pour une requete).
Puis IP recherchée (exemple 0xC0 A8 00 01)

Apparement la trame est malfortée au niveau ARP quand je la recupere avec Ethereal.
en fait c'est bizarre car je crois que malgré la specification du mac_type 2054, j'ai des infos liés à IP derriere.

capture sous Ethereal:
0000 ff ff ff ff ff ff 00 0f b5 fe 42 10 08 06 45 00 ..........B...E.
0010 00 20 86 2f 00 00 80 01 17 e4 c0 a8 00 0a d9 0c . ./............
0020 03 0b 08 00 b4 71 ff 70 5b 3e 74 6f 74 6f .....q.p[>toto

le 45 00 à la fin de la premiere ligne est modifié si je modifie le ip_version ou le ip_ihl.

@ _sebf : est ce que tu geres le fait d'appliquer l'entete IP en testant le mac_type>=2048 ? Je ne pense pas, mais on ne sait jamais.

Je regarderais ce soir plus precisement.
Lu Rod,

Heu oui, en fait tu as raison, l'entête IP est obligatoire. Lors du passage en Libpcap avec l'ajout de l'entête MAC, je n'ai pas pensé au cas où mac_type serait différent de IPv4.

J'ai bien noté ta remaque et j'ai vite fait regardé le code et la modification me parrait simple.

J'ai pas le temps ce soir, mais je te fais rapide. Sûrement mercredi car demain soir, c'est Halloween 🙂

P.S. : Au passage, indique nous la commande exacte de frameip.exe -... que tu veux passer.

@+
_SebF - Sébastien FONTAINE
ca roule, je te poste ca demain depuis le taf.

Là je suis mort, je rentre de chez mademoiselle 😉
Voilà les éléments dont j'aurais besoin:

frameip -mac_type "2054" -mac_source "MAC from interface" -mac_destination "FF-FF-FF-FF-FF-FF" -arp_hwt "0x0001" -arp_prt "0x0800" -arp_hwl "0x06" -arp_ipv "0x04" -arp_mode "0x0001" -arp_macsrc "MAC from interface" -arp_ipsrc "@IP from interface" -arp_ipfind "@IP searched"

la trame doit faire 60 octets:
MAC_dest : FF-FF-FF-FF-FF-FF (6 octets)
MAC_src : xx-xx-xx-xx-xx-xx (6 octets)
MAC_type : 08 06 (ARP) (2 octets) (tag une trame comme trame ARP)

ARP_hwt : 00 01 (recherche) (2 octets) (00 02 pour reponse)
ARP_prt : 08 00 (2 octets) (recherche sur une IP)
ARP_hwl : 06 (1 octet ) (specifie une recherche Ethernet)
ARP_ipv : 04 (1 octet ) (precise le travail sur IPv4)
ARP_mode : 00 01 (2 octets) (question. Si reponse = 00 02)
ARP_macsrc : xx-xx-xx-xx-xx-xx (6 octets) (adresse MAC de l'emetteur)
ARP_ipsrc : xx-xx-xx-xx (4 octets) (IP de l'emetteur)
ARP_ipfind : xx-xx-xx-xx (4 octets) (IP recherchée)

Il faut donc combler la trame par des 00 pour arriver à une trame de 60 octets.
Si besoin d'infos, n'hesites pas à me contacter par mp ou par mon mail enregsitré.

Merci à toi.
Lu Rod,

Ca y est Rod, je viens de trouver un petit crénneau pour te faire la modification demandé.

Désormais, Frameip.exe prend en compte le fait de spécifier autre chose qu'IP au dessus d'Ethernet.

Test la version 5.2.3.10 qui est a disposition sur [url=http://www.frameip.com/frameip/]la page frameip[/url] et dis moi si cela répond à ton besoin et si tout est opérationnel.

@+ et tiens nous au courrant de tes tests.
_SebF - Sébastien FONTAINE
La classe.

pour le moment ca fonctionne chez moi.
Demain je teste au boulot.

J'avoue ca fiat plaisir.

Encore merci pour cette modif express.

je fais "frameip -interface 1 -mac_type 2054 -data_size 28 -data_hexa 00 01 08 00 06 04 00 01 00 13 d4 49 ee 79 c0 a8 01 64 00 00 00 00 00 00 c0 a8 01 01.

J'ai ajouté des espaces pour différencié les octets.
quand j'aurais plus de temps, à la limite j'apporterais une modif à ton source pour créer des arguments specifiques à l'ARP (comme dans la reponse precedente).
bon alors bilan des courses.

Les trames emises sont bien des trames ARP.

Par contre j'ai des soucis de vitesse.
Peut etre du à ma carte reseau pourtant, je pensais quelle serait plus rapide.
Je souhaite envoyer 100 000 trames à environ 9 000 trames/s.
ca donne environ un besoin de 378ko/s sur les 12.5Mo/s dispos d'une liaison 100Mbps.

Seulement je n'arrive à emettre qu'à maximum 830 trames/s soit 34ko/s (10 fois moins que ce que je cherche).

J'utilise une catre reseau Fast Ethernet FA311 de Netgear.
Je vais me balader dans les reglages pour voir si je peux regler la vitesse d'emission liée au remplissage du buffer.

j'ai mis "-wait 0 -loops 100000".

Je vous tiens au courant.
Encore merci Seb pour le developpement rapide.

Edit :
Bon en fait, je ne peux presque rien régler sur cette carte.
Au pire je ferais les tests ce soir sur ma Gigabit.

Sinon le "-wait 0" apporte un gain entre le 10 et 100Mbps, je double quasiment la vitesse d'emission.
Seb :
je viens de parcourir le source de frameip en version console et je pense savoir d'où vient une limitation des perfs que j'ai remarquée.

ta boucle while doit permettre d'emettre autant de fois que demandé la trame.
Mais par contre il faut que tu sortes concatenation_des_entetes(). Car sinon on se retape la concatenation à tous les tours.
Il faut créer la trame => concatenation_des_entetes() puis on fait la boucle while().
Pourrais tu ajouter une option pour n'afficher qu'une fois les infos d'emission et pas à l'envoi de chaque trame ?

C'est des trucs qui me viennent comme ca, mais je pense que ca doit jouer sur les 1,1 ms de vide entre l'emission de mes trames.

Si tu n'as pas le temps d'ici ce soir, je vais essayer de recup LCC et tester mes modifs. Je te tiens au courant.
Lu Rod,

Quand tu fais :
frameip -interface 1 -mac_type 2054 -data_size 28 -data_hexa 00 01 08 00 06 04 00 01 00 13 d4 49 ....
Pas besoinde spécifier -daat_size 28, il va être automatiquement calculé.

Oui, il te faut absolument mettre wait à 0 pour aller plus vite, sinon il fera des pauses.

Pour la vitesse, tu n'auras jamais tes 100Mbps car tu essai d'envoyer des petites trames et la capacités de ta carte réseau n'est pas réellement calculé en débit mais en PPS. PPS est le nombre de trame par seconde, ainsi dans un trafic normal, avec des trame d'une moyenne de 1300 octets, ta carte pourras atteindre 80Mbps (à valider par ton constructeur). Ainsi si tu emets des trames 10 fois plus petites, tu emettras toujours autant de trames, mais avec un débit 10 fois inférieurs.

Par contre, frameip.exe n'a pas été optimisé pour flooder, mais pour prendre tous les cas en compte. D'où la sortie de petit outil parralèle tel que Synflood.exe. La solution serait donc pas de modifier frameip.exe mais de créer arp.exe 🙂

De plus, frameip.exe est compilé en mode debug. J'ai essayé justement cette semaine de passer la compilation en mode release (qui optimise l'execution), mais cela générait des trames bizzard. J'ai positionné le problème dans les choses à faire.

Oui tu as raison, supprimer la concatenation_des_entetes() gagnera du temps. Il y a même plein d'endroit où on peux optimiser l'execution, mais je ne préfère pas et garder l'orientation fonctionnelle.

@+
_SebF - Sébastien FONTAINE
ok pas de souci, je comprends que frameip n'est pas fait pour ca.

Donc je vais me pencher à créer arp.exe en modifiant frameip.exe.

Par contre je ne sais où trouver LibSocket.h et pcap.h.
Sont elles libre de droit ?
Où les recuperer ?

hesites pas à me repondre en mp, si c'est confidentiel.

Encore merci pour ton aide.

Rod =)
Re Rod,

Non les droits sont libres, aucun soucis pour les H. Mais ne bouge pas, je te développe Arp.exe rapidement. Pas trop longtemps car j'ai un autre truc en cours.

@+ et attend moi
_SebF - Sébastien FONTAINE
Re Rod,

Voila c'est fait, c'est [url=http://www.frameip.com/forum/viewtopic.php?p=1472]publié[/url].

@+
_SebF - Sébastien FONTAINE
salut sebf
j'espere que tout va bien
ya un truc que je veux savoir
comment je peut telecharger frame ip version 5.3.1.10 ou autre version
et ne me dit pas de me rendre sur la page de frameip pour le faire
parceque ca me donne pas la main quand je fait passer ma souris dessus !?
bizzarre §
Lu mahboul,

Voivi le lien de la 5.5.3.10 :
http://www.frameip.com/frameip/frameip_download.php

Sinon, tu peux essayer l'exe en direct :
http://www.frameip.com/frameip/FrameIp.exe

@+
_SebF - Sébastien FONTAINE