GNU Keyring for PalmOS and Safekeys: internal similarities

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 $