Skip to content

FTP4DOS v1.1.0

Latest

Choose a tag to compare

@Projanglez Projanglez released this 30 Jul 13:57

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
  • /UPDATECHECK and /NOUPDATECHECK switches
  • 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=1 in FTP4DOS.SAV
  • FTP4DOS_UPDHOST / FTP4DOS_UPDPORT in MTCP.CFG point 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