Software Archive
This is some stuff that I've written over the years.
Some of it was coursework, or written for research purposes.
Some of it is just for fun.
Note that for some of these links, you must click through (left click)
in order to download the file -- even though the HTML points at the file
itself, Tripod intercepts downloads and redirects you to a special page.
It's a small price to pay for the web space.
- hurst.c Rescaled range analysis:
Hurst exponents.
- spiro-0.3.tgz
A program for PalmOS that draws hypotrochoids (GPL); or get the
prc file by itself.
- dla.tgz
Diffusion Limited Aggregation.
- kdtree.tgz
Calculate the topological and metric entropies of a 2D trajectory via
symbolic dynamics.
- quat.tgz
Quaternion Fractals. This is the software I used to make all the fractals
that appear in my
Fractal Folder.
- patsolve-3.0.tgz
Solves Freecell and Seahaven Towers games. Very fast. Near-minimal
solutions. GPL. Patches are included to extract board layouts from some
popular versions. Also:
- getgame.tgz
A PalmOS program to dump the games produced by
Patience 2.5
for solving by patsolve. You'll need pilot-xfer or similar to use this.
- FLTK widgets
A small collection of widgets for the Fast Light Tool Kit.
- tcpbroker-1.1.tar.gz
A server that connects two incoming sockets together -- a twist on the idea
of port forwarding. Optionally uses the tinysrp library, below.
- libtinysrp-0.7.5.tar.gz
The Tiny SRP Library. This is a stripped-down version of srp-1.7.1 and
openssl-0.9.6 that contains only what is necessary for authentication. It's
great for adding secure authentication to your small client/server project.
Also includes the tinysrp protocol, which reduces socket authentication to a
single function call on each of the client and server. Click
here to download my GPG signature
of libtinysrp-0.7.5.tar (note: not the .gz file -- some browsers may
unzip automatically). My GPG key is available on the pgp.net
keyserver.
- SRPSocket
Click here for more information on SRP, and for a very simple
implementation that creates an authenticated socket using Python.
- nc110-tinysrp.patch
This is a patch to netcat
1.10 that enables SRP authentication in both client and server modes. With
this patch, netcat's GAPING_SECURITY_HOLE isn't so gaping any more; rather,
it's a reasonable way to set up a quick and easy server. The patch also
includes example scripts for setting up a simple (but secure) authenticating
login server.
- OpenSSH-3.5p1-srp.patch.gz
(Left Click this link.)
This is a patch for
OpenSSH (portable)
that enables SRP authentication. You will need OpenSSL; the Stanford SRP
distribution is not required, although this is compatible with that.
Click here to download my GPG
signature of OpenSSH-3.5p1-srp.patch (note: not the .gz file -- some browsers
may unzip automatically). My GPG key is available on the pgp.net
keyserver.
- OpenSSH-snap.patch.gz
(Left Click this link.)
This is a patch for a recent (20021007) snapshot of
OpenSSH (portable)
which enables SRP authentication. (You must run "make distprep" to
regenerate the .0 files.)
- srpcrack.tar.gz
This program cracks SRP verifiers (analogous to passwd hashes) using a
dictionary attack. The dictionary is fixed, not dynamic, but this code can
easily be incorporated into more versatile crackers. Initial tests suggest
that SRP verifiers with kilobit primes are about as much work to crack as
md5_crypt() hashes (many hundreds to thousands of guesses per second can be
checked on circa 2000 hardware). That is, if your server is compromised and
the verifier database stolen, and if your users have chosen weak passwords
(single dictionary words like "green") they can be found with this program
in a few minutes. Good passphrases take years/centuries.
- vdmfec-1.0.tgz
VDMFEC implements Block ECC using a Forward Error Correction (FEC) code
based on Vandermonde (VDM) matrices in GF(2^8) due to Luigi Rizzo. Given
the FEC parameters K and N, with N greater than K, N blocks are written for
every K input blocks in such a way that any K blocks are sufficient to
reconstruct the data. That is, up to N - K blocks out of every group of N
blocks may be lost without loss of data. Its primary application is
intended to be in recovering data from unreliable media such as diskettes.
The home page for FEC is here.
Finally, if you came here, you can't leave without visiting my
video feedback gallery.