diff --git a/README.md b/README.md
index 496b806..cb1242e 100644
--- a/README.md
+++ b/README.md
@@ -14,7 +14,7 @@ Thanks dude :)
[![Packaging status](https://repology.org/badge/tiny-repos/bopscrk.svg)](https://repology.org/project/bopscrk/versions)
![[GPL-3.0 License](https://github.com/r3nt0n)](https://img.shields.io/badge/license-GPL%203.0-brightgreen.svg)
![[Python 3](https://github.com/r3nt0n)](http://img.shields.io/badge/python-3-blue.svg)
-![[Version 2.4](https://github.com/r3nt0n)](http://img.shields.io/badge/version-2.4-orange.svg)
+![[Version 2.4.5](https://github.com/r3nt0n)](http://img.shields.io/badge/version-2.4.5-orange.svg)
@@ -50,6 +50,7 @@ Thanks dude :)
About the Project
@@ -89,17 +90,22 @@ Thanks dude :)
## About the Project
-
+
+ **Targeted-attack wordlist creator**: introduce personal info related to target, combines every word and transforms results into possible passwords. The *lyricpass* module allows to **search lyrics related to artists** and include them to the wordlists.
+ **Customizable case** and **leet transforms**: create **custom charsets** and **transforms patterns** trough a simple **config file**.
-+ **Wordlists exclusion**: Exclude words from another wordlist (to avoid passwords that you have already tested).
+ **Interactive mode** and **one-line command interface** supported.
+ Included in **BlackArch Linux** pentesting distribution and **Rawsec's Cybersecurity Inventory** since August 2019.
+### What's new
+
+Progress bar implemented!
+
+
+
### Built with
@@ -158,6 +164,7 @@ bopscrk -i
-a , --artists artists to search song lyrics (comma-separated)
-o , --output output file to save the wordlist (default: tmp.txt)
-C , --config specify config file to use (default: ./bopscrk.cfg)
+ --version print version and exit
```
@@ -171,21 +178,22 @@ _For more information, please refer to the [Advanced usage](#advanced-usage) sec
+ The tool will generate **all possible combinations** between them.
+ To generate more combinations, it will add some **common separators** (e.g. "-", "_", "."), **numbers** and **special chars** frequently used in passwords.
+ You can use **leet** and **case transforms** to increase your chances.
-+ You can provide **wordlists** that you have already tested against the target in order **to exclude** all this words from the resultant wordlist (`-x`).
+
+[//]: # (+ You can provide **wordlists** that you have already tested against the target in order **to exclude** all this words from the resultant wordlist (`-x`).)
### Tips
+ Fields can be left **empty**.
+ You **can use accentuation** in your words.
+ In the others field you can write **several words comma-separated**. *Example*: 2C,Flipper.
+ If you want to produce **all possible leet transformations**, enable the **recursive_leet option** in configuration file.
-+ You can **select which transforms to apply on lyrics phrases** found trough the cfg file.
++ You can **select which transforms to apply on lyrics phrases** found through the **cfg file**.
+ Using the **non-interactive mode**, you should provide years in the long and short way (1970,70) to get the same result than the interactive mode.
+ You have to be careful with **-n** argument. If you set a big value, it could result in **too huge wordlists**. I recommend values between 2 and 5.
+ To provide **several artist names** through command line you should provides it **comma-separated**. *Example*: `-a johndoe,johnsmith`
+ To provide **artist names with spaces** through command line you should provides it **quotes-enclosed**. *Example*: `-a "john doe,john smith"`
### Lyricpass
-
+
This feature is based in a modified version of a [tool](https://github.com/initstring/lyricpass) developed originally by [initstring](https://github.com/initstring/). The changes are made to integrate input and output's tool with bopscrk.
@@ -200,7 +208,7 @@ It will retrieve all lyrics from all songs which belongs to artists that you pro
+ **separators_chars**: characters to use in extra-combinations. *Can be a single char or a string of chars, e.g.: `!?-/&(`*
+ **separators_strings**: strings to use in extra-combinations. *Can be a single string or a list of strings space-separated, e.g.: `123` `34!@`*
+ **leet_charset**: characters to replace and correspondent substitute in leet transforms, *e.g.: `e:3 b:8 t:7 a:4`*
- + **recursive_leet**: enables a recursive call to leet_transforms() function to get all possible leet transforms (*disabled by default*). *WARNING*: enabled with huge --max parameters (e.g.: greater than 18) could take several minutes. *Can be true or false.*
+ + **recursive_leet**: enables a recursive call to leet_transforms() function to get all possible leet transforms (*disabled by default*). *WARNING*: enabled with huge --max parameters (e.g.: greater than 18) could take even days. *Can be true or false.*
+ **remove_parenthesis**: remove all parenthesis in lyrics found before any transform
+ **take_initials**: produce words based on initial of each word in lyric phrases found (if enabled with remove_parenthesis disabled, it can produce useless words)
+ **artist_split_by_word**: split artist names and add each word as a new one
@@ -266,12 +274,16 @@ Thank you all!
## Changelist
-+ `last development version (available on Github)`
+[//]: # (+ `last development version (available on Github)`)
++ `2.4.5 version notes (02/08/2022)`
+ **progress bar** implemented and working
+ + `version` argument included
+ Docs improved
+
+ `2.4.4 version notes (31/07/2022)`
+ **Relative imports bug fixed**
+ Starting to refactor general structure to allow **progressbar feature inclusion**
+
+ `2.4.3 version notes (28/07/2022)`
+ Fixing project structure to allow properly install via pip:
+ Add MANIFEST to exclude compiled and tests files when building dist
@@ -283,10 +295,12 @@ Thank you all!
+ Make the installation process easier enabling `pip install` method
+ Starting to implement better memory management (cached wordlists writing and reading i/o files), not working yet
+ Updating and fixing minor bugs related to dependencies
- + 'exclude from other wordlists' feature removed
+ + **REMOVED FEATURE**: 'exclude from other wordlists', doesn't seem useful, there is other tools to do this specific work
+
+ `2.3.1 version notes`
+ Fixing namespace bug (related to aux.py module, renamed to auxiliars.py) when running on windows systems
+ **unittest** (and simple unitary tests for transforms, excluders and combinators functions) **implemented**.
+
+ `2.3 version notes (15/10/2020)`
+ **Customizable** configuration for **artists and lyrics transforms** using the cfg file
+ Requirements at **setup.py updated**
@@ -297,17 +311,22 @@ Thank you all!
+ **Memory management and efficiency improved**
+ **SPLIT INTO MODULES** to improve project structure
+ **BUG FIXED** in wordlists-exclusion feature
+
+ `2.2 version notes (11/10/2020`
+ **Configuration file** implemented
+ **NEW FEATURE**: Allow to create **custom charsets** and **transforms patterns** trough the **config file**
+ **NEW FEATURE**: **Recursive leet transforms** implemented (*disabled by default*, can be enabled in cfg file)
+
+ `2.2~beta version notes (10/10/2020)`
+ The **lyricpass** integration have been **updated to run with last version released by initstring**
+ `--lyrics-all` option removed (feature integrated in other options)
+
+ `2.1 version notes (11/07/2020)`
+ Fixing **min and max length bug**
+
+ `2.0/1.5 version notes (17/06/2020)`
+ **PYTHON 3 NOW IS SUPPORTED**: master branch moves to Python 3. Secondary branch keeps Python 2.7 legacy support
+
+ `0-1.2(beta) version notes`
+ **EXCLUDE WORDLISTS**: speed improvement using multithreaded exclusions
+ **NEW FEATURE**: lyrics searching related to artists increase the wordlist chances
@@ -328,9 +347,8 @@ Distributed under the GNU General Public License v3.0. See `LICENSE` for more in
## Contact
-r3nt0n: https://github.com/r3nt0n - r3nt0n@protonmail.com
-
-Bopscrk: [https://github.com/r3nt0n/bopscrk](https://github.com/r3nt0n/bopscrk)
+r3nt0n: [Github](https://github.com/r3nt0n) - [email](r3nt0n@protonmail.com)
+bopscrk: [Github](https://github.com/r3nt0n/bopscrk) - [Pypi](https://pypi.org/project/bopscrk)
(back to top)
@@ -339,8 +357,8 @@ Bopscrk: [https://github.com/r3nt0n/bopscrk](https://github.com/r3nt0n/bopscrk)
## Acknowledgments
-* lyricpass module is based on a [project](https://github.com/initstring/lyricpass) created by [initstring](https://github.com/initstring)
-* [Pixel Gothic font](https://dafonttop.com/pixel-gothic-font.font) by [Kajetan Andrzejak](https://dafonttop.com/tags.php?key=Kajetan%20Andrzejak)
+* lyricpass module is based on a [project](https://github.com/initstring/lyricpass) created by [initstring](https://github.com/initstring).
+* [Pixel Gothic font](https://dafonttop.com/pixel-gothic-font.font) by [Kajetan Andrzejak](https://dafonttop.com/tags.php?key=Kajetan%20Andrzejak).
(back to top)
diff --git a/bopscrk/modules/args.py b/bopscrk/modules/args.py
index 4d3920f..db0dd68 100644
--- a/bopscrk/modules/args.py
+++ b/bopscrk/modules/args.py
@@ -60,10 +60,13 @@ def __init__(self):
dest='cfg_file', default=self.DEFAULT_CFG_FILE,
help='specify config file to use (default: {})'.format(self.DEFAULT_CFG_FILE))
+ parser.add_argument('--version', action="store_true", help='print version and exit')
+
self.parser = parser
self.args = parser.parse_args()
self.interactive = self.args.interactive
self.cfg_file = self.args.cfg_file
+ self.print_version = self.args.version
def set_interactive_options(self):
while True:
diff --git a/bopscrk/modules/main.py b/bopscrk/modules/main.py
index fb2025c..4145f8c 100644
--- a/bopscrk/modules/main.py
+++ b/bopscrk/modules/main.py
@@ -20,8 +20,11 @@ def run(name, version):
if sys.version_info < (3, 0): print('Python 3 is required'); sys.exit(1)
# Print simple help and exit when runs without args
if len(sys.argv) == 1: args.parser.print_help(sys.stdout); sys.exit(2)
+ # Print version and exit (when runs with -v)
+ if args.print_version: print(name + '_' + version); sys.exit(0)
+
try:
- # setting args
+ # setting args whter interactive or not
if args.interactive:
clear()
banners.bopscrk_banner()
@@ -114,8 +117,6 @@ def run(name, version):
final_wordlist += combinator(base_wordlist, i)
print(' {}[*]{} {} words combined using {} words (words produced: {})'.format(color.CYAN,color.END,len(base_wordlist),i, len(final_wordlist)))
-
-
# WORD COMBINATIONS (WITH COMMON SEPARATORS)
if Config.EXTRA_COMBINATIONS:
if Config.SEPARATORS_CHARSET:
@@ -126,7 +127,6 @@ def run(name, version):
else:
print(' {}[!]{} Any separators charset specified in {}{}'.format(color.ORANGE, color.END, args.cfg_file,color.END))
-
# Remove words by min-max length range established
print(' {}[-]{} Removing words by min and max length provided ({}-{})...'.format(color.PURPLE, color.END,args.min_length,args.max_length))
final_wordlist = remove_by_lengths(final_wordlist, args.min_length, args.max_length)
@@ -217,10 +217,10 @@ def run(name, version):
# PRINT RESULTS
############################################################################
- print('\n {}[+]{} Time elapsed:\t{}'.format(color.GREEN, color.END, total_time))
+ print('\n {}[+]{} Words generated:\t{}{}{}'.format(color.GREEN, color.END, color.RED, len(final_wordlist),color.END))
+ print(' {}[+]{} Time elapsed:\t{}'.format(color.GREEN, color.END, total_time))
print(' {}[+]{} Output file:\t{}{}{}{}'.format(color.GREEN, color.END, color.BOLD, color.BLUE, args.outfile, color.END))
#print(' {}[+]{} Words generated:\t{}{}{}\n'.format(color.GREEN, color.END, color.RED, str(sum(1 for line in open(args.outfile))), color.END))
- print(' {}[+]{} Words generated:\t{}{}{}\n'.format(color.GREEN, color.END, color.RED,len(final_wordlist), color.END))
sys.exit(0)
except KeyboardInterrupt:
diff --git a/img/bopscrk-2.3-lyricpass-example.png b/img/bopscrk-2.3-lyricpass-example.png
deleted file mode 100644
index dd1787a..0000000
Binary files a/img/bopscrk-2.3-lyricpass-example.png and /dev/null differ
diff --git a/img/bopscrk-2.4.5.gif b/img/bopscrk-2.4.5.gif
new file mode 100644
index 0000000..6410105
Binary files /dev/null and b/img/bopscrk-2.4.5.gif differ
diff --git a/img/lyricpass_demo.png b/img/lyricpass_demo.png
new file mode 100644
index 0000000..03016c7
Binary files /dev/null and b/img/lyricpass_demo.png differ
diff --git a/img/progressbar_example1.gif b/img/progressbar_example1.gif
new file mode 100644
index 0000000..9af899f
Binary files /dev/null and b/img/progressbar_example1.gif differ
diff --git a/img/progressbar_example2.gif b/img/progressbar_example2.gif
new file mode 100644
index 0000000..cd5e4c4
Binary files /dev/null and b/img/progressbar_example2.gif differ