Saleem Bhatti, University of St Andrews, UK.  

Having worked on various projects, the majority of the code I have written has been closely tied to particular pieces of larger software. However, below there are a very few that I have actually managed to extract into self-contained packages.

The software below is not supported - it is all provided "as is". Generally, it is not maintained. If you find it useful please let me know ... if you find any bugs please let me know (no promises to fix, mind!) ... if you use any of this stuff please leave in an ACK ...


java   |   link

This is software from a research project. I have led the design and architecture activities but most of the code was written by Richard Smith. Follow the link for details.


C   |   PDF   |   zip

This is a slightly modified version of fping v2.4b2-to-ipv6. I have added a '-T' flag to allow microsecond timestamps for each ping. I have tried contacting the maintainer (twice) to have the patch put into the main release but have recieved no response ... so here it is!
The man page for fping is here.


java   |   zip   |   jar   |   link

This (now very old) Java package allows you to make (canonical) network-order byte encodings for char, short, int, long, float and double. I created it for some students so they could build arbitary protocol packets with Java. It was written for JDK 1.4.1 but I suspect it will work with later JDKs (try it and see).
An example program showing how to use it is here.
Online documentation is here.


C   |   zip

This is my (very old but quite fast) software implementation of the Data Encryption Standard (DES). This uses a standard 56-bit key (i.e. 64 bits which includes 8 parity bits). However, before you use DES, read this.
qfDES is used in the UCL multimedia tools, was previously used in the Open Mash tools and the UCL OSIMIS platform (which has now been retired!).
The man page for the qfDES API is here.


C & C++   |   .tar.bz2

Some code to help with debugging, including hexdumpers, loggers, tracers and error printers. The logging code has separate C and C++ implementations. No documentation ... but it is reasonably easy to use.


C   |   .c file

And finally, for an example of well-structured, self-documenting, code ... see if you can guess what it does before you run it! It was one of the winning entries in the 5th International Obfuscated C Code Contest in 1988. It was written by Ian Phillips who worked at Cambridge Consultants at the time.