What's wrong with `imessage-exporter`?
HN user
css
https://chrissardegna.com
I love the concept of lexical differential highlighting [0] (discussed here [1]). It makes reading math so much easier, especially in dense code. However I don't know of any editor that implements a feature like this.
If you paste the following code into the example block in [0] you can see how useful this can be:
while (b - a).abs() > EPSILON {
let c = a + (a - b) * f_a / (f_b - f_a);
let f_c = J(c);
if f_c * f_b == 0.0 {
a = b;
f_a = f_b;
} else {
f_a /= 2.0;
}
b = c;
f_b = f_c;
}
[0]: https://wordsandbuttons.online/lexical_differential_highligh...I ran into this issue recently [0]. Apparently the integrated VSCode terminal sets its own (very high) cap by default, but other shells don't, so all of my testing in the VSCode shell "hid" the bug that other shells exposed.
[0] https://github.com/ReagentX/imessage-exporter/issues/314#iss...
Semi-related, one of the `imessage-exporter` contributors provided a great write-up on reverse engineering the handwritten and digital touch message protobufs [0]. The reconstructed proto files are [1] [2].
[0] https://github.com/trymoose/handwriting2svg/blob/0eb56cf4582...
[1] https://github.com/ReagentX/imessage-exporter/blob/beeb853b2...
[2] https://github.com/ReagentX/imessage-exporter/blob/beeb853b2...
The plist is probably a binary plist (header bytes `bplist00`) generated by NSKeyedArchiver, and then the specific data you need is encoded inside. Edited iMessages are stored in the exact same way. Luckily the plist itself is not that complex–but typedstream is pesky to work with.
iMessage uses a very strange amalgamation of typedstream (message content), keyed archives (app messages, sticker data), and protobufs (Digital Touch, handwriting) for different features. I wonder what motivated all of those design decisions.
Apple provides Messages for Business [0], but if you have a machine that can read the iMessages as they come in, you could use the library [1] that powers `imessage-exporter` as a bridge.
Yes, or use the entry api: https://doc.rust-lang.org/beta/std/collections/hash_map/enum...
If you want something a bit more robust and cross-platform, including support for the undocumented TypedStream-stored text data, you can use my open source software: https://github.com/ReagentX/imessage-exporter
"666" is a slang term: https://en.wikipedia.org/wiki/Chinese_Internet_slang
You can probably do this using the library: https://docs.rs/imessage-database/latest/imessage_database/
The California Poppy release [0] of `imessage-exporter` is the biggest update yet. Most notably, it implements a novel `typedstream` deserializer [1], allowing it to understand the data stored in `NSAttributedString` binary data that is stored in the iMessage database.
I've spent a long time reverse engineering nearly every aspect of Apple's iMessage SQLite tables to build this program. As far as I know, there are no other tools that support the full corpus of iMessage features [2], including edited messages, app messages, reactions, text range formatting, and threads.
[0] https://github.com/ReagentX/imessage-exporter/releases/tag/2...
[1] https://docs.rs/imessage-database/latest/imessage_database/u...
[2] https://docs.rs/imessage-database/2.0.1/imessage_database/me...
Awesome to see someone using my library [0] in the wild! Very cool use case.
Cheers! It was fun to build.
Hey, this sounds like an interesting problem. I am always looking for edge cases to test, if you have time would you mind checking if https://github.com/ReagentX/imessage-exporter works for you and if it crashes in that spot?
Thanks for sharing my work!
I wrote a tool for this: https://github.com/ReagentX/imessage-exporter
Maybe cartel is a strong word, but there are many states in the US where, in order to operate a medical facility or provide a service, you must get permission from all of the existing facilities in the locality: https://en.wikipedia.org/wiki/Certificate_of_need
This extends to even purchasing medical equipment.
If anyone wants to see what the integration used to do: https://web.archive.org/web/20230728021205/https://www.home-...
You can buy a Navigation SD card from Amazon or Ebay for under $50 and update it with their free (as in gratis) tool: https://mazda.welcome.naviextras.com/how-to-update.php
Courts are adverse to addressing key issues because they want to avoid creating precedent.
If you are talking about data missing from the `text` column, for some reason it disappears after you read a message. The content is stored in a binary blob in a different column, which I parse like this: https://github.com/ReagentX/imessage-exporter/blob/c73bc4d66...
Maybe something like https://github.com/libimobiledevice/libimobiledevice? I'm not sure, I haven't tried to do this.
The database file is the same across both platforms, you just need to choose the right path: https://github.com/ReagentX/imessage-exporter/blob/c73bc4d66...
You can get this file from an unencrypted iOS backup: https://github.com/ReagentX/imessage-exporter/blob/c73bc4d66...
Thanks! I figured it was a concise way to show what the output looks like while also explaining some of the features.
If anyone ever wanted to do something similar for iMessage data, I built a similar tool for that: https://github.com/ReagentX/imessage-exporter
Yes, it's called reinsurance: https://en.wikipedia.org/wiki/Reinsurance
`imessage-exporter`: https://news.ycombinator.com/item?id=34327344
I drilled keybr from 30wpm to 110 several years ago and still come back every few days to practice. It is a great tool. I sometimes use it to "study" documentation by pasting it in as a custom prompt.