ต้องการวิธีดึงที่อยู่ MAC จากเราเตอร์ของฉันสำหรับโครงการ“ Who's Home”


11

โปรเจ็กต์ประเภทนี้เคยทำมาแล้วกับบลูทู ธ มาก่อน แต่ระยะ 30 ฟุตและการใช้พลังงานแบตเตอรี่เพิ่มทำให้ฉันอยากจะปิงเราเตอร์แทนโทรศัพท์ของผู้คน ฉันรู้ว่าเราเตอร์ติดตามที่อยู่ MAC ที่ไม่ซ้ำกันสำหรับแต่ละอุปกรณ์ ฉันหวังว่าจะลงทะเบียนที่อยู่ของโทรศัพท์แต่ละเครื่องและให้ PI ตรวจสอบเราเตอร์เป็นระยะเพื่ออัปเดตหน้าเว็บแบบไดนามิกเพื่อแสดงว่าใครอยู่บ้าน

ฉันต้องการทราบว่ามีวิธีที่เหมาะสมในการดึงข้อมูลนี้ด้วย PI หรือไม่


แล้ว WiFi ล่ะ (ping ชื่อโฮสต์ของโทรศัพท์แทน)
user236012

2
คุณสามารถกำหนดที่อยู่ IP แบบคงที่จากเราเตอร์จากนั้นใช้ nmap และที่อยู่ IP เพื่อระบุอุปกรณ์
ArtOfCode

ฉันได้ทำสิ่งที่คล้ายกันใน C # บน Windows ที่นี่: stackoverflow.com/questions/2567107/… - ฉันยินดีที่จะส่งรหัสรุ่นล่าสุดให้คุณหากคุณต้องการ ฉันไม่รู้ว่า C # มีประโยชน์กับ Raspberry Pi อย่างไร แต่ควรชี้แนะคุณในทิศทางที่ถูกต้อง มันตรวจจับได้อย่างน่าเชื่อถือว่าฉันอยู่บ้านก่อนที่ฉันจะเข้าไปในโรงรถ
Aric TenEyck

ฉันจับภาพ + ข้อมูลจำนวนมากโดยใส่ bash script บนเราเตอร์ที่โพสต์ผลลัพธ์ลงในเว็บเซิร์ฟเวอร์ทุกนาที ด้วยระบบนี้ฉันจะตรวจสอบและจัดการเวลาใช้งานอินเทอร์เน็ต, ลูกค้าที่เชื่อมต่อ, WAN IP, การลดทอนใยและงบประมาณด้านพลังงาน, บริการ VOIP, รหัสผ่าน wifi ฯลฯ ระยะทางจะแตกต่างกันตามพลัง CPU ของเราเตอร์ของคุณ
EDP

1
ขูดหน้าจอบนเราเตอร์หรือไม่ คุณยังสามารถอัพเกรดเป็นเราเตอร์ Linuxbased (openwrt) และเพียงเข้าสู่ระบบและดูในแคช arp
Thorbjørn Ravn Andersen

คำตอบ:


6

มันเป็นไปได้. ฉันขอแนะนำให้คุณใส่ข้อมูลประจำตัวของสคริปต์และอ่านหน้าเว็บที่แสดงข้อมูล จากนั้นคุณสามารถแยกวิเคราะห์เนื้อหาและเติมอาเรย์ด้วยข้อมูลที่คุณต้องการ เนื่องจากบางครั้งหน้าเหล่านี้มีข้อมูลเพิ่มเติมเช่นวันที่และเวลาคุณสามารถสร้างบันทึกที่ดีจริงๆ

นี่คือตัวอย่างด่วนเกี่ยวกับวิธีที่ฉันจะดำเนินการต่อ;

ในหน้าของเราเตอร์คุณจะพบสิ่งต่อไปนี้

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

ดังนั้นเราจึงรู้ว่าอุปกรณ์ทุกตัวจะแสดงรายการเช่นนั้น และที่อยู่ MAC ทั้งหมดจะมีความยาวเท่ากัน

สคริปต์อาจเป็นแบบนั้น

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

รหัสนี้จะต้องมีการปรับแต่ง แต่มีความคิดอยู่ที่นั่น มันเป็นวงที่จะเรียกใช้ไฟล์ทั้งหมดเพื่อค้นหาที่อยู่ Mac ทั้งหมด จนกว่าจะถึงจุดสิ้นสุดไฟล์


นี่คือสิ่งที่ฉันจะทำ มีโบนัสเพิ่มในการตรวจสอบว่าเราเตอร์ของคุณตาย
slebetman

1
+1 การขูดเว็บไซต์เป็นตัวเลือกที่น่าสนใจ ฉันรำคาญเล็กน้อยฉันไม่ได้คิดด้วยตัวเอง
Jacobm001

@MadeInDreams หน้าเราเตอร์ที่คุณอ้างถึงคือหน้า DHCP ของสัญญาเช่าเราเตอร์ หรือมีหน้าการเชื่อมต่อเราเตอร์ที่ใช้งานอยู่?
Chetan Bhargava

ขึ้นอยู่กับเราเตอร์ของคุณ แต่ส่วนใหญ่มีหน้าเว็บที่แสดงรายการอุปกรณ์ทั้งหมดที่เชื่อมต่อ ตัวอย่างนี้มาจากหน้าหลักของเครือข่ายของฉัน
MadeInDreams

6

เพื่อติดตามอยู่ MAC ไม่ซ้ำกันในราสเบอร์รี่ Pi ของคุณคุณจำเป็นต้องมีเครื่องมือ (แทนที่จะบริการแล้ว) เรียกว่าarpwatch ฉันใช้ arpwatch กับ BSD อย่างกว้างขวางและมันจะบันทึกคำขอ arp และ rarp ทั้งหมดลงใน syslog

จาก Syslog คุณสามารถแยกวันที่และเวลาและที่อยู่ Mac

งาน ARP และตารางมีอยู่ในเครือข่ายทางกายภาพเท่านั้น (คำทางเทคนิค: โดเมนชน) เมื่อแพ็กเก็ตออกจากเครือข่ายอื่นที่อยู่ Mac ต้นทางจะถูกแทนที่ด้วยที่อยู่ Mac ของเราเตอร์

การรันarpคำสั่งบน Raspberry Pi จะแสดงรายการที่อยู่ mac + IP ของโฮสต์ที่มีการทำธุรกรรม (การสื่อสาร IP) กับโฮสต์ที่คำสั่งนั้นทำงาน (Raspberry Pi) มันจะไม่แสดงรายการที่อยู่ mac ของโฮสต์อื่น ๆ บนเครือข่าย

อีกวิธีขั้นสูงคือการใช้nmapบน Raspberry Pi ของคุณเพื่อทำการค้นหาโฮสต์ คุณสามารถใช้nmap -sPในการ ping โฮสต์ทั้งหมดในเครือข่าย มันจะบอกคุณที่อยู่ IP ของโฮสต์ที่ใช้งานทั้งหมดในเครือข่ายของคุณ จากนั้นคุณสามารถเรียกใช้คำสั่ง arp เพื่อค้นหา mac ของผู้ที่กำลังใช้งานอยู่

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
ฉันคิดว่านี่น่าจะเป็นวิธีที่แข็งแกร่งและยืดหยุ่นมากกว่าการขูดเว็บ บน ISP ที่ออกเราเตอร์หน้าเพจที่ควรแสดงอุปกรณ์ที่เชื่อมต่อด้วยข้อมูลจะไม่น่าเชื่อถือ
goldilocks

@goldilocks +1 ใช่ฉันคิดเกี่ยวกับมันหลังจากฉัน upvoted คำตอบที่ยอมรับ ฉันคิดว่าพวกเขามีเราเตอร์ที่มีหน้าสำหรับการเชื่อมต่อที่ใช้งานอยู่ (สถานะ SPI หรือคล้ายกัน) เราเตอร์ที่ดีพวกเขามี
Chetan Bhargava

4

ฉันได้รับเพียงแค่การเล่นรอบกับรุ่นบรรทัดคำสั่งของfing มันเป็นงานที่ดีในการค้นหาทุกสิ่งบนเครือข่ายและแยกไฟล์ CSVที่มี:

  • ที่อยู่ IP
  • ชื่อที่กำหนดเองของโหนด (หากคุณได้กำหนดชื่อที่กำหนดเองในไฟล์. properties)
  • รัฐ (ขึ้น / ลง)
  • เวลาประทับของการเปลี่ยนแปลงครั้งล่าสุด
  • ชื่อโฮสต์ (ถ้าคุณเปิดใช้งาน DNS)
  • ที่อยู่ฮาร์ดแวร์ (หากคุณกำลังค้นหาเครือข่ายท้องถิ่น)
  • ผู้จำหน่ายฮาร์ดแวร์

ตามคำตอบก่อนหน้าการจัดการข้อความบางอย่างอาจจำเป็นเพื่อให้ได้เนื้อหาของ CSV ลงบนหน้าเว็บและระวังสิ่งที่คุณเผยแพร่ภายนอก

ฉันใช้เวอร์ชัน Android อย่างกว้างขวางและมันทำงานได้ดีในการค้นหาทุกสิ่งบนเครือข่ายในบ้านของฉัน (และสนุกกับการเล่นกับ wifi สาธารณะ)


3

คำสั่งarpจะให้รายการอุปกรณ์ที่เชื่อมต่อกับเครือข่าย คุณจะต้องทำการจัดการสตริงพื้นฐานเพื่อรับข้อมูลที่ต้องการ แต่แน่นอนว่าจะง่ายกว่าการพยายามรับข้อมูลด้วยตนเอง

ฟังก์ชั่นทราบ :

เราเตอร์บางตัวปิดกั้นการใช้งานประเภทนี้ตามค่าเริ่มต้นและคุณอาจได้รับการกำหนดค่าเช่นนี้ หากยังใช้งานไม่ได้ให้ขุดไปรอบ ๆ เป็นเอกสารเล็กน้อยเพื่อตรวจสอบวิธีการอนุญาต

หมายเหตุการรักษาความปลอดภัย :

มีผลกระทบด้านความปลอดภัยที่ร้ายแรงอย่างมากคือการมีเว็บไซต์ที่แสดงว่าใครอยู่บ้าน โปรดไตร่ตรองอย่างรอบคอบเกี่ยวกับความปลอดภัยในสถานที่และดูว่ามันดีพอสำหรับความเสี่ยงที่เกี่ยวข้องหรือไม่


เป็นความคิดที่ดีฉันคิดว่าฉันถอนความคิดเห็นก่อนหน้านี้
Ghanima

1
มีข้อสังเกตที่น่าสนใจเกี่ยวกับการใช้ arp สำหรับสิ่งนี้ที่นี่ พวกเขาแนะนำว่าอุปกรณ์อาจไม่ปรากฏขึ้นหากพวกเขาไม่ได้ส่งแพ็กเก็ตใด ๆ ไปยังอุปกรณ์ที่ใช้งาน arp และอาจจำเป็นต้อง ping
goobering

@ goobering +1 เพียงแค่เรียกใช้คำสั่ง arp จะไม่แสดงรายการโฮสต์ทั้งหมดที่ใช้งานบนเครือข่าย Arpwatch จะบันทึกแพ็กเก็ต arp ทั้งหมดบนเครือข่าย
Chetan Bhargava

1

เป็นไปได้ที่จะทำและคนอื่น ๆ ได้แนะนำวิธีการที่ดีบางอย่าง ฉันเขียนสคริปต์ไพ ธ อนเมื่อไม่กี่ปีที่ผ่านมากลับไปที่หน้าจอขูดข้อมูลนี้จากเราเตอร์เน็ตและโยนมันขึ้นบน Github มันสามารถพบได้ที่นี่ มันหยาบคายและมองดูตอนนี้ฉันจะทำซ้ำมันค่อนข้างแตกต่างกัน แต่มันก็ทำงานเพื่อจุดประสงค์เดียวกับที่คุณทำอยู่สองสามปีจนกระทั่งฉันย้าย


+1 สคริปต์ของคุณอาจได้รับการปรับปรุงอย่างแน่นอน แต่นั่นเป็นวิธีแก้ปัญหาที่ยอดเยี่ยม
Jacobm001
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.