Icon The Kermit Project   |   Now hosted by Panix.com
New York City USA   •   kermit@kermitproject.org
…since 1981

Open Source Kermit 95 for Windows Progress Report

Frank da Cruz
fdc@columbia.edu
Last update:  Wed Aug 31 07:10:18 2022

As of 17 July 2022 we have a free Open Source downloadable new Kermit version for Windows in Beta test. CLICK HERE to read about it and download if you wish... no matter what country you are in! As of 17 August the Beta test includes a built-in up-to-date SSH client. The rest of this page is of historical interest only.


CLICK HERE to see the original K95 source code page, which is obsolete but still has some useful background information.

Progress in 2022 — starting 5 July 2022

The 2013 recoding effort stalled on K95's built-in SSH and SSL support. These security protocols were moving targets and it was impossible to keep up with them. Anyway (in retrospect) it made no sense to duplicate the SSH and SSL code in K95 because then every time SSH or SSL changed, K95 would need a new release.

Finishing this project became an urgent matter with OpenSSH 7.4, which replaced all of the ciphers supported by K95's SSH client with new ones that K95 didn't know about. K95 also supports other secure connection methods like Telnet-SSL and Telnet-Kerberos, but secure Telnet never caught on and as far as I know, servers for it are no longer found anywhere on the public Internet (ditto FTP).

In the Brave New World where SSH Is All, I struggled to find a way to access the servers I use every day from K95 2.1.3, which does not support the new ciphers, and this is what I came up with:

How to connect K95 2.1.3 to modern SSH servers from your home network
Basically, I telnet from K95 2.1.3 of 2003 to an Ubuntu box on my home network, and from there use the Linux ssh client to connect to the desired host. It's ok to use clear-text Telnet on my home network because the traffic is invisible to the outside world. This method solves my own problem, but it is a bit much to expect everybody to be able to implement it (time, effort, $$$).

Since David Goodwin's 2013 Open Source version of K95 had the all security code (SSH, SSL, SRP, Kerberos, etc) stripped out, it occurred to me to check whether I could use it to relay through Ubuntu the same way I do with 2.1.3. It worked perfectly. So this offers some possibilities for a new K95 release, which is desirable not only because it has so many new features and bug fixes, but also because — unlike all previous K95 versions — it is Open Source free software that can be openly distributed on the Internet to all countries with no exceptions because it no longer includes strong encryption code.

So I asked David to make a few textual changes (version number, license information, etc). Within a few hours I had the new build. UNFORTUNATELY, both Windows and Symantec screamed bloody murder when I tried to start it and I had to go through numerous gyrations before I could actually run it. Jeff Altman points out that:

  1. k95g.exe does require at a minimum the matching C Runtime Library DLLs to be installed. An installer must install them even if they are already present because the number of installations of each DLL are reference counted so that uninstalls do not remove a DLL that will break an unrelated application.
  2. Many of the various warnings you are seeing are due to the lack of a code signature from an approved code signing authority and a matching signature timestamp from a trusted timestamping service.
  3. Modern Visual Studio compilers support stack randomization, read only memory regions, and other code generation techniques intended to decrease the risk that an attacker can use bad input data to exploit a coding error. Use of these techniques is flagged in the binary header. If the appropriate flags are not present then the binary is deemed to be risky.
  4. AntiVirus vendors (including Microsoft) maintain reputation databases. If a binary has not been observed on enough systems, then the executable will be deemed suspicious.

Work is in progress to produce a version that (a) comes packaged with the appropriate DLLs so people who had never installed K95 before will be able to use it (item 1); and (b) is compiled by the latest Microsoft C compilers (item 3) There are no current plans to deal with item 2 because that would most likely cost money. Warnings about unknown or untrusted applications should disappear over time as the number of installations increases.

More about the K95 Relay

As noted above, I'm making SSH connections from K95 2.1.3 from 2003 through a second computer. There are other possibilities that don't require a second computer:
  1. Install Microsoft's Linux Subsystem for Windows (WSL) on your PC, and then your relay can be on the same computer K95 is on (not yet tested; reports welcome). Windows 10 version 1709 64-bit version, build number 10.0.16299 ("Redstone 3", 17 October 2017) or later required.
  2. Install PuTTY Plink on your Windows PC and then instruct K95 to use it as its SSH client. (No, this was tried and it did not work.)
  3. Adapt the Unix/Linux ssh client to Windows as a standalone stdio application and use that instead of Plink. (This didn't work either.)
None of these workarounds sufficed and in the end the new SSH support was based on OpenSSH's LibSSH DLL. The result first appeared in the second Beta test of C-Kermit for Windows of 17 July 2022.

The rest of this page is historical.

Progress in 2013

In 2013 two programmers, working mostly independently from each other, attempted to resurrect Kermit 95 communications software as an Open Source application. Missing modules were excavated and numerous problems overcome, and each was finally able to build a working version. But much work remains to be done. Here are the two projects in their most recent snapshots:
Project 1 (David Goodwin, New Zealand):
On a New Zealand FTP site as a Zip file: latest_build.zip
On Github: github.com/davidrg/ckwin
Github info:  [Getting started]   [Tutorial]   [FAQ]
Project 2 (anonymous):
Source: k95-mingw32.tar.gz
Binaries: k95bin.tar.gz
Email archive:
Plain text emails as HTML (100+ messages, about 7000 lines)
It is unfortunate that the work was not completed, but hopefully by revealing what has been done so far, someone else can combine the two branches and do some of the tasks that remain (this is not a complete list): Project 1 builds on Windows with all modern Microsoft compilers, and is based on the 2013 K95 and C-Kermit source code, but does not have any support for SSH or any other form of security. It can make serial-port, modem, and (clear-text) Telnet and FTP connections.

Project 2 is built on Linux with the mingw32 cross-compiler and includes the features of Project 1 plus a prototype of plink-based SSH (which doesn't really do the job because there is no close coordination between the K95 process and the separate Plink process; that's why it needs to be a library). Years later the Project 2 guy said "my original long-ago approach was to get k95 to build using Mingw32 but it required total butchery of the code and I eventually held off."

Both versions are pretty close to being buildable with GCC.

What is Kermit 95?

Kermit 95 is Kermit software for Microsoft Windows: briefly, terminal emulation, file transfer, and scripting of communication tasks over a variety of communication methods (serial port, modem, Telnet, SSH, etc). Click here to read more about Kermit software and here to read more about Kermit 95.
Let me state it another way:  K95 is probably the best terminal emulator ever, and also the most powerful in terms of automation and customization features. It is designed and best suited for people who are comfortable with text-mode user interfaces and command languages, and who are good typists, because you can do just about everything in K95 without your fingers ever leaving the keyboard. It has its own built-in programming language (similar to Unix shell scripting, but different) so you can easily automate repetitive or error-prone tasks. It has unparalleled key mapping and keystroke macro capabilities. It supports terminal emulation in many languages (English, Spanish, German, Icelandic, Greek, Russian, Vietnamese... see for yourself) and almost every known character encoding (ASCII, ISO646, ISO8859, UTF-8, PC and Windows code pages, and on and on). And it supports inline transfer of both text and binary files in both directions within your terminal session. It takes some effort to learn how to use it, but that effort is well spent because you will be orders-of-magnitude more efficient in your online sessions.
The Columbia University Kermit Project was a pioneer in open software, founded years before the GNU project or Free Software Foundation. Our software source code was openly published and shared long before the term Open Source was invented. Kermit 95 was the Kermit Project's first and only commercial product, developed and published to generate income to help fund the project and its noncommercial products at a time when the Kermit Project had to pay for itself or disappear. Click here for a Kermit 95 tutorial.

As of July 1, 2011, there is no more Kermit Project at Columbia University, and all Kermit software has become Open Source. The last K95 release was version 2.1.3 in 2003. The Open Source version has not yet been released in usable (executable) form yet because more work is required, and nobody is being paid to this any more. It will have a lot of improvements, but will also lack (at least at first) some previous features that can't be made into Open Source (e.g. some proprietary code that we licensed). But it will be free for everybody to download, install, use, and modify.

Why work on Kermit 95?


The Kermit Project hosted by Panix.com / kermit@kermitproject.org