Skip to content

Add Odnoklassniki (OK) support for iOS - #2254

Merged
abrignoni merged 2 commits into
mainfrom
feat/odnoklassniki
Sep 23, 2026
Merged

abrignoni merged 2 commits into
mainfrom
feat/odnoklassniki

Conversation

@abrignoni

Copy link
Copy Markdown
Owner

Adds Odnoklassniki (OK) support for iOS. Three artifacts read the app's YapDatabase store at Library/Application Support/ru.ok.tt/database_N.db/app.db, whose objects are MessagePack-encoded blobs in a single database2 table. The module carries a small self-contained MessagePack decoder, so no new dependency is added.

  • Odnoklassniki - Messages: one row per message. Direction from the message flag, sender resolved to a contact name where the user id is a known contact, chat resolved to the group title or the other participant's name, message text, an attachment type summary and a reactions summary. Includes a conversation data view.
  • Odnoklassniki - Chats: one row per chat with type, title, participants and activity times.
  • Odnoklassniki - Contacts: one row per contact with name, flags and a last-seen time joined from the contacts_last_seen collection by user id.

Timestamps are converted from Unix milliseconds (messages and chats) and Unix seconds (last seen). Undocumented integer codes (message type, contact type, gender) are reported as stored. Attachment media files are not rendered; the sticker and animoji catalogue collections and the separate onelogV2 telemetry database are not parsed.

Validated against a private sample with a real profile-driven run (Messages 42, Chats 2, Contacts 2). No sample data is recorded.

abrignoni and others added 2 commits September 22, 2026 19:06
Adds scripts/artifacts/odnoklassniki.py with three artifacts that read the
Odnoklassniki (ru.ok.iphone / ru.ok.tt) YapDatabase store at
Library/Application Support/ru.ok.tt/database_N.db/app.db. The store keeps each
object as a MessagePack-encoded blob in a single database2 table, so the module
includes a small self-contained MessagePack decoder rather than adding a
dependency.

- Odnoklassniki - Messages: one row per message, with direction from the message
  flag, sender resolved to a contact name where the user id is a known contact,
  chat resolved to the group title or the other participant's name, message text,
  an attachment type summary and a reactions summary. Includes a conversation
  data view.
- Odnoklassniki - Chats: one row per chat with type, title, participants and
  activity times.
- Odnoklassniki - Contacts: one row per contact with name, flags and a last-seen
  time joined from the contacts_last_seen collection by user id.

Timestamps are converted from Unix milliseconds (messages and chats) and Unix
seconds (last seen). Undocumented integer codes are reported as stored. Validated
against a private sample; no sample data is recorded.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Photo and video attachments carry a small preview image inline in the
message object itself (the previewData field, WebP on the tested
sample). Render it as embedded media in a new Media column and declare
mediaColumn in the conversation view, so a photo or video message shows
its preview in the report and the LAVA conversation view. These are
low-resolution previews from the record itself; the full-resolution
file the app caches separately is keyed by a hash not derived here, so
it is not linked, and the notes say so.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@abrignoni
abrignoni merged commit fc6c5ad into main Sep 23, 2026
11 checks passed
@abrignoni
abrignoni deleted the feat/odnoklassniki branch September 23, 2026 00:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant