Gary Kessler Associates
Over the years, I have written a few little software utilities that I have shared with some others and they have encouraged me to make them more readily available.
Most of these programs are written in Perl. If you have a MacOS X, Linux, or Unix system, a Perl interpreter is part of the operating system. For Windows users, you can run these programs in a Cygwin environment or, even easier, use one of the many Perl interpreters for Windows, such as Strawberry Perl or ActivePerl.
See License and Warranty section below for additional information.
- AIS BlackToolkit (12/04/2018): Two programs a preprocessor/user interface and NMEA encoder both written in Perl, contributed to the TrendMicro AIS BlackToolkit project at GitHub.
AIS Tools (11/26/2019): A set of Perl scripts, as described below, to customize and parse NMEA 0183 sentences for AIS applications. Message types 1-14, 18-24, and 27 are supported; the README.TXT file provides a lot more detail about the package and each file has a help message (use the -h or --help switch). These programs are very much under development. See also my "AIS Research Using a Raspberry Pi" page.
[MD5 (ais_tools_19033.zip) = 8e8b220a560b4bbcda9479e9c6eb7562]
- AIS_menu.pl (v3.28.0, 11/26/2019) is a preprocessor to create an input command line to AIS Ping.
- AIS_ping.pl (v6.5.0, 11/26/2019) creates custom AIS messages; the program produces output for AIS NMEA or for the GnuRadio program found in the AIS BlackToolkit.
- AIS_NMEA.pl (v5.3.3, 11/23/2019) accepts the binary output from AIS Ping to form NMEA_formatted AIS sentences.
- AIS_parser.pl (v4.1.0, 11/26/2019) decodes an NMEA binary string or AIS sentence to display the contents, field by field.
- parser2html.pl (v1.5, 05/11/2019) produces an HTML file from the output of the parser program.
- ais_tools.sh is a Linux/Unix script file that will auto-run AIS_menu, AIS_ping, and AIS_NMEA.
- ais_tools.bat is a Windows batch file that will auto-run AIS_menu, AIS_ping, and AIS_NMEA. (Contributed by Glenn Dardick.)
- MaritimeIdentificationDigits-20591760-ITU.csv contains a list of Maritime Identification Digits (MID) codes for use with the AIS Parser.
- README.TXT (11/26/2019) is the README file for these programs. It is essential reading to understand how the programs work and, in particular, how they work together. It also contains detailed information about what parameters are used with what message types, all message formats, and even a few programming notes to make the code a bit more understandable.
timestamp_data (v2.2, 09/14/2019): A small Perl program that can connect to a TCP or UDP socket on a local or remote host, and read a data stream for a specified amount of time. This was intended to read AIS sentences from a program such as OpenCPN and add timestamps. Output is directed to a "|"-separated file that also contains a timestamp of when the data was received. Users can, optionally, also see the data in real-time. Use the --help switch for instructions.
[MD5 (timestamp_data_v2.2.zip) = 79722ab1e985c0381ce33e31e6382cc5]
play_ais (v2.1.1, 11/16/2019): A Perl program that can read AIS sentences with a timestamp from a file, then connect to a TCP or UDP socket on a local or remote host, and replay the data stream in relative real-time. This is intended to read the output from timestamp_data.pl but can read any file that has records with a timestamp (seconds) and an AIS message. Also intended to send output to chartplotter software such as OpenCPN. Use the --help switch for instructions.
[MD5 (play_ais_v2.1.1.zip) = 09e730877873e22906d8ef10f6643a10]
- : These are a number of programs that parse a variety of file system and other logical structures. All of the programs are written in Perl:
Boot record and other parsers
- apmparser (v1.5, 3/14/2013) parses an Apple Partition Map (APM)
[MD5 (apmparser_v1.5.zip) = 590e3edf6c5d3017d68768265bfb2f10]
- bsparser (v3.1, 3/13/2013) parses a FAT or NTFS boot sector
[MD5 (bsparser_v3.1.zip) = c3cc1a6a8ead08eabdcbc9c5d1375049]
- dirparser (v2.1,01/03/2018) parses a FAT directory
[MD5 (dirparser_v2.1.zip) = cd3f1ee8cef58e6eb5491931537761b9]
- fatparser (v2.1, 07/01/2016) parses a FAT12, FAT16, or FAT32 table. Output can be directed to the screen or CSV file.
MD5 (fatparser_v2.1.zip) = c19e7d9774f9d1b79992b5803303ed9b
- gptparser (v1.4beta, 3/14/2013) parses a GUID Partition Table (GPT) header
[MD5 (gptparser_v1.4beta.zip) = f0dcf44dd888e985461e455ca9f1cfcb]
- info2parser (v1.4, 4/9/2013) parses an NTFS INFO2 file
[MD5 (info2parser_v1.4.zip) = 3a31e5bce5fa103e16304f89fb514e1f]
- mbrparser (v2.1, 3/13/2013) parses a standard DOS/Windows Master Boot Record (MBR)
[MD5 (mbrparser_v2.1.zip) = 8fa2f1654b956c4c8870cdba4de3b8b1]
- mftparser (v2.1, 6/11/2013) parses NTFS Master File Table (MFT) records
[MD5 (mftparser_v2.1.zip) = 0a5d22d2e513f45befd1da30706e2b39]
- sqlite_parser (v2.3, 3/14/2013): This Perl program accepts as input a set of SQL records and will parse the contents for you. If you happen to know the schema, the output will match up the fields to the headers. This program is useful if you are able to carve SQL records out of unallocated space and don't have the entire file structure (in which case you could just use an SQLite browser).
[MD5 (sqlite_parser_v2.3.zip) = 1c66caff10b3e2745d640986618f09ab]
cisco7 (v1.0a, 4/24/2012): Two programs -- one in C and one in Perl -- that "cracks" a Cisco Type 7 password. Not much to the cracking, actually, since the password is merely an XOR applied to the password and a fixed string. Well, read more in the README file or in my crypto paper!
MD5 (cisco7_v1.0a.zip) = 48aaf634c34052e08254c996245b8df2
entropy (v1.5, 03/30/2017): This Perl program calculates the entropy (randomness) of a given file. The program displays entropy as a value from 1-8, and can optional show a histogram and/or percentage of each of the 256 values of the bytes in the file.
MD5 (entropy_v1.5.zip) = 0344ce782ec607dcaf56f7c49f03e35d
FileSigs (12/13/2015, corrected 09/20/2016): This ZIP archive contains versions of my File Signatures Table in a format usable by FTK, Tim Coakley's Simple Carver and Simple Carver Lite, Scalpel, and Marco Pontello's TrID - File Identifier utility. The _README.txt file describes how the files can be used and their formats. *** If there are other useful formats, please let me know and I will try to accomodate. ***
[MD5 (FileSigs_20151213a.zip) = 606c95dfc33ea1b6d44dd79f4858d0a4]
include (v2.2, 2/2/2011): For good or for bad, I have been writing my own HTML code since about 1993. This program is a small Perl script that allows you to insert a small block of HTML code into multiple HTML files without the use of server-side scripting or that kind of stuff. As an example, all of the main pages on the GKA Web site have a consistent left navigation bar; it has the look and feel of using frames but each page is actually fully self-contained. I can change the leftnav bar on all of the site's pages in a few seconds merely by updating a file that contains just the leftnav code and running a script that inserts the new code into the HTML files. The Perl program and documentation are in the ZIP file.
[MD5 (include_v2.2.zip) = 8ff5ada1ab89fe7a2ee6eaf81f269ff1]
LiveSystem (v5.0a, 02/28/2015): This ZIP file contains a set of free utilities from a variety of sources that can be used to acquire volatile data from a running Windows system. The type of information includes currently open TCP/UDP ports and the processes associated with those ports, currently logged on users, running processes, and more! Read the _README.TXT file for more information.
[MD5 (LiveSystem_v5.0a.zip) = cefd3114da216e621673e44487ec61f4]
LiveSystem for Mac (v0.9, 6/17/2013): This ZIP file contains a batch file that can be used to acquire volatile data from a running Mac OS X (Unix) system. The type of information includes currently open TCP/UDP ports, currently logged on users, running processes, and more! Read the _README.TXT file for more information.
[MD5 (LiveSystem_Mac_v0.9.zip) = 33b518a6761c0bc5091155e462c1d5e2]
Luhn Test (v1.4, 07/20/2014): This Perl program will inspect a numeric string ostensibly a credit card number and indicate whether it is valid per the Luhn algorithm, the scheme commonly used to validate credit card numbers. In addition, if the number is a valid Luhn value, it is checked against a list of credit card format templates to see whether it could be an actual valid credit card number. Run with the -h switch for more information; some sample numbers are provided for testing.
MD5 (Luhn_test_v1.4.zip) = 9fd1fd1b8438840d4c24395497f0cd59
Manual Cryptography (v0.8.05, 06/08/2018): A Perl program that implements a variety of manual crypto schemes, including the (misnamed) Vigenère cipher, Autokey cipher, Beaufort cipher, ADFGVX, and one-time pad. Good for playing around....
MD5 (ManualCrypto_v0.8.05.zip) = f6b82e0adaf535318a39330cbcabbe22
PictureAlbum (v4.4, 03/15/2019): Picture Album is a Perl program that provides a simple way to take directories of pictures and create an HTML-formatted album suitable for posting on a Web site; one example of such a photo album can be found at GCK's SCUBA Photos. PictureAlbum will organize photographs by directory, showing a series of thumbnail images that are hot-linked to full-size images. A user manual describes how to set up the directories. NOTE: This program requires that ImageMagick be installed on your computer.
[MD5 (Picture Album_v4.4.zip) = e78672ca24ad16a0f98c22dcce77d6e9]
PictureReporter (v2.1, 02/19/2016): Picture Reporter is a Perl program that offers a simple way to take directories of pictures and create an HTML-formatted report. This was designed primarily for digital forensics examiners who might take a series of screen shots, for example, categorizing the pictures by placing them in different subdirectories. PictureReporter will organize the pictures by directory, showing a series of thumbnail images that are hot-linked to full-size images. A user manual describes how to set up the directories.
[MD5 (PictureReporter_v2.1.zip) = faec37011e70a699139fce34223a9358]
pingsweep (v1.6, 12/22/2015): A simple Perl program that pings a range of hosts in a Class C address range. Use the -h switch for the help file.
[MD5 (pingsweep_v1.6.zip) = 863b76dc8dd728eda89b8a755c25cf61]
RC4 (v1.3, 11/23/2012): RC4 is a simple Perl implementation of the Rivest Cipher 4 (or Ron's Code 4) algorithm. The program is intended as a teaching tool rather than as a serious encryption application since it does not protect the key in any way, such as erasing it from RAM after use. Use the -h switch to get a list of program options or the -a switch to learn how the program works.
[MD5 (RC4_v1_3.zip) = 1b41ea3771c243f2a9a8d50990bff703]
sms7 (v2.1, 2/25/2011): Short Message Service (SMS) text messages up to 160 characters in length employ 7-bit characters that are packed into 8-bit octets. This Perl program will accept a text message and display the packed hexadecimal or accept the packed hex and display the unpacked text.
[MD5 (sms7_v2.1.zip) = a1c5474901485bf39e98a06749e9b274]
- PADI dive tables Dive Table Calculator using the PADI Recreational Dive Planner.
[MD5 (PADI_table.zip) = 770804c7c35ae1b4bd15f95471fd7147]
- PADI dive tables (metric) Metric version of the Dive Table Calculator using the PADI Recreational Dive Planner, by Sonya Imm. (Distributed with permission.)
[MD5 (PADI_table_metric.zip) = 69458490b92b8c8a789b1bd2927c6e42]
- NAUI dive tables Dive Table Calculator using the NAUI recreational dive tables.
[MD5 (NAUI_table.zip) = 695d65b28952540602d4048eae9bcb06]
- Nitrox maximum operating depth (PADI) Maximum Operating Depth calculator when using Nitrox, based on PADI tables.
[MD5 (MOD_PADI.zip) = 8677c26c8bd1e5652c735503d4f768b3]
- Nitrox maximum operating depth (NAUI) Maximum Operating Depth calculator when using Nitrox, based on NAUI tables.
[MD5 (MOD_NAUI.zip) = 8a335cb7de9a533dc87ca0bb058be265]
- Nitrox maximum operating depth (Cobra) Maximum Operating Depth calculator when using Nitrox, based on Suunto Cobra dive computers.
[MD5 (MOD_Cobra.zip) = f00242272b437a835b9dc16ba7db2972]
EAN Gas Mix Calculator (v3.1, 06/23/2015): This Excel spreadsheet is a utility for partial pressure gas blending for Enhanced Air Nitrox mixes. Given a starting pO2 and tank pressure, and desired pO2 and tank pressure, the spreadsheet will indicate how much fill gas to add, followed by top off gas. Fill gas and top off gas default to 100% O2 and air (20.9% O2), respectively, but these parameters can be changed in the spreadsheet. One tab of the spreadsheet shows calculations in psi and another tab in bar.
[MD5 (EAN_gas_mix_v3.1.zip) = aa24a2f5c38a6501d22b13a6d9b041cf]
Latitude/Longitude Coordinate Converter (v1.0, 2/17/2012): This Excel spreadsheet converts between degree/minute/second (D°M"S'), GPS (D°M.MMM), and decimal (D.DDD°) formats for expressing latitude and longitude.
[MD5 (DMS_GPS_Decimal.xlsx) = f5f38218531f3883213739f6810a36c9]
Latitude/Longitude Converter (v1.0, 9/19/2013): This Perl script can be used to convert latitude/longitude coordinates between degree/minute/second (D°M"S'), GPS (D°M.MMM), and decimal (D.DDD°) formats.
[MD5 (latlong_v1.0.zip) = ca0413ccc29eb70e0fbb8646e91df487]
License and Warranty
Effective 0001 UTC, 21 November 2019, all software on this page is distributed as open source under the The MIT License.
Copyright 2019 Gary C. Kessler (firstname.lastname@example.org)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
All material on this site © 1996-2019, Gary C. Kessler. All rights reserved. Permission to use the material on this site is extended for individual personal use and for non-commercial distribution, as long as appropriate attribution is provided and the information is not altered in any way without express written permission of the author.