OTR_PARSE(1)
π OTR_PARSE β ok bestie, let's talk Off-the-Record π
so this is from the General Commands Manual section, and honestly? it's giving cryptography sleepover. The page is called OTR_PARSE(1), but it's actually the whole β¨OTR Toolkitβ¨ family reunion, so buckle up π
β¨ NAME β¨
otr_parse, otr_sesskeys, otr_mackey, otr_readforge, otr_modify, otr_remac β Process Off-the-Record Messaging transcripts π¦
like, six whole little programs that go through your OTR messages and tell you everything π
πΈ SYNOPSIS πΈ
otr_parse
otr_sesskeys our_privkey their_pubkey
otr_mackey aes_enc_key
otr_readforge aes_enc_key [newmsg]
otr_modify mackey old_text new_text offset
otr_remac mackey sender_instance receiver_instance flags snd_keyid
rcv_keyid pubkey counter encdata revealed_mackeys
heads up bestie: that last line is a continuation of the otr_remac line above it, not a separate command. the original page wraps it like that, so we keep it exactly like that π
π DESCRIPTION π
Off-the-Record (OTR) Messaging is the way you have private conversations over IM, and it provides, in order:
- Encryption
- No one else can read your instant messages. fr fr, nobody.
- Authentication
- You are assured the correspondent is who you think it is.
- Deniability
- The messages you send do not have digital signatures that are checkable by a third party. Anyone can forge messages after a conversation to make them look like they came from you. However, during a conversation, your correspondent is assured the messages he sees are authentic and unmodified. (the duality of cryptography, honestly)
- Perfect forward secrecy
- If you lose control of your private keys, no previous conversation is compromised. iconic behaviour, we love to see it
The OTR Toolkit is useful for analyzing and/or forging OTR messages. and now you're like, why would they offer this?? Primarily, to make absolutely sure that transcripts of OTR conversations are really easy to forge after the fact.
[Note that during an OTR conversation, messages can't be forged without real-time access to the secret keys on the participants' computers, and in that case, all security has already been lost.]
Easily-forgeable transcripts help us provide the "Deniability" property: if someone claims you said something over OTR, they'll have no proof, as anyone at all can modify a transcript to make it say whatever they like, and still have all the verification come out correctly. π
π Here are the six programs in the toolkit π
otr_parse- Parse OTR messages given on stdin, showing the values of all the fields in OTR protocol messages.
otr_sesskeys our_privkey their_pubkey- Shows our public key, the session id, two AES and two MAC keys derived from the given Diffie-Hellman keys (one private, one public).
otr_mackey aes_enc_key- Shows the MAC key derived from the given AES key.
otr_readforge aes_enc_key [newmsg]- Decrypts an OTR Data message using the given AES key, and displays the message.
- If newmsg is given, replace the message with that one, encrypt and MAC it properly, and output the resulting OTR Data Message. This works even if the given key was not correct for the original message, so as to enable complete forgeries. complete forgeries!! π
otr_modify mackey old_text new_text offset- Even if you can't read the data because you don't know either the AES key or the Diffie-Hellman private key, but you can make a good guess that the substring "old_text" appears at the given offset in the message, replace the old_text with the new_text (which must be of the same length), recalculate the MAC with the given mackey, and output the resulting Data message.
- Note that, even if you don't know any text in an existing message, you can still forge messages of your choice using the
otr_readforgecommand, above.
otr_remac mackey sender_instance receiver_instance flags snd_keyid rcv_keyid pubkey counter encdata revealed_mackeys- Make a new OTR protocol version 3 Data Message, with the given pieces (note that the data part is already encrypted). MAC it with the given mackey.
π¦ SEE ALSO π¦
Off-the-Record Messaging, at https://www.cypherpunks.ca/otr/
π AUTHOR π
otr_toolkit was written by the OTR Dev Team <otr@cypherpunks.ca>. genuinely iconic of them π
ok that's the whole vibe check, bestie β this page is from the General Commands Manual, dated March 14, 2012, and it lives at OTR_PARSE(1) β¨ go forth and parse, mwah π
ππ
π¦ where this page comes from
- alpine 3.22: libotr-doc 4.1.1-r5 Β· LGPL-2.1-only
- alpine 3.23: libotr-doc 4.1.1-r5 Β· LGPL-2.1-only
- alpine 3.24: libotr-doc 4.1.1-r5 Β· LGPL-2.1-only
- arch rolling: libotr 4.1.1-6 Β· GPL-2.0-only AND LGPL-2.1-only
- centos-stream 9: libotr 4.1.1-13.el9 Β· GPLv2 and LGPLv2
- centos-stream 9: libotr 4.1.1-13.el9 Β· GPLv2 and LGPLv2
- debian bookworm: libotr5-bin 4.1.1-5 Β· LGPL-2.1-or-later
- debian trixie: libotr5-bin 4.1.1-6 Β· LGPL-2.1-or-later
- fedora 43: libotr 4.1.1-24.fc43 Β· GPL-2.0-only AND LicenseRef-Callaway-LGPLv2
- fedora 43: libotr 4.1.1-24.fc43 Β· GPL-2.0-only AND LicenseRef-Callaway-LGPLv2
- fedora 44: libotr 4.1.1-25.fc44 Β· GPL-2.0-only AND LicenseRef-Callaway-LGPLv2
- fedora 44: libotr 4.1.1-25.fc44 Β· GPL-2.0-only AND LicenseRef-Callaway-LGPLv2
- nixos 26.05: libotr 4.1.1
- nixpkgs unstable: libotr 4.1.1
- opensuse-leap 16.0: libotr-tools 4.1.1-bp160.1.14 Β· GPL-2.0-only
- opensuse-leap 16.0: libotr-tools 4.1.1-bp160.1.14 Β· GPL-2.0-only
- opensuse-leap 16.0: libotr-tools 4.1.1-bp160.1.14 Β· GPL-2.0-only
- opensuse-leap 16.0: libotr-tools 4.1.1-bp160.1.14 Β· GPL-2.0-only
- ubuntu jammy: libotr5-bin 4.1.1-4ubuntu1 Β· LGPL-2.1-or-later
- ubuntu noble: libotr5-bin 4.1.1-5.1build1 Β· LGPL-2.1-or-later
- ubuntu questing: libotr5-bin 4.1.1-6ubuntu1
- ubuntu resolute: libotr5-bin 4.1.1-6.1 Β· LGPL-2.1-or-later
- ubuntu stonking: libotr5-bin 4.1.1-7 Β· LGPL-2.1-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms