Open Inc0nce1vable opened 7 years ago
Try taking a look at this pull request and analyze the changes he/she made. However, I am not sure if this works since it is still an open pull request. I might try this code myself when I have some free time.
Also, if you want to try doing it yourself without relying on someone else's pending merge, you can try doing a search for the keyword "leet" in cuppy.py. add the desired characters to the cupp.cfg and save the file, then go to cuppy.py and add the appropriate code corresponding characters that you added in cupp.cfg. The code that you want to edit will usually have the following notes above it (without quotes): "# if you want to add more leet chars, you will need to add more lines in cupp.cfg too..."
Hi guys, Just thought I'd let you know that when I try to add to leet mode, cupp completely disregards the new input. I have edited both the config file and the cupp.py file. I am trying to add l=1 and a=@ but also keeping the default values there too.
Here is the code in the cupp.cfg and cupp.py file if you guys need it. Also I am aware that the entry for a=@ isn't in the code, but what is the point if I can't get it to work with l=1
Also sorry for the super long post, if there is a way to upload the files then I would do it. (there probably is im just new here lol)
cupp.cfg `# [ cupp.cfg ] #
This is configuration file for cupp.py
#
There are no options to configure the application within it. The app reads it,
does not change it. I'm hoping you'll figure out how to looking at this.
[ 1337 mode ]
If you think this default settings are not right,
you can change it for yourself. For example if you
don't like a=4, just change it to a=@ :)
If you don't need some chars, just comment it! Duplicates are allowed too.
For adding chars, you might need to add some lines in cupp.py...
[years] years = 2008,2009,2010,2011,2012,2013,2014,2015,2016,2017
[leet] a=4 i=1 e=3 t=7 o=0 s=5 g=9 z=2 l=1
[ Special chars ] for adding some pwnsauce! Remove or add as necessary,
separated by comma
[specialchars] chars=!,@,'#',$,%%,&,*
[ Random years ] take it as much as you need!
[ Random numbers ]
In this default setting, numbers from 0 to 100 will be added to all words
compiled by cupp.py
[nums] from=0 to=100
[ Word length shaping ]
This setting will exclude words from compiled wordlist that are shorter
than [wcfrom] and longer than [wcto].
wcfrom=5 wcto=12
[ Threshold ]
Threshold setting for word concatenations parsed from existing wordlist
(using -w option).
For example, from 200 words CUPP will compile 200*200=40,000 new words.
Increasing this level may cause high memory consumption, be careful.
threshold=200
[ Wordlist config ]
[alecto] alectourl=http://www.helith.net/projects/alecto/alectodb.csv.gz
[downloader] ftpname=FUNET ftpurl=ftp.funet.fi ftppath=/pub/unix/security/passwd/crack/dictionaries/ ftpuser=anonymous ftppass=cupp3`
cupp.py `#!/usr/bin/python #
[Program]
#
CUPP 3.1.0-alpha
Common User Passwords Profiler
# # #
[Author]
#
Muris Kurgas aka j0rgan
j0rgan [at] remote-exploit [dot] org
http://www.remote-exploit.org
http://www.azuzi.me
# # #
[License]
#
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
any later version.
#
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
#
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
See 'docs/LICENSE' for more information.
import sys import os import ftplib import ConfigParser import urllib import gzip import csv
Reading configuration file...
config = ConfigParser.ConfigParser() config.read('/etc/cupp.cfg')
years = config.get('years', 'years').split(',') chars = config.get('specialchars', 'chars').split(',')
numfrom = config.getint('nums','from') numto = config.getint('nums','to')
wcfrom = config.getint('nums','wcfrom') wcto = config.getint('nums','wcto')
threshold = config.getint('nums','threshold')
1337 mode configs, well you can add more lines if you add it to config file too.
You will need to add more lines in two places in cupp.py code as well...
a = config.get('leet','a') i = config.get('leet','i') e = config.get('leet','e') t = config.get('leet','t') o = config.get('leet','o') s = config.get('leet','s') g = config.get('leet','g') z = config.get('leet','z') l = config.get('leet','l')
for concatenations...
def concats(seq, start, stop): for mystr in seq: for num in xrange(start, stop): yield mystr + str(num)
for sorting and making combinations...
def komb(seq, start, special = ""): for mystr in seq: for mystr1 in start: yield mystr + special + mystr1
print list to file counting words
def print_to_file(filename, unique_list_finished): f = open ( filename, 'w' ) unique_list_finished.sort() f.write (os.linesep.join(unique_list_finished)) f = open ( filename, 'r' ) lines = 0 for line in f: lines += 1 f.close() print "[+] Saving dictionary to \033[1;31m"+filename+"\033[1;m, counting \033[1;31m"+str(lines)+" words.\033[1;m" print "[+] Now load your pistolero with \033[1;31m"+filename+"\033[1;m and shoot! Good luck!"
if len(sys.argv) < 2 or sys.argv[1] == '-h': print " ___ " print " \033[07m cupp.py! \033[27m # Common" print " \ # User" print " \ \033[1;31m,,\033[1;m # Passwords" print " \ \033[1;31m(\033[1;moo\033[1;31m)__\033[1;m # Profiler" print " \033[1;31m(__) )\ \033[1;m " print " \033[1;31m ||--|| \033[1;m\033[05m*\033[25m\033[1;m [ Muris Kurgas | j0rgan@remote-exploit.org ]\r\n\r\n"
elif sys.argv[1] == '-v': print "\r\n \033[1;31m[ cupp.py ] v3.1.0-alpha\033[1;m\r\n" print " Hacked up by j0rgan - j0rgan@remote-exploit.org" print " http://www.remote-exploit.org\r\n" print " Take a look ./README.md file for more info about the program\r\n" exit()
elif sys.argv[1] == '-w': if len(sys.argv) < 3: print "\r\n[Usage]: "+sys.argv[0]+" -w [FILENAME]\r\n" exit() fajl = open(sys.argv[2], "r") listic = fajl.readlines() linije = 0 for line in listic: linije += 1
elif sys.argv[1] == '-i': print "\r\n[+] Insert the informations about the victim to make a dictionary" print "[+] If you don't know all the info, just hit enter when asked! ;)\r\n"
We need some informations first!
Now me must do some string modifications...
Birthdays first
elif sys.argv[1] == '-a': url = config.get('alecto','alectourl')
elif sys.argv[1] == '-l':
else: print "\r\n[Usage]: "+sys.argv[0] +" [OPTIONS] \r\n" print "[Help]: "+sys.argv[0] +" -h\r\n" exit()`