Skip to content

Poptimization (MSNIA)

wtv-411 edited this page May 3, 2023 · 1 revision

If MSN TV 2 is configured to connect using MSNIA (MSN Dial-Up), then the box is required to download a list of local access numbers before attempting to connect to the MSN TV service if it doesn't already have any or if the numbers already on the box are "out of date". A user can also manually get more access numbers by going into MSN TV's settings and viewing their access numbers. To actually look up access numbers for the user's location, MSN TV 2 contacts the "Poptimize" servers. This service isn't specific to MSN TV 2, and is still used for MSN Explorer.

Request

To look up MSNIA access numbers, the MSN TV 2 will send an HTTP POST request to http://poptimize.msn.com/poptimize.dll (This service is still up, although it now only allows connections using HTTPS). The request sent is an XML document:

POST /poptimize.dll HTTP/1.1
Accept: */*
Accept-Language: en-us
Expires: 0
UA-CPU: x86 
Accept-Encoding: gzip,deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; mediacenter; STB; 560x384; MSNTV 5.6; THMDR)
Host: poptimize.msn.com
Content-Length: 331
Connection: Keep-Alive
Cache-Control: no-cache

<Poptimization><InstanceInfo Token="msntvsign9@sign.msntv.net" ClientVersion="10.5.2.5.TV" DialerVersion="9.0." OSVersion="Microsoft Windows CE" Npa="484" Nxx="820" PhonebookId="{21920635-47CE-DA31-1AD6-14B53BE66378}" UTC="04/29/2023 18:40:16" ForceResults="1" MachineId="MSNTV.XXXXXXXXXXXXXXXXXXXX"></InstanceInfo></Poptimization>
  • XML stores information as an InstanceInfo node stored inside root node Poptimization.
  • InstanceInfo attributes:
    • Token: Likely an ID meant to verify that the request is sent from a trusted client. Only value recorded for MSN TV 2 is msntvsign9@sign.msntv.net (this token no longer works, the latest MSN Explorer's Connection Center program uses a token of 0 when sending a Poptimize request)
    • ClientVersion: ???
    • DialerVersion: ???
    • OSVersion: Underlying OS version reported by client. MSN TV 2 sets this property to Microsoft Windows CE
    • Npa: Area code of user's home number from the MSN TV 2. Must be a 3-digit number
    • Nxx: Exchange code of user's home number from the MSN TV 2. Must be a 3-digit number
    • PhonebookId: GUID. Poptimize servers don't appear to do anything with this value
    • UTC: The UTC date and time the request was sent in, using the format MM/DD/YYYY HH:MM:SS
    • ForceResults: Purpose unknown. Integer value set to 1
    • MachineId: Machine ID used by servers for logging purposes. The MSN TV 2 sends an ID consisting of the string MSNTV. and the box ID appended to it

Response

If the Poptimize server is able to find access numbers for the user's location specified by the area and exchange codes, then it will return an XML document containing the access numbers available in that location, along with where each one is located and their flags:

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/xml; charset=utf-8
Server: Microsoft-IIS/10.0
X-AspNet-Version: 4.0.30319
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=15724800; includeSubDomains
Date: Tue, 02 May 2023 21:28:39 GMT
Content-Length: 532

<Results><NumberList PhonebookId="b381bd50-88d5-4d52-be58-20288e8da358"><Number Value="4842249853" Location="Allentown, PA" Flags="4108"></Number><Number Value="6104770004" Location="Allentown, PA" Flags="4100"></Number><Number Value="6106284676" Location="Allentown, PA" Flags="4100"></Number><Number Value="4845444676" Location="Easton, PA" Flags="4108"></Number><Number Value="4842249854" Location="Allentown, PA" Flags="4108"></Number><Number Value="8664111175" Location="Poptimize" Flags="1"></Number></NumberList></Results>
  • NumberList contains a PhonebookId attribute, which is a GUID that is randomly generated for every request and is used by the MSN TV 2 to keep track of updates to the local access numbers.
  • Number attributes:
    • Value: The access number. The number does not include dashes or a prefix
    • Location: Location of access number
    • Flags: Numeric flags value for access number. Not sure how these are used. Observed values include 4108, 4100, and 1
  • If access numbers are found for a location, then the server will always include a Number with the value 8664111175, the location set to Poptimize, and a flags value of 1. The purpose of this Number node is unknown

If the area code and exchange are valid, but no access numbers are available for the location, then the server will return an empty Results node:

<Results></Results>

If the request sent is not valid XML or if it at least does not have valid Npa, Nxx, or token attributes, then the server will return a 500 error simply containing error text. For invalid XML, the server will send Error: Reading Client in the response body. For valid requests but with an incorrect XML structure or invalid values for the required attributes, it will send Error: internal error.