Butuh cara untuk menarik Alamat MAC dari Router saya untuk proyek "Who's Home"

11

Proyek semacam ini telah dilakukan dengan Bluetooth sebelumnya tetapi jangkauan 30 kaki dan konsumsi baterai ekstra membuat saya ingin hanya melakukan ping router daripada telepon orang. Saya tahu bahwa router melacak alamat MAC unik untuk setiap perangkat. Saya berharap untuk mendaftarkan alamat masing-masing ponsel dan memiliki PI secara berkala memeriksa router untuk memperbarui halaman web dinamis untuk menampilkan siapa yang ada di rumah.

Saya ingin tahu apakah ada cara yang masuk akal untuk menarik info ini dengan PI.

Codiush
sumber
bagaimana dengan wifi (ping saja nama host ponsel)?
user236012
2
Anda juga dapat menetapkan alamat IP statis dari router, lalu menggunakan nmap dan alamat IP untuk mengidentifikasi perangkat.
ArtOfCode
Saya telah melakukan sesuatu yang serupa di C # pada Windows di sini: stackoverflow.com/questions/2567107/… - Saya akan senang mengirimkan kode versi terbaru kepada Anda jika Anda mau. Saya tidak tahu seberapa bermanfaat C # pada Raspberry Pi, tetapi seharusnya mengarahkan Anda ke arah yang benar. Itu andal mendeteksi bahwa aku ada di rumah bahkan sebelum aku masuk dari garasi.
Aric TenEyck
Saya menangkap informasi ini + lebih banyak lagi dengan meletakkan skrip bash pada router yang memposting hasilnya ke server web setiap menit. Dengan sistem ini saya memantau dan mengelola waktu aktif internet, klien yang terhubung, IP WAN, redaman serat dan anggaran daya, layanan VOIP, kata sandi wifi, dll. Jarak tempuh berbeda dengan daya CPU router Anda.
EDP
1
Mengikis layar pada router? Anda juga dapat memutakhirkan ke router berbasis Linux (openwrt) dan cukup login dan lihat di cache arp.
Thorbjørn Ravn Andersen

Jawaban:

6

Itu mungkin. Saya sarankan Anda memberikan skrip Anda dengan kredensial masuk dan membaca halaman yang menampilkan info. Kemudian Anda dapat menguraikan konten itu dan mengisi array dengan data yang Anda inginkan. Karena halaman-halaman ini terkadang mengandung lebih banyak informasi seperti tanggal dan waktu Anda dapat membuat log yang sangat bagus.

Berikut adalah contoh cepat tentang bagaimana saya akan melanjutkan;

Pada halaman router Anda, Anda dapat menemukan sesuatu seperti berikut;

<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>

Jadi kita tahu wright bahwa setiap perangkat akan terdaftar seperti itu. Dan semua alamat MAC akan memiliki panjang yang sama.

Naskahnya bisa seperti itu;

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++;
    }

Kode ini perlu diubah tetapi idenya ada. Ini adalah loop yang akan menjalankan semua file untuk menemukan semua alamat Mac. hingga mencapai akhir file.

MadeInDreams
sumber
Inilah yang akan saya lakukan. Ini memiliki bonus tambahan untuk mendeteksi jika router Anda mati.
slebetman
1
+1 Memo situs web adalah pilihan yang menarik. Aku sedikit kesal, aku tidak memikirkannya sendiri.
Jacobm001
@MadeInDreams Halaman router yang Anda referensikan adalah halaman sewa DHCP router? Atau apakah ada halaman koneksi aktif router?
Chetan Bhargava
Tergantung pada router Anda, tetapi kebanyakan dari mereka memiliki halaman yang berisi daftar semua perangkat yang terhubung. Contoh ini dari halaman utama jaringan saya
MadeInDreams
6

Untuk melacak alamat mac unik pada Raspberry Pi Anda, Anda memerlukan alat (bukan layanan) yang disebut arpwatch . Saya telah menggunakan arpwatch pada BSD secara luas dan mencatat semua permintaan arp dan rarp ke syslog.

Dari Syslog Anda dapat mengurai tanggal dan waktu serta alamat mac.

ARP berfungsi dan tabel hanya ada di jaringan fisik (kata teknis: collision domain). Ketika sebuah paket pergi ke jaringan lain, alamat mac sumber diganti dengan alamat mac router.

Menjalankan arpperintah pada Raspberry Pi hanya akan mencantumkan mac + alamat IP dari host yang telah bertransaksi (komunikasi IP) dengan host di mana perintah dijalankan (Raspberry Pi). Itu tidak akan mencantumkan alamat mac dari host lain di jaringan.

Cara canggih lainnya adalah dengan menggunakan nmap pada Raspberry Pi Anda untuk melakukan pencarian host. Anda dapat menggunakan nmap -sPuntuk melakukan ping semua host di jaringan. Ini akan memberi tahu Anda alamat IP semua host aktif di jaringan Anda. Kemudian Anda dapat menjalankan perintah arp untuk mengetahui mac dari siapa yang aktif.

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
Chetan Bhargava
sumber
1
Saya pikir ini mungkin metode yang jauh lebih kuat dan fleksibel daripada yang mengikis web. Pada banyak ISP yang mengeluarkan router, halaman yang seharusnya menunjukkan perangkat yang terhubung tanpa info tidak dapat diandalkan.
goldilocks
@goldilocks +1, ya, saya memikirkannya setelah saya memutakhirkan jawaban yang diterima. Saya berasumsi mereka memiliki router yang memiliki halaman untuk koneksi aktif (status SPI atau serupa). Router bagus yang mereka miliki.
Chetan Bhargava
4

Saya baru saja bermain-main dengan versi baris perintah dari jari . Itu pekerjaan yang layak untuk menemukan segala sesuatu di jaringan dan meludahkan file CSV yang mengandung:

  • alamat IP
  • Nama Khusus Node (jika Anda telah menetapkan nama khusus dalam file .properties)
  • Negara bagian (ATAS / BAWAH)
  • Stempel waktu perubahan terakhir
  • Nama host (jika Anda telah mengaktifkan DNS)
  • Alamat Perangkat Keras (jika Anda menemukan jaringan lokal)
  • Penjual Perangkat Keras

Per jawaban sebelumnya, beberapa manipulasi teks akan diperlukan untuk mendapatkan konten CSV ke halaman web, dan berhati-hatilah dengan apa yang Anda terbitkan secara eksternal.

Saya telah menggunakan versi Android dengan cukup luas dan melakukan pekerjaan yang baik untuk menemukan semuanya di jaringan rumah saya (dan agak menyenangkan untuk dimainkan dengan wifi publik).

Goobering
sumber
3

Perintah itu arpakan memberi Anda daftar perangkat yang terhubung ke jaringan. Anda perlu melakukan beberapa manipulasi string dasar untuk mendapatkan data yang Anda inginkan, tetapi itu tentu akan lebih mudah daripada mencoba mendapatkan informasi sendiri.

Catatan fungsi :

Beberapa router memblokir fungsi ini secara default, dan router Anda mungkin dikonfigurasikan. Jika tidak berhasil, gali sedikit dokumentasi itu untuk memeriksa bagaimana memperbolehkannya.

CATATAN KEAMANAN :

Ada beberapa implikasi keamanan yang sangat serius dari memiliki situs web yang menampilkan siapa yang saat ini di rumah. Tolong pikirkan dengan hati-hati tentang keamanan yang ada, dan apakah itu cukup baik untuk risiko yang terlibat.

Jacobm001
sumber
Ide bagus, saya kira saya menarik komentar saya sebelumnya.
Ghanima
1
Ada beberapa peringatan tampak menarik tentang penggunaan arp untuk ini di sini . Mereka menyarankan bahwa perangkat mungkin tidak muncul jika mereka belum mengirim paket ke perangkat arp-running, dan ping mungkin diperlukan.
goobering
@goobering +1. menjalankan perintah arp tidak akan mencantumkan semua host aktif di jaringan. Arpwatch akan mencatat semua paket arp di jaringan.
Chetan Bhargava
1

Itu mungkin dilakukan, dan orang lain telah menyarankan beberapa metode yang baik. Saya menulis skrip python beberapa tahun yang lalu untuk menyaring informasi ini dari router netgear dan melemparkannya ke github. Itu dapat ditemukan di sini . Itu kasar, dan melihatnya sekarang saya akan mengulanginya agak berbeda, tapi itu bekerja untuk tujuan yang persis sama seperti yang Anda kejar selama beberapa tahun sampai saya pindah.

Ed.
sumber
+1 Skrip Anda tentu saja dapat ditingkatkan, tapi itu solusi yang bagus untuk masalah ini.
Jacobm001