Changed import method so that the importer loads into memory then dumps from memory to the drive to speed up importing of databases to 10,000 per second.

This commit is contained in:
GRMrGecko 2014-09-17 10:48:01 -05:00
parent 5358de1006
commit 441dc5e3b6
4 changed files with 113 additions and 5 deletions

60
perl/database.sql Normal file
View File

@ -0,0 +1,60 @@
SET NAMES latin1;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for `email`
-- ----------------------------
DROP TABLE IF EXISTS `email`;
CREATE TABLE `email` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`email` varchar(255) NOT NULL,
`password` blob NOT NULL,
`leak` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `email` (`email`) USING BTREE
) ENGINE=Aria DEFAULT CHARSET=utf8 PAGE_CHECKSUM=1;
-- ----------------------------
-- Table structure for `emailload`
-- ----------------------------
DROP TABLE IF EXISTS `emailload`;
CREATE TABLE `emailload` (
`email` varchar(255) NOT NULL,
`password` binary(255) NOT NULL,
`leak` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`email`,`password`)
) ENGINE=MEMORY DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for `hash`
-- ----------------------------
DROP TABLE IF EXISTS `hash`;
CREATE TABLE `hash` (
`hash` varchar(255) NOT NULL,
`leak` varchar(255) NOT NULL,
PRIMARY KEY (`hash`)
) ENGINE=MEMORY DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for `settings`
-- ----------------------------
DROP TABLE IF EXISTS `settings`;
CREATE TABLE `settings` (
`name` varchar(255) NOT NULL,
`value` blob NOT NULL,
PRIMARY KEY (`name`)
) ENGINE=Aria DEFAULT CHARSET=utf8 PAGE_CHECKSUM=1;
-- ----------------------------
-- Table structure for `sha1`
-- ----------------------------
DROP TABLE IF EXISTS `sha1`;
CREATE TABLE `sha1` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`hash` varchar(40) NOT NULL,
`leak` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `hash` (`hash`) USING BTREE
) ENGINE=Aria DEFAULT CHARSET=utf8 PAGE_CHECKSUM=1;
SET FOREIGN_KEY_CHECKS = 1;

View File

@ -57,6 +57,7 @@ $dbConnection = DBI->connect("DBI:mysql:$dbName;host=$dbHost", $dbUser, $dbPassw
open(passwords, $file); open(passwords, $file);
my $i=0; my $i=0;
my $count=0;
while (<passwords>) { while (<passwords>) {
chomp; chomp;
$i++; $i++;
@ -70,10 +71,25 @@ while (<passwords>) {
next; next;
} }
$result->finish(); $result->finish();
my $result = $dbConnection->prepare("INSERT INTO `sha1` (`hash`,`leak`) VALUES (?,'Email Database')"); my $result = $dbConnection->prepare("INSERT INTO `hash` (`hash`,`leak`) VALUES (?,'Email Database')");
$result->execute($sha1); $result->execute($sha1);
$result->finish(); $result->finish();
$count++;
if ($count%10000==0) {
my $result = $dbConnection->prepare("INSERT INTO `sha1` (`hash`,`leak`) SELECT `hash`,`leak` FROM `hash`");
$result->execute();
$result->finish();
my $result = $dbConnection->prepare("DELETE FROM `hash`");
$result->execute();
$result->finish();
} }
}
my $result = $dbConnection->prepare("INSERT INTO `sha1` (`hash`,`leak`) SELECT `hash`,`leak` FROM `hash`");
$result->execute();
$result->finish();
my $result = $dbConnection->prepare("DELETE FROM `hash`");
$result->execute();
$result->finish();
close(passwords); close(passwords);
$dbConnection->disconnect(); $dbConnection->disconnect();

View File

@ -55,6 +55,7 @@ $dbConnection = DBI->connect("DBI:mysql:$dbName;host=$dbHost", $dbUser, $dbPassw
open(passwords, $file); open(passwords, $file);
my $i=0; my $i=0;
my $count=0;
while (<passwords>) { while (<passwords>) {
chomp; chomp;
my $entry = $_; my $entry = $_;
@ -66,7 +67,7 @@ while (<passwords>) {
next; next;
} }
print "$i Email: $email Password: $password\n"; print "$i Email: $email Password: $password\n";
my $result = $dbConnection->prepare("SELECT * FROM `emailplaintext` WHERE `email`=? AND `password`=?"); my $result = $dbConnection->prepare("SELECT * FROM `email` WHERE `email`=? AND `password`=?");
$result->execute($email, $password); $result->execute($email, $password);
my $exists = $result->fetchrow_hashref(); my $exists = $result->fetchrow_hashref();
if ($exists!=undef) { if ($exists!=undef) {
@ -74,11 +75,26 @@ while (<passwords>) {
next; next;
} }
$result->finish(); $result->finish();
my $result = $dbConnection->prepare("INSERT INTO `emailplaintext` (`email`,`password`) VALUES (?,?)"); my $result = $dbConnection->prepare("INSERT INTO `emailload` (`email`,`password`,`leak`) VALUES (?,?,'Leak')");
$result->execute($email, $password); $result->execute($email, $password);
$result->finish(); $result->finish();
$count++;
if ($count%10000==0) {
my $result = $dbConnection->prepare("INSERT INTO `email` (`email`,`password`,`leak`) SELECT `email`,`password`,`leak` FROM `emailload`");
$result->execute();
$result->finish();
my $result = $dbConnection->prepare("DELETE FROM `emailload`");
$result->execute();
$result->finish();
} }
} }
}
my $result = $dbConnection->prepare("INSERT INTO `email` (`email`,`password`,`leak`) SELECT `email`,`password`,`leak` FROM `emailload`");
$result->execute();
$result->finish();
my $result = $dbConnection->prepare("DELETE FROM `emailload`");
$result->execute();
$result->finish();
close(passwords); close(passwords);
$dbConnection->disconnect(); $dbConnection->disconnect();

View File

@ -47,7 +47,7 @@ $dbName = "passwords";
$dbUser = "root"; $dbUser = "root";
$dbPassword = "password"; $dbPassword = "password";
$file = "/Users/grmrgecko/Desktop/passwords/SHA1.txt"; $file = "/Users/grmrgecko/Desktop/passwords/combo_not.txt";
#print localtime(time).": Connecting to DataBase\n"; #print localtime(time).": Connecting to DataBase\n";
@ -55,6 +55,7 @@ $dbConnection = DBI->connect("DBI:mysql:$dbName;host=$dbHost", $dbUser, $dbPassw
open(passwords, $file); open(passwords, $file);
my $i=0; my $i=0;
my $count=0;
while (<passwords>) { while (<passwords>) {
chomp; chomp;
$i++; $i++;
@ -68,10 +69,25 @@ while (<passwords>) {
next; next;
} }
$result->finish(); $result->finish();
my $result = $dbConnection->prepare("INSERT INTO `sha1` (`hash`,`leak`) VALUES (?,'LinkedIn')"); my $result = $dbConnection->prepare("INSERT INTO `hash` (`hash`,`leak`) VALUES (?,'LinkedIn 6/6/12')");
$result->execute($sha1); $result->execute($sha1);
$result->finish(); $result->finish();
$count++;
if ($count%10000==0) {
my $result = $dbConnection->prepare("INSERT INTO `sha1` (`hash`,`leak`) SELECT `hash`,`leak` FROM `hash`");
$result->execute();
$result->finish();
my $result = $dbConnection->prepare("DELETE FROM `hash`");
$result->execute();
$result->finish();
} }
}
my $result = $dbConnection->prepare("INSERT INTO `sha1` (`hash`,`leak`) SELECT `hash`,`leak` FROM `hash`");
$result->execute();
$result->finish();
my $result = $dbConnection->prepare("DELETE FROM `hash`");
$result->execute();
$result->finish();
close(passwords); close(passwords);
$dbConnection->disconnect(); $dbConnection->disconnect();