See: http://cryptome.org/csp/spy001/spy001.htm