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