b2f:start
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| b2f:start [2025/02/15 10:03] – [Calling Station ID] f4hof | b2f:start [2026/04/16 05:32] (current) – [Winlink specifics] f4hof | ||
|---|---|---|---|
| Line 77: | Line 77: | ||
| B2F is a superset of BCFv1, so '' | B2F is a superset of BCFv1, so '' | ||
| - | Additionally, | + | This protocol's specifics are described in [[b2f:b2f|Open B2F]]. |
| ==== GZIP Experiment ==== | ==== GZIP Experiment ==== | ||
| - | The GZIP Experiment is a superset of BCPv2 which adds the '' | + | The GZIP Experiment is a superset of BCPv2 which adds the '' |
| ===== Winlink specifics ===== | ===== Winlink specifics ===== | ||
| - | Apparently, clients and servers add the feature | + | From my observations, flag '' |
| - | + | ||
| - | W0RLI also ties the features '' | + | |
| - | ==== Secure login ==== | + | |
| - | The exchange happens after the SID has been transmitted. | + | |
| - | + | ||
| - | The server sends a ''; | + | |
| - | + | ||
| - | < | + | |
| - | + | ||
| - | The client computes | + | |
| - | + | ||
| - | <code c> | + | |
| - | // Trailing salt | + | |
| - | uint8_t sl_salt[] = { | + | |
| - | 77, 197, 101, 206, 190, 249, 93, 200, | + | |
| - | 51, 243, 93, 237, 71, 94, 239, 138, | + | |
| - | 68, 108, 70, 185, 225, 137, 217, 16, | + | |
| - | 51, 122, 193, 48, 194, 195, 198, 175, | + | |
| - | 172, 169, 70, 84, 61, 62, 104, 186, | + | |
| - | 114, 52, 61, 168, 66, 129, 192, 208, | + | |
| - | 187, 249, 232, 193, 41, 113, 41, 45, | + | |
| - | 240, 16, 29, 228, 208, 228, 61, 20 | + | |
| - | }; | + | |
| - | + | ||
| - | // Concatenate the challenge, the password and the salt. | + | |
| - | payload = concat( challenge, password, sl_salt) | + | |
| - | + | ||
| - | // Compute the md5 of the last result | + | |
| - | md5sum = md5(payload) | + | |
| - | + | ||
| - | // Take the first 4 bytes of the hash, flip the byte-wise endianness, and cap the first byte to 0x3f | + | |
| - | response = ( (uint8_t)(md5sum[3]) & 0x3f ) << 24 | (uint8_t)(md5sum[2]) << 16 | (uint8_t)(md5sum[1]) << 8 | (uint8_t)(md5sum[0]) ) | + | |
| - | + | ||
| - | // Keep the 8 least significant digits in base 10 of response. | + | |
| - | // If response is shorter than 8 digits, 0-pad from the left. | + | |
| - | resval = itoa( response % 100000000, base10) | + | |
| - | sprintf( result, " | + | |
| - | + | ||
| - | </ | + | |
| - | The result | + | Flag '' |
| - | < | + | W0RLI also documents '' |
| - | Reference source code in [[https:// | ||
| ==== Forward messages ==== | ==== Forward messages ==== | ||
| ==== Pending messages ==== | ==== Pending messages ==== | ||
| Line 143: | Line 102: | ||
| Your software is supposed to fall back in this mode when the feature '' | Your software is supposed to fall back in this mode when the feature '' | ||
| - | Best recommended stance, for now, is to reject connections with an error message, given the lack of available documentation. | + | F4HOF' |
| ==== ASCII Basic Protocol ==== | ==== ASCII Basic Protocol ==== | ||
b2f/start.1739613782.txt.gz · Last modified: by f4hof
