Skip to main content


Showing posts from October, 2007

A Java client implementation of Steve Gibson's PPP

I recently produced an open source implementation of Steve Gibson's Perfect Paper Passwords system in C. It occurred to me that a better implementation would be a Java client for my mobile phone (thus eliminating the need for printing and carrying the paper passwords). Here's my PPP client implementation running on my Motorola RAZR. It's written in Java using CLDC 1.0 and MIDP 2.0 . You can download and install the JAR file . The current version is 1.0.0.

Times Square: a fun spammer GIF

Nick FitzGerald reported a neat spammer image trick to me the other day. It's entered in The Spammers' Compendium that involves using animation to display the word Viagra emulating a flashing neon sign. Since many OCR systems merge the layers together before OCR this image is actually in the 'wrong' order. Once merged the letters are in the order VIRAAG.

SOC Update and Google Maps integration

After receiving some feedback on my Simple code for entering latitudes and longitudes I've made a couple of changes: 1. Replace the letter V with the symbol @ in the alphabet to remove confusion between U and V. Implementations should automatically map V to U if entered. 2. Changed the checksum to the following calculation: C = p0 + p1 * 2 + p2 * 3 + p3 * 4 + p4 * 5 + p5 * 6 + p6 * 7 + p7 * 8 + p8 * 9 mod 29 To make it a bit easier to visualize here's an integration of SOC with Google Maps. You can either type in an address to navigate to that address and see the SOC, or type in a SOC to navigate to that location. Enter address to find: Or, enter a SOC:

An open source implementation of Steve Gibson's PPP algorithm

Steve Gibson has come up with a simple two-factor password scheme that relies on printed cards of passcodes generated using a combination of SHA-384 and Rijndael. The idea is that a system could prompt the user for one of the passcodes in addition to their normal password. Steve calls this his Perfect Paper Passwords system and has given a detailed description of the algorithm. As usual he's released code written in assembly language as a DLL for Windows. He hasn't released his source code (he never does), so I thought it would be interesting to write my own implementation of his algorithm. Here's the C code: #include <sys/time.h> #include <string.h> #include <stdio.h> #include <stdlib.h> #include "rijndael.h" #include "sha2.h" #pragma pack(1) typedef unsigned char Byte; typedef union __Passcode { unsigned long as_long; struct { Byte byte[4]; } bytes; } Passcode; typedef struct __PasscodeString { char char

More spammer crossword creativity

Nick FitzGerald writes in with a variant of the "1 across, 3 down" spammer content trick which looks like this: The neat thing is that the crossword is created using HTML in a way that prevents a simple HTML-stripping spam filter from reading the brand names. To a simple spam filter this looks like: CA BREIT OM R O L E TIER ING G X The actual HTML (cleaned up by Nick) is: <TABLE> <TR> <TD> <DIV align=right> CA<BR> <BR> BREIT<BR> OM </DIV> </TD> <TD> <DIV align=center> R<BR> O<BR> L<BR> E </DIV> </TD> <TD> TIER<BR> <BR> ING<BR> GA </TD> </TR> <TR> <TD> <DIV align=center> X </DIV> </TD> </TR> </TABLE>