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:
-
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.
-
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.
-
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.
-
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:
- 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.
- 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.)
- 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):
- A new installer is needed.
- A new name might be needed (see email).
- There is no way to carry forward the K95 Dialer so it will be dropped
and K95, if it is to have a new life, will be as a text-only application with
a few GUI dialogs. However, it is likely that any new release of K95 will
still work with the (commercial) K95 2.1.3 Dialer if you happen to have a
copy.
- SSL/TLS security needs to be brought up to date. (Or dropped, since
apparently there are no more SSL or Kerberos Telnet or FTP servers.)
- SSH support must be totally redone since the K95's original SSH module,
circa 2002, is no longer secure; this might be accomplished using
libssh
or
libssh2 or
PuTTY's plink
module; each has its attractions and drawbacks; (see
the email archive). UPDATE: As of October 19, 2015,
another likely candidate would
be Microsoft's
OpenSSH for Windows. OR... (as noted at the top of this page), remove
SSH code from K95 and have it "fork" Microsoft SSH, just as C-Kermit forks
Unix SSH.
- XYZMODEM file-transfer protocol will need to be totally redone for Open
Source (the K95 XYZMODEM code was licensed from a company). Failing that,
there will be no XYZMODEM support.
- Kerberos security needs to be changed from MIT to Heimdal, or just dropped.
- The result needs to support
large files.
- The result needs to be buildable with GCC or other
open compiler rather than require proprietary Microsoft tools.
- The result will rejoin the main
C-Kermit development branch
as one of the platforms for which C-Kermit is built.
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?
- It's retro! Experience the look and feel of computing as it was at the
height of the timesharing era, circa
1975-95.
- It's handmade by real programmers.
- It is unbelievably handy for sysadmin, website development and
administration, software development, and other backoffice tasks.
- It has a programming language built in that you can use for
file-managment tasks on Windows or anything you dream up.
See the Kermit Script Library for examples.
- Kermit 95 is one of a family of programs that run on many different
operating systems and platforms, offering a uniform and compatible
repertoire of functions, commands, and programmability, allowing the same
scripted procedures to operate on Windows, Linux and all other Unix
varieties (old and new), and VMS. The basis for all these programs
is C-Kermit, which has been evolving all these
years since K95 was last released, so the last release of K95 lags far
behind in its scripting capabilities. The new release (as it stands) is
fully integrated with C-Kermit 9.0.
The Kermit Project hosted by
Panix.com /
kermit@kermitproject.org