These files support further work of what I outlined in a communication to the FCC ECFS system at this URL... https://ecfsapi.fcc.gov/file/1073182572879/KX4O_Demonstration_OTA_Winlink_Decoding.pdf Consider this a request for help developing a command line utility that can take the binary portion of a Winlink message, process it and decompress it. =============================================================== Convert the PMON output of the Pactor modem to a binary file. --------------------------------------------------------------- 2019-07-27_Message_2_Modem.txt - From the modem cat 2019-07-27_Message_2_Modem.txt | awk -f parsedata.awk | xxd -r -p > 2019-07-27_Message_2_Modem.bin 2019-07-27_Message_2_Modem.bin - Modem data after parsing the payload to a binary file 2019-07-27_Message_2_Modem.hex - Result of "hexdump -C 2019-07-27_Message_2_Modem.bin" Pull out the binary portion contining the email message. --------------------------------------------------------------- xxd -p -s 0x194 -l 252 2019-07-27_Message_2_Modem.bin | xxd -r -p > Message_2_Packet_01.bin Message_2_Packet_01.bin - Data from the first 02 FA to the next Message_2_Packet_01.hex - Result of "hexdump -C Message_2_Packet_01.bin" Message_2_Packet_01.txt - lzhuf decode from the above Use lzhuf to attempt a decode of the compressed contents, but be ready to kill it quick if it doesn't stop. --------------------------------------------------------------- lzhuf - Executable lzhuf - might work for you lzhuf.c - The source I used to build lzhuf compilelzhuf.sh - Script to compile lzhuf References --------------------------------------------------------------- http://www.f6fbb.org/ https://winlink.org/B2F Format of binary portion as assembled by KX4Z --------------------------------------------------------------- Format of header for a binary compressed file (type FB) : 1 byte = 01 hex Length of the header 1 byte = Length of the filename and offset, including the two characters. Name of the file 1 to 80 ascii bytes 1 byte = 00 hex Offset 1 to 6 ascii bytes 1 byte = 00 hex French regulations require that the title of the message or the file name are transmitted in readable ascii and are not compressed. The offset is also transmitted in ascii and specifies the offset at which the data should be inserted in the file (in case of a fragmented file). In the version 5.12, this parameter is not utilized and is always equal to zero. A data block contains from one to 256 bytes. It begins by two bytes which specify the format. Data block format : 1 byte = 02 hex Size of data 1 byte = 00 to ff hex. if length is 256 bytes, the value is 00. Data bytes 1 to 256 bytes The first transmitted block of data must contain a header containing : the CRC16 of the full binary file (2 bytes) the size of the full uncompressed file (4 bytes) This data is in little-endian Intel format (less significant first). The last data block is followed by the end of file specifier and the checksum of the data sent. End of file specifier format : 1 byte = 04 hex Checksum 1 byte = 00 to ff hex The checksum is equal to the sum of all the data bytes of the transmitted data, modulo 256 (8 bits) and then two's complemented. The checking of the checksum is very simple : The sum of the data bytes from the file and the checksum received modulo 256 shall be equal to zero.