Skip to content

Instantly share code, notes, and snippets.

@issackelly
Created July 31, 2012 07:21
Show Gist options
  • Save issackelly/3214468 to your computer and use it in GitHub Desktop.
Save issackelly/3214468 to your computer and use it in GitHub Desktop.
Hacking the WeMo WiFi switch Part 1 http://issackelly.com/blog/2012/07/30/wemo-hacking/
upnp> pcap
Entering passive mode, Ctl+C to stop...
****************************************************************
SSDP notification message from 192.168.1.1:5431
XML file is located at http://192.168.1.1:5431/dyndev/uuid:0016-b639-af9e00408084
Device is running LINUX/2.4 UPnP/1.0 BRCM400/1.0
****************************************************************
****************************************************************
SSDP notification message from 192.168.1.134:49153
XML file is located at http://192.168.1.134:49153/setup.xml
Device is running Linux/2.6.21, UPnP/1.0, Portable SDK for UPnP devices/1.6.6
****************************************************************
^CPassive mode halted...
upnp> host list
[0] 192.168.1.1:5431
[1] 192.168.1.134:49153
upnp> host get 1
Requesting device and service info for 192.168.1.134:49153 (this could take a few seconds)...
Host data enumeration complete!
upnp> host summary 1
Host: 192.168.1.134:49153
XML File: http://192.168.1.134:49153/setup.xml
controllee
manufacturerURL: http://www.belkin.com
modelName: Socket
UPC: 123456789
modelNumber: 1.0
presentationURL: /pluginpres.html
friendlyName: Test 1
fullName: urn:Belkin:device:controllee:1
modelDescription: Belkin Plugin Socket 1.0
UDN: uuid:Socket-1_0-221211K0100152
modelURL: http://www.belkin.com/plugin/
manufacturer: Belkin International Inc.
upnp> host info 1 deviceList
controllee : {}
upnp> host info 1
xmlFile : http://192.168.1.134:49153/setup.xml
name : 192.168.1.134:49153
proto : http://
serverType : Linux/2.6.21, UPnP/1.0, Portable SDK for UPnP devices/1.6.6
upnpServer : Linux/2.6.21, UPnP/1.0, Portable SDK for UPnP devices/1.6.6
dataComplete : True
deviceList : {}
{'dataComplete': True,
'deviceList': {'controllee': {'UDN': 'uuid:Socket-1_0-221211K0100152',
'UPC': '123456789',
'friendlyName': 'Test 1',
'fullName': 'urn:Belkin:device:controllee:1',
'manufacturer': 'Belkin International Inc.',
'manufacturerURL': 'http://www.belkin.com',
'modelDescription': 'Belkin Plugin Socket 1.0',
'modelName': 'Socket',
'modelNumber': '1.0',
'modelURL': 'http://www.belkin.com/plugin/',
'presentationURL': '/pluginpres.html',
'services': {'WiFiSetup': {'SCPDURL': '/setupservice.xml',
'actions': {'CloseSetup': {'arguments': {}},
'ConnectHomeNetwork': {'arguments': {'auth': {'direction': 'in',
'relatedStateVariable': 'auth'},
'channel': {'direction': 'in',
'relatedStateVariable': 'channel'},
'encrypt': {'direction': 'in',
'relatedStateVariable': 'encrypt'},
'password': {'direction': 'in',
'relatedStateVariable': 'password'},
'ssid': {'direction': 'in',
'relatedStateVariable': 'ssid'}}},
'GetApList': {'arguments': {'ApList': {'direction': 'out',
'relatedStateVariable': 'ApList'}}},
'GetNetworkStatus': {'arguments': {'NetworkStatus': {'direction': 'out',
'relatedStateVariable': 'NetworkStatus'}}},
'StopPair': {'arguments': {}}},
'controlURL': '/upnp/control/WiFiSetup1',
'eventSubURL': '/upnp/event/WiFiSetup1',
'fullName': 'urn:Belkin:service:WiFiSetup:1',
'serviceId': 'urn:Belkin:serviceId:WiFiSetup1',
'serviceStateVariables': {'ApList': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'NetworkStatus': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'PairingStatus': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'}}},
'basicevent': {'SCPDURL': '/eventservice.xml',
'actions': {'ChangeDeviceIcon': {'arguments': {'PictureColorDeep': {'direction': 'in',
'relatedStateVariable': 'PictureColorDeep'},
'PictureHeight': {'direction': 'in',
'relatedStateVariable': 'PictureWidth'},
'PictureSize': {'direction': 'in',
'relatedStateVariable': 'PictureSize'}}},
'ChangeFriendlyName': {'arguments': {'FriendlyName': {'direction': 'in',
'relatedStateVariable': 'FriendlyName'}}},
'GetBinaryState': {'arguments': {'BinaryState': {'direction': 'out',
'relatedStateVariable': 'BinaryState'}}},
'GetDeviceIcon': {'arguments': {'DeviceIcon': {'direction': 'in',
'relatedStateVariable': 'DeviceIcon'}}},
'GetDeviceId': {'arguments': {}},
'GetFriendlyName': {'arguments': {'FriendlyName': {'direction': 'in',
'relatedStateVariable': 'FriendlyName'}}},
'GetHomeId': {'arguments': {}},
'GetIconURL': {'arguments': {'URL': {'direction': 'out',
'relatedStateVariable': 'URL'}}},
'GetLogFileURL': {'arguments': {'LOGURL': {'direction': 'out',
'relatedStateVariable': 'LOGURL'}}},
'GetMacAddr': {'arguments': {}},
'GetPluginUDN': {'arguments': {}},
'GetRuleOverrideStatus': {'arguments': {'RuleOverrideStatus': {'direction': 'in',
'relatedStateVariable': 'RuleOverrideStatus'}}},
'GetSerialNo': {'arguments': {}},
'GetSmartDevInfo': {'arguments': {}},
'ReSetup': {'arguments': {'Reset': {'direction': 'in',
'relatedStateVariable': 'Reset'}}},
'SetBinaryState': {'arguments': {'BinaryState': {'direction': 'in',
'relatedStateVariable': 'BinaryState'}}},
'SetDeviceId': {'arguments': {'SetDeviceId': {'direction': 'in',
'relatedStateVariable': 'DeviceId'}}},
'SetHomeId': {'arguments': {'SetHomeId': {'direction': 'in',
'relatedStateVariable': 'HomeId'}}},
'SetLogLevelOption': {'arguments': {'Level': {'direction': 'in',
'relatedStateVariable': 'Level'},
'Option': {'direction': 'in',
'relatedStateVariable': 'Option'}}},
'SetMultiState': {'arguments': {'state': {'direction': 'in',
'relatedStateVariable': 'StateList'}}},
'SetSmartDevInfo': {'arguments': {'SmartDevURL': {'direction': 'in',
'relatedStateVariable': 'SmartDevURL'}}},
'ShareHWInfo': {'arguments': {'HomeId': {'direction': 'in',
'relatedStateVariable': 'HomeId'},
'Mac': {'direction': 'in',
'relatedStateVariable': 'Mac'},
'PluginKey': {'direction': 'in',
'relatedStateVariable': 'PluginKey'},
'RestoreState': {'direction': 'in',
'relatedStateVariable': 'RestoreState'},
'Serial': {'direction': 'in',
'relatedStateVariable': 'Serial'},
'Udn': {'direction': 'in',
'relatedStateVariable': 'Udn'}}}},
'controlURL': '/upnp/control/basicevent1',
'eventSubURL': '/upnp/event/basicevent1',
'fullName': 'urn:Belkin:service:basicevent:1',
'serviceId': 'urn:Belkin:serviceId:basicevent1',
'serviceStateVariables': {'BinaryState': {'allowedValueList': [],
'dataType': 'Boolean',
'sendEvents': 'N/A'},
'DeviceIcon': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'DeviceId': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'FriendlyName': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'HomeId': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'MacAddr': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'PluginUDN': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'Reset': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'RuleOverrideStatus': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'SerialNo': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'SmartDevInfo': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'StateList': {'allowedValueList': [],
'dataType': 'list',
'sendEvents': 'N/A'},
'URL': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'level': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'option': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'}}},
'firmwareupdate': {'SCPDURL': '/firmwareupdate.xml',
'actions': {'GetFirmwareVersion': {'arguments': {'FirmwareVersion': {'direction': 'out',
'relatedStateVariable': 'FirmwareVersion'}}},
'UpdateFirmware': {'arguments': {'NewFirmwareVersion': {'direction': 'in',
'relatedStateVariable': 'NewFirmwareVersion'},
'ReleaseDate': {'direction': 'in',
'relatedStateVariable': 'ReleaseDate'},
'Signature': {'direction': 'in',
'relatedStateVariable': 'Signature'},
'URL': {'direction': 'in',
'relatedStateVariable': 'URL'}}}},
'controlURL': '/upnp/control/firmwareupdate1',
'eventSubURL': '/upnp/event/firmwareupdate1',
'fullName': 'urn:Belkin:service:firmwareupdate:1',
'serviceId': 'urn:Belkin:serviceId:firmwareupdate1',
'serviceStateVariables': {'FirmwareUpdateStatus': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'FirmwareVersion': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'}}},
'metainfo': {'SCPDURL': '/metainfoservice.xml',
'actions': {'GetMetaInfo': {'arguments': {}}},
'controlURL': '/upnp/control/metainfo1',
'eventSubURL': '/upnp/event/metainfo1',
'fullName': 'urn:Belkin:service:metainfo:1',
'serviceId': 'urn:Belkin:serviceId:metainfo1',
'serviceStateVariables': {'MetaInfo': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'}}},
'remoteaccess': {'SCPDURL': '/remoteaccess.xml',
'actions': {'RemoteAccess': {'arguments': {'DeviceId': {'direction': 'in',
'relatedStateVariable': 'DeviceId'},
'DeviceName': {'direction': 'in',
'relatedStateVariable': 'DeviceName'},
'HomeId': {'direction': 'in',
'relatedStateVariable': 'HomeId'},
'MacAddr': {'direction': 'in',
'relatedStateVariable': 'MacAddr'},
'dst': {'direction': 'in',
'relatedStateVariable': 'dst'},
'numSmartDev': {'direction': 'in',
'relatedStateVariable': 'numSmartDev'},
'pluginprivateKey': {'direction': 'in',
'relatedStateVariable': 'pluginprivateKey'},
'smartUniqueId': {'direction': 'in',
'relatedStateVariable': 'smartUniqueId'},
'smartprivateKey': {'direction': 'in',
'relatedStateVariable': 'smartprivateKey'}}}},
'controlURL': '/upnp/control/remoteaccess1',
'eventSubURL': '/upnp/event/remoteaccess1',
'fullName': 'urn:Belkin:service:remoteaccess:1',
'serviceId': 'urn:Belkin:serviceId:remoteaccess1',
'serviceStateVariables': {'"pluginprivateKey"': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'"smartprivateKey"': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'description': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'homeId': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'numSmartDev': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'pluginprivateKey': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'resultCode': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'smartDeviceDescription': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'smartUniqueId': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'smartprivateKey': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'statusCode': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'}}},
'rules': {'SCPDURL': '/rulesservice.xml',
'actions': {'EditWeeklycalendar': {'arguments': {'action': {'direction': 'in',
'relatedStateVariable': 'action'}}},
'GetRulesDBPath': {'arguments': {'RulesDBPath': {'direction': 'out',
'relatedStateVariable': 'RulesDBPath'}}},
'GetRulesDBVersion': {'arguments': {'RulesDBVersion': {'direction': 'out',
'relatedStateVariable': 'RulesDBVersion'}}},
'SetRulesDBVersion': {'arguments': {'RulesDBVersion': {'direction': 'in',
'relatedStateVariable': 'RulesDBVersion'}}},
'UpdateWeeklyCalendar': {'arguments': {'Fri': {'direction': 'in',
'relatedStateVariable': 'Fri'},
'Mon': {'direction': 'in',
'relatedStateVariable': 'Mon'},
'Sat': {'direction': 'in',
'relatedStateVariable': 'Sat'},
'Sun': {'direction': 'in',
'relatedStateVariable': 'Sun'},
'Thurs': {'direction': 'in',
'relatedStateVariable': 'Thurs'},
'Tues': {'direction': 'in',
'relatedStateVariable': 'Tues'},
'Wed': {'direction': 'in',
'relatedStateVariable': 'Wed'}}}},
'controlURL': '/upnp/control/rules1',
'eventSubURL': '/upnp/event/rules1',
'fullName': 'urn:Belkin:service:rules:1',
'serviceId': 'urn:Belkin:serviceId:rules1',
'serviceStateVariables': {'Fri': {'allowedValueList': [],
'dataType': 'Fri',
'sendEvents': 'N/A'},
'Mon': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'RulesDBPath': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'RulesDBVersion': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'},
'Sat': {'allowedValueList': [],
'dataType': 'Sat',
'sendEvents': 'N/A'},
'Sun': {'allowedValueList': [],
'dataType': 'Sun',
'sendEvents': 'N/A'},
'Thurs': {'allowedValueList': [],
'dataType': 'Thurs',
'sendEvents': 'N/A'},
'Wed': {'allowedValueList': [],
'dataType': 'string',
'sendEvents': 'N/A'}}},
'timesync': {'SCPDURL': '/timesyncservice.xml',
'actions': {'GetTime': {'arguments': {}},
'TimeSync': {'arguments': {'DstSupported': {'direction': 'in',
'relatedStateVariable': 'DstSupported'},
'TimeZone': {'direction': 'in',
'relatedStateVariable': 'TimeZone'},
'UTC': {'direction': 'in',
'relatedStateVariable': 'UTC'},
'dst': {'direction': 'in',
'relatedStateVariable': 'dst'}}}},
'controlURL': '/upnp/control/timesync1',
'eventSubURL': '/upnp/event/timesync1',
'fullName': 'urn:Belkin:service:timesync:1',
'serviceId': 'urn:Belkin:serviceId:timesync1',
'serviceStateVariables': {'TimeZone': {'allowedValueList': [],
'dataType': 'int',
'sendEvents': 'N/A'},
'UTC': {'allowedValueList': [],
'dataType': 'long',
'sendEvents': 'N/A'},
'dst': {'allowedValueList': [],
'dataType': 'Boolean',
'sendEvents': 'N/A'}}}}}},
'name': '192.168.1.134:49153',
'proto': 'http://',
'serverType': 'Linux/2.6.21, UPnP/1.0, Portable SDK for UPnP devices/1.6.6',
'upnpServer': 'Linux/2.6.21, UPnP/1.0, Portable SDK for UPnP devices/1.6.6',
'xmlFile': 'http://192.168.1.134:49153/setup.xml'}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment