I have some old LED board on which you would send some text and hang it somewhere ... it was released in 1994/95 and communicates via a serial port with 16-bit MS-DOS An application that you can enter into some text.
So, because you probably couldnโt run it anywhere except using DOSBox or similar tricks, I decided to rewrite it in C #.
After the monitoring port of the original dos-ex, I found that it was not really interested in you recovering it - requests should respond suitable, varying bytes, previously sent a "ping" message, etc. ... p>
Maybe you know a similar routine / pattern checksum, as my dos-ex uses, or could you give any advice in trying to reverse engineer this ... Also, since I am only familiar with programming and don't spend much time on methods of reversing and / or protocol analysis, please do not judge me if this topic is a little stupid idea - I will be glad of any help I receive ...
The message is really containing text that should be displayed in 143 bytes (just that long because it puts byte placeholders if you don't use all the space with your text), and in msg I noticed the following patterns:
fourth bytes (which still belongs to the MSG header) is changed from a list of 6 or 7 duplicate values โโ(in my examples, this byte will always be 0F).
The last two functions of bytes as a checksum
Some examples :
- displayed text: "123" (hexadecimal: "31 32 33"), checksum hex: "45 52"
- text: "132" ("31 33 32"), checksum hex: "55 FF"
- text: "122" ("31 32 32"), checksum hex: "95 F4"
- text: "133" ("31 33 33"), checksum hex: "85 59"
- text: "112" ("31 31 32"), checksum hex: "C5 C8"
- text: "124" ("31 32 34"), checksum hex: "56 62"
- text: "134" ("31 33 34"), checksum hex: "96 69"
- text: "211" ("32 31 31"), checksum hex: "5D 63"
- text: "212" ("32 31 32"), checksum hex: "3C A8"
- text: {empty}, checksum hex: "DB BA"
- text: "1" ("31"), checksum hex: "AE 5F"
So far, I am completely sure that the checksum really depends on this fourth byte in the header, because if it changes, the checksums will be completely different to display the same text.
Here's an example of a complete 143-byte string displaying "123" just to give you a better orientation:
02 86 04 0F 05 03 01 03 01 03 01 03 00 01 03 00 ............... 00 31 00 32 00 33 00 20 00 20 00 20 00 20 00 20 .1.2.3. . . . . 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 . . . . . . . . 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 . . . . . . . . 00 20 00 20 00 20 00 20 00 20 00 FE 03 01 03 01 . . . . . .รพ.... 04 01 03 00 01 03 00 00 20 00 20 00 20 00 20 00 ........ . . . . 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 . . . . . . . . 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 . . . . . . . . 20 00 20 00 20 00 20 00 20 00 20 00 20 45 52
(textual information begins with the 2nd byte in the line "2 31 00 32 00 33 00 (...)"
Unfortunately, there are no user manuals, documentation on the entire web page, not even proof that this information device has never existed.