Nenkai / Nenkai/PDTools

Feature : GT7 "B" Telemetry format

Open
#14 21 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C#
Stars
181
Forks
29
PR merge metrics
No merged PRs in 30d

Description

Hi !

After a random contact message pointing out that if a "B" heartbeat was sent to GT7 another, longer, reply is retrieved. I did some investigations around it.

Turns out that the "IV" is not the same, but the base key is. After some short bruteforce (short as the new key was not that far) : 0xDEADBEAF is replaced by 0xDEADBEEF

The message has the same structure but adds 5 additional floats (316 bytes long in total).

Overall this takes place after the carcode :

public int CarCode;

public float WheelRotationRadians;
public float FillerFloatFB;
public float Sway;
public float Heave;
public float Surge;

I'm not sure yet what is FillerFloatFB, it's clearly direction related, maybe a lateral slip angle. This clearly is an extra bundle of "motion related" fields

I was hoping for a track id .... but ... no ... shame :D

Since lot of people got inspiration from your discoveries, including me I believe giving back my findings to you is the minimum I could do ;)

The only major struggle with that, just like Highlander there must be one. The first heartbeat wins (A/B), and the format can be only changed after the games stops sending telemetry after stopping sending the heartbeat for long enough. And since the crypto differs (length and key) cross compatibility across various software is tedious. I guess it has to be a choice.

I also tested other heartbeats (C ...) , this time it's a shorter message coming back I did not bothered trying to brute force it.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the existing GT7 telemetry and heartbeat parsing, then compare its current format with the reported B heartbeat: key 0xDEADBEEF, a 316-byte message, and five additional floats after CarCode. Done means the B format is represented and the first-heartbeat limitation and format-selection choice are handled; the issue names no files or tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
game-dev, reverse-engineering
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.