Tiberiu Ungureanu wrote:
On Wed, 2008-02-13 at 13:44 -0500, Mircea Vutcovici wrote:
Trimite arp request. Dar pentru asta ai nevoie de un IP. Si tocmai
adresa de IP era necunoscuta.
Iar eu sunt inca nedumerit cum poti trimite un arp-request daca nu
stii ip-ul. Sau e chestie de Harry Poker?!


** disclaimer: n-am citit threadul de la inceput, si s-ar putea sa ma
bag ca musca in lapte, fara nici o legatura cu realitatea **

** disclaimer2: mesajul asta se vrea un reply catre Mircea Vutcovici,
care raspunsese unui mesaj al lui Radu Oprisan, in care Radu zicea
"stiind adresa MAC, poti sa aflii adresa IP dand un arpig" **

Mircea,

nu trimiti arp-request, pentru ca pentru ala trebuie sa stii IP-ul.
Trimiti un Rarp-request, pentru care nu trebuie sa stii ip-ul, ci MAC-ul

Recommended reading:
ftp://ftp.rfc-editor.org/in-notes/rfc903.txt
http://en.wikipedia.org/wiki/RARP



De fapt se foloseste un artificiu:

       if (searchmac) {
               // ping MAC
               /*
                * KEYWORD
* What the hell was I thinking when I wrote the comment below?
                * -------
                * note: it's eth_xmas below, that's a feature. I don't want
* a -t line to affect a MAC ping (even though it can't
                *       since the lone arg is written last).
                * -------
                * Phew! Anyway, change eth_target to eth_xmas three lines
                *       below to change it back.
                */
if (-1 == libnet_build_ethernet(eth_target, /* <---- here */
                                               eth_source,
                                               ETHERTYPE_IP,
                                               NULL,
                                               0,
                                               packet)) {
                       fprintf(stderr, "libnet_build_ethernet(): error\n");
                       exit(1);
               }

               libnet_build_ip(ICMP_ECHO_H,  /* Size of the payload */
                               0,  /* IP tos */
                               rand(),               /* IP ID */
                               0,                  /* frag stuff */
                               48,                 /* TTL */
                               IPPROTO_ICMP,       /* transport protocol */
                               myip,               /* source IP */
                               dip,                /* destination IP */
                               NULL,               /* pointer to payload */
                               0,                  /* payload length */
                               packet + LIBNET_ETH_H); /* header memory */

               libnet_build_icmp_echo(ICMP_ECHO,     /* type */
                                      0,             /* code */
                                      4321,          /* id */
                                      6,             /* seq */
NULL, /* pointer to payload */
                                      0,             /* payload length */
                                      /* header memory */
                                      packet + LIBNET_ETH_H + LIBNET_IP_H);





Deci... Prietenul creeaza un packet ICMP pe care il arunca inspre MAC-ul respectiv.

       if (searchmac) {
               if (-1 == pcap_compile(pcap,&bp,"icmp",0,-1)) {
                       fprintf(stderr, "pcap_compile(): error\n");
                       exit(1);
               }
       } else {

Motivul pentru care explicam ca s-ar putea sa nu functioneze la un switch sau la un device vlan enabled este ca nu poti sa stii pe unde va trimite raspunsul.

mgw ~ # /home/darku/arping-2.06/arping -i eth3.100 00:19:5B:5D:47:A2
ARPING 00:19:5B:5D:47:A2
75 bytes from 195.95.255.23 (00:19:5b:5d:47:a2): icmp_seq=598 time=616.388 msec


case 'T': // destination IP in mac ping (default: 0xffffffff)
                       if (-1 == (dip = libnet_name_resolve(optarg,
LIBNET_RESOLVE))){ fprintf(stderr, "arping: can't resolve: %s\n",
                                       optarg);
                               exit(1);
                       }


Din cate observ... are niste "shortcommings metoda asta, dar functioneaza in general.
Ma intorc la film.


_______________________________________________
RLUG mailing list
RLUG@lists.lug.ro
http://lists.lug.ro/mailman/listinfo/rlug

Raspunde prin e-mail lui