All AIS-transmitting ships are required to automatically broadcast their dynamic and static navigation data on VHF maritime channels 87B (161.975 MHz) and 88B (162.025 MHz). These GMSK-modulated binary messages are transmitted in very short bursts that could be just barely heard as sudden "pops", easy enough to misinterpret as random static noise.
The first step in decoding these minute packets of binary signal-trains is to translate them into ASCII-formatted raw NMEA messsage strings. They then become human-readable in principle, but are actually still cryptic and rather incomprehensible at this stage. Common NMEA sentence tags are AIVDM and AIVDO, and a typical string would look something like this:
!AIVDM,1,1,,A,1?4Gw0QPjb1AaC8R4<UcmaN6050l,0*3E
AISMon.exe is a freeware demodulator/decoder that executes this first step effortlessly, directing the NMEA formatted output to a serial port and/or a log file. Unfortunately, the code is not open-source, and furthermore Windows only. The latter restriction to Linux users, though, is easily overcome by running it under Wine.
The second step in the transformation is to "decapsulate" each NMEA message string in order to discover its meaningful data content, which can then be parsed and presented by a dedicated application.
This last step is what PupAIS is about! It generates a dynamic list of all the message emitting ships (and some other types of targets) within VHF range. This list is written to a repeatedly updated CSV file, which is then parsed by the two companion python programs:
PopuLister (AISflukt.py), shows the available information for the entire "population" of targets in radio range, one "screen" per target, while PloyPlotter (Ployplot.py) presents positional data in the form of a pseudo radar screen, graphically indicating Range, Bearing and Course for each target. (And, yes -- snazzy app names are important!)