Search code examples
iosswiftnetwork-programmingoperating-systemsnmp

Is there any way to detect Software Version OR Kernel Version of connected host devices without using SNMP


My question is exactly what the title said, Is there any way to detect Software Version OR Kernel Version of connected host devices without using SNMP? i have achived the software versions of host devices using SNMP in iOS(swift). but that requires enabling of snmp in host devices and i don't want to work that way, i want to fetch that info just like other LANScanners fetch the other info like ip, names and mac address of the host devices without any enabling in host devices, just like this example, this scanner (https://github.com/mavris/MMLanScan) fetches the info like name, device type and mac address. can i change this library to get the software or kernel version? if yes than a little guidance will be really helpful. Thanks.


Solution

  • First and foremost: iOS 11 removed the ability for applications to view MAC addresses at all, so this library no longer has the ability to get any information about network devices beyond the IP address.

    That being said:

    can i change this library to get the software or kernel version?

    No, because that isn't possible.

    The MMLanScan library you're looking at used the MAC address to determine the manufacturer of a device. This is possible because the first three octets of the MAC address identify the manufacturer. The MAC address doesn't contain any information about the software currently running on a device -- it's a fixed identifier, after all, and can't change to reflect changes in software!

    There is no generally applicable way to get the versions of software running on a network device. SNMP is about the only standard method I can think of, and, as you've discovered, no agent is present by default on most consumer devices.