On first widget launch smarthub registers itself with samsung and sends there your TV ModelID, firmware code, Lang/Country code, unique id (DUID), mac address, appkey
and gets authentication token required for some further queries.
Code: Select all
GET /openapi/device/auth/seedkey?timestamp=373965 HTTP/1.1
Host: infolink.pavv.co.kr
macaddr: 010203040506
ModelId: 12_X10PLUS_2D
CountryCode: RU
Connection: close
Firmcode: T-INFOLINK2012-1012
User-Agent: Mozilla/5.0 (SmartHub; SMART-TV; U; Linux/SmartTV; Maple2012) AppleWebKit/534.7 (KHTML, like Gecko) SmartTV Safari/534.7
Content-Type: text/xml
cache-control: no-cache
duid: SHCL6XXXXXXX
AppKey: 00000000-1111-2222-3333-444444444444-55555555-6666-7777-8888-999999999999
Cookie: WMONID=zcHWkuzLqMs
Accept: */*
Accept-Encoding: gzip
Content-Length: 0
Response :
<?xml version="1.0" encoding="UTF-8"?>
<rsp stat="ok">
<session id="aa311344">
<user confirmed="yes" id="_12_X10PLUS_2D_c4731edd42f1" protected="no"/>
<seedkey>04e69f7c-a80a-41c4-ac49-9d1c05f96929-b7949d14-d3f1-41f3-95b1-166db9fb545b</seedkey>
<expired>2013-01-10T16:15:15+0900</expired>
<country code="RU" supported="yes"/>
<isp code="OPN" name="OPN" supported="yes"/>
</session>
</rsp>
Infolink may enforce updates and user cannot deny them.
Code: Select all
GET /openapi/service/widget/signed/20121000004?timestamp=1357715723486 HTTP/1.1
Host: infolink.pavv.co.kr
Connection: close
User-Agent: Mozilla/5.0 (SmartHub; SMART-TV; U; Linux/SmartTV; Maple2012) AppleWebKit/534.7 (KHTML, like Gecko) SmartTV Safari/534.7
Content-Type: text/xml
cache-control: no-cache
AppKey: 00000000-1111-2222-3333-444444444444-55555555-6666-7777-8888-999999999999
Token: aa311344+_12_X10PLUS_2D_010203040506+db4b14dd6dbdb9c2fb75bee213edeae04105f458
Cookie: WMONID=zcHWkuzLqMs
Accept: */*
Accept-Encoding: gzip
Content-Length: 0
Response:
<?xml version="1.0" encoding="UTF-8"?>
<rsp stat="ok">
<list>
<widget id="20121000004" size="7560504" url="http://dly2224qfzjce.cloudfront.net/files/widget/201211/20121000004/1.233/widget/WebBrowser_720p_dri.zip?Expires=1357716757&Signature=FBXibtDXHcUKdZNfJNzJWU1IvjbtJqCJ0kBIf~KCX~3G3uJPccG5EyGy7R5CBWhjY1i6gQ2Gshv2dOQqBEurtlo1ww7sTVMwT4l2zOYwBR1rrn-EaO1TqY6WW9KBvKJQFmiBiLWHDs0iAsyHgj4aJvkluB0qvmPae8bGTpbabno_&Key-Pair-Id=APKAIUMJLMRVBKS7VM4A" version="1.233">
<compression size="5892071" type="zip"/>
<updateforced stat="yes"/>
<encryption seedkey="" type=""/>
<emplist stat="yes">
<emp id="empBrowserCommonPlugin"/>
<emp id="empWebBrowserDRI"/>
</emplist>
</widget>
</list>
</rsp>
Without successful model bind its impossible to lauch most of widgets.
So, user get tracked with their TV and widget usage
Fortunately communication goes through secure channel with cert check and nobody can sniff it on the wire.
But infolink does not enforce https, all services available over http.
To capture web protocol I did little modification to manager widget.
Thats how infolink URLS are constructed :
Code: Select all
manager/10120000000/SmartHome/SmartHomeDefine.js
var WM_BASIC_PROTOCOL = "http://";
var WM_SECURE_PROTOCOL = "https://";
manager/10120000000/WMCommon/OpenAPI/HAHubSiteAPI.js
url = WM_SECURE_PROTOCOL+DTVInfo.Value.ServerURI + "/device/lookup?timestamp=" + tTimestamp;
But its undesired to make changes to main manager code or you may cut itself from smarthub and get brick or semi-brick.
Its safe to modify leaf functionality. I modified about box code
Code: Select all
manager/10120000000/Settings/Properties_SmartSettingTemplates.js
Properties_SmartSetting.SetDetailInfoDiv720 = function (isNetflix)
{
TRACE("Properties_SmartSetting.SetDetailInfoDiv720() Start");
WM_SECURE_PROTOCOL = "http://";
...........
I uploaded my protocol dumps so you can study it yourself.
http://www.sendspace.com/file/jj4ub0