View Single Post
Old 05-26-2023, 06:18 AM   #57
HackerDude
Kindle Bricker
HackerDude ought to be getting tired of karma fortunes by now.HackerDude ought to be getting tired of karma fortunes by now.HackerDude ought to be getting tired of karma fortunes by now.HackerDude ought to be getting tired of karma fortunes by now.HackerDude ought to be getting tired of karma fortunes by now.HackerDude ought to be getting tired of karma fortunes by now.HackerDude ought to be getting tired of karma fortunes by now.HackerDude ought to be getting tired of karma fortunes by now.HackerDude ought to be getting tired of karma fortunes by now.HackerDude ought to be getting tired of karma fortunes by now.HackerDude ought to be getting tired of karma fortunes by now.
 
HackerDude's Avatar
 
Posts: 120
Karma: 862608
Join Date: Sep 2022
Location: Why do you want to know?
Device: PW6, PW6(dead), PW5 (brick), PW5 (brick), PW4 (brick)
Quote:
Originally Posted by jhowell View Post
More notebook examples would help. Having examples of simple drawings, such as a single dot or straight line, would be useful in decoding how drawing data is stored. Seeing the .notebook files associated with annotated documents would also help fill in the gaps.



I am surprised by what we have found so far. I expected the Scribe to store something like SVG (scalable vector graphics). Instead it is keeping lower level data, like pen tilt and pressure, as binary data.

Spoiler:
Code:
      'nmdl.stroke_bounds': [3123, 4448, 3447, 4707],
      'nmdl.color': 0,
      'nmdl.brush_type': 7,
      'nmdl.random_seed': 0,
      'nmdl.thickness': 23.625,
      'nmdl.type': 'nmdl.stroke',
      'nmdl.stroke_points': {
        'nmdl.thickness_adjust_factor': {{
          AQFMAQAAFERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
          RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
          RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERGQ=
        }},
        'nmdl.density_adjust_factor': {{
          AQFMAQAAFERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
          RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
          RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERGQ=
        }},
        'nmdl.num_points': 332,
        'nmdl.position_x': {{
          AQFMAQAAHV1ubdRERETW1NVERE1dRdReVE1URNXVTVRU1EXV1EREREREREVNXUVNXURdRURF3V1URERd
          1UXVREXUbURERNVEVNREVNRdVE1URE1URNVNVERNXV1FRdRdRU1dVERUTV1ERF1FRE5dVNRF1F1ETVRN
          VERF1ERdRERdXV1NRF1NXV3VTV1NXVRN1U1U1dVF1ERdXV1FRNVETVTU1URF1UVF1UVF1rQ=
        }},
        'nmdl.position_y': {{
          AQFMAQAAFF1ERU1ERERF1NbURF1ERURERE1V1EXV1ERF5V5URNVF1dXURF1ERF1ERdRF5URERERETVRE
          RERERURF1URERE1E1V1dRNVEXUREXURdXdRdRU1F1ERETW1E1dXV1E1dVE1eVEREXUXV5URdRERERdRE
          1dREXURETV1URE1dVERERF1dRNRd1dVETV1ERF1G1FXVREREXVREXW5U1URE1d1F3V5e3RI=
        }},
        'nmdl.pressure': {{
          AQFMAQAAFV1NcZGU3heUSfGRlJ7vYZTZHmkdVJ9FcWdUT01PV5bpGe9E0fVO1HUZGWTX4e5pHfleZpTd
          3V9JcZdeHVXU1fTUbW1OfWfk15Xk1k1k3lQdTX5dTUREQZTZFGQZVPfk5U1uVuRGQZfZHlcZafHm5W8f
          Zd51VOftTd15VZFlVn0UdEkd7f/V9E517fXdVUfU3Wkd1pbxnVnflGndkfT+mZmRkRERGR13PQofJCgE
          FR4cFgUEBAQEBAQEBAUEBAQEBQUEBAUFBAQEBQQFBQQEBAQGBQgGBQYGBQQJBAcFBAUEBAQEBAQEBgQI
          BAUGBQQFPpcXZwYGCwUvLCAH
        }},
        'nmdl.tilt_x': {{
          AQFMAQAAJEREQZRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
          RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
          RERERERERERERERERERERERERERERERERERERERERERERBlEREREREREREREREREREREREgNZGRkZA==
        }},
        'nmdl.tilt_y': {{
          AQFMAQAAJBlEQZRERERERBlERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
          REREkURERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
          RERERERERERERERERERERERERERESRRERERERERERERERBlERERERERERERERERERERERGwHZGTIyGRk
          ZGTIyMjI
        }},
      },


I have never worked on software for digitizing drawings so I am unfamiliar with the data structures and APIs typically used in that field. Perhaps someone familiar with drawing devices could suggest a documented data format that would be suitable for exporting Scribe drawings.

I do know that some work has been done to reverse engineer the internal data formats used by reMarkable tablets. That might be worth looking into.



I could not find anything relevant online about "NMDL". I am assuming that it is an acronym made up by Amazon. The phrase "note model" appears often in the Scribe firmware. That might be the source of "NM".
The actual NMDL data itself:
Quote:
AQFMAQAAFERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERGQ=
Seems to be base64 encoded binary... unfortunately since it's encoded binary even after decoding it's not exactly easy to understand...
HackerDude is offline   Reply With Quote