├── lib.txt
├── static
├── 1.png
├── 2.png
├── 3.png
├── 4.png
└── 5.png
├── .github
└── FUNDING.yml
├── LICENSE
├── README.md
└── FindProgram.py
/lib.txt:
--------------------------------------------------------------------------------
1 | google
2 | argparse
3 | requests
4 | colorama
--------------------------------------------------------------------------------
/static/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alyrezo/FindBBP/HEAD/static/1.png
--------------------------------------------------------------------------------
/static/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alyrezo/FindBBP/HEAD/static/2.png
--------------------------------------------------------------------------------
/static/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alyrezo/FindBBP/HEAD/static/3.png
--------------------------------------------------------------------------------
/static/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alyrezo/FindBBP/HEAD/static/4.png
--------------------------------------------------------------------------------
/static/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alyrezo/FindBBP/HEAD/static/5.png
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: alyreza # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
13 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
14 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 ΛLIRΞZΛ
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | Find BBP
3 |
4 |
5 |
6 |
7 | Features •
8 | Installation •
9 | Usage •
10 | Running •
11 | License
12 |
13 |
14 | ---
15 |
16 | Find Bug Bounty Program In short Find BBP is a google crawler and tool that discovers bug Bounty Program via security.txt file by default and you can use custom dork
17 |
18 | # Features
19 |
20 |
21 |
22 |
23 |
24 |
25 | - Fast and powerful
26 | - Find private program
27 | - use custom dork
28 | - output export as txt file
29 | - sort tld domains
30 |
31 | # Installation
32 |
33 | Find BBP requires **python3** to install successfully. Run the following command to install:
34 |
35 | - ```git clone https://github.com/alyrezo/FindBBP```
36 | - ```cd FindBBP ```
37 | - ``` python -m pip install -r lib.txt```
38 | - ```py FindProgram.py```
39 |
40 | # Usage
41 |
42 | ```sh
43 | py FindProgram.py -h
44 | ```
45 | This will display help for the tool. Here are all the switches it supports.
46 |
47 | ```yaml
48 | usage: FindProgram.py [-h] [--silence] [-n] [-d DORK] [-o OUTPUT] [-c COUNT] [-t TLD]
49 |
50 | optional arguments:
51 | -h, --help show this help message and exit
52 | --silence Not displaying the banner
53 | -n, --nonstop non stop crawling
54 | -d , --dork for using your custom dork
55 | -o , --output result export as txt file
56 | -c , --count count of domains it finds
57 | -t , --tld for sort Top-Level Domain
58 |
59 | ```
60 |
61 | # Running
62 |
63 | To run the tool, just use the following command.
64 |
65 | ```sh
66 | py FindProgram.py --nonstop
67 | ```
68 |
69 |
70 |
71 |
72 |
73 | ```sh
74 | py FindProgram.py --silence --count 10 --output url.txt
75 | ```
76 |
77 |
78 |
79 |
80 |
81 | ```sh
82 | py FindProgram.py --silence --tld io
83 | ```
84 |
85 |
86 |
87 |
88 |
89 | ```sh
90 | py FindProgram.py --silence --dork "responsible disclosure program"
91 | ```
92 |
93 |
94 |
95 |
96 |
97 | # License
98 | `Find BBP` is made with 💚 by the [alyrezo](https://Twitter.com/alyrezo)
99 |
--------------------------------------------------------------------------------
/FindProgram.py:
--------------------------------------------------------------------------------
1 | from googlesearch import search
2 | import time, os, argparse, requests, colorama , sys
3 |
4 | colorama.init()
5 |
6 | banner = colorama.Fore.RED + """
7 | ███████╗██╗███╗ ██╗██████╗ ██████╗ ██████╗ ██████╗
8 | ██╔════╝██║████╗ ██║██╔══██╗ ██╔══██╗██╔══██╗██╔══██╗
9 | █████╗ ██║██╔██╗ ██║██║ ██║ ██████╔╝██████╔╝██████╔╝
10 | ██╔══╝ ██║██║╚██╗██║██║ ██║ ██╔══██╗██╔══██╗██╔═══╝
11 | ██║ ██║██║ ╚████║██████╔╝ ██████╔╝██████╔╝██║
12 | ╚═╝ ╚═╝╚═╝ ╚═══╝╚═════╝ ╚═════╝ ╚═════╝ ╚═╝
13 |
14 | """ + colorama.Fore.CYAN + """Twitter: @Alyrezo
15 | Github: https://github.com/Alyrezo
16 | """
17 |
18 | parser = argparse.ArgumentParser()
19 | parser.add_argument('--silence',action="store_const",const=True,help="Not displaying the banner")
20 | parser.add_argument('-n','--nonstop',action="store_const",const=True,help="non stop crawling")
21 | parser.add_argument('-d','--dork',type=str,help="for using your custom dork")
22 | parser.add_argument('-o','--output',type=str,help="result export as txt file")
23 | parser.add_argument('-c','--count',type=int,help='count of domains it finds')
24 | parser.add_argument('-t','--tld',type=str,help="for sort Top-Level Domain")
25 | args = parser.parse_args()
26 |
27 | if args.dork == None:
28 | dork = 'inurl:"security.txt" ext:txt -github -wikipedia'
29 | if args.tld != None:
30 | dork = f"site:{args.tld} " + dork
31 | else:
32 | dork = str(args.dork).replace("'","")
33 |
34 | if args.silence == None:
35 | print(banner)
36 | print(colorama.Fore.YELLOW + "[!] " + dork)
37 |
38 | try:
39 | os.remove(".google-cookie")
40 | except:
41 | pass
42 |
43 | if args.output != None:
44 | file = args.output
45 | with open(file,'w') as tmp:
46 | tmp.close()
47 |
48 | count = 0
49 | try:
50 | for results in search(dork, tld="com", lang="en",num=5, start=0, stop=None, pause=2):
51 | if args.silence == None:
52 | print(colorama.Fore.GREEN +'[+] '+results[results.find('/',results.find('/'))+2:results.find('/',results.find('/')+2)])
53 | try:
54 | print(colorama.Fore.BLUE + requests.get(results,timeout=2).text+'\n\n')
55 | except:
56 | pass
57 | else:
58 | print(colorama.Fore.GREEN + results)
59 |
60 | if args.count != None:
61 | if count == args.count:
62 | break
63 | else:
64 | count += 1
65 |
66 | if args.output != None:
67 | with open(file,'a') as tmp:
68 | tmp.write(results + '\n')
69 |
70 | if args.nonstop or args.count or args.silence == None:
71 | print('\n' + colorama.Fore.YELLOW + '[!] continue...',end='')
72 | input()
73 |
74 | time.sleep(0.1)
75 | except KeyboardInterrupt:
76 | sys.exit()
77 |
78 |
--------------------------------------------------------------------------------