मैं libtins पुस्तकालय की मदद से सी++ में एक नेटवर्क स्कैनर विकसित कर रहा हूं, मैं मैक पते और आईपी प्राप्त करने में सक्षम हो सकता हूं लेकिन मैं विक्रेता (उदाहरण: इंटेल कॉर्पोरेट) और डिवाइस का नाम जानने के लिए और आगे जाना चाहता हूं (उदाहरण: DESKTOP-TO5P0BD ) सी++ में


मैक और आईपी प्राप्त करने के लिए कोड

// एआरपी परत की जानकारी प्राप्त करें

const ARP& arp = pdu.rfind_pdu<ARP>();
std::cout << "Found :" << arp.sender_ip_addr() << ", " << arp.sender_hw_addr() << std::endl;
// Checking if it is an ARP reply?
if (arp.opcode() == ARP::REPLY) {
    // Let's check if there's already an entry for this address
auto iter = addresses.find(arp.sender_ip_addr());
if (iter == addresses.end()) {
    std::cout << "saving " << arp.sender_ip_addr() << ", " << arp.sender_hw_addr() << std::endl;
    // We haven't seen this address. Save it.
    addresses.insert({ arp.sender_ip_addr(), arp.sender_hw_addr() });
    IPv4Address ip = arp.sender_ip_addr();
    NetworkInterface iface(ip);
    //std::cout << iface.name() << std::endl;
}
else {
    std::cout << "already seen " << arp.sender_ip_addr() << ", " << arp.sender_hw_addr() << std::endl;
    // We've seen this address. If it's not the same HW address, inform it
    if (arp.sender_hw_addr() != iter->second) {
        std::cout << "[WARNING] " << arp.sender_ip_addr() << " is at "
            << iter->second << " but also at " << arp.sender_hw_addr()
            << std::endl;
    }
}
}

-1
Gwiza Erick 19 अगस्त 2021, 12:47

2 जवाब

सबसे बढ़िया उत्तर

मैक पते से विक्रेता प्राप्त करने के लिए, आप इस पर एक नज़र डाल सकते हैं मैक OUI विक्रेता डेटाबेस Wireshark द्वारा प्रबंधित। यह एक साधारण प्रारूप वाली टेक्स्ट फ़ाइल है।

"डिवाइस का नाम" प्राप्त करने के लिए, आप NetBIOS नाम लुकअप कर सकते हैं। यह स्टैक ओवरफ्लो प्रश्न< /a> आपकी मदद कर सकता है।

-1
Luca Polito 19 अगस्त 2021, 09:56

यदि आप MAC से विक्रेता का नाम चाहते हैं, तो आप arp -a (शायद winapi के माध्यम से)। इसके बाद आपको एक विक्रेता डीबी खोजना होगा, wireshark सूची अच्छी है , इसमें यह भी है। "डिवाइस नाम" के लिए, आप इसे डब्लूएमआई के साथ देख सकते हैं। इसके लिए अधिक जटिल winapi, आप यह एक जैसी लाइब्रेरी का उपयोग कर सकते हैं , जो बहुत आसान है। आपको Win32_ComputerSystem वर्ग के लिए एक अनुरोध करना होगा, जिसमें अन्य बातों के अलावा डिवाइस का नाम और मॉडल नंबर शामिल है। मैक पते को WMI द्वारा भी पुनर्प्राप्त किया जा सकता है, इसके बजाय Win32_NetworkAdapter को क्वेरी करें - यह सभी इंटरफेस देता है इसलिए सही खोजना सुनिश्चित करें!

-1
Dharman 19 अगस्त 2021, 10:34