├── README.md ├── leak.db └── leakcheck.py /README.md: -------------------------------------------------------------------------------- 1 | # LEAKCHECK 2 |

Personal leaks db for better combolists.

3 | 4 |

Legal Notices

5 |

This tool ist for educational purposes only. You are not allowed to use it for any kind of illegal activity nor law enforcement at any time.

6 | 7 |

Overview

8 |

LEAKCHECK is a simple and easy to use tool for checking so called combolists (mail:pass and user:pass) for already known (public) entries. Make your combolists shorter, focus on non-checked credentials and speed up your pentests etc.

9 | 10 |

Status

11 |

More information coming soon ...

12 | -------------------------------------------------------------------------------- /leak.db: -------------------------------------------------------------------------------- 1 | test@test.com:test 2 | info@test.com:info -------------------------------------------------------------------------------- /leakcheck.py: -------------------------------------------------------------------------------- 1 | #!/usr/local/bin/python3 2 | #encoding: utf-8 3 | #name: leakcheck 4 | #description: checks given combolists against a private lib of leaks 5 | #version: 0.11, 2020-11-15 6 | #author: DrPython3 7 | #TODO: start writing the code, more information below ... 8 | 9 | #((<-- *** NEEDED PACKAGES *** -->)) 10 | 11 | #TODO: Add packages needed ... 12 | import ctypes, os, sys, threading 13 | import colorama 14 | from colorama import * 15 | init() 16 | print(Fore.LIGHTWHITE_EX + '') 17 | 18 | #((<-- *** Variables, Functions, etc. *** -->)) 19 | 20 | runcounter = int(0) #just a counter for handling menu optically. 21 | public = int(0) #for stats in title bar 22 | private = int(0) #for stats in title bar 23 | leakcount = int(0) #for counting leaks in db 24 | leakdic = [] #for counting leaks in db 25 | combofile = '' #file with combos for checker, updater etc. 26 | newcount = int(0) #new combos processed by checker, updater etc. 27 | newleaks = [] #combos to check, import etc. 28 | 29 | logo1 = ''' 30 | @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@ @@@ @@@@@@@@ @@@@@@@ @@@ @@@ 31 | @@! @@! @@! @@@ @@! !@@ !@@ @@! @@@ @@! !@@ @@! !@@ 32 | @!! @!!!:! @!@!@!@! @!@@!@! !@! @!@!@!@! @!!!:! !@! @!@@!@! 33 | !!: !!: !!: !!! !!: :!! :!! !!: !!! !!: :!! !!: :!! 34 | : ::.: : : :: :: : : : : ::: :: :: : : : : : :: :: :: :: : : ::: ''' 35 | 36 | logo2 = ''' 37 | ________________________________________________________________________________ 38 | personal antipublic db with checker | DrPython3 (C) 2020 39 | 40 | support this tool with donations (BTC): 1MiKuJrTCNST3haCX6sCnmMWTxJ4ZXtYgw 41 | (!) all donations help with providing future updates (!)''' 42 | 43 | mainmenu = ''' 44 | 45 | ### -- M*A*I*N M*E*N*U -- ### 46 | ---------------------------------------------------------- 47 | [1] Check your Combofile for Public Leaks and clean it up. 48 | [2] Add Combos to Database without. 49 | [3] Status of your Personal DB. 50 | [4] Maintain DB (delete duplicates etc). 51 | ---------------------------------------------------------- 52 | [0] Any other input: << QUIT >> 53 | ''' 54 | 55 | exitmsg = ''' 56 | 57 | ... your choice: (!) QUIT LEAKCHECK (!) 58 | 59 | Do you like the tool? 60 | Then send a donation, please: (BTC) 1MiKuJrTCNST3haCX6sCnmMWTxJ4ZXtYgw 61 | All donations help with providing future updates and upgrades.''' 62 | 63 | #clean - clear screen on purpose: 64 | def clean(): 65 | try: 66 | if os.name == 'nt': 67 | os.system('cls') 68 | else: 69 | os.system('clear') 70 | except: pass 71 | 72 | #menu - screen with main menu for user: 73 | def menu(): 74 | global runcounter 75 | clean() 76 | print(Fore.LIGHTRED_EX + Style.BRIGHT + str(logo1)) 77 | if runcounter < 1: 78 | print(Fore.LIGHTRED_EX + Style.BRIGHT + str(logo2)) 79 | else: pass 80 | print(Fore.LIGHTWHITE_EX + str(mainmenu)) 81 | runcounter += 1 82 | what = int(input(Fore.LIGHTYELLOW_EX + Style.BRIGHT + '\nYOUR CHOICE: ')) 83 | if what == 1: 84 | # TODO: write function dbcheck() ... 85 | dbcheck() 86 | elif what == 2: 87 | dbupdate() 88 | elif what == 3: 89 | dbcount() 90 | elif what == 4: 91 | #TODO: write function dbmaintain() ... 92 | clean() 93 | print(Fore.LIGHTRED_EX + Style.BRIGHT + 'Sorry, option not included yet ...\n') 94 | input(Fore.LIGHTWHITE_EX + Style.BRIGHT + '\nPress [ENTER] to return to main menu.') 95 | return None 96 | else: 97 | clean() 98 | sys.exit(Fore.LIGHTRED_EX + Style.BRIGHT + exitmsg) 99 | 100 | #dbcount - delivers amount of leaks currently saved in db, actually not in use: 101 | def dbcount(): 102 | global leakcount 103 | clean() 104 | print(Fore.LIGHTWHITE_EX + Style.BRIGHT + '\nWait a moment, please (...)\n') 105 | try: 106 | leakdic = open('leak.db', 'r').read().splitlines() 107 | leakcount = int(len(leakdic)) 108 | leakdic.clear() 109 | print(Fore.LIGHTGREEN_EX + Style.BRIGHT + 'TOTAL AMOUNT OF LEAKS IN DB: ' + str(leakcount) + '\n') 110 | input(Fore.LIGHTWHITE_EX + Style.BRIGHT + '\nPress [ENTER] to return to main menu.') 111 | return None 112 | except: 113 | print(Fore.LIGHTRED_EX + Style.BRIGHT + 'An error occured. Sorry!\n') 114 | input(Fore.LIGHTWHITE_EX + Style.BRIGHT + '\nPress [ENTER] to return to main menu.') 115 | return None 116 | 117 | #dbupdate - adds leaks from a combolist to the db: 118 | def dbupdate(): 119 | global newcount 120 | clean() 121 | print(Fore.LIGHTGREEN_EX + Style.BRIGHT + '\n### COMBOLIST-IMPORT TO YOUR LEAKCHECK DB ###\n\n') 122 | combofile = input(Fore.LIGHTWHITE_EX + Style.BRIGHT + 'Enter Name of your Combofile, e.g. combos.txt: ') 123 | if combofile == '': 124 | clean() 125 | print(Fore.LIGHTRED_EX + Style.BRIGHT + '\nNo filename entered.') 126 | input(Fore.LIGHTRED_EX + Style.BRIGHT + '\nPress [ENTER] to return to main menu.') 127 | return None 128 | else: 129 | try: 130 | print(Fore.LIGHTGREEN_EX + Style.BRIGHT + '\n\nStarting the Import of your Combofile ...\n\n') 131 | newleaks = open(combofile, 'r').read().splitlines() 132 | except: 133 | clean() 134 | print(Fore.LIGHTRED_EX + Style.BRIGHT + '\nCould not find or read combofile.') 135 | input(Fore.LIGHTRED_EX + Style.BRIGHT + '\nPress [ENTER] to return to main menu.') 136 | return None 137 | try: 138 | counter = len(newleaks) 139 | except: 140 | counter = 0 141 | if counter == 0: 142 | clean() 143 | print(Fore.LIGHTRED_EX + Style.BRIGHT + '\nNo Combos found for Import.') 144 | input(Fore.LIGHTRED_EX + Style.BRIGHT + '\nPress [ENTER] to return to main menu.') 145 | return None 146 | print(Fore.LIGHTYELLOW_EX + Style.BRIGHT + '\nFound ' + str(counter) + ' New Combos to import.\n') 147 | print(Fore.LIGHTYELLOW_EX + Style.BRIGHT + 'This will take a moment. Please wait ...!') 148 | newcount = 0 149 | while len(newleaks) > 0: 150 | try: 151 | addleak = newleaks.pop(0) 152 | with open('leak.db', 'a+') as receiver: 153 | receiver.seek(0) 154 | done = receiver.read(100) 155 | if len(done) > 0: 156 | receiver.write('\n') 157 | receiver.write(addleak) 158 | receiver.close() 159 | newcount += 1 160 | except: 161 | continue 162 | print(Fore.LIGHTGREEN_EX + Style.BRIGHT + '\n\nA Total of ' + str(newcount) + 'Combos have been imported.') 163 | input(Fore.LIGHTWHITE_EX + Style.BRIGHT + '\nPress [ENTER] to return to main menu.') 164 | return None 165 | 166 | #dbmaintain - deletes duplicates from the db: 167 | #todo: write code of db cleaner. 168 | 169 | #dbresult - writes results to the files and adds automatically private leaks to db: 170 | #todo: write code of results handler. 171 | 172 | #dbcheck - antipublic checker using a given combolist: 173 | #todo: write code of the checker. 174 | 175 | #dbcheckstart - startup routine for checker using threading: 176 | #todo: write code of the startup for the checker. 177 | 178 | #((<<-- *** M*A*I*N *** -->>)) 179 | while True: 180 | menu() 181 | --------------------------------------------------------------------------------