“Kimin Evi” projesi için Yönlendiricimden MAC Adreslerini almanın bir yoluna ihtiyacım var


11

Bu tür bir proje daha önce Bluetooth ile yapıldı, ancak 30 ayak aralığı ve ekstra pil tüketimi beni insanların telefonları yerine yönlendiriciye ping atmak istiyor. Yönlendiricilerin her aygıt için benzersiz MAC adreslerini izlediğini biliyorum. Her telefonun adresini kaydetmeyi umuyordum ve PI'nin evde kim olduğunu göstermek için dinamik bir web sayfasını güncellemek için yönlendiriciyi düzenli olarak kontrol etmesini umuyordum.

Bu bilgiyi PI ile çekmenin makul bir yolu olup olmadığını bilmek istiyorum.


wifi hakkında ne (yerine ping telefonları hostnames)?
user236012

2
Ayrıca yönlendiriciden statik IP adresleri atayabilir, ardından aygıtları tanımlamak için nmap ve IP adreslerini kullanabilirsiniz.
ArtOfCode

Burada Windows'ta C # ile benzer bir şey yaptım: stackoverflow.com/questions/2567107/… - İsterseniz size en son sürüm kodunu göndermekten memnuniyet duyarım. C # bir Ahududu Pi üzerinde ne kadar yararlı bilmiyorum, ama doğru yönde işaret etmelidir. Garajdan bile içeri girmeden önce evde olduğumu güvenilir bir şekilde tespit ediyor.
Aric TenEyck

Her dakika sonuçları bir web sunucusuna gönderen yönlendiriciye bir bash betiği koyarak bu + çok daha fazla bilgi yakalarım. Bu sistemle internet çalışma süresini, bağlı istemcileri, WAN IP'lerini, fiber zayıflama ve güç bütçesini, VOIP hizmetlerini, wifi şifrelerini vb. İzler ve yönetirim. Kilometre, yönlendiricinizin CPU gücüne göre değişir.
EDP

1
Yönlendiricide ekran kazıma? Ayrıca Linux tabanlı bir yönlendiriciye (openwrt) yükseltebilir ve giriş yapıp arp önbelleğine bakabilirsiniz.
Thorbjørn Ravn Andersen

Yanıtlar:


6

Bu mümkün. Komut dosyanızı giriş kimlik bilgilerini sağlamanızı ve bilgileri görüntüleyen sayfayı okumanızı öneririm. Ardından, içeriğini ayrıştırabilir ve bir diziyi istediğiniz verilerle doldurabilirsiniz. Bu sayfalar bazen tarih ve saat gibi daha fazla bilgi içerdiğinden, gerçekten güzel bir günlük oluşturabilirsiniz.

İşte nasıl ilerleyeceğime dair kısa bir örnek;

Yönlendiricinizin sayfasında aşağıdakine benzer bir şey bulabilirsiniz;

<div id="flex">
 <div id="dm-name">
  name : Your_device_name
 </div>
 <div id="dm-ip">
  IP : 192.168.x.xxx
 </div>
 <div id="dm-mac">
  <span>MAC:D4:04:CD:FE:5A:17</span>
 </div>
</div>

Bu yüzden her cihazın bu şekilde listeleneceğini doğru biliyoruz. Ve tüm MAC adresleri aynı uzunlukta olacak.

Senaryo böyle bir şey olabilir;

var string_to_parse = "file read from router.html";
cursor = 0;  // The position of your cursor;
i =0;
    while(cursor > 0){

    begin_at = string_to_parse.indeOf('MAC:');
    end_at = length_of_Mac; // this is standard for al mac

    mac[i] = string_to_parse.substring(begin_at, begin_at + end_at);
    cursor = begin_at + end_at;
i++;
    }

Bu kodun düzeltilmesi gerekecek, ancak fikir orada. Tüm Mac adresini bulmak için tüm dosyayı çalıştıracak bir döngü. Dosyanın sonuna kadar.


Ben de öyle yapardım. Yönlendiricinizin öldüğünü tespit etmenin ek bir bonusu vardır.
slebetman

1
+1 Web sitesi kazıma ilginç bir seçimdir. Kendimi düşünmediğim için biraz rahatsız oldum.
Jacobm001

@MadeInDreams Yönlendirdiğiniz yönlendirici sayfası yönlendirici DHCP kiralama sayfası mı? Veya bir yönlendirici etkin bağlantı sayfası var mı?
Chetan Bhargava

Yönlendiricinize bağlı, ancak çoğunda bağlı tüm cihazları listeleyen bir sayfa var. Bu örnek ağ ana
sayfamdan

6

Raspberry Pi'nizdeki benzersiz mac adreslerini izlemek için arpwatch adlı bir araca (daha çok hizmet) ihtiyacınız var . BSD'de arpwatch'ı yoğun bir şekilde kullandım ve tüm arp ve rarp isteklerini syslog'a kaydeder.

Syslog'dan tarihleri, saatleri ve mac adreslerini ayrıştırabilirsiniz.

ARP çalışır ve tablo yalnızca fiziksel ağda bulunur (teknik sözcük: çarpışma alanı). Bir paket başka bir ağ için ayrıldığında, kaynak mac adresinin yerine yönlendiricinin mac adresi gelir.

arpRaspberry Pi'de komut çalıştırıldığında , yalnızca komutun çalıştırıldığı ana bilgisayarla (Raspberry Pi) işlem yapan ana bilgisayarların (IP iletişimi) mac + IP adresleri listelenir. Bu olacak değil ağdaki diğer ana mac adreslerini sıralar.

Bir başka gelişmiş yol , bir ev sahibi keşfi yapmak için Raspberry Pi'nizde nmap kullanmak olacaktır . nmap -sPAğdaki tüm ana bilgisayarlara ping atmak için kullanabilirsiniz . Ağınızdaki tüm etkin ana bilgisayarların IP adreslerini söyleyecektir. Daha sonra kimin aktif olduğunu öğrenmek için arp komutunu çalıştırabilirsiniz.

chetan@Linux:~$ nmap -sP 192.168.100.0/24

Starting Nmap 6.40 ( http://nmap.org ) at 2016-02-23 16:08 PST
Nmap scan report for 192.168.100.4
Host is up (0.0087s latency).
Nmap scan report for 192.168.100.58
Host is up (0.0024s latency).
Nmap scan report for 192.168.100.160
Host is up (0.049s latency).
Nmap scan report for 192.168.100.164
Host is up (0.063s latency).
Nmap done: 256 IP addresses (4 hosts up) scanned in 2.68 seconds

1
Bunun web kazıma yönteminden çok daha sağlam ve esnek bir yöntem olduğunu düşünüyorum. İSS tarafından verilen birçok yönlendiricide, bağlı aygıtları bilgi ile birlikte göstermesi gereken sayfa güvenilir olmayacaktır.
goldilocks

@goldilocks +1, evet, kabul edilen cevabı iptal ettikten sonra düşündüm. Aktif bağlantılar (SPI durumu veya benzeri) için bir sayfaya sahip bir yönlendirici olduğunu varsayalım. Güzel yönlendirici var.
Chetan Bhargava

4

Ben sadece parmakların komut satırı sürümü ile oynuyordum . Ağdaki her şeyi bulmak ve aşağıdakileri içeren CSV dosyalarını tükürmek için iyi bir iş çıkarır :

  • IP adresi
  • Düğümün Özel Adı (.properties dosyasında özel adlar atadıysanız)
  • Durum (YUKARI / AŞAĞI)
  • Son değişikliğin zaman damgası
  • Ana bilgisayar adı (DNS'yi etkinleştirdiyseniz)
  • Donanım adresi (yerel bir ağ keşfediyorsanız)
  • Donanım satıcısı

Önceki yanıtlara göre, CSV'lerin içeriğini bir web sayfasına almak ve harici olarak ne yayınladığınıza dikkat etmek için bazı metin manipülasyonları gerekli olacaktır .

Android sürümünü oldukça yaygın olarak kullandım ve ev ağımdaki her şeyi (ve genel wifi'da oynamak için eğlenceli) iyi bir iş çıkarıyor.


3

Komut arpsize ağa bağlı cihazların bir listesini verecektir. İstediğiniz verileri elde etmek için bazı temel dize manipülasyonları yapmanız gerekir, ancak bu kesinlikle bilgileri kendiniz almaya çalışmaktan daha kolay olacaktır.

İşlevsellik notu :

Bazı yönlendiriciler varsayılan olarak bu tür işlevleri engeller ve sizinki böyle yapılandırılabilir. Eğer işe yaramazsa, nasıl izin verileceğini kontrol etmek için belgelerini biraz araştırın.

GÜVENLİK NOTU :

Şu anda kimin evde olduğunu gösteren bir web sitesine sahip olmanın bazı ciddi güvenlik etkileri vardır. Lütfen mevcut güvenlik ve içerdiği riskler için yeterince iyi olup olmadığı konusunda çok dikkatli düşünün.


İyi fikir, sanırım önceki yorumumu geri çektim.
Ghanima

1
Burada bunun için arp kullanımı hakkında birkaç ilginç görünümlü uyarı var . Arp çalışan cihaza herhangi bir paket göndermemişlerse cihazların görünmeyebileceğini ve ping'in gerekli olabileceğini öne sürüyorlar.
goobering

@goobering +1. arp komutunun çalıştırılması ağdaki tüm etkin ana bilgisayarları listelemez. Arpwatch, ağdaki tüm arp paketlerini günlüğe kaydeder.
Chetan Bhargava

1

Bunu yapmak mümkündür ve diğer insanlar bazı iyi yöntemler önerdiler. Birkaç yıl önce bir netgear yönlendiriciden bu bilgiyi kazımak için bir python betiği yazdım ve github'a attım. Bu bulunabilir burada . Bu kaba ve şimdi ona baktığımda biraz farklı bir şekilde tekrar yapardım, ama taşınana kadar birkaç yıl boyunca olduğu gibi hemen hemen aynı amaç için çalıştı.


+1 Betiğiniz kesinlikle geliştirilebilir, ancak bu soruna mükemmel bir çözümdür.
Jacobm001
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.