Why?

So, this isn't a new, groundbreaking tool. Tools used to combine wordlists have existed since... forever.
The problem is that I often find myself in the situation where I need a simple tool to create a combined wordlist, using either a prepend or append method.

This tool isn't created to handle big wordlists, so using this tool with huge wordlists like rockyou.txt will likely take forever.
So think of ListCombine as a tool you can use when you need to perform a targeted attack with small wordlists, password sprays etc.

Download: https://github.com/s1gh/ListCombine

Tool

As an example we have two wordlists: Wordlist1.txt and Wordlist2.txt.

  • Wordlist1.txt contains the 10 most common passwords of 2020
  • Wordlist2.txt contains the words we want to prepend or append to the other wordlist.
    This can be company name, year etc.
Wordlist1.txt
-------------
123456
123456789
qwerty
password
1234567
12345678
12345
iloveyou
111111
123123

Wordlist2.txt
-------------
2020
2020!
CompanyName
CompanyName!

We can now combine the two using either the prepend or append method.

Append

s1gh@kali:~$ ./ListCombine.py -w Wordlist1.txt -a Wordlist2.txt -o CombinedList.txt


▄█        ▄█     ▄████████     ███      ▄████████  ▄██████▄    ▄▄▄▄███▄▄▄▄   ▀█████████▄   ▄█  ███▄▄▄▄      ▄████████
███       ███    ███    ███ ▀█████████▄ ███    ███ ███    ███ ▄██▀▀▀███▀▀▀██▄   ███    ███ ███  ███▀▀▀██▄   ███    ███
███       ███▌   ███    █▀     ▀███▀▀██ ███    █▀  ███    ███ ███   ███   ███   ███    ███ ███▌ ███   ███   ███    █▀ 
███       ███▌   ███            ███   ▀ ███        ███    ███ ███   ███   ███  ▄███▄▄▄██▀  ███▌ ███   ███  ▄███▄▄▄    
███       ███▌ ▀███████████     ███     ███        ███    ███ ███   ███   ███ ▀▀███▀▀▀██▄  ███▌ ███   ███ ▀▀███▀▀▀    
███       ███           ███     ███     ███    █▄  ███    ███ ███   ███   ███   ███    ██▄ ███  ███   ███   ███    █▄ 
███▌    ▄ ███     ▄█    ███     ███     ███    ███ ███    ███ ███   ███   ███   ███    ███ ███  ███   ███   ███    ███
█████▄▄██ █▀    ▄████████▀     ▄████▀   ████████▀   ▀██████▀   ▀█   ███   █▀  ▄█████████▀  █▀    ▀█   █▀    ██████████
▀
                     Version: 1.0
                          By: s1gh


[*] Generating wordlist using method: Appending (This might take some time, depending on your wordlists...)
[*] Generated 40 passwords in 0.000031 seconds
[*] Wordlist written to: CombinedList.txt
[*] Size of wordlist: 635.0 Byte
[*] Enjoy your password spraying! :)
CombinedList.txt
----------------
1234562020
1234567892020
qwerty2020
password2020
12345672020
123456782020
123452020
iloveyou2020
1111112020
1231232020
1234562020!
1234567892020!
qwerty2020!
password2020!
12345672020!
123456782020!
123452020!
iloveyou2020!
1111112020!
1231232020!
123456CompanyName
123456789CompanyName
qwertyCompanyName
passwordCompanyName
1234567CompanyName
12345678CompanyName
12345CompanyName
iloveyouCompanyName
111111CompanyName
123123CompanyName
123456CompanyName!
123456789CompanyName!
qwertyCompanyName!
passwordCompanyName!
1234567CompanyName!
12345678CompanyName!
12345CompanyName!
iloveyouCompanyName!
111111CompanyName!
123123CompanyName!

Prepend

s1gh@kali:~$ ./ListCombine.py -w Wordlist1.txt -p Wordlist2.txt -o CombinedList.txt


▄█        ▄█     ▄████████     ███      ▄████████  ▄██████▄    ▄▄▄▄███▄▄▄▄   ▀█████████▄   ▄█  ███▄▄▄▄      ▄████████
███       ███    ███    ███ ▀█████████▄ ███    ███ ███    ███ ▄██▀▀▀███▀▀▀██▄   ███    ███ ███  ███▀▀▀██▄   ███    ███
███       ███▌   ███    █▀     ▀███▀▀██ ███    █▀  ███    ███ ███   ███   ███   ███    ███ ███▌ ███   ███   ███    █▀ 
███       ███▌   ███            ███   ▀ ███        ███    ███ ███   ███   ███  ▄███▄▄▄██▀  ███▌ ███   ███  ▄███▄▄▄    
███       ███▌ ▀███████████     ███     ███        ███    ███ ███   ███   ███ ▀▀███▀▀▀██▄  ███▌ ███   ███ ▀▀███▀▀▀    
███       ███           ███     ███     ███    █▄  ███    ███ ███   ███   ███   ███    ██▄ ███  ███   ███   ███    █▄ 
███▌    ▄ ███     ▄█    ███     ███     ███    ███ ███    ███ ███   ███   ███   ███    ███ ███  ███   ███   ███    ███
█████▄▄██ █▀    ▄████████▀     ▄████▀   ████████▀   ▀██████▀   ▀█   ███   █▀  ▄█████████▀  █▀    ▀█   █▀    ██████████
▀
                     Version: 1.0
                          By: s1gh


[*] Generating wordlist using method: Prepending (This might take some time, depending on your wordlists...)
[*] Generated 40 passwords in 0.000032 seconds
[*] Wordlist written to: CombinedList.txt
[*] Size of wordlist: 635.0 Byte
[*] Enjoy your password spraying! :)
CombinedList.txt
----------------
2020123456
2020123456789
2020qwerty
2020password
20201234567
202012345678
202012345
2020iloveyou
2020111111
2020123123
2020!123456
2020!123456789
2020!qwerty
2020!password
2020!1234567
2020!12345678
2020!12345
2020!iloveyou
2020!111111
2020!123123
CompanyName123456
CompanyName123456789
CompanyNameqwerty
CompanyNamepassword
CompanyName1234567
CompanyName12345678
CompanyName12345
CompanyNameiloveyou
CompanyName111111
CompanyName123123
CompanyName!123456
CompanyName!123456789
CompanyName!qwerty
CompanyName!password
CompanyName!1234567
CompanyName!12345678
CompanyName!12345
CompanyName!iloveyou
CompanyName!111111
CompanyName!123123

Prepend and Append

s1gh@kali:~$ ./ListCombine.py -w Wordlist1.txt -p Wordlist2.txt -a Wordlist2.txt -o CombinedList.txt


▄█        ▄█     ▄████████     ███      ▄████████  ▄██████▄    ▄▄▄▄███▄▄▄▄   ▀█████████▄   ▄█  ███▄▄▄▄      ▄████████
███       ███    ███    ███ ▀█████████▄ ███    ███ ███    ███ ▄██▀▀▀███▀▀▀██▄   ███    ███ ███  ███▀▀▀██▄   ███    ███
███       ███▌   ███    █▀     ▀███▀▀██ ███    █▀  ███    ███ ███   ███   ███   ███    ███ ███▌ ███   ███   ███    █▀ 
███       ███▌   ███            ███   ▀ ███        ███    ███ ███   ███   ███  ▄███▄▄▄██▀  ███▌ ███   ███  ▄███▄▄▄    
███       ███▌ ▀███████████     ███     ███        ███    ███ ███   ███   ███ ▀▀███▀▀▀██▄  ███▌ ███   ███ ▀▀███▀▀▀    
███       ███           ███     ███     ███    █▄  ███    ███ ███   ███   ███   ███    ██▄ ███  ███   ███   ███    █▄ 
███▌    ▄ ███     ▄█    ███     ███     ███    ███ ███    ███ ███   ███   ███   ███    ███ ███  ███   ███   ███    ███
█████▄▄██ █▀    ▄████████▀     ▄████▀   ████████▀   ▀██████▀   ▀█   ███   █▀  ▄█████████▀  █▀    ▀█   █▀    ██████████
▀
                     Version: 1.0
                          By: s1gh


[*] Generating wordlist using method: Prepending and Appending (This might take some time, depending on your wordlists...)
[*] Generated 160 passwords in 0.000133 seconds
[*] Wordlist written to: CombinedList.txt
[*] Size of wordlist: 3.73 KB
[*] Enjoy your password spraying! :)
CombinedList.txt
----------------
[...]
CompanyName1234562020!
CompanyName1234567892020!  
CompanyNameqwerty2020! 
CompanyNamepassword2020!  
CompanyName12345672020!
CompanyName123456782020!   
CompanyName123452020!
CompanyNameiloveyou2020!   
CompanyName1111112020!   
CompanyName1231232020!  
CompanyName!1234562020!
CompanyName!1234567892020! 
CompanyName!qwerty2020!
CompanyName!password2020!
CompanyName!12345672020!
CompanyName!123456782020!  
CompanyName!123452020!
CompanyName!iloveyou2020!
CompanyName!1111112020!
CompanyName!1231232020!
[...]

Conclusion

Do we need another tool for combining wordlists? Probably not.
Then why did you create ListCombine? I was bored.