Decoding the 90s: Cryptography in Early Software Development (2023)

https://news.ycombinator.com/rss Hits: 24
Summary

IntroIn August 2020, we were commissioned by a client with a cache of locked QText documents from the mid 90s - to which he has lost the passcode.QText was a DOS era Hebrew-English word processor written in Turbo Pascal, released 15 or so odd years before neither I nor @Elisha had laid hands on a reverse engineering tool.In this blog post, we鈥檒l describe the process of analyzing the encrypted documents and reverse engineering a DOS program.Hopefully we鈥檒l be able to provide some insight into the early days of software development in Israel, and more generally into how cryptography was viewed and implemented in the early days of consumer software development. We also hope to help preserve the knowledge and tools utilized here - a lot of which have scarcely survived to this day.Getting started - QTextLuckily, we had access to working QText binaries, supplied by our client. We loaded up an instance of the DOSBOX emulator and proceeded to play around with the word processor for a while - focusing on the document encryption feature.Our initial conclusions included the following:The passcode is short - 4 characters and limited to uppercase characters and numbers - which represents a very small keyspace relative to modern compute power.Documents are normally some form of plain rich text - but locked documents have a 0饾懃1饾挓 header prepended to them. Documents with the same passcode have the same header (no salt).Out of 0饾懃1饾挓 header bytes - 1616 are actually variable and correlate directly to the passcode - could it be the encryption key is included in the file?Unfamiliar encryption - seems to work on per-line and per-column basis, meaning equal plaintext lines would result in equal ciphertext lines. Spaces are skipped when encrypting, which indicates the per-column charateristic.First line of two documents with different passcodes - key is underlinedPayload from two documents with same passcode and plaintext - one is interlaced with spacesSo a very rudimentary system, as you m...

First seen: 2025-04-07 15:19

Last seen: 2025-04-08 15:25