introduction | user interface similarities | internal similarities | apparent violations | reapertech's response | who is reapertech?
In addition to the user interface similarities, there are a number of technical similarities internal to the two programmers.
These similarities are harder for a layperson to assess. I presented the two files to several expert software developers uninvolved with the GNU Keyring project. Without exception their opinion was that it is extremely unlikely these similarities could have occurred through independent reinvention.
The Unix tool strings extracts human-readable strings of alphanumeric characters from the binary form of a program. I ran the command strings -n 10 on the two .prc files: this extracts all strings of at least ten characters in length. Typically, strings in programs come from user-interface elements, messages displayed to the user, names of files or routines in the source code, and constructs generated by the compiler. Containing similar strings, and particularly similar strings in a similar order means it is very likely that two programs were compiled from similar source code.
This is particularly clear in the case of English-language messages of more than a sentence or so. Coincidence in these cases is a strong indicator of a common origin.
strings in .prc files | |
GNU Keyring 0.11
Set Password Preferences About GNU Keyring Generate Password Export to Memo Select All Graffiti Help Preferences About Keyring Password incorrect. Please try again. Not here yet Sorry, that feature is not implemented yet. The passwords you entered do not match. Please try again Not enough dynamic memory to proceed. Couldn't launch the Memo Pad Cryptographic error: ^1 Error accessing key database: ^1 Upgrade Database? This database is from a previous version of Keyring. Convert it to the new format? (Please make a backup before doing this.) Incompatible Database This database is from a later version of Keyring, and cannot be opened. Can't upgrade database from version ^1. Error upgrading database: ^1 N^Nuno titleTemplate N^NuChoose Date N^NuDmRecordInfo couldn't query record /<Gtkr/<GkyrNO GN^NuKeys-Gtkr BRB'/<Gkyr/<GtkrA N^NuMem_StrToHandle: out of memory ListForm_ListDraw: !gKeyDB listform.c ListForm_ListDraw: unreasonable itemnum <no-record> N^NuDES3_Buf:null N^NuSetPasswd_Run out of memory N^NuDATAapplmemoNV Password: (Exported from GNU Keyring) /<memo/<DATANO /<memo/<applHn N^NuNot enough memory to unpack record N^NuNot enough dynamic memory to encode record 0Bg/<rlocNO Bg/<gdbSNO GNU Keyring Key ______ of ______ GNU Keyring GNU Keyring 0.11.0 Copyright 1999, 2000 by Martin Pool This is free software. No warranty. Enter your password: Delete Key Delete current key record? Save archive copy on PC Set Keyring Password Please choose a password: Preferences Stay unlocked for: Encrypting... Decrypting... Generate Password Generate a new random Key %d of %d GNU Keyring can generate random passwords fitting certain criteria. Longer passwords containing a variety of characters are harder to guess. Length: choose the length of the password in characters. Include: specify which characters are allowed in the password. At least one category must be specified. Generate: generate a new random password, and make it be the password for the current record. For your convenience, the keyring can stay unlocked for a time after you enter your master password. The keyring always locks again if you switch to another application. Generate Password: Make up a new random password fitting certain criteria. Export to Memo: Save all information from this key to a new unfiled memo. |
SafeKeys 1.3.548
Set Password Preferences About SafeKeys Generate Password Export to Memo Select All Graffiti Help Preferences About SafeKeys Password incorrect. Please try again. Missing Feature Error 101. The passwords you entered do not match. Please try again Not enough dynamic memory to proceed. Could not launch the MemoPad Cryptographic error: ^1 Error accessing key database: ^1 Incompatible Database This database is from a Unknown version of SafeKeys and cannot be opened. N^Nuno titleTemplate N^NuChoose Date N^NuDmRecordInfo could not query PDB record /<SKRT/<SKRTNO GN^NuSafeKeysDB1 BRB'/<SKRT/<SKRTA N^NuMem_StrToHandle: out of memory ListForm_ListDraw: !SafeKeysDB listform.c ListForm_ListDraw: unreasonable item number <no-record> N^NuR_3DES_Buf:null N^NuSetPasswd_Run out of memory N^NuDATAapplmemoNV Password: /<memo/<DATANO /<memo/<applHn N^NuNot enough memory to unpack record N^NuNot enough dynamic memory to encode record 0Bg/<rlocNO Bg/<gdbSNO Key ______ of ______ SafeKeys Version 1.3.548 Copyright (c) Reaper Technologies, 1998-2000. All Rights Reserved. Enter your password: Delete Key Delete current key record? Save archive copy on PC Set Password Please choose a password: Preferences Stay unlocked for: Encrypting... Decrypting... Generate Password Generate a new random Key %d of %d SafeKeys can generate random passwords that fit certain criteria. Longer passwords containing a variety of characters are harder for an attacker to guess. Length: choose the length of the password in characters. Include: specify which character sets are to be used in the password. At least one character set must be specified. Generate: generate a new random password and make it be the password for the current entry. For your convenience, the keyring can stay unlocked for a time after you enter your master password. The keyring always locks again if you switch to another application. Generate Password: Generate a new random password fitting certain criteria. Export to Memo: Save all information from this key to a new unfiled memo. |
Copyright © 2000 by Martin Pool. All rights reserved.
$Id: internal.latte,v 1.1 2000/09/12 07:21:34 mbp Exp $