├── .gitignore ├── README.md ├── combocrawler.py ├── count_total.sh ├── data ├── 1 │ └── .gitignore ├── 2 │ └── .gitignore ├── .gitignore ├── a │ ├── .gitignore │ ├── b │ │ └── .gitignore │ ├── d │ │ └── .gitignore │ ├── l │ │ ├── .gitignore │ │ └── e │ │ │ ├── .gitignore │ │ │ └── x │ │ │ └── .gitignore │ ├── m │ │ └── .gitignore │ ├── n │ │ ├── .gitignore │ │ └── d │ │ │ ├── .gitignore │ │ │ └── r │ │ │ ├── .gitignore │ │ │ └── e │ │ │ └── .gitignore │ ├── r │ │ └── .gitignore │ └── s │ │ └── .gitignore ├── b │ ├── .gitignore │ ├── a │ │ └── .gitignore │ ├── e │ │ └── .gitignore │ ├── i │ │ └── .gitignore │ ├── l │ │ └── .gitignore │ ├── o │ │ └── .gitignore │ ├── r │ │ └── .gitignore │ └── u │ │ └── .gitignore ├── c │ ├── .gitignore │ ├── a │ │ ├── .gitignore │ │ └── r │ │ │ └── .gitignore │ ├── h │ │ ├── .gitignore │ │ └── r │ │ │ └── .gitignore │ ├── o │ │ └── .gitignore │ └── r │ │ └── .gitignore ├── d │ ├── .gitignore │ ├── a │ │ ├── .gitignore │ │ └── n │ │ │ └── .gitignore │ ├── e │ │ └── .gitignore │ ├── i │ │ └── .gitignore │ ├── o │ │ └── .gitignore │ └── r │ │ └── .gitignore ├── e │ ├── .gitignore │ └── l │ │ └── .gitignore ├── f │ ├── .gitignore │ ├── a │ │ └── .gitignore │ └── r │ │ └── .gitignore ├── g │ ├── .gitignore │ ├── a │ │ └── .gitignore │ ├── e │ │ └── .gitignore │ ├── i │ │ └── .gitignore │ ├── o │ │ └── .gitignore │ └── r │ │ └── .gitignore ├── h │ ├── .gitignore │ ├── a │ │ └── .gitignore │ ├── e │ │ └── .gitignore │ └── o │ │ └── .gitignore ├── i │ ├── .gitignore │ └── n │ │ └── .gitignore ├── j │ ├── .gitignore │ ├── a │ │ └── .gitignore │ ├── e │ │ └── .gitignore │ ├── o │ │ └── .gitignore │ └── u │ │ └── .gitignore ├── k │ ├── .gitignore │ ├── a │ │ └── .gitignore │ ├── e │ │ └── .gitignore │ ├── i │ │ └── .gitignore │ ├── o │ │ └── .gitignore │ └── r │ │ └── .gitignore ├── l │ ├── .gitignore │ ├── a │ │ └── .gitignore │ ├── e │ │ └── .gitignore │ ├── i │ │ └── .gitignore │ ├── o │ │ └── .gitignore │ └── u │ │ └── .gitignore ├── m │ ├── .gitignore │ ├── a │ │ ├── .gitignore │ │ └── r │ │ │ ├── .gitignore │ │ │ └── i │ │ │ └── .gitignore │ ├── e │ │ └── .gitignore │ ├── i │ │ └── .gitignore │ ├── o │ │ └── .gitignore │ └── u │ │ └── .gitignore ├── n │ ├── .gitignore │ ├── a │ │ ├── .gitignore │ │ └── t │ │ │ └── .gitignore │ ├── e │ │ └── .gitignore │ ├── i │ │ └── .gitignore │ └── o │ │ └── .gitignore ├── o │ ├── .gitignore │ └── l │ │ └── .gitignore ├── p │ ├── .gitignore │ ├── a │ │ └── .gitignore │ ├── e │ │ └── .gitignore │ ├── i │ │ └── .gitignore │ ├── o │ │ └── .gitignore │ └── r │ │ └── .gitignore ├── q │ └── .gitignore ├── r │ ├── .gitignore │ ├── a │ │ └── .gitignore │ ├── e │ │ └── .gitignore │ ├── i │ │ └── .gitignore │ └── o │ │ └── .gitignore ├── s │ ├── .gitignore │ ├── a │ │ └── .gitignore │ ├── e │ │ ├── .gitignore │ │ └── r │ │ │ └── .gitignore │ ├── h │ │ ├── .gitignore │ │ └── a │ │ │ └── .gitignore │ ├── i │ │ └── .gitignore │ ├── o │ │ └── .gitignore │ ├── t │ │ ├── .gitignore │ │ └── e │ │ │ └── .gitignore │ └── u │ │ └── .gitignore ├── t │ ├── .gitignore │ ├── a │ │ └── .gitignore │ ├── e │ │ └── .gitignore │ ├── h │ │ └── .gitignore │ ├── i │ │ └── .gitignore │ ├── o │ │ └── .gitignore │ └── r │ │ └── .gitignore ├── u │ └── .gitignore ├── v │ ├── .gitignore │ ├── a │ │ └── .gitignore │ └── i │ │ └── .gitignore ├── w │ ├── .gitignore │ └── w │ │ ├── .gitignore │ │ └── w │ │ ├── .gitignore │ │ └── symbols │ │ └── .gitignore ├── x │ └── .gitignore ├── y │ ├── .gitignore │ └── a │ │ └── .gitignore └── z │ └── .gitignore ├── downloads └── .gitignore ├── import.sh ├── inputbreach └── .gitignore ├── make_brute_wordlist.sh ├── query.sh ├── requirements.txt └── sort.sh /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | adjust/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | wheels/ 24 | pip-wheel-metadata/ 25 | share/python-wheels/ 26 | *.egg-info/ 27 | .installed.cfg 28 | *.egg 29 | MANIFEST 30 | 31 | # PyInstaller 32 | # Usually these files are written by a python script from a template 33 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 34 | *.manifest 35 | *.spec 36 | 37 | # Installer logs 38 | pip-log.txt 39 | pip-delete-this-directory.txt 40 | 41 | # Unit test / coverage reports 42 | htmlcov/ 43 | .tox/ 44 | .nox/ 45 | .coverage 46 | .coverage.* 47 | .cache 48 | nosetests.xml 49 | coverage.xml 50 | *.cover 51 | *.py,cover 52 | .hypothesis/ 53 | .pytest_cache/ 54 | 55 | # Translations 56 | *.mo 57 | *.pot 58 | 59 | # Django stuff: 60 | *.log 61 | local_settings.py 62 | db.sqlite3 63 | db.sqlite3-journal 64 | 65 | # Flask stuff: 66 | instance/ 67 | .webassets-cache 68 | 69 | # Scrapy stuff: 70 | .scrapy 71 | 72 | # Sphinx documentation 73 | docs/_build/ 74 | 75 | # PyBuilder 76 | target/ 77 | 78 | # Jupyter Notebook 79 | .ipynb_checkpoints 80 | 81 | # IPython 82 | profile_default/ 83 | ipython_config.py 84 | 85 | # pyenv 86 | .python-version 87 | 88 | # pipenv 89 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 90 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 91 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 92 | # install all needed dependencies. 93 | #Pipfile.lock 94 | 95 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 96 | __pypackages__/ 97 | 98 | # Celery stuff 99 | celerybeat-schedule 100 | celerybeat.pid 101 | 102 | # SageMath parsed files 103 | *.sage.py 104 | 105 | # Environments 106 | .env 107 | .venv 108 | env/ 109 | venv/ 110 | ENV/ 111 | env.bak/ 112 | venv.bak/ 113 | 114 | # Spyder project settings 115 | .spyderproject 116 | .spyproject 117 | 118 | # Rope project settings 119 | .ropeproject 120 | 121 | # mkdocs documentation 122 | /site 123 | 124 | # mypy 125 | .mypy_cache/ 126 | .dmypy.json 127 | dmypy.json 128 | 129 | # Pyre type checker 130 | .pyre/ 131 | 132 | # data dirs 133 | data/* 134 | data/1/* 135 | data/2/* 136 | data/a/* 137 | data/a/b/* 138 | data/a/d/* 139 | data/a/l/* 140 | data/a/l/e/* 141 | data/a/l/e/x/* 142 | data/a/m/* 143 | data/a/n/* 144 | data/a/n/d/* 145 | data/a/n/d/r/* 146 | data/a/n/d/r/e/* 147 | data/a/r/* 148 | data/a/s/* 149 | data/b/* 150 | data/b/a/* 151 | data/b/e/* 152 | data/b/i/* 153 | data/b/l/* 154 | data/b/o/* 155 | data/b/r/* 156 | data/b/u/* 157 | data/c/* 158 | data/c/a/* 159 | data/c/a/r/* 160 | data/c/h/* 161 | data/c/h/r/* 162 | data/c/o/* 163 | data/c/r/* 164 | data/d/* 165 | data/d/a/* 166 | data/d/a/n/* 167 | data/d/e/* 168 | data/d/i/* 169 | data/d/o/* 170 | data/d/r/* 171 | data/e/* 172 | data/e/l/* 173 | data/f/* 174 | data/f/a/* 175 | data/f/r/* 176 | data/g/* 177 | data/g/a/* 178 | data/g/e/* 179 | data/g/i/* 180 | data/g/o/* 181 | data/g/r/* 182 | data/h/* 183 | data/h/a/* 184 | data/h/e/* 185 | data/h/o/* 186 | data/i/* 187 | data/i/n/* 188 | data/j/* 189 | data/j/a/* 190 | data/j/e/* 191 | data/j/o/* 192 | data/j/u/* 193 | data/k/* 194 | data/k/a/* 195 | data/k/e/* 196 | data/k/i/* 197 | data/k/o/* 198 | data/k/r/* 199 | data/l/* 200 | data/l/a/* 201 | data/l/e/* 202 | data/l/i/* 203 | data/l/o/* 204 | data/l/u/* 205 | data/m/* 206 | data/m/a/* 207 | data/m/a/r/* 208 | data/m/a/r/i/* 209 | data/m/e/* 210 | data/m/i/* 211 | data/m/o/* 212 | data/m/u/* 213 | data/n/* 214 | data/n/a/* 215 | data/n/a/t/* 216 | data/n/e/* 217 | data/n/i/* 218 | data/n/o/* 219 | data/o/* 220 | data/o/l/* 221 | data/p/* 222 | data/p/a/* 223 | data/p/e/* 224 | data/p/i/* 225 | data/p/o/* 226 | data/p/r/* 227 | data/q/* 228 | data/r/* 229 | data/r/a/* 230 | data/r/e/* 231 | data/r/i/* 232 | data/r/o/* 233 | data/s/* 234 | data/s/a/* 235 | data/s/e/* 236 | data/s/e/r/* 237 | data/s/h/* 238 | data/s/h/a/* 239 | data/s/i/* 240 | data/s/o/* 241 | data/s/t/* 242 | data/s/t/e/* 243 | data/s/u/* 244 | data/t/* 245 | data/t/a/* 246 | data/t/e/* 247 | data/t/h/* 248 | data/t/i/* 249 | data/t/o/* 250 | data/t/r/* 251 | data/u/* 252 | data/v/* 253 | data/v/a/* 254 | data/v/i/* 255 | data/w/* 256 | data/w/w/* 257 | data/w/w/w/* 258 | data/w/w/w/symbols/* 259 | data/x/* 260 | data/y/* 261 | data/y/a/* 262 | data/z/* 263 | inputbreach/* 264 | 265 | # debug and logs 266 | downloads/* 267 | imported.log 268 | downloaded.log 269 | debug.log 270 | nohup.out 271 | notes.txt 272 | brute_wordlist.txt 273 | temp 274 | 275 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # combotools 2 | A collection of tools to work on username:password combo lists 3 | 4 | Many of the tools listed here were taken from CompilationOfManyBreaches (COMB) project and further adapted and developed on, credits go to the rightfull owners whoever they may be. 5 | 6 | I like the simplicity of them, they are easy to read, understand and rely solely on the highly efficient linux standard binaries. 7 | 8 | ## Quick Start 9 | First download this project: 10 | ``` 11 | git clone https://github.com/Megarushing/combotools.git 12 | cd combotools 13 | ``` 14 | Mac OSX only - to use this I recommend installing homebrew and doing first: 15 | ``` 16 | brew install coreutils 17 | ``` 18 | Then get started 19 | ``` 20 | pip install -r requirements.txt 21 | python combocrawler.py 22 | ./import.sh 23 | ``` 24 | Count your booty 25 | ``` 26 | ./count_total.sh 27 | ``` 28 | And query away 29 | ``` 30 | ./query.sh mega 31 | ``` 32 | 33 | ## Tools 34 | ### import.sh 35 | Imports files from the `inputbreach` folder and organizes into the `data` folder 36 | ### sort.sh 37 | Sorts files in `data` folder and removes duplicates 38 | ### count_total.sh 39 | Counts how many username:password combos we have imported in the `data` 40 | ### combocrawler.py 41 | Python script to scrape after new combos in anonfiles using google search, it also downloads and extracts them into `inputbreach` folder 42 | ### query.sh 43 | Finds combo lines that start with the text provided in the parameters, i.e `./query.sh test@test.com` 44 | ### make_brute_wordlist.sh 45 | Makes a password list sorted by prominence of each individual password, ideal for using as a wordlist in bruteforcers 46 | 47 | ## Disclamer 48 | Use this only for threat analysis and educational purposes, please. 49 | -------------------------------------------------------------------------------- /combocrawler.py: -------------------------------------------------------------------------------- 1 | # crawls and downloads multiple anonfiles user:pass combo files 2 | from googlesearch import search 3 | from bs4 import BeautifulSoup 4 | import requests 5 | import sys 6 | import os 7 | from pyunpack import Archive 8 | from shutil import copyfile 9 | if sys.version_info >= (3, 0): #Python 3 10 | import urllib.request as request 11 | from urllib.parse import quote 12 | else: 13 | import urllib as request 14 | from urllib import quote 15 | import urllib 16 | import time 17 | import urllib3 18 | urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) 19 | 20 | SEARCHFOR = ["\"combo\" site:anonfile.com","\"Combo\" site:anonfile.com"] 21 | DOWNLOADED = "downloaded.log" 22 | DOWNPATH = "downloads" 23 | DESTPATH = "inputbreach" 24 | 25 | def extract(path): 26 | try: 27 | if path.lower().endswith(".txt"): 28 | copyfile(path,os.path.join(DESTPATH,os.path.basename(path))) 29 | else: 30 | Archive(path).extractall(DESTPATH) 31 | except Exception as e: 32 | print("Error extracting {}:{}".format(path,e)) 33 | 34 | done = [] 35 | #scrape anonfile and downloads 36 | try: 37 | f = open(DOWNLOADED,"r") 38 | done = f.readlines() 39 | f.close() 40 | except: 41 | pass 42 | 43 | f = open(DOWNLOADED,"a+") 44 | for s in SEARCHFOR: 45 | query = search(s) 46 | i = 0 47 | for url in query: 48 | dest = url.split("/")[-1].strip().strip("'") 49 | if not dest+"\n" in done: 50 | try: 51 | r = requests.get(url,verify=False) 52 | html = BeautifulSoup(r.text,"html.parser") 53 | down = html.find(id="download-url") 54 | down = quote(down.get("href").strip()).replace("%3A//","://") 55 | print("downloading: {}".format(down)) 56 | path = os.path.join(DOWNPATH,str(i)+dest) 57 | request.urlretrieve(down,path) 58 | extract(path) 59 | os.remove(path) 60 | f.write(dest+"\n") 61 | i+=1 62 | f.flush() 63 | except Exception as e: 64 | print("Error in {}:{}".format(url,e)) 65 | time.sleep(10) # avoids google ban 66 | 67 | f.close() 68 | -------------------------------------------------------------------------------- /count_total.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #attempts to trap signints and stop the script 3 | trap ' 4 | trap - INT # restore default INT handler 5 | kill -s INT "$$" 6 | ' INT 7 | #if osx coreutils tools are found use them for compatibility 8 | #this replaces sort with gsort, date with gdate and so on... 9 | for c in "sort" "date" "du" "tee" "cut" "wc" "uniq" 10 | do if command -v g$c &> /dev/null 11 | then 12 | eval $(echo $c | tr '[:lower:]' '[:upper:]')=g$c 13 | else 14 | eval $(echo $c | tr '[:lower:]' '[:upper:]')=$c 15 | fi 16 | done 17 | 18 | total=0; 19 | find data -not -path '*/\.*' | $SORT | while read in; 20 | do 21 | if [ -f "$in" ]; then 22 | count=$($WC -l "$in" | $CUT -d' ' -f1); 23 | total=$((total + count)); 24 | echo -n "[*] $in - " | $CUT -z -b1-22 25 | echo -n "$count " | $CUT -z -b1-10 26 | echo "(total: $total)"; 27 | fi; 28 | done 29 | 30 | -------------------------------------------------------------------------------- /data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/1/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/2/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/a/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/a/b/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/a/d/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/a/l/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/a/l/e/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/a/l/e/x/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/a/m/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/a/n/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/a/n/d/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/a/n/d/r/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/a/n/d/r/e/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/a/r/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/a/s/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/b/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/b/a/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/b/e/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/b/i/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/b/l/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/b/o/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/b/r/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/b/u/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/c/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/c/a/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/c/a/r/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/c/h/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/c/h/r/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/c/o/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/c/r/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/d/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/d/a/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/d/a/n/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/d/e/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/d/i/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/d/o/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/d/r/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/e/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/e/l/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/f/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/f/a/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/f/r/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/g/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/g/a/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/g/e/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/g/i/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/g/o/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/g/r/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/h/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/h/a/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/h/e/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/h/o/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/i/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/i/n/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/j/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/j/a/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/j/e/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/j/o/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/j/u/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/k/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/k/a/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/k/e/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/k/i/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/k/o/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/k/r/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/l/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/l/a/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/l/e/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/l/i/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/l/o/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/l/u/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/m/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/m/a/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/m/a/r/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/m/a/r/i/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/m/e/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/m/i/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/m/o/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/m/u/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/n/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/n/a/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/n/a/t/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/n/e/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/n/i/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/n/o/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/o/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/o/l/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/p/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/p/a/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/p/e/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/p/i/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/p/o/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/p/r/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/q/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/r/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/r/a/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/r/e/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/r/i/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/r/o/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/s/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/s/a/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/s/e/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/s/e/r/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/s/h/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/s/h/a/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/s/i/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/s/o/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/s/t/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/s/t/e/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/s/u/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/t/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/t/a/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/t/e/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/t/h/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/t/i/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/t/o/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/t/r/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/u/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/v/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/v/a/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/v/i/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/w/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/w/w/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/w/w/w/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/w/w/w/symbols/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/x/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/y/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/y/a/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /data/z/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /downloads/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /import.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #attempts to trap signints and stop the script 3 | trap ' 4 | trap - INT # restore default INT handler 5 | kill -s INT "$$" 6 | ' INT 7 | #if osx coreutils tools are found use them for compatibility 8 | #this replaces sort with gsort, date with gdate and so on... 9 | for c in "sort" "date" "du" "tee" "cut" "wc" "uniq" 10 | do if command -v g$c &> /dev/null 11 | then 12 | eval $(echo $c | tr '[:lower:]' '[:upper:]')=g$c 13 | else 14 | eval $(echo $c | tr '[:lower:]' '[:upper:]')=$c 15 | fi 16 | done 17 | 18 | # bootstraps file structure for current tree 19 | filenames="0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z symbols" 20 | 21 | for i in $filenames 22 | do for f in $(find data -type d | sed "s/$/\/$i/") 23 | do if ! [[ -e $f ]]; 24 | then touch $f 25 | fi 26 | done 27 | done 28 | 29 | #script start 30 | N=16 #number of simultaneous processes 31 | ls ./inputbreach |$SORT| sed 's/^/.\/inputbreach\//' | while read inputfile; 32 | do 33 | trap 'break' INT #in case of ctrl-c break the loop 34 | echo "[*] Checking breach $inputfile checksum..." | $TEE -a debug.log 35 | shasum="$(sha256sum "$inputfile" | $CUT -d' ' -f1)" 36 | if [ "$(cat imported.log | grep "$shasum" | $WC -l)" == "0" ]; then 37 | cat imported.log | grep "$shasum" | $TEE -a debug.log 38 | 39 | # importing to data folder 40 | find data -not -path '*/\.*' | $SORT | (while read path 41 | do 42 | ((i=i%N)); ((i++==0)) && wait 43 | ( 44 | if [ -f $path ]; then 45 | filter=$(echo "$path" | sed 's/^.*data//' | sed 's#/##g' | sed 's/symbols$//g' ) 46 | if [ "$(echo "$path" | grep "symbols$")" == "" ]; then 47 | echo "Filter: $filter Path: $path" | $TEE -a debug.log 48 | grep -ai "^$filter\w*\b" "$inputfile" | LC_CTYPE=C sed 's/\r//g' | grep -a @ >> $path | $TEE -a debug.log 49 | else 50 | echo "Filter: $filter[symbol] Path: $path" | $TEE -a debug.log 51 | grep -ai "^$filter\w*\b" "$inputfile" | grep -aiv "^$filter[a-zA-Z0-9]\w*\b" | LC_CTYPE=C sed 's/\r//g' | grep -a @ >> $path | $TEE -a debug.log 52 | fi 53 | fi 54 | ) & #parallelization - each data file will spawn a separate process 55 | done && wait) #for all imports to be done 56 | 57 | echo "[*] Logging sha256sum into imported.log..." | $TEE -a debug.log 58 | echo "$($DATE --rfc-3339=date): $(sha256sum "$inputfile") $($DU -h "$inputfile"|$CUT -d' ' -f1)" | $TEE -a imported.log | $TEE -a debug.log 59 | echo "------------------------------------------" | $TEE -a debug.log 60 | 61 | echo "[*] Removing breach file $inputfile..." | $TEE -a debug.log 62 | rm "$inputfile" | $TEE -a debug.log 63 | else 64 | echo "[*] This breach is already imported." | $TEE -a debug.log 65 | cat imported.log | grep "$shasum" | $TEE -a debug.log 66 | echo "[*] Removing breach file $inputfile..." | $TEE -a debug.log 67 | rm "$inputfile" | $TEE -a debug.log 68 | echo "------------------------------------" | $TEE -a debug.log 69 | fi 70 | done 71 | 72 | -------------------------------------------------------------------------------- /inputbreach/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /make_brute_wordlist.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #attempts to trap signints and stop the script 3 | trap ' 4 | trap - INT # restore default INT handler 5 | kill -s INT "$$" 6 | ' INT 7 | #if osx coreutils tools are found use them for compatibility 8 | #this replaces sort with gsort, date with gdate and so on... 9 | for c in "sort" "date" "du" "tee" "cut" "wc" "uniq" 10 | do if command -v g$c &> /dev/null 11 | then 12 | eval $(echo $c | tr '[:lower:]' '[:upper:]')=g$c 13 | else 14 | eval $(echo $c | tr '[:lower:]' '[:upper:]')=$c 15 | fi 16 | done 17 | 18 | out=brute_wordlist.txt 19 | 20 | echo "" > $out 21 | find data -type f -not -path '*/\.*' | $SORT | while read path; 22 | do 23 | if [ -f "$path" ]; then 24 | echo "Parsing: $path" | $TEE -a debug.log 25 | cat $path | $CUT -s -f2- -d":" >> $out 26 | fi; 27 | done 28 | 29 | echo "Sorting passwords by usage..." | $TEE -a debug.log 30 | $SORT $out | $UNIQ -c | $SORT -nr > temp 31 | echo "Cleaning up..." | $TEE -a debug.log 32 | cat temp | sed -e 's/^[[:space:]]*//' | $CUT -s -f2- -d" " > $out 33 | rm temp 34 | 35 | -------------------------------------------------------------------------------- /query.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #attempts to trap signints and stop the script 3 | trap ' 4 | trap - INT # restore default INT handler 5 | kill -s INT "$$" 6 | ' INT 7 | #if osx coreutils tools are found use them for compatibility 8 | #this replaces sort with gsort, date with gdate and so on... 9 | for c in "sort" "date" "du" "tee" "cut" "wc" "uniq" 10 | do if command -v g$c &> /dev/null 11 | then 12 | eval $(echo $c | tr '[:lower:]' '[:upper:]')=g$c 13 | else 14 | eval $(echo $c | tr '[:lower:]' '[:upper:]')=$c 15 | fi 16 | done 17 | 18 | dir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) 19 | 20 | if [ "$1" != "" ]; then 21 | letter1=$(echo ${1} | $CUT -b1) 22 | if [[ $letter1 == [a-zA-Z0-9] ]]; then 23 | if [ -f "$dir/data/$letter1" ]; then 24 | grep -ai "^$1" "$dir/data/$letter1" 25 | else 26 | letter2=$(echo ${1} | $CUT -b2) 27 | if [[ $letter2 == [a-zA-Z0-9] ]]; then 28 | if [ -f "$dir/data/$letter1/$letter2" ]; then 29 | grep -ai "^$1" "$dir/data/$letter1/$letter2" 30 | else 31 | letter3=$(echo ${1} | $CUT -b3) 32 | if [[ $letter3 == [a-zA-Z0-9] ]]; then 33 | if [ -f "$dir/data/$letter1/$letter2/$letter3" ]; then 34 | grep -ai "^$1" "$dir/data/$letter1/$letter2/$letter3" 35 | fi 36 | else 37 | if [ -f "$dir/data/$letter1/$letter2/symbols" ]; then 38 | grep -ai "^$1" "$dir/data/$letter1/$letter2/symbols" 39 | fi 40 | fi 41 | fi 42 | else 43 | if [ -f "$dir/data/$letter1/symbols" ]; then 44 | grep -ai "^$1" "$dir/data/$letter1/symbols" 45 | fi 46 | fi 47 | fi 48 | else 49 | if [ -f "$dir/data/symbols" ]; then 50 | grep -ai "^$1" "$dir/data/symbols" 51 | fi 52 | fi 53 | else 54 | echo "[*] Example: ./query name@domain.com" 55 | fi 56 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | beautifulsoup4==4.9.1 2 | html5lib==1.1 3 | google==3.0.0 4 | googlesearch-python 5 | lxml==4.6.3 6 | pyunpack 7 | patool==1.12 8 | -------------------------------------------------------------------------------- /sort.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #attempts to trap signints and stop the script 3 | trap ' 4 | trap - INT # restore default INT handler 5 | kill -s INT "$$" 6 | ' INT 7 | #if osx coreutils tools are found use them for compatibility 8 | #this replaces sort with gsort, date with gdate and so on... 9 | for c in "sort" "date" "du" "tee" "cut" "wc" "uniq" 10 | do if command -v g$c &> /dev/null 11 | then 12 | eval $(echo $c | tr '[:lower:]' '[:upper:]')=g$c 13 | else 14 | eval $(echo $c | tr '[:lower:]' '[:upper:]')=$c 15 | fi 16 | done 17 | 18 | # data folder sorting 19 | echo "[*] sorting breaches..." | $TEE -a debug.log 20 | find data -not -path '*/\.*' | $SORT | while read path; 21 | do 22 | if [ -f $path ]; then 23 | echo "[*] sorting $path" | $TEE -a debug.log 24 | $SORT $path -u -o $path\_ 25 | mv $path\_ $path 26 | fi 27 | done 28 | --------------------------------------------------------------------------------