Moving photos from Nikon Picture Project to Picasa

I was asked recently to migrate someones digital photo collection from Nikons picture project software over to googles picasa. Seemed straightforward enough, but upon further investigation I discovered that Picture Project was a nightmare for interoperability with other software...

The main problem, is that everytime you import photos into PP via the softwares import functionality (the only way), it puts the files in a custom location, and the folder is given some numeric name (eg 1234). You then give the album a name in PP, and PP keeps a database of the name to number relationships. If you nest albums, the database keeps track of this too (the directory structure is flat). Annoyingly, there is no export function for PP, and the database is a password protected access database.  Initially I tried 'nikon', but it was wrong and I scoffed at the idea that they would pick something so easy. So, fire up IDA, search for 'mdb' and we find ourselves in sub_438A00. A quick browse of the function shows us this interesting looking section:

This suggests that our password might be in an argument passed to the function (var_234).  So we look up the xrefs-to, and find the following functions: sub_4932E0, sub_4AAC40, sub_44CAA0, sub_474A10.  These function all contain a section that looks similar to this:


Well what do you know, the password is "Nikon"!  Inspection of the other functions shows that all the databases have the same password.

We are mostly interested in recreating the directory structure, with the directory names equal to the album names in PP.  This information is stored across three tables: NodeTable in node.mdb, SourceTable in source.mdb and ItemTable in item.mdb.  The structure of the albums is stored in NodeTable, and to find which files are in which folders we need to do a join across the SourceTable and ItemTable.

I have put together a C# command line app that does the whole job, check it out at

| October 21st, 2013 | Posted in Software |

Leave a Reply