MAC den IP adresi bulma

Başlatan baran123, 09 Eylül 2015, 21:08:49

baran123

MAC adresini bildiğim bir Client olsun.
C# ile aynı ağa bağlı cihazlar arasında bu MAC adreslerine bakarak IP yi nasıl bulabiliriz ?

sovalye

Modeme erişip ordan baktırmak dışında bir şansınız olduğunu sanmıyorum. Çünkü ip sini veya adını bilmediğiniz bir cihazla iletişim kuramazsınız.
Ya da clientlere Program yerleştirebiliyorsanız tüm ağ a brute force ile mesaj yollarsınız, clientler kendileri mac lerine bakıp size geri dönüş yaparlar.

baran123

cmd ye "arp -a" yazınca çıkıyor ama ?

sovalye

#3
Kendi bildiğim şekilde yazmıştım. Yanlışım varsa affola. Sizin dediğinizi bilmiyordum. Deneme yaptım ama ağdaki aletlerin ne ip adreslerini ne de gerçek mac lerini de görebiliyorum.  Arp -a nın verdiği değerler alakasız görünüyor. Araştırıyorum.

Burak B

Arp üzerinden yapabilirsin.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

baran123

#5
Yok hocam estağfurullah :)
Ben arp -a yı rasgele gezinirken gördüm.Deneyeyince ağdaki cihazların ip ve mac edreslerini gördüm.
Şimdi baktım da sadece benim bilgisayarım ve cihazın ip si görünüyor.
ESP kullanıyorum TCP server olarak çalışıyor.Bilgisayar ise Ethernetle bağlı.
Fakat internete yine esp gibi wifi ye bağlanan tablet gözükmüyor.

mesaj birleştirme:: 09 Eylül 2015, 21:45:56

@Burak BAYRAK hocam
C# da bu cmd komutlarını işleyebilir miyim ?

mesaj birleştirme:: 09 Eylül 2015, 21:50:49

Ahanda bir method buldum.

static void ExecuteCommandSync(object command)
        {
            try
            {
                // create the ProcessStartInfo using "cmd" as the program to be run,
                // and "/c " as the parameters.
                // Incidentally, /c tells cmd that we want it to execute the command that follows,
                // and then exit.
                System.Diagnostics.ProcessStartInfo procStartInfo =
                    new System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);

                // The following commands are needed to redirect the standard output.
                // This means that it will be redirected to the Process.StandardOutput StreamReader.
                procStartInfo.RedirectStandardOutput = true;
                procStartInfo.UseShellExecute = false;
                // Do not create the black window.
                procStartInfo.CreateNoWindow = true;
                // Now we create a process, assign its ProcessStartInfo and start it
                System.Diagnostics.Process proc = new System.Diagnostics.Process();
                proc.StartInfo = procStartInfo;
                proc.Start();
                // Get the output into a string
                string result = proc.StandardOutput.ReadToEnd();
                // Display the command output.
                Console.WriteLine(result);
            }
            catch (Exception objException)
            {
                // Log the exception
            }
        }

// Kullanımı 
ExecuteCommandSync("arp -a");


Artık dönen değer içinde arama yapabilirim. :)

Burak B

Direkt C# ile yapamasan bile Win32 sana bu konuda baya yardımcı olacaktır. Bir araştır bence. Zira C# içerisinden DLL dosyalarına erişebiliyorsun.  ;)
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

mufitsozen

#7
sevgili Baran, daha once bu konuda bir aciklama yapmistim picprojede.

ARP komutu surelidir eger makinandan tablodaki IP adreslerine belli bir sure trafik olmazsa tablodan silinir.
O yuzden en guzeli, bulundugun (sub)network uzerinde ping ile bir broadcast etmek. Boylece ARP tablosunu ping'e cevap veren butun cihazlarin MAC-IP adresleri ile doldursun
ondan hemen sonra ARP - a komutunu verirsen bu tabloyu gorursun.

https://www.picproje.org/index.php/topic,60040.msg464170.html#msg464170

yani C# ile ping broadcast yap, sonra ARP -a komutunun ciktisini al ve parse et.



Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

MC_Skywalker

birde bağlı bununduğun Router/Swithc te arp broadcast engellenmiş olmasın.

baran123

#9
@mufitsozen hocam anladım.
Ben bu işlemi ip leri öğrenmek için yapıyorum.
Mesela arp -a gönderince dönen text de şu şekilde ifadeler oluyor.
IP ---- MAC ---- TYPE
bu text leri satır satır tarıyorum.
Bu satırların içinde benim bildiğim MAC adresi var ise o satırdaki ip benim cihaz oluyor.(bence kötü bir yöntem ?)

Peki önce bir ping broadcast yapmak için ip girmek gerekmiyor mu ? Topluca ping atmak mümkün mü (sabit bir ip olmadan yani )?
Ayrıca
Alıntı YapARP komutu surelidir
Bu engin bilgileri öğrenebileceğimiz kaynak gösterebilir misiniz ? :D

Burak B

"... a healthy dose of paranoia leads to better systems." Jack Ganssle

RaMu

Biraz konu dışı gibi olacak ama kusura bakmayın merak ettim:
Bunu kullanarak wifi ağıma kimler yada kaç kişi bağlı görebilir miyim?

cmd.exe ye ARP -a yazdığımda
ne çıkması lazım?

Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

baran123

#12
Alıntı yapılan: RaMu - 09 Eylül 2015, 23:16:24
Biraz konu dışı gibi olacak ama kusura bakmayın merak ettim:
Bunu kullanarak wifi ağıma kimler yada kaç kişi bağlı görebilir miyim?

cmd.exe ye ARP -a yazdığımda
ne çıkması lazım?
Çok garanti değil mesela benim tablet gözükmüyor(acaba neden ?)
Ben modem arayüzüne girip bağlı olan cihazların hepsini görebiliyorum.

Hocam ben modem arayüzünden bağlı olan ip leri görebiliyorum
ARP ile yaptığımda ise tablet gözükmüyor (acaba neden ?)

@mufit hocam ipconfig de şöyle dönüm oluyor.
C:\Windows\system32>ipconfig

Windows IP Configuration


Ethernet adapter Local Area Connection 2:

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::b0e5242c:c764:e2b0:a315%14
   IPv4 Address. . . . . . . . . . . : 192.168.95.1
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . :

Ethernet adapter Local Area Connection:

   Connection-specific DNS Suffix  . :
   IPv6 Address. . . . . . . . . . . : fdec:233d:65cb:5700:dfb:5sdas386:2b2c:ce47
   Temporary IPv6 Address. . . . . . : fddec:233d:65asdcb:5700:54a:756sa:b6ab:9ab8
   Link-local IPv6 Address . . . . . : fes80::dfb:5386:2bd2c:cde47%11
   IPv4 Address. . . . . . . . . . . : 192.168.1.2
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.1.1

şu şekilde ping atmayı deniyorum.
ping -n 5 -w 100 192.168.1.255
ama full lost oluyor

mufitsozen

Alıntı yapılan: Baran Ekrem - 09 Eylül 2015, 23:18:37
Hocam ben modem arayüzünden bağlı olan ip leri görebiliyorum
ARP ile yaptığımda ise tablet gözükmüyor (acaba neden ?)

@mufit hocam ipconfig de şöyle dönüm oluyor.
C:\Windows\system32>ipconfig

Windows IP Configuration


Ethernet adapter Local Area Connection 2:

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::b0e5242c:c764:e2b0:a315%14
   IPv4 Address. . . . . . . . . . . : 192.168.95.1
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . :

Ethernet adapter Local Area Connection:

   Connection-specific DNS Suffix  . :
   IPv6 Address. . . . . . . . . . . : fdec:233d:65cb:5700:dfb:5sdas386:2b2c:ce47
   Temporary IPv6 Address. . . . . . : fddec:233d:65asdcb:5700:54a:756sa:b6ab:9ab8
   Link-local IPv6 Address . . . . . : fes80::dfb:5386:2bd2c:cde47%11
   IPv4 Address. . . . . . . . . . . : 192.168.1.2
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.1.1

şu şekilde ping atmayı deniyorum.
ping -n 5 -w 100 192.168.1.255
ama full lost oluyor

senin networkun (ipconfig'den) 192.168.95.x ve subnet mask'da 255.255.255.0

demekki soyle yazman lazim:

ping -n 5 -w 100 192.168.95.255
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

baran123

Hocam yine bir hata var gibi ?
C:\Windows\system32>ping -n 5 -w 100 192.168.95.255

Pinging 192.168.95.255 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 192.168.95.255:
    Packets: Sent = 5, Received = 0, Lost = 5 (100% loss),

C:\Windows\system32>