Reverse engineering the HRD remote serial protocol
Sivan Toledo likes to use Ham Radio Deluxe (HRD), a free program that serves as a user interface to radio transceivers. Modern transceivers can be controlled either from their front panel controls (if they have a front panel), or from a computer through a serial or USB connection.
One cool and useful feature of HRD is that it can be used to control a remote radio. You run an HRD server program on the computer to which the radio is connected. You run HRD itself (the user-interface program) on another computer, and tell it that the radio is connected to the first computer. HRD establishes a network connection with the remote computer and controls it. I want to use this feature, but I want to connect the radio to a computer running Linux, not Windows (I have good experience with remote radios connected to a Linux box, whereas I don’t like to run Windows remotely). Alas, HRD and it’s remote server only work on Windows. Searching for Linux server programs that would work with HRD revealed that none exist, and that Simon Brown, the developer of HRD, does not want to release a specification of the remote protocol or code that would explain the protocol.
Sivan provides an interesting account on his blog of his progress in reverse engineering this protocol. He started his analysis with Wireshark and portmon and has progressed to the point where the server code has been ported from Java to C, which he plans to test out with his radio this weekend.This entry was posted in reversed, techniques, tools and tagged HRD, reverse engineering, serial protocol.