Tego rodzaju projekt był wcześniej wykonywany za pomocą Bluetooth, ale zasięg 30 stóp i dodatkowe zużycie baterii sprawiają, że chcę po prostu pingować router zamiast telefonów ludzi. Wiem, że routery śledzą unikalne adresy MAC dla każdego urządzenia. Miałem nadzieję zarejestrować adres każdego telefonu i zlecić PI okresowe sprawdzanie routera, aby zaktualizować dynamiczną stronę internetową, aby wyświetlić, kto jest w domu.
Chcę wiedzieć, czy istnieje rozsądny sposób na pobranie tych informacji z PI.
networking
wifi
Codiush
źródło
źródło
Odpowiedzi:
To jest możliwe. Sugeruję podanie skryptu danych logowania i przeczytanie strony wyświetlającej informacje. Następnie możesz przeanalizować jego zawartość i wypełnić tablicę żądanymi danymi. Ponieważ te strony czasami zawierają więcej informacji, takich jak daty i czas, możesz stworzyć naprawdę fajny dziennik.
Oto szybki przykład, jak postąpiłbym;
Na stronie routera można znaleźć coś takiego:
Więc wiemy Wright, że każde urządzenie będzie na liście w ten sposób. I że wszystkie adresy MAC będą miały tę samą długość.
Skrypt może być coś takiego;
Ten kod będzie wymagał ulepszenia, ale pomysł już istnieje. Jest to pętla, która uruchomi cały plik, aby znaleźć cały adres Mac. aż dojdzie do końca pliku.
źródło
Aby śledzić unikalne adresy Mac na twoim Raspberry Pi, potrzebujesz narzędzia (raczej usługi) o nazwie arpwatch . Używałem arpwatch na BSD i loguje on wszystkie żądania arp i rarp do syslog.
Z Syslog możesz analizować daty i godziny oraz adresy mac.
ARP działa, a tabela istnieje tylko w sieci fizycznej (słowo techniczne: domena kolizyjna). Gdy pakiet wychodzi do innej sieci, źródłowy adres mac jest zastępowany adresem mac routera.
Uruchomienie
arp
polecenia na Raspberry Pi wyświetli tylko adresy mac + IP hostów, którzy dokonali transakcji (komunikacja IP) z hostem, na którym uruchomiono polecenie (Raspberry Pi). To będzie nie listy adresów MAC innych komputerów w sieci.Innym zaawansowanym sposobem byłoby użycie nmap na twoim Raspberry Pi do wykrycia hosta. Możesz użyć
nmap -sP
do pingowania wszystkich hostów w sieci. Poda ci adresy IP wszystkich aktywnych hostów w twojej sieci. Następnie możesz uruchomić polecenie arp, aby dowiedzieć się, kto jest aktywny.źródło
Właśnie bawiłem się wersją palca wiersza poleceń . Wykonuje przyzwoitą robotę, znajdując wszystko w sieci i wyrzucając pliki CSV zawierające:
Zgodnie z poprzednimi odpowiedziami, aby wprowadzić zawartość plików CSV na stronę internetową, konieczna byłaby manipulacja tekstem i uważaj na to, co publikujesz na zewnątrz.
Bardzo często korzystałem z wersji na Androida i dobrze znajduję wszystko w mojej domowej sieci (i rodzaj zabawy z publiczną siecią Wi-Fi).
źródło
Polecenie
arp
wyświetli listę urządzeń podłączonych do sieci. Będziesz musiał wykonać podstawową manipulację ciągiem, aby uzyskać potrzebne dane, ale z pewnością byłoby to łatwiejsze niż próba uzyskania informacji samodzielnie.Uwaga dotycząca funkcjonalności :
Niektóre routery domyślnie blokują tego typu funkcje, a twój może być skonfigurowany jako taki. Jeśli to nie działa, przejrzyj trochę jego dokumentację, aby sprawdzić, jak na to zezwolić.
UWAGA BEZPIECZEŃSTWA :
Istnieje kilka bardzo poważnych konsekwencji bezpieczeństwa związanych z posiadaniem strony internetowej, która wyświetla, kto jest obecnie w domu. Proszę bardzo uważnie zastanowić się nad zapewnionym bezpieczeństwem i czy jest ono wystarczające dla danego ryzyka.
źródło
Można to zrobić, a inni ludzie zasugerowali kilka dobrych metod. Kilka lat temu napisałem skrypt Pythona, aby zeskrobać te informacje z routera netgear i rzucić je na github. Można go znaleźć tutaj . Jest prymitywny i patrząc na to teraz przerobiłbym go nieco inaczej, ale działał właściwie w tym samym celu, do jakiego dążysz przez kilka lat, dopóki się nie przeprowadziłem.
źródło