FTP4DOS can now update itself, and every update is signed.
Press Alt+F10 to check for a new version. You get its version, date, size,
full SHA-256 and release notes, and nothing is downloaded until you say so. The
swap happens when FTP4DOS exits — the previous executable is kept as
FTP4DOS.BAK — and FTP4DOS can restart itself into the new version.
How updates are authenticated
mTCP has no TLS, so updates travel over plain HTTP. Authenticity does not come
from the connection but from a signature:
- The manifest naming the new version and its SHA-256 is signed with RSA-2048.
- The matching public keys are compiled into FTP4DOS.
- The signature is verified before the manifest is read, and the downloaded
executable must match the SHA-256 the signed manifest states. - If either check fails the update is refused. There is no way to override it.
Nobody on the network path — and neither GitHub nor Cloudflare, which carry the
files — can produce an update FTP4DOS will install. They can stop updates from
arriving; they cannot substitute one.
The SHA-256 of this build is shown in the update dialog and listed below, so it
can be compared by hand.
New
- Alt+F10: check for updates
/UPDATECHECKand/NOUPDATECHECKswitches- Optional check on startup, off by default, at most once a week, and it
never does more than write a line in the status bar. Enable it with
updcheck=1inFTP4DOS.SAV FTP4DOS_UPDHOST/FTP4DOS_UPDPORTinMTCP.CFGpoint the updater
somewhere else — the signature check applies either way
Under the hood
- SHA-256 and an RSA-2048 PKCS#1 v1.5 verifier, both 16-bit real mode, no
assembly, still built with-0— the 8086 compatibility promise is unchanged - The socket-to-disk transfer core moved into
netcore.cpp, so HTTP downloads
take the same proven path as FTP, including the Silly Window Syndrome
handling that large transfers depend on - Tested on real 386 hardware: crypto self-test, timings, the full update flow
including the swap and the automatic restart
Downloads
- FTP4DOS.EXE — the DOS executable
- UPDATE.INF / UPDATE.SIG — the signed update manifest, used by the
in-application updater - ftp4dos-mtcp-src-2025-01-10.zip — the exact mTCP sources this build links
against (GPLv3 section 6)
Full release history: HISTORY.md