Click here to Skip to main content
Click here to Skip to main content

Exile 1.8 - The Password Manager

By , 6 Mar 2005
 

octalforty Exile 1.7 Screenshot

Introduction

It might not be a common scenario, but anyway it happens - and you know how it is. Personally, I have two email accounts, lots of sites where I've registered, and much, much more. Time went by...

...And suddenly the amount of information to be remembered (the attempt in itself was completely unjustified) has reached some level when I had several mutually exclusive options:

  • Forget everything - probably the easiest option, which, however, could cause a nervous breakdown or something...
  • Write as much as I could remember on a noticeable orange (yellow, red...) piece of paper and hide it somewhere in a hope that I won't forget where I put it.
  • Write all passwords and stuff in a Notepad file and either have it stolen or, according to Murphy's law, forget about it and remember only after pressing Enter in a format c: magic spell.
  • Download some program. The easiest option, but for some reason (I admit that I didn't spend weeks searching for a a. Simple, b. Freeware and c. Secure program), I chose a somewhat different option, which is...
  • Write my own password manager.

Of course, there must have been some great programs (hmmm...) doing the same job, but it was just quite interesting to write my own password manager for personal use (I actually haven't initially thought of posting it on The CodeProject), so here are the results of my work.

Background

In the beginning, I've spent some time looking for a suitable encryption algorithm (at that time, I didn't even suppose that I'll also need a hashing algorithm - lack of planning and stuff...). I decided in favor of RC5 - a symmetric block cipher, which was said to be fast and secure. Initially, I wanted to write some kind of CRC5 class but (mostly for the hell of it) I decided to turn it into a separate fancy-looking DLL with some kind of API (contexts, handles and so on...). Then I started to think about how the program itself will look like. The idea of storing User name and Master password in the password storage itself seemed perfidious, so I understood that some hashing algorithm is required and I fixed upon MD5, invented by the tireless Professor Ronald R. Rivest. As with RC5, a simple CMD5 class turned into a standalone DLL. So here's what I decided to implement.

  • Store a <User Name> + <Master Password> hash in a password storage and compare with the hash of <User Name> + <Master Password> entered when attempting to open a storage.
  • Generate a private key by repeatedly hashing <User Name> + <Master Password> + <All Previous Hashes> so that knowing <User Name> + <Master Password> combination hash doesn't guarantee successful cracking.
  • When loaded, all sensitive information remains encrypted until it is shown on the screen.

The Code

A few notes about the code and my style (in case anybody's interested). The core code is pretty straightforward and (hopefully) well commented - again, I originally had no intention to post it or whatever. It compiles clearly under Warning level 4 - well, except for the stupid C4786 warning with compiler choking on long names, but Release version should compile perfectly. I had no possibility (or maybe I felt too lazy) to test the program on platforms different from Windows 2000, and I think there are a few notes to be held in mind if you would like to launch it under, say, Windows 9x.

The IDC_HAND resource (a cursor - see StaticHyperLinkEx.cpp) is, according to MSDN, a stock resource only for Windows 2000 and above, so take this into account - you might need to import some suitable cursor or something.

Furthermore, SS_ENDELLIPSIS style for static controls will work under Windows 9x - it is for Windows NT and later, so this code:

...
 // Setting up title font
 GetDlgItem(IDC_TITLE_TITLE)->ModifyStyle(0, SS_ENDELLIPSIS, 0); 
 // If title doesn't fit
...

should be either removed or altered somehow. And PathCompactPathEx() requires Internet Explorer 4.0 for all platforms.

For some (obscure?) reason, usual User Interface Update stuff doesn't seem to be working in dialog-based applications, so I had to do menu items switching by calling SwitchMenu() and passing some flags.

I wonder why Tree View does not support Drag-n-Drop natively - it was hell of a job to decipher the poorly written SDK documentation in order to implement this stuff.

And a few words about problems and "not-yet-implemented" things (except for the things above):

  • Some flickering when either switching from Element to Element or switching from Hide Password to Show Password mode or vice versa. This is because of switching controls on and off, and I hope to fix it soon.
  • Somehow inconvenient Password Generator as you have to move your mouse to generate a password - but on the other hand, it is not that bad...
  • Unicode support hasn't been tested properly.

Results

This section is more likely to be a feature list, but it is pretty much the same, I guess. So this is what we have for the moment:

  • Fairly fast and lightweight program. The throughput of the cipher is the same for all key lengths less than 832 bits, so there are no performance reasons for choosing shorter keys.
  • Reasonable level of security. For the time being, I saw no reviews or whatever about successful crypto-analysis of RC5. I can't say the same thing for MD5 as B. den Boer and A. Bosselaers succeeded in discovering collisions in this hashing algorithm (see "Collisions for the Compression Function of MD5" for detail), but this fact doesn't affect the overall security level.
  • Native file format. This allows to do some shell-related tricks like opening storage by double-clicking... well, you know how it is.
  • User's files hashing. This feature can be used to hash some users' files (or messages) to monitor their consistency and integrity.
  • Password generator. This is not a huge novelty, but nevertheless it is quite a handy feature.
  • Easy to use. Every function is clearly visible in the interface. Context menus in a tree control might not be so obvious, but they do exist (as well as hyperlinks within dialogs).
  • Password security. Not an obvious notion, but the idea is quite simple. Security level can be greatly compromised by exposing the exact length of your passwords, so if you have, say, 6 characters in your password and you're in a Hide Password mode, the program displays 10 asterisks all the time.
  • Some kind of Intelligent Context Menus (a fancy name, isn't it ;) ?). Menu items are not just switched on or off - instead, I'm loading totally different menus (with more convenient layout) when right-clicking on various parts of the tree to the left.
  • Hot keys. Each element can be assigned a hot key, so password of the respective element is transferred directly to the currently focused window, but it is somewhat superseded with SmartType.
  • Rated items. All items (both Categories and Elements) can be rated according to their importance.
  • Shell extension. Provides a tool-tip with information about storage version and key size. Mostly for fun...
  • XML Export. Just exports password storage to XML file. I'm now studying XSLT in order to create some fancy transformation.
  • SmartType. The most interesting thing (at least I think so). By pressing a defined hot key, password and login are automatically transferred to a focused window without any hassle.

Here are a few more points in case anybody's interested (these are taken directly from Options dialog):

  • Maintains File Associations
  • Minimizes to Tray
  • Create Backup Before Saving
  • Auto Save on Exit
  • Shell Open as Read Only
  • Reload Last Storage
  • Reload as Read Only
  • SmartType
  • Automatic Sorting
  • Clipboard Erasing

Feedback

Should you encounter any bugs or have any ideas - email me. All suggestions are greatly appreciated.

History

  • 1.8 Build 1482 (5 March 2005)
    • This is mostly for developers - added a new Project configuration (release with MFC statically linked) - inspired by alens.
    • New executable (for those who don't have VS2003 installed) - somewhat bigger than the first one - here it is, gixxer600.
    • Added Installer (thanks to Jordan Russell for InnoSetup).
  • 1.8 Build 1482 (15 August 2004)
    • MD5 Hash Generator is now fully RFC-compliant (thanks to Robin Schive for inspiration).
    • Address field is hyperlinked.
    • Icons are now in a separate DLL, so one can build a new one (thanks to Robin Schive and many others).
  • 1.7 Build 1421 (15 July 2004)
    • Removed the useless button on the main dialog - it looked truly awful under Windows XP.
    • Ported to Visual C++ 2003 and there will be no further Visual C++ 6 versions.
    • A few more points I can't really recall :)
  • 1.7 Build 1372 (24 June 2004)
    • Storages can now be opened in Read-Only mode.
    • Backing up previous storage.
    • A few new options.
    • Saves settings to XML files.
    • "Copy" command now works in all fields (quite a popular request).
  • 1.5 Build 1156 (8 May 2004)
    • SmartType feature (partly inspired by Garth J Lancaster).
    • Export To XML is possible.
    • A few UI fixes/improvements.
  • 1.4 Build 867 (24 April 2004)
    • Shell extension which displays Storage Version and Key Size in tooltip (thanks to Michael Dunn for a series of great articles).
    • Ported to Visual Studio .NET 2003 (obviously not to C#).
    • Right-click on Password link copies password to clipboard (thanks to metomas).
    • Items can be Rated according to their importance (somewhat inspired by Orcrist).
    • Items can be Sorted (both Categories and Elements).
    • And finally, they can be Auto-sorted when adding.
  • 1.2 Build 720 (19 April 2004)
    • Fixed a bug in User's file hashing.
    • Enter works as it has to in all "Notes" and "Descriptions" (thanks to zijan).
  • 1.1 Build 713 (11 April 2004)
    • "Minimize to tray " feature added.
    • "Reload last storage on exit" feature added.
    • "Auto-save storage on exit" is possible.
    • Hot keys can be assigned to transfer passwords directly to destination windows.
    • Storage options can be set up.
    • File associations are maintained directly by the program.
  • 1.0 Build 521 (4 April 2004) - Initial release.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

AntonGogolev
Web Developer
Russian Federation Russian Federation
Member
I'll think about it later on...

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
GeneralRe: BUG: Fixed field lengths &amp; buffer overrunsmemberAnna-Jayne Metcalfe30 Jun '05 - 4:27 
Anytime Smile | :)
 
I was going to have a look at modifiying the source myself, but right now I'm just too heavily loaded with work.
 
Anna Rose | [Rose]
 
Riverblade Ltd - Software Consultancy Services
 
Anna's Place | Tears and Laughter
 
"Be yourself - not what others think you should be"
- Marcia Graesch
 
"Anna's just a sexy-looking lesbian tart"
- A friend, trying to wind me up. It didn't work.

Generalpws-File CorruptedmemberMartinSW28 Apr '05 - 4:26 
Hi Sl0n,
 
today my password storage file got corrupted OMG | :OMG: I'm using Exile 1.8 build 1482. After pasting a rather long text to the notes textbox navigation in the treeview was faulty: sometimes the right pane showed the item selected in the treeview and sometimes it didn't (just didn't refresh as if I hadn't changed the selection in the treeview). I then thought it'd be a good idea to save my changes and restart Exile. Unfortunately Exile then just hung on startup (I've set Reload Last Storage to Yes). Meanwhile I've restored a fairly currend version of my pws-file from a backup and Exile is happy again (and so am ISmile | :) ).
 
Nevertheless my faith in Exile deminished Unsure | :~
 
Regards
Martin
GeneralSome SuggestionsmemberMartinSW30 Mar '05 - 11:42 
@Sl0n:
Very nice program!
 
A few suggestions though:
(1) In the app's main window I can't copy a password using the textbox's context menu.
How about a button next to the login and password textboxes to copy their content?
How about assigning a hotkey to these functions (Ctrl+L copy login, Ctrl+P copy password)
 
(2)Focus on the the TreeView the hotkey Alt+E inserts a new element. This interferes with accessing the Edit-menu (Alt+E, too).
 
(3) I'd like to access the password generator from the 'Edit Element' dialog. Possibly a button next to the password textbox?
 
(4) Reopening an element, the element rating (assigned by default?) is gone. Closing the dialog by hitting OK fails: 'Please select item rating to continue.'
 
(5) ESC in the main window shuts downs the program. Unfortunately changes aren't saved - even with 'Auto Save On Exit' set to 'Yes'.
 
That's it for today.
 
Keep up the Good Work!
Martin
GeneralRe: Some SuggestionsmemberSl0n31 Mar '05 - 3:49 
Thanks for comments!
I completely agree with you on points 1, 2 and 4 (item 4 is kind of "known bug", but I never got round to fixing it Smile | :) ).
As for point 3, there is a hyperlink in the "Edit Element" dialog. Try clicking it - there is a "Generate Password" option in the menu that pops up.
And thanks for issue 5.
By the way, can you come up with more "clever" and English-like names for what is currently "Category" and "Element"? Thanks in advance!

GeneralRe: Some SuggestionsmemberMartinSW31 Mar '05 - 11:18 
Thanks for your answer - especially the hint for (3) Smile | :)
Sl0n wrote:
...can you come up with more "clever" and English-like names for what is currently "Category" and "Element"?
Well, I'm not a native English speaker, so I'm not sure about 'more English-like names'. What do you think of 'Item' and 'Folder' or 'Group'?
 
Best Wishes
Martin

GeneralGood job.memberSun G20 Mar '05 - 16:27 
thanks lot
GeneralRe: Good job.memberSl0n28 Mar '05 - 0:57 
Oh, don't mention it Smile | :)
Thanks!
Generalerrormembergixxer6002 Mar '05 - 4:58 
Im getting "mfc71.dll was not found", any idea were I can get this?
 
I love 1.7 & like the new features in 1.8 so I would really like to get this working. Any help would be awsome.
 
if its not brokin, you havnt tweaked it enough
GeneralRe: errormemberSl0n5 Mar '05 - 2:51 
Smile | :) Exile is built with VS7.1 (that is, 2003) and therefore uses MFC 7.1 (and a few features, specific to later versions of Windows, for that matter). So if you really want Exile to run, make me know - I'll either rebuild the whole thing with MFC statically linked, or will just provide a few DLLs.
GeneralRe: errormembergixxer6005 Mar '05 - 6:29 
That would be awsome. I do have 1.7 installed at the moment. Honestly Im not sure what MFC is, Im just an amauter webmaster who luvs .net web apps. If you provided the .dlls would all I have to do is just copy the file & overwright the existing 1.7 files?
 
Thanks for replying back, much appreciated & like I said luv Exile, keep up the awsome work!!
 
if its not brokin, you havnt tweaked it enough
GeneralRe: errormemberSl0n5 Mar '05 - 21:48 
Ok. An email with updates was sent to editors. Hold on Smile | :)
GeneralError: Use MFC in a Static Librarymemberalens18 Jan '05 - 4:32 
Hi,
 
First of all, this app is great - tnx Big Grin | :-D
 
But I have following problem: when I want to build with MFC staticly linked ("Use MFC in a Static Library" instead of "Use MFC in a Shared DLL") I get these two errors:
(1) exile_src\Exile\hyperlink.cpp(12): error C2039: 'classCReadonlyEdit' : is not a member of 'CReadonlyEdit'
(2) exile_src\Exile\hyperlink.cpp(12): error C2065: 'classCReadonlyEdit' : undeclared identifier
Is there a solution or do I have to install VS.NET on every computer that would use Exile?
 
Best regards,
Alen
GeneralRe: Error: Use MFC in a Static Librarymemberalens19 Jan '05 - 23:53 
Error is gone. I don't know how but I just tried one again today, rebuilded and it worked.
 
One possible solution was WINVER.
 
Best regards,
Alen
GeneralRe: Error: Use MFC in a Static Librarymemberalens20 Jan '05 - 7:49 
Sory - my bad: project was set to build shared MFC.
 
Problem with Static MFC remains...
 
Best regards,
Alen
GeneralRe: Error: Use MFC in a Static LibrarymemberSl0n5 Mar '05 - 21:51 
Sorry for not responding for so long. This problem is solved in this update (which didn't change the version number, actually). You have to add DECLARE_DYNAMIC(CReadonlyEdit); to ReadonlyEdit.h (to public secion) and IMPLEMENT_DYNAMIC(CReadonlyEdit, CEdit) line in cpp file right above the constructor.
GeneralExtended feature setsussRockJongleur27 Oct '04 - 9:15 
Another individual suggested this and I didn't see a reply from the author, so I'm merely re-posting it for a response. Fantastic app, will be comeplete with these additional features.
 
My suggestion would be to extend the InsertCategory dialog to also with a category type, drop down that will list the default that is already there and others suggested here.
 
Store credit card info with new category type: say Credit Card type
 
Element's fields:
Card Type, Card Number, Issue Date, Exp date, Security key
 
Another category for Bank Accounts
With Elements
Bank, Branch, Account Name, Account Number, Branch Code, Sorte Code, Swift Code, Opened,
Other users, their security key or other info.
 
Love the app, thanks
RockJongleurSmile | :)

GeneralRe: Extended feature setsussSl0n28 Oct '04 - 2:29 
Whoa! That's a bunch of suggestions Smile | :) . But I'm not sure I understood you correctly with that "extended Insert Category" thing, so could you please shed some light upon that Smile | :) .
As for new Category Types - yes, I've been thinking about it for a while and decided to make them as flexible as possible by implementing those, as I see them, Layout Providers, as COM objects... Anyway, got them on my todo list.
Thanks for suggestions!
GeneralRe: Extended feature setmemberNaveen Mahesh26 Nov '04 - 5:35 
By entended category I merely mean to say that you can support Credit Cards and bank cards as well. When the user right clicks and selects "New Element", maybe he/she can be asked its type for "Web Logons, Credit Card or Bank Card" and then provide the appropriate add element controls.
Hope this is clearer, Again, great app, love it.
Thanks
RockJongleur
QuestionPDA version ?memberBoo!28 Aug '04 - 23:00 
Hi,
is there a PDA version running on PPC2003 ?
If yes, it will be cool to use the synchronization to keep passwords on the PDA and on the PC Big Grin | :-D
 
Thanks,
Christophe
GeneralSmartType and WebPagesmemberDarren Schroeder26 Aug '04 - 3:31 
Does smarttype work for web pages? I can't seem to get it to recognize the username and password fields.
GeneralRe: SmartType and WebPagessussSl0n26 Aug '04 - 4:50 
Nope Blush | :O ... I'm still searching for the solution...
GeneralFeature Request ThreadsussAnonymous28 Jul '04 - 9:43 
I have been using this for about 2 hours now and think it is great!
 
Here are some features I would like to see:
 
1. Check to see if the Address field is populated with a web address. If so, it will open up a browser window to that location by clicking on it.
 
2. More icons! I was hoping to find an icon DLL of some sorts... any shot of moving the icons to their own DLL which can be customized?
 
Anyone else please add on!
GeneralRe: Feature Request ThreadsussSl0n29 Jul '04 - 7:58 
Anonymous wrote:
Check to see if the Address field is populated with a web address. If so, it will open up a browser window to that location by clicking on it.
 
Yep. I've been thinking about it. I also thought about some formatting flags such as, say, %password, %login, etc. but I'm not sure if anyone will ever use them since it is not a good idea to transfer passwords/logins over the net as plain text. But who knows Smile | :) ...
 
Anonymous wrote:
More icons! I was hoping to find an icon DLL of some sorts... any shot of moving the icons to their own DLL which can be customized?
 
Quite a popular request, I think Smile | :) . I'm still sort of researching this problem and I hope I'll find a solution for the next release.
Thanks for the feedback!
GeneralRe: Feature Request Threadmembergakulu16 Oct '04 - 8:00 
I would like to store bank / card info but you only have one standard "template" are you planning on adding others ?
 
Card Type, Card Number, Issue Date, Exp date, CVC Number
 
Bank, Branch, Account Name, Account Number, Branch Code, Sorte Code, Swift Code, Opened,
 
I think this a brilliant app Smile | :)
 
deanf
GeneralGetting Exile's SmartType to WorkmemberJackRazz@sbcglobal.net27 Jul '04 - 15:19 
I cannot get an example web page such as CodeProject.com to work.
 
I've done the following for an element thru the Edit Context menu item:
1) Set a userid/password to my codeproject id and password.
2) Set the address to: 'http://www.codeproject.com'
3) Set the hotkey to: 'Cntl + X'
 
I've done these for the Advance Edit menu item:
1) Set the target window title to: 'The Code Project - Free Source Code and Tutorials - Mozilla Firefox'
2) checked 'Enable SmartType'
3) I've been dragging the magnifying glass icon for userid and password fields to the Email/Password textboxes, but I just get 0.
4) So I've tried manually setting each to 1, 2, or 3 without success.
 
I've set the following options under Edit/Options menu item:
1) Enable SmartType to 'Yes'
2) Set SmartType invocation key to Cntl Z
 

To test it I've gone to www.codepage.com and try combinations of Cntl+Z and Cntl+X. What am I doing wrong? I'm not clear as to what the difference is between the SmartType invocation key and the individual hotkey assigned to the CodePage element. This would really be great if I can get it to work.
 

Thanks - JackRazz

GeneralRe: Getting Exile's SmartType to WorksussSl0n29 Jul '04 - 7:52 
Unfortunatelly, SmartType works only with dialogs, not with web pages. But this feature is on my todo list because this is the feature I really miss Smile | :) . Promise to solve this problem as soon as possible.
Thanks for the feedback!
GeneralRe: Getting Exile's SmartType to WorkmemberJackRazz@sbcglobal.net5 Aug '04 - 20:15 
I was wondering...how would you go about doing this short of creating a html proxy? The real issue is getting the proper textbox to get the focus.
 
This program would be great if it could be used for logging on to web sites so we could create different passwords for each one. I bet everyone else is like me and uses the exact same userid/password for all sites.
 
Looking forward to your enhancement to include web sites.
 
JackRazz
 

 

GeneralPlease provide us the last source for VC6memberProxy4NT22 Jul '04 - 5:22 
Please give us the last sources ;o) for all VC6 users.
 
Great stuff!!!
GeneralRe: Please provide us the last source for VC6memberSl0n22 Jul '04 - 8:46 
I knew it!!! I knew that there are people who still need VC++ 6 sources... But unfortunatelly I decided to port Exile to VC++ 2003 due to poor Standard conformance of VC++ 6 compiler. But I guess you can try out VC++7 to VC++6 project converter
[^]. Hope it helps.
Cheers!
GeneralErroneous MD5 hash generation?!memberRobin Schive22 Jul '04 - 3:10 
Hi,
 
I've tested the MD5 hash utility in your app and it doesn't seem to work correctly. I haven’t peeked into the code to identify the source of the problem. The Handy Dandy Guides has a MD5 generator that seems to work alright. The MD5 algorithm is defined in RFC1321, and these test vectors(with correct MD5 digest/hash) are defined therein:
 
""                                                                                 ==> d41d8cd98f00b204e9800998ecf8427e
"a"                                                                                ==> 0cc175b9c0f1b6a831c399e269772661
"abc"                                                                              ==> 900150983cd24fb0d6963f7d28e17f72
"message digest"                                                                   ==> f96b697d7cb7938d525a2f31aaf161d0
"abcdefghijklmnopqrstuvwxyz"                                                       ==> c3fcd3d76192e4007dfb496cca67e13b
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"                   ==> d174ab98d277d9f5a5611c2c9f419d9f
"12345678901234567890123456789012345678901234567890123456789012345678901234567890" ==> 57edf4a22be3c955ac49da2e2107b67a
The octalforty Exile produced this result:
""                                                                                 ==> 0db802527c8cf6c3497cab994afdecaa
"a"                                                                                ==> c067f7175762f52d2c0b60acd62d1414
"abc"                                                                              ==> 3ba292fc0c89824cd1fc0c15bf6fef33
"message digest"                                                                   ==> a6bfe5ff2f7fc3d327aa86d2c02f78a0
"abcdefghijklmnopqrstuvwxyz"                                                       ==> 1e7494495fe3bf34c72c1fd0345bc667
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"                   ==> ce641f92bc8de44dda0b170e071fb5c3
"12345678901234567890123456789012345678901234567890123456789012345678901234567890" ==> 598f1a81461aaa069e7132a53a3422f5
which is wrong Frown | :(


 
I found some C-code here that I’ve tested. I used the test vectors given in RFC1321, and the code gave correct result. The code was easy to port to a C++ class.



Anyway, I liked your app and I’m using it from now of Smile | :) . BTW, I was impressed with the GUI!!! Cool | :cool:


Regards,

Robin Schive

GeneralRe: Erroneous MD5 hash generation?!memberSl0n22 Jul '04 - 4:32 
Blush | :O I know. And I even know the source of the problem Cool | :cool: . I just felt to lazy to make it fully compliant Smile | :) . I plan to make it fully compliant, but I'm not sure if it is possible to do without breaking existing Password Storages since this implementation is heavily used in encryption/decryption of the stuff Smile | :) . Anyway, thanks for your feedback Big Grin | :-D .
GeneralRe: Erroneous MD5 hash generation?!memberRobin Schive22 Jul '04 - 7:19 
Okay I see... You could have implemented a password upgrade utility, but I guess this is not tempting...Sigh | :sigh:

To have a MD5 generator that is compliant to the standard is however crucial if the "MD5 Hash Generator…" tool shall have any meaning - MD5 verification strings from 3.rd parties are after all generated with MD5 compliant tools.

But what if you...
  1. Keep the existing (not compliant) MD5 implementation in your internal enryption/decryption logic.
  2. Update the MD5 Hash generator algorithm to be compliant with RFC1321 - after all, this hash/digest has nothing to do with the internal encryption/decryption logic in your app - right? Confused | :confused: . Don't bother to tweak out the MD5 code yourself, use an open source implementation and give credit where seen fit Wink | ;)
Then to something else, I miss the possibility to add my own icons. The ones you've added are fine, but...

Do you plan to add this feature?

Regards,

Robin Schive

GeneralRe: Erroneous MD5 hash generation?!memberSl0n22 Jul '04 - 9:03 
Keep the existing (not compliant) MD5 implementation in your internal enryption/decryption logic.
Yep, it is just what I was thinking about Wink | ;) .
 
Update the MD5 Hash generator algorithm to be compliant with RFC1321 - after all, this hash/digest has nothing to do with the internal encryption/decryption logic in your app - right?
Unfortunatelly, it is used extensively in encryption/decryption logic Smile | :) .
 
Then to something else, I miss the possibility to add my own icons. The ones you've added are fine, but...
Do you plan to add this feature?

Yes, I thought about that, but this would require a bit of thinking Wink | ;) .
Thanks for feedback!
GeneralRe: Erroneous MD5 hash generation?!memberRobin Schive22 Jul '04 - 11:43 
Sl0n wrote:
Unfortunatelly, it is used extensively in encryption/decryption logic
 
Maybe you got me wrong here. Let me emphasize: You have a dialog in Exile that has the title "MD5 Has Generator". The explanatory text in this dialog reads, I quote:
 
"This tool assists in hashing files and messages, so the hash value can later be used to verify their consistency".
 
If I e.g. opens a file from this dialog and then clicks the MD5 Hash: hyperlink, a MD5 hash value is generated and written to the companion text box. My guess is (correct me if I'm wrong) that this value is not used by Exile in any way, hence you can change the algorithm that generated it with one that is compliant to RFC1321 Smile | :) .
 
The part of your code that deals with the passwords must still use the old (MD5) algorithm.
 
To summarize:
  • You will have one MD5 compliant algorithm for the generator tool, and
  • the existing proprietary (not MD5 I'm afraid Cry | :(( ) algorithm for all other usage, passwords etc. Cool | :cool: .
If you leave the dialog as is, you can't e.g. validate files that have attached MD5 hashes that are generated by other MD5 generators (e.g. the one found in php[^]).
 
Sl0n wrote:
Yes, I thought about that, but this would require a bit of thinking
I can imagine, hope you find a solution Big Grin | :-D .
 
Regards,

Robin Schive

GeneralRe: Erroneous MD5 hash generation?!sussSl0n23 Jul '04 - 0:44 
Robin Schive wrote:
Maybe you got me wrong here.
 
I did Big Grin | :-D . Thanks, Robin!
GeneralErrors compiling PwsInfomemberToothRobber20 Jul '04 - 11:15 

From the compiler errors below you can see that the IQueryInfo GUID is not associated with an object. I have check the web but am unable find a solution. In the news list microsoft.publc.dotnet.vc I found a similar example but don't known enough about COM interfaces or the Shell extension to fix this problem.
 
Your help would be appriciated.
 
Thanks Robert
 

\Exile\PwsInfo\PasswordStorageShellExt.h(52): error C2787: 'IQueryInfo' : no GUID has been associated with this object
\Exile\PwsInfo\PasswordStorageShellExt.h(52): error C2440: 'initializing' : cannot convert from 'DWORD_PTR' to 'const IID *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
\Exile\PwsInfo\PasswordStorageShellExt.h(52): error C2440: 'initializing' : cannot convert from 'ATL::_ATL_CREATORARGFUNC (__stdcall *)' to 'DWORD_PTR'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
\code\C++\Exile\PwsInfo\PasswordStorageShellExt.h(52): error C2787: 'IQueryInfo' : no GUID has been associated with this object
\Exile\PwsInfo\PasswordStorageShellExt.h(52): error C2440: 'initializing' : cannot convert from 'DWORD_PTR' to 'const IID *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
\Exile\PwsInfo\PasswordStorageShellExt.h(52): error C2440: 'initializing' : cannot convert from 'ATL::_ATL_CREATORARGFUNC (__stdcall *)' to 'DWORD_PTR'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast

GeneralRe: Errors compiling PwsInfosussSl0n22 Jul '04 - 4:12 
Huh, I had the similar problem while porting to VC++ 2003 Wink | ;) . You can either delete this project from the solution or, in case you need this extension, correctly install latest Platform SDK. I used February 2003 version.
GeneralRe: Errors compiling PwsInfomemberToothRobber24 Jul '04 - 8:36 

Hello Again
 
I downloaded the Febuary 2003 Platform SDK. I updated the paths in the Visual Studeo Options, both the Inluced and the Library path have been updated to point to the Platform SDK.
 
You can you from the compiler output that the new SDK is being used for the includes but I am still getting the error about the GUID. Any idea how I can fix this.
 
h:\code\C++\Exile\PwsInfo\PasswordStorageShellExt.h(52) : error C2787: 'IQueryInfo' : no GUID has been associated with this object
 
Thanks Again.
 
PS I noted this in the compiler output:
statreg.cpp is obsolete. Please remove it from your project.
atlimpl.cpp is obsolete. Please remove it from your project.
 

 
------ Rebuild All started: Project: PwsInfo, Configuration: Debug Win32 ------
 
Deleting intermediate files and output files for project 'PwsInfo', configuration 'Debug|Win32'.
Creating Type Library...
Processing .\PwsInfo.idl
PwsInfo.idl
Processing D:\Program Files\Microsoft SDK\include\oaidl.idl
oaidl.idl
Processing D:\Program Files\Microsoft SDK\include\objidl.idl
objidl.idl
Processing D:\Program Files\Microsoft SDK\include\unknwn.idl
unknwn.idl
Processing D:\Program Files\Microsoft SDK\include\wtypes.idl
wtypes.idl
Processing D:\Program Files\Microsoft SDK\include\basetsd.h
basetsd.h
Processing D:\Program Files\Microsoft SDK\include\guiddef.h
guiddef.h
Processing D:\Program Files\Microsoft SDK\include\ocidl.idl
ocidl.idl
Processing D:\Program Files\Microsoft SDK\include\oleidl.idl
oleidl.idl
Processing D:\Program Files\Microsoft SDK\include\servprov.idl
servprov.idl
Processing D:\Program Files\Microsoft SDK\include\urlmon.idl
urlmon.idl
Processing D:\Program Files\Microsoft SDK\include\msxml.idl
msxml.idl
Processing D:\Program Files\Microsoft SDK\include\oaidl.acf
oaidl.acf
Processing D:\Program Files\Microsoft SDK\include\ocidl.acf
ocidl.acf
Compiling...
StdAfx.cpp
statreg.cpp is obsolete. Please remove it from your project.
atlimpl.cpp is obsolete. Please remove it from your project.
Compiling...
PwsInfo.cpp
h:\code\C++\Exile\PwsInfo\PasswordStorageShellExt.h(52) : error C2787: 'IQueryInfo' : no GUID has been associated with this object
h:\code\C++\Exile\PwsInfo\PasswordStorageShellExt.h(52) : error C2440: 'initializing' : cannot convert from 'DWORD_PTR' to 'const IID *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
h:\code\C++\Exile\PwsInfo\PasswordStorageShellExt.h(52) : error C2440: 'initializing' : cannot convert from 'ATL::_ATL_CREATORARGFUNC (__stdcall *)' to 'DWORD_PTR'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
PasswordStorageShellExt.cpp
h:\code\C++\Exile\PwsInfo\PasswordStorageShellExt.h(52) : error C2787: 'IQueryInfo' : no GUID has been associated with this object
h:\code\C++\Exile\PwsInfo\PasswordStorageShellExt.h(52) : error C2440: 'initializing' : cannot convert from 'DWORD_PTR' to 'const IID *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
h:\code\C++\Exile\PwsInfo\PasswordStorageShellExt.h(52) : error C2440: 'initializing' : cannot convert from 'ATL::_ATL_CREATORARGFUNC (__stdcall *)' to 'DWORD_PTR'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
Generating Code...
 
Build log was saved at "file://h:\code\C++\Exile\PwsInfo\Debug\BuildLog.htm"
PwsInfo - 6 error(s), 0 warning(s)
 

---------------------- Done ----------------------
 
Rebuild All: 0 succeeded, 1 failed, 0 skipped
 


GeneralRe: Errors compiling PwsInfosussSl0n31 Jul '04 - 20:44 
Whoops, sorry for being late Smile | :) .
You have to make Platform SDK Include and Lib directories to be on top of the list of all directories. I think you can even delete those paths which point to Platform SDK installed togther with Visual Studio as, I think, they're a bit out of date.
ToothRobber wrote:
 
I noted this in the compiler output:
statreg.cpp is obsolete. Please remove it from your project.
atlimpl.cpp is obsolete. Please remove it from your project.

Yes, I noted those too, but I still don't know how to get rid of this message Smile | :)
 

GeneralAn alternativememberuweph16 Jul '04 - 1:33 
If you want a more flexible password safer and don't need the source code, you should have a look at:
http://www.bagus-software.de/products/pwsafe/pwsafe.htm
GeneralCopy &amp; PastememberAaron Eldreth8 Jul '04 - 1:54 
Thanks for that feature. That was the one thing Exile was lacking.
 
Aaron Eldreth

TheCollective4.com
My Articles
 
While much is too strange to be believed,
Nothing is too strange to have happened.
- T. Hardy

GeneralRe: Copy &amp; PastememberSl0n8 Jul '04 - 3:12 
Your welcome Smile | :) .
GeneralInstaller DownloadsussSl0n7 Jul '04 - 21:33 
There must have been an error or some misunderstanding between me and my Mail Server as The Code Project editors seem to heve recieved an e-mail which terribly out-of-date. Basically, I made a few improvements, but the sources here are not up-to-date. In case you're interested, you can download an installer from here (600 Kb). Thanks!
GeneralBuild Errorsmemberprolong29 Jun '04 - 13:05 
Smile | :) When i build your source codes with vs6.0, these errors happen:
C:\exile_src\exile\AdvancedDialog.cpp(100) : error C2039: 'RealChildWindowFromPoint' : is not a member of '`global namespace''
C:\exile_src\exile\AdvancedDialog.cpp(100) : error C2065: 'RealChildWindowFromPoint' : undeclared identifier
C:\exile_src\exile\AdvancedDialog.cpp(148) : error C2065: 'GetAncestor' : undeclared identifier
C:\exile_src\exile\AdvancedDialog.cpp(148) : error C2065: 'GA_ROOT' : undeclared identifier
C:\exile_src\exile\PropertyGrid.cpp(123) : error C2065: 'CCM_SETVERSION' : undeclared identifier
C:\exile_src\exile\StaticHyperlinkEx.cpp(91) : error C2065: 'IDC_HAND' : undeclared identifier
 
Why? My OS is Win3003, IE is 6.0.
GeneralRe: Build ErrorssussSl0n30 Jun '04 - 6:51 
I wish I had Windows 3003 Smile | :) .
To be serious, you have to download latest Platform SDK from Microsoft web site (somewhere here) and everything should be fine. I used October 2002 version to build this.
GeneralRe: Build ErrorsmemberRandy Li7 Jul '04 - 21:23 
Install the lastest vs6.0 SP, then try again.
 
Best regards,
Randy Li
 
Powerful Software Protection System: Uses RSA1024, API functions, New anti-debug trick, Active protection
http://www.sdprotector.com
read more
GeneralProgram crashed.memberWREY28 Jun '04 - 6:14 
It seemed strange that after I created a Category, and had successfully added the first Element to it, when I tried adding a second Element to the same Category, the program crashed. It didn't matter if I tried inserting the second Element from the menu, or by right clicking the mouse. It always crashed.
 
Yes, I tried creating the Element several times, and each time the result was the same. (FWIW, I'm using version 1.7 of the sample.)
 
Frown | :(
 
William
 
Fortes in fide et opere!
GeneralRe: Program crashed.memberSl0n28 Jun '04 - 7:39 
Whoops! Fixed... You can either wait for updated sources and binaries here or download fixed version here.
Thanks for feedback!
GeneralThis is sooooooo coooooool !!memberWREY28 Jun '04 - 8:28 
Thanks! It's working properly now.
 
Will wait for the update to CP before downloading the correct source version.
 
Big Grin | :-D
 
William
 
Fortes in fide et opere!
GeneralGreat App + Mode switch icon flickering fixmembermr_mark_hewitt9 Jun '04 - 0:29 
Hey!
 
First of, great app, was planning on developing one myself, but found your and it did a great job plus password encryption!!
 
I may be adding some features, hope you don't mind?
Will submit the changes of course.
 
I have a patch that fixes the bug causing the mode switch icon to constantly flicker, how does one go about submitting this to Code Projects projects? Let me know if you'd like the changed files!
 
Thanks,
Mark

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web04 | 2.6.130523.1 | Last Updated 7 Mar 2005
Article Copyright 2004 by AntonGogolev
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid