5

I'd like to discover as much information about IoT devices on a network as possible. I've seen code to enumerate the devices, find the IP Addresses and MAC Addresses, but what else can I find? In particular, I'd like to know that something is a lamp, and more importantly, what the manufacturer is.

I've been looking through some documentation for IoTivity and AllJoyn as well as the various Zero Configuration protocols. From what I understand, these things are more concerned with the services exposed rather than exactly what the device is.

Do I misunderstand this? Is there some way to map out a local network and know exactly what each device is?

Sander Smith
  • 1,371
  • 4
  • 20
  • 30
  • This would not be any different from a regular network scan with the objective of listing all IP addressable devices on the local network or within an arbitrary IP range. This could be prohibited by ISP or network admins. – Sergei Rodionov Jul 01 '15 at 21:46
  • I'm really talking about a home network, so there really shouldn't be anything to stop you from doing this. Yes, it's a regular network scan and it's easy to get info like IP Addresses. My interest is how to get more detailed information about the devices. – Sander Smith Jul 02 '15 at 13:59
  • This paper talks about different scanning techniques to discover IoT devices: https://www.sciencedirect.com/science/article/pii/S1353485818300333 – learnerX Apr 23 '18 at 07:08

3 Answers3

2

AllJoyn offers About Announcement service through which you can get what you are looking for:

  • App and Device Friendly Names
  • Make, Model, Version, Description
  • Supported Languages
  • App Icon
  • Supported objects and interfaces
  • ...
Younes
  • 1,635
  • 1
  • 19
  • 33
  • Okay, this is what I'm looking for. So it seems to me that every device I find on the network I can query for this information. *IF* the device supports AllJoyn, then I'm home free. Is this right? Are there any other protocols I can check? I also know about HNAP but that seems to be an ancient protocol that's mostly for routers. – Sander Smith Jul 02 '15 at 21:16
  • I'm not aware about HNAP. So, I'm useless for you in this regard. Regarding AllJoyn, yes you are right. As described in the link I mentioned above, AllJoyn Devices that have services to offer can advertise them self using the `About Announcement Service`. AllJoyn Client Devices can discover AllJoyn Server Devices by listening to `About Announcement Service`. Once they discover an adequate service, they can connect to it. It is worth to note that AllJoyn provides [other valuable services](https://allseenalliance.org/developers/learn/base-services) that ease integration of devices in proximity. – Younes Jul 02 '15 at 23:42
  • HNAP was a protocol from about 15 years ago developed by a company that was bought by Linksys. It made it really easy to identify the devices on a network and gave me exactly what I want, but isn't really used much anymore. – Sander Smith Jul 03 '15 at 11:08
0

Start by looking into DPWS (Device Profile for Web Services). This is a subset of we service standards (e.g., WSDL or SOAP) that allows minimal interaction with web services running on embedded devices. Usually the messages exchanged while using such service contains metadata which can inform you about:

  1. Scope - attributes used for organising according to groups (e.g., location)
  2. Model and device - info about device (e.g., manufacturer)
  3. Types - messages that the device can send (e.g., turn off)

To use these devices you need a control layer which provides a certain abstraction to these devices. This layer is called a middleware. I suggest you look into SOCRADES. It is an EU project and I believe their source code should be available on their dedicated website.

I'm mentioning SOCRADES because it has a feature that can force network installation. It is possible to install new services on these devices using their DPWS profiles and assuming they have some communication and computation capabilities.

Other examples of middlewares are: OpenIot, Choreos, Ubiware, etc. All these middlewares mentioned are opensource. Now, on top of these middleware you build your application. This is what do you want to do with the devices.

Andrei
  • 7,509
  • 7
  • 32
  • 63
  • does DPWS provides a discovery service? For instance, assume that I'm building a smart home where I want to control my TV using my smart phone. Is there a secure way that let my smart phone recognize that the TV (once it is 10 meters away from me) can be switched on and off? – Younes Jul 02 '15 at 23:52
  • DPWS aids with service discovery by providing metadata such that users or other devices can discover the device and its capabilities. In general, the middlewares provide the component which perform service discovery. – Andrei Jul 03 '15 at 00:21
  • If I look at a typical network in a home now or five years from now, are there going to be any devices that are going to be using this service? – Sander Smith Jul 03 '15 at 11:11
  • Quite likely it will something similar since the work right now is to figure out how to virtualise the infrastructure and how to compose the services provided by these devices. But, tagging and adding metadata to these devices will be mandatory. Somehow this data needs to be made available to the users or to the middleware. Also, now and five years from now many of such middlewares are provided (e.g., Xively, Carriots) which discover the device and read the data from the device. – Andrei Jul 03 '15 at 11:18
0

uPnP is quite common protocol nowadays and implemented in quite a lot of devices (i.e. printers). This is used for some modern IoT projects too. It supports a device description also. See an example:

<?xml version='1.0'?>
<root xmlns="urn:schemas-upnp-org:device-1-0" xmlns:pnpx="http://schemas.microsoft.com/windows/pnpx/2005/11">
<specVersion>
   <major>1</major>
   <minor>0</minor>
 </specVersion>
<device>  
    <pnpx:X_deviceCategory>MediaDevices</pnpx:X_deviceCategory>
    <deviceType>urn:schemas-microsoft-com:device:MediaCenterExtenderMFD:1</deviceType>
    <friendlyName>Xbox 360 Media Center Extender</friendlyName>
    <manufacturer>Microsoft Corporation</manufacturer>
    <manufacturerURL>http://www.xbox.com/</manufacturerURL>
    <modelDescription>Xbox 360 Media Center Extender</modelDescription>
    <modelName>Xbox 360</modelName>
    <modelNumber></modelNumber>
    <modelURL>http://go.microsoft.com/fwlink/?LinkID=53081</modelURL>
    <serialNumber></serialNumber>
    <UDN>uuid:10000000-0000-0000-0200-00125A702E78</UDN>
    <UPC></UPC>
    <iconList>
        ...
    </iconList>
    <serviceList>
         ...
    </serviceList>
</device>
</root>
Vova
  • 1,356
  • 1
  • 12
  • 26