// Populates the Credit Card table with files that have possible credit card number public static void AddToTableCreditCard(string filename, string filePath, CreditData ccReturnedData) { String cleanedFileName = CleanFileString(filename); String cleanedFilePath = CleanFileString(filePath); try { string txtQuery = "insert into CreditCard (filename, filePath, count, priority, visa, mastercard, americanExpress, discover, dinerClub, JCB) " + "values ('" + cleanedFileName + "', '" + cleanedFilePath + "', " + ccReturnedData.Count + ", " + ccReturnedData.Priority + ", " + ccReturnedData.VisaCount + ", " + ccReturnedData.MC_Count + ", " + ccReturnedData.AmexCount + ", " + ccReturnedData.DisCount + ", " + ccReturnedData.DinnCount + ", " + ccReturnedData.JCB_Count + ")"; ExecuteNonQuery(txtQuery); } catch (Exception) { /*MessageBox.Show("AddToTableCreditCard Fail", e.ToString());*/ } }
/* * Determines if a file is an archive or not. If it's an archive it is extracted to the System temp forlder for processing. * If it is not an archive it is passed to ProcessNonArchive. * * fInfo: Incoming FileInfo object to be processed * returns: void */ public static void ProcessFile(Delimon.Win32.IO.FileInfo fInfo) { string extention = Path.GetExtension(fInfo.FullName); if (extention == null) extention = ""; if (IsArchive(extention)) { //extract code SevenZipExtractor extractor = null; try { //path to the systems temporary folder String tempFolderPath = Path.GetTempPath(); tempFolderPath += "temp_dir\\"; //create a directory to dump everything into inside the temp folder Directory.CreateDirectory(tempFolderPath); //set the path of the 7z.dll (it needs to be in the debug folder) SevenZipExtractor.SetLibraryPath("7z.dll"); extractor = new SevenZipExtractor(fInfo.FullName); //Extract the entire file extractor.ExtractArchive(tempFolderPath); extractor.Dispose(); bool arcs = true; while (arcs) { arcs = false; // traverse files string[] fileEntries = Directory.GetFiles(tempFolderPath, "*.*", SearchOption.AllDirectories); foreach (string fileName in fileEntries) { //Console.WriteLine("IN ARCHIVE: " + fileName); FileInfo archive = new FileInfo(fileName); if (IsArchive(archive.Extension.ToString())) { arcs = true; extractor = new SevenZipExtractor(fileName); extractor.ExtractArchive(tempFolderPath); File.Delete(fileName); } } } int[][] totals = {new int[5], new int[9]}; //totals[0] count; totals[1] results; string[] fileEntries2 = Directory.GetFiles(tempFolderPath, "*.*", SearchOption.AllDirectories); foreach (string fileName in fileEntries2) { int[][] results = ProcessNonArchive(new Delimon.Win32.IO.FileInfo(fileName), true); if (MainForm.socialSecurityMode) { totals[0][0] += results[0][0]; if (results[0][1] > totals[0][1]) totals[0][1] = results[0][1]; } if (MainForm.creditCardMode) { totals[1][0] += results[1][0]; if (results[1][1] > totals[1][1]) totals[1][1] = results[1][1]; } } //Count how many files in archive //int count = Directory.GetFiles(tempFolderPath, "*.*", SearchOption.AllDirectories).Length; //delete the temporary directory we created at the beginning Directory.Delete(tempFolderPath, true); if (totals[0][1] > 0) { //WriteToLogFile("Detected: " + fInfo.FullName + " Priority: " + (ScanData.Code)totals[1]); if (MainForm.socialSecurityMode) { ScanData returnedData = new ScanData(totals[0][0], totals[0][1], totals[0][3], totals[0][4]); Database.AddToTableScanned(fInfo.Name, fInfo.FullName, returnedData); try { mainUIForm.lblItemsFound.BeginInvoke(new MainForm.InvokeDelegateFound(mainUIForm.UpdateLblItemsFound), new object[] { numFound++ }); } catch (InvalidOperationException) { } } if (MainForm.creditCardMode) { CreditData ccReturnedData = new CreditData(totals[1][0], totals[1][1], totals[1][3], totals[1][4], totals[1][5], totals[1][6], totals[1][7], totals[1][8]); Database.AddToTableCreditCard(fInfo.Name, fInfo.FullName, ccReturnedData); try { mainUIForm.lblItemsFound.BeginInvoke(new MainForm.InvokeDelegateFound(mainUIForm.UpdateLblItemsFound), new object[] { numFound++ }); } catch (InvalidOperationException) { } } } } catch (Exception e) { //get rid of the object because it is unmanaged extractor.Dispose(); Console.WriteLine(e.Message); } } else { int[][] ignore = ProcessNonArchive(fInfo, false); } }