Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
339 changes: 2 additions & 337 deletions cupp.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import urllib.parse
import urllib.request
import time
from wordlist_generator import Generator as wg

__author__ = "Mebus"
__license__ = "GPL"
Expand Down Expand Up @@ -370,343 +371,7 @@ def interactive():
).lower()
profile["leetmode"] = input("> Leet mode? (i.e. leet = 1337) Y/[N]: ").lower()

generate_wordlist_from_profile(profile) # generate the wordlist


def generate_wordlist_from_profile(profile):
""" Generates a wordlist from a given profile """

chars = CONFIG["global"]["chars"]
years = CONFIG["global"]["years"]
numfrom = CONFIG["global"]["numfrom"]
numto = CONFIG["global"]["numto"]

profile["spechars"] = []

if profile["spechars1"] == "y":
for spec1 in chars:
profile["spechars"].append(spec1)
for spec2 in chars:
profile["spechars"].append(spec1 + spec2)
for spec3 in chars:
profile["spechars"].append(spec1 + spec2 + spec3)

print("\r\n[+] Now making a dictionary...")

# Now me must do some string modifications...

# Birthdays first

birthdate_yy = profile["birthdate"][-2:]
birthdate_yyy = profile["birthdate"][-3:]
birthdate_yyyy = profile["birthdate"][-4:]
birthdate_xd = profile["birthdate"][1:2]
birthdate_xm = profile["birthdate"][3:4]
birthdate_dd = profile["birthdate"][:2]
birthdate_mm = profile["birthdate"][2:4]

wifeb_yy = profile["wifeb"][-2:]
wifeb_yyy = profile["wifeb"][-3:]
wifeb_yyyy = profile["wifeb"][-4:]
wifeb_xd = profile["wifeb"][1:2]
wifeb_xm = profile["wifeb"][3:4]
wifeb_dd = profile["wifeb"][:2]
wifeb_mm = profile["wifeb"][2:4]

kidb_yy = profile["kidb"][-2:]
kidb_yyy = profile["kidb"][-3:]
kidb_yyyy = profile["kidb"][-4:]
kidb_xd = profile["kidb"][1:2]
kidb_xm = profile["kidb"][3:4]
kidb_dd = profile["kidb"][:2]
kidb_mm = profile["kidb"][2:4]

# Convert first letters to uppercase...

nameup = profile["name"].title()
surnameup = profile["surname"].title()
nickup = profile["nick"].title()
wifeup = profile["wife"].title()
wifenup = profile["wifen"].title()
kidup = profile["kid"].title()
kidnup = profile["kidn"].title()
petup = profile["pet"].title()
companyup = profile["company"].title()

wordsup = []
wordsup = list(map(str.title, profile["words"]))

word = profile["words"] + wordsup

# reverse a name

rev_name = profile["name"][::-1]
rev_nameup = nameup[::-1]
rev_nick = profile["nick"][::-1]
rev_nickup = nickup[::-1]
rev_wife = profile["wife"][::-1]
rev_wifeup = wifeup[::-1]
rev_kid = profile["kid"][::-1]
rev_kidup = kidup[::-1]

reverse = [
rev_name,
rev_nameup,
rev_nick,
rev_nickup,
rev_wife,
rev_wifeup,
rev_kid,
rev_kidup,
]
rev_n = [rev_name, rev_nameup, rev_nick, rev_nickup]
rev_w = [rev_wife, rev_wifeup]
rev_k = [rev_kid, rev_kidup]
# Let's do some serious work! This will be a mess of code, but... who cares? :)

# Birthdays combinations

bds = [
birthdate_yy,
birthdate_yyy,
birthdate_yyyy,
birthdate_xd,
birthdate_xm,
birthdate_dd,
birthdate_mm,
]

bdss = []

for bds1 in bds:
bdss.append(bds1)
for bds2 in bds:
if bds.index(bds1) != bds.index(bds2):
bdss.append(bds1 + bds2)
for bds3 in bds:
if (
bds.index(bds1) != bds.index(bds2)
and bds.index(bds2) != bds.index(bds3)
and bds.index(bds1) != bds.index(bds3)
):
bdss.append(bds1 + bds2 + bds3)

# For a woman...
wbds = [wifeb_yy, wifeb_yyy, wifeb_yyyy, wifeb_xd, wifeb_xm, wifeb_dd, wifeb_mm]

wbdss = []

for wbds1 in wbds:
wbdss.append(wbds1)
for wbds2 in wbds:
if wbds.index(wbds1) != wbds.index(wbds2):
wbdss.append(wbds1 + wbds2)
for wbds3 in wbds:
if (
wbds.index(wbds1) != wbds.index(wbds2)
and wbds.index(wbds2) != wbds.index(wbds3)
and wbds.index(wbds1) != wbds.index(wbds3)
):
wbdss.append(wbds1 + wbds2 + wbds3)

# and a child...
kbds = [kidb_yy, kidb_yyy, kidb_yyyy, kidb_xd, kidb_xm, kidb_dd, kidb_mm]

kbdss = []

for kbds1 in kbds:
kbdss.append(kbds1)
for kbds2 in kbds:
if kbds.index(kbds1) != kbds.index(kbds2):
kbdss.append(kbds1 + kbds2)
for kbds3 in kbds:
if (
kbds.index(kbds1) != kbds.index(kbds2)
and kbds.index(kbds2) != kbds.index(kbds3)
and kbds.index(kbds1) != kbds.index(kbds3)
):
kbdss.append(kbds1 + kbds2 + kbds3)

# string combinations....

kombinaac = [profile["pet"], petup, profile["company"], companyup]

kombina = [
profile["name"],
profile["surname"],
profile["nick"],
nameup,
surnameup,
nickup,
]

kombinaw = [
profile["wife"],
profile["wifen"],
wifeup,
wifenup,
profile["surname"],
surnameup,
]

kombinak = [
profile["kid"],
profile["kidn"],
kidup,
kidnup,
profile["surname"],
surnameup,
]

kombinaa = []
for kombina1 in kombina:
kombinaa.append(kombina1)
for kombina2 in kombina:
if kombina.index(kombina1) != kombina.index(kombina2) and kombina.index(
kombina1.title()
) != kombina.index(kombina2.title()):
kombinaa.append(kombina1 + kombina2)

kombinaaw = []
for kombina1 in kombinaw:
kombinaaw.append(kombina1)
for kombina2 in kombinaw:
if kombinaw.index(kombina1) != kombinaw.index(kombina2) and kombinaw.index(
kombina1.title()
) != kombinaw.index(kombina2.title()):
kombinaaw.append(kombina1 + kombina2)

kombinaak = []
for kombina1 in kombinak:
kombinaak.append(kombina1)
for kombina2 in kombinak:
if kombinak.index(kombina1) != kombinak.index(kombina2) and kombinak.index(
kombina1.title()
) != kombinak.index(kombina2.title()):
kombinaak.append(kombina1 + kombina2)

kombi = {}
kombi[1] = list(komb(kombinaa, bdss))
kombi[1] += list(komb(kombinaa, bdss, "_"))
kombi[2] = list(komb(kombinaaw, wbdss))
kombi[2] += list(komb(kombinaaw, wbdss, "_"))
kombi[3] = list(komb(kombinaak, kbdss))
kombi[3] += list(komb(kombinaak, kbdss, "_"))
kombi[4] = list(komb(kombinaa, years))
kombi[4] += list(komb(kombinaa, years, "_"))
kombi[5] = list(komb(kombinaac, years))
kombi[5] += list(komb(kombinaac, years, "_"))
kombi[6] = list(komb(kombinaaw, years))
kombi[6] += list(komb(kombinaaw, years, "_"))
kombi[7] = list(komb(kombinaak, years))
kombi[7] += list(komb(kombinaak, years, "_"))
kombi[8] = list(komb(word, bdss))
kombi[8] += list(komb(word, bdss, "_"))
kombi[9] = list(komb(word, wbdss))
kombi[9] += list(komb(word, wbdss, "_"))
kombi[10] = list(komb(word, kbdss))
kombi[10] += list(komb(word, kbdss, "_"))
kombi[11] = list(komb(word, years))
kombi[11] += list(komb(word, years, "_"))
kombi[12] = [""]
kombi[13] = [""]
kombi[14] = [""]
kombi[15] = [""]
kombi[16] = [""]
kombi[21] = [""]
if profile["randnum"] == "y":
kombi[12] = list(concats(word, numfrom, numto))
kombi[13] = list(concats(kombinaa, numfrom, numto))
kombi[14] = list(concats(kombinaac, numfrom, numto))
kombi[15] = list(concats(kombinaaw, numfrom, numto))
kombi[16] = list(concats(kombinaak, numfrom, numto))
kombi[21] = list(concats(reverse, numfrom, numto))
kombi[17] = list(komb(reverse, years))
kombi[17] += list(komb(reverse, years, "_"))
kombi[18] = list(komb(rev_w, wbdss))
kombi[18] += list(komb(rev_w, wbdss, "_"))
kombi[19] = list(komb(rev_k, kbdss))
kombi[19] += list(komb(rev_k, kbdss, "_"))
kombi[20] = list(komb(rev_n, bdss))
kombi[20] += list(komb(rev_n, bdss, "_"))
komb001 = [""]
komb002 = [""]
komb003 = [""]
komb004 = [""]
komb005 = [""]
komb006 = [""]
if len(profile["spechars"]) > 0:
komb001 = list(komb(kombinaa, profile["spechars"]))
komb002 = list(komb(kombinaac, profile["spechars"]))
komb003 = list(komb(kombinaaw, profile["spechars"]))
komb004 = list(komb(kombinaak, profile["spechars"]))
komb005 = list(komb(word, profile["spechars"]))
komb006 = list(komb(reverse, profile["spechars"]))

print("[+] Sorting list and removing duplicates...")

komb_unique = {}
for i in range(1, 22):
komb_unique[i] = list(dict.fromkeys(kombi[i]).keys())

komb_unique01 = list(dict.fromkeys(kombinaa).keys())
komb_unique02 = list(dict.fromkeys(kombinaac).keys())
komb_unique03 = list(dict.fromkeys(kombinaaw).keys())
komb_unique04 = list(dict.fromkeys(kombinaak).keys())
komb_unique05 = list(dict.fromkeys(word).keys())
komb_unique07 = list(dict.fromkeys(komb001).keys())
komb_unique08 = list(dict.fromkeys(komb002).keys())
komb_unique09 = list(dict.fromkeys(komb003).keys())
komb_unique010 = list(dict.fromkeys(komb004).keys())
komb_unique011 = list(dict.fromkeys(komb005).keys())
komb_unique012 = list(dict.fromkeys(komb006).keys())

uniqlist = (
bdss
+ wbdss
+ kbdss
+ reverse
+ komb_unique01
+ komb_unique02
+ komb_unique03
+ komb_unique04
+ komb_unique05
)

for i in range(1, 21):
uniqlist += komb_unique[i]

uniqlist += (
komb_unique07
+ komb_unique08
+ komb_unique09
+ komb_unique010
+ komb_unique011
+ komb_unique012
)
unique_lista = list(dict.fromkeys(uniqlist).keys())
unique_leet = []
if profile["leetmode"] == "y":
for (
x
) in (
unique_lista
): # if you want to add more leet chars, you will need to add more lines in cupp.cfg too...

x = make_leet(x) # convert to leet
unique_leet.append(x)

unique_list = unique_lista + unique_leet

unique_list_finished = []
unique_list_finished = [
x
for x in unique_list
if len(x) < CONFIG["global"]["wcto"] and len(x) > CONFIG["global"]["wcfrom"]
]

print_to_file(profile["name"] + ".txt", unique_list_finished)

wg(profile, CONFIG) # generate the wordlist

def download_http(url, targetfile):
print("[+] Downloading " + targetfile + " from " + url + " ... ")
Expand Down
Loading