Open meowcat opened 4 years ago
As I understand you right you want to create an IoT device that behaves like a real TomTom Watch and use the TomTom PC App (USB) (I guess not the mobile app (Bluetooth)) to get ttbin files from the 'Watch' and upload it in the TomTom cloud. There might be a few ways to proceed:
Spoofing the watch (make it mimic a TomTom Watch) This encompasses following
I believe this is a hard way to go. The protocols for 1. and 3. are on my site and of course in Ryans application. However, 2. will be the culprit I guess, but I lack the knowledge how hard it is to spoof an USB device.
Find a way to upload ttbin files to TomTom using the TomTom Application
To be honest, I do'nt know if there is a way to offer ttbin files to the TomTom App other than via the watch. I once had a clue that it should be possible (e.g. by double clicking the ttbin file or placing it in a directory,...). However, I did not succeed. The mobile app apparently does the job just by putting the ttbin files in a certain directory and starting the app. It uploads the ttbins.
Spoof the TomTom PC Application Another way might be to spoof the TomTom PC Application. You need to know the TomTom cloud interface. Modern apps use REST APIs and it should be possible to reverse engineer using tools like the burp suite.
Hi,
thanks for the fast reply!
I guess not the mobile app (Bluetooth)
Ideally, I would want to use the mobile app with Bluetooth, but I thought USB might be easier.
However, 2. will be the culprit I guess, but I lack the knowledge how hard it is to spoof an USB device.
Yes, I have the same concerns, zero experience here. For Bluetooth probably even worse.
The mobile app apparently does the job just by putting the ttbin files in a certain directory and starting the app. It uploads the ttbins.
So I could potentially just find a way to put ttbins into an Android folder e.g. by writing my own app that gets the files from my device, and puts them into the correct directory? That would be the easiest way, though I am not too familiar with all the permissions and sandboxing that Android does (or iPhone, for that matter).
(Also, it's easy enough to try this out.)
Ideally, I would want to use the mobile app with Bluetooth, but I thought USB might be easier.
The Bluetooth protocol (at least for v1 and v2 devices) is well-understood. See https://github.com/dlenski/ttblue and in particular the Bluetooth protocol document.
Hi just because I think you are probably the best resource on the topic: This project reads out TT watches to send the data e.g. to Strava. Based on your knowledge, do you think it is feasible to make an IoT device that basically impersonates a TT watch, so it could upload an activity into the TT app / cloud?
To clarify, this device would be some Arduino with some sensor. It would generate .ttbin files, then I would connect it to the computer like a real TT watch and upload the data into the app, i.e. my device would need to understand the TT protocol.
To achieve this, we would need to
I would appreciate your input on this. For now this is just a project idea.