I've made a little script to requests TI's servers for updates. It uses the method as the students software (I 'reverse engineered' it :p)
#!/usr/bin/python
import httplib2
from xml.etree import ElementTree as ET
REQUEST_URL = "http://education.ti.com/ws/webUpdate/queryForUpdate"
root = ET.Element("QueryUpdates")
Request = ET.SubElement(root, "Request")
WebUpdateClientName = ET.SubElement(Request, "WebUpdateClientName")
WebUpdateClientVersion = ET.SubElement(Request, "WebUpdateClientVersion")
WebUpdateClientOS = ET.SubElement(Request, "WebUpdateClientOS")
CurrentVersion = ET.SubElement(Request, "CurrentVersion")
LanguageCode = ET.SubElement(Request, "LanguageCode")
WebUpdateClientEncoding = ET.SubElement(Request, "WebUpdateClientEncoding")
RequestType = ET.SubElement(Request, "RequestType")
CalculatorModel = ET.SubElement(Request, "CalculatorModel")
WebUpdateClientName.text = "TI-Nspire Computer Link Software"
WebUpdateClientVersion.text = "1.4.0.539"
WebUpdateClientOS.text = "Linux"
CurrentVersion.text = "3.1.0.392"
LanguageCode.text = "NL"
WebUpdateClientEncoding.text = "ISO-8859-1"
RequestType.text = "OS"
CalculatorModel.text = "TI-Nspire"
bodyrequest=ET.tostring(root)
h = httplib2.Http(".cache")
resp, content = h.request(REQUEST_URL,"POST", body=bodyrequest)
root = ET.XML(content)
Response = root[1]
ProductInfo = Response[1]
for node in ProductInfo:
name = node.__str__().split("\'")[1]
if node.text:
print(name + ": " + node.text)
Now, here is the response:
ProductID: 7953
ProductName: TI-Nspire Handheld Operating System
ProductFileSize: 10867233
ProductType: OS
ProductRevision: 3.1.0.392
ProductCalculator: TI-Nspire
Name: TI-Nspire
ParentProduct: TI-Nspire™ Handheld Operating System
ForceUpdate: N
UpToDate: Y
I highlighted something creepy, "ForceUpdate". Does this mean that TI can update your calculator without asking you?
Image TI makes a fix for Ndless 3, and they are able to update the calculators of unknowing people just because they connected it with their computer (to send a game for example).
Scary...