As was our hope from the start, our publication of complete PPP system operation and implementation details has resulted in a number of useful open source implementations of the PPP system. If the Windows-based PPP.DLL CryptoSystem and PPP.EXE demonstration and shell program code we provide isn't useable in your application or platform, perhaps one or more of these freely available open source implementations will provide the needed raw material for your own implementation of a PPP system.
(Be sure to let us know if you develop a PPP solution that you would like to make available to others. We'll gladly list it here so that it can be found by anyone looking for additional PPP solutions.)
Please Note: After its first release, the Perfect Paper Passwords system was made "even more perfect" through several rounds of design improvements. This created a moving target for third-party authors and, as a result, some of the first authors to jump aboard the PPP bandwagon implemented pre-v3 versions of the PPP system.
You should, therefore, be aware that some of the PPP implementations below may be first or second generation implementations. Every generation of the system was safe and secure, so you can use any of the pre-v3 implementations with complete confidence. The only downside would be lack of inter-platform compatibility, which may or may not be important in your application.
- PPPv3 in the key of 'C' ... and a Java PPP client
John Graham-Cumming, a long-time, valued participant and contributor to the GRC newsgroups has produced two open-source offerings, both released under the BSD license:
- The first is a very clean and straightforward open source implementation of the complete PPPv3 system which performs all needed functions. It duplicates much of the functionality of GRC's own closed-source reference implementation.
- PPP with a cup of JAVA
 | The second is a cool PPP client running under JAVA on his Motorola RAZR cell phone. Armed with the server's 256-bit sequence key, this client is able to autonomously generate successive PPP passcodes forever, eliminating the need for pre-printing and carrying passcards. Note that this does not use any cell phone communications. It simply uses the phone's JAVA interpreter as a portable PPP CryptoSystem to generate PPP passcodes on-the-fly.
|
- A "PAM" for Mac OS X (Intel & PPC) and Linux
(PAM = Pluggable Authentication Module)
Thomas Fors, another GRC newsgroup contributor, has written a freely available open source implementation of the PPP CryptoSystem as a PAM module for the Macintosh and Linux platforms. This allows PPP to be used during Mac and Linux terminal logons as shown below:
Tom notes that the passcode used in that logon shown above was "v%wb", which is, of course, safe to disclose since the chance that it'll be useful for any particular future logon will always be equal to all other PPP passcodes . . . or 1 chance in 16,777,216.
- Windows (MinGW) & Ubuntu Linux (GCC)
Lauri Ojansivu has produced an open source PPP port for Windows and Ubuntu Gutsy Gibbon Linux. Lauri took John Graham-Cumming's 'C' version of PPP and made the changes necessary for compilation under the MinGW Windows Developer Studio and Ubuntu Linux GCC.
- Pure 100% Microsoft C# implementation
Andrew Burns has written and contributed a 10015d4cbcure C# implementation of the latest v3 PPP system, complete with verification test vectors. It is available for download from SourceForge.
- PPP -in- PHP
PHP's popularity has resulted in several PPP implementations. Be sure to check the version of PPP being supported since several are prior to the final v3 system:
- Orson Jones has done a great deal of work with PPP in PHP. His latest open source code is completely "final version" (v3) compatible.
- Bob Somers, another GRC newsgroup denizen, was an early participant in publishing his open source implementation of the PPP system for PHP.
- Daniel Hodder has written what he describes as an "object oriented" version of the PPP system. The code and his instructions can be found on his web site.
- PPP for Windows .NET
Contributor DenEijk has written a .NET wrapper around our reference implementation PPP.DLL to effectively port the PPP cryptosystem into the .NET environment.
- A complete PPP system in JAVA
Contributor Kurt Nelson, working from John Graham-Cumming's PPP JAVA client, has implemented a JAVA system for handling all of the PPP passcard creation and authentication work, thus creating a complete JAVA-based PPP facility.
- PPP in PERL
Another GRC newsgroup contributor has announced that he'll be implementing the PPP CryptoSystem in PERL. Stay tuned.