@@ -120,32 +120,42 @@ function tools_installed() {
120120 # Define tools and their paths/commands
121121 declare -A tools_files=(
122122 [" dorks_hunter" ]=" ${tools} /dorks_hunter/dorks_hunter.py"
123+ [" dorks_hunter_python" ]=" ${tools} /dorks_hunter/venv/bin/python3"
123124 [" fav-up" ]=" ${tools} /fav-up/favUp.py"
125+ [" fav-up_python" ]=" ${tools} /fav-up/venv/bin/python3"
124126 [" Corsy" ]=" ${tools} /Corsy/corsy.py"
125- [" testssl.sh" ]=" ${tools} /testssl.sh/testssl.sh"
127+ [" Corsy_python" ]=" ${tools} /Corsy/venv/bin/python3"
128+ [" testssl" ]=" ${tools} /testssl.sh/testssl.sh"
126129 [" CMSeeK" ]=" ${tools} /CMSeeK/cmseek.py"
130+ [" CMSeeK_python" ]=" ${tools} /CMSeeK/venv/bin/python3"
127131 [" OneListForAll" ]=" $fuzz_wordlist "
128132 [" lfi_wordlist" ]=" $lfi_wordlist "
129133 [" ssti_wordlist" ]=" $ssti_wordlist "
130134 [" subs_wordlist" ]=" $subs_wordlist "
131135 [" subs_wordlist_big" ]=" $subs_wordlist_big "
132136 [" resolvers" ]=" $resolvers "
133137 [" resolvers_trusted" ]=" $resolvers_trusted "
134- [" commix" ]=" ${tools} /commix/commix.py"
135138 [" getjswords" ]=" ${tools} /getjswords.py"
136139 [" JSA" ]=" ${tools} /JSA/jsa.py"
140+ [" JSA_python" ]=" ${tools} /JSA/venv/bin/python3"
137141 [" CloudHunter" ]=" ${tools} /CloudHunter/cloudhunter.py"
142+ [" CloudHunter_python" ]=" ${tools} /CloudHunter/venv/bin/python3"
138143 [" nmap-parse-output" ]=" ${tools} /ultimate-nmap-parser/ultimate-nmap-parser.sh"
139144 [" pydictor" ]=" ${tools} /pydictor/pydictor.py"
140- [" urless" ]=" ${tools} /urless/urless/urless.py"
141145 [" smuggler" ]=" ${tools} /smuggler/smuggler.py"
142146 [" regulator" ]=" ${tools} /regulator/main.py"
147+ [" regulator_python" ]=" ${tools} /regulator/venv/bin/python3"
143148 [" nomore403" ]=" ${tools} /nomore403/nomore403"
144149 [" ffufPostprocessing" ]=" ${tools} /ffufPostprocessing/ffufPostprocessing"
145150 [" misconfig-mapper" ]=" ${tools} /misconfig-mapper/misconfig-mapper"
146151 [" spoofy" ]=" ${tools} /Spoofy/spoofy.py"
152+ [" spoofy_python" ]=" ${tools} /Spoofy/venv/bin/python3"
147153 [" swaggerspy" ]=" ${tools} /SwaggerSpy/swaggerspy.py"
154+ [" swaggerspy_python" ]=" ${tools} /SwaggerSpy/venv/bin/python3"
148155 [" LeakSearch" ]=" ${tools} /LeakSearch/LeakSearch.py"
156+ [" LeakSearch_python" ]=" ${tools} /LeakSearch/venv/bin/python3"
157+ [" Oralyzer" ]=" ${tools} /Oralyzer/oralyzer.py"
158+ [" Oralyzer_python" ]=" ${tools} /Oralyzer/venv/bin/python3"
149159 )
150160
151161 declare -A tools_folders=(
@@ -219,6 +229,8 @@ function tools_installed() {
219229 [" sns" ]=" sns"
220230 [" sourcemapper" ]=" sourcemapper"
221231 [" jsluice" ]=" jsluice"
232+ [" commix" ]=" commix"
233+ [" urless" ]=" urless"
222234 [" dnstake" ]=" dnstake"
223235 )
224236
@@ -280,7 +292,7 @@ function google_dorks() {
280292 if { [[ ! -f " $called_fn_dir /.${FUNCNAME[0]} " ]] || [[ $DIFF == true ]]; } && [[ $GOOGLE_DORKS == true ]] && [[ $OSINT == true ]]; then
281293 start_func " ${FUNCNAME[0]} " " Running: Google Dorks in process"
282294
283- python3 " ${tools} /dorks_hunter/dorks_hunter.py" -d " $domain " -o " osint/dorks.txt"
295+ " ${tools} /dorks_hunter/venv/bin/ python3" " ${tools} /dorks_hunter/dorks_hunter.py" -d " $domain " -o " osint/dorks.txt"
284296 end_func " Results are saved in $domain /osint/dorks.txt" " ${FUNCNAME[0]} "
285297 else
286298 if [[ $GOOGLE_DORKS == false ]] || [[ $OSINT == false ]]; then
@@ -464,7 +476,7 @@ function apileaks() {
464476 fi
465477
466478 # Run swaggerspy.py and handle errors
467- python3 swaggerspy.py " $domain " 2>> " $LOGFILE " | grep -i " [*]\|URL" > " ${dir} /osint/swagger_leaks.txt"
479+ " ${tools} /SwaggerSpy/venv/bin/ python3" swaggerspy.py " $domain " 2>> " $LOGFILE " | grep -i " [*]\|URL" > " ${dir} /osint/swagger_leaks.txt"
468480
469481 # Return to the previous directory
470482 if ! popd > /dev/null; then
@@ -518,7 +530,7 @@ function emails() {
518530 fi
519531
520532 # Run LeakSearch.py and handle errors
521- python3 LeakSearch.py -k " $domain " -o " ${dir} /.tmp/passwords.txt" 1>> " $LOGFILE "
533+ " ${tools} /LeakSearch/venv/bin/ python3" LeakSearch.py -k " $domain " -o " ${dir} /.tmp/passwords.txt" 1>> " $LOGFILE "
522534
523535 # Return to the previous directory
524536 if ! popd > /dev/null; then
@@ -642,7 +654,7 @@ function spoof() {
642654 fi
643655
644656 # Run spoofy.py and handle errors
645- ./ spoofy.py -d " $domain " > " ${dir} /osint/spoof.txt"
657+ " ${tools} /Spoofy/venv/bin/python3 " spoofy.py -d " $domain " > " ${dir} /osint/spoof.txt"
646658
647659 # Return to the previous directory
648660 if ! popd > /dev/null; then
@@ -1805,7 +1817,7 @@ function sub_regex_permut() {
18051817 fi
18061818
18071819 # Run the main.py script
1808- python3 main.py -t " $domain " -f " ${dir} /subdomains/subdomains.txt" -o " ${dir} /.tmp/${domain} .brute" \
1820+ " ${tools} /regulator/venv/bin/ python3" main.py -t " $domain " -f " ${dir} /subdomains/subdomains.txt" -o " ${dir} /.tmp/${domain} .brute" \
18091821 2>> " $LOGFILE " > /dev/null
18101822
18111823 # Return to the previous directory
@@ -2389,7 +2401,7 @@ function s3buckets() {
23892401 esac
23902402
23912403 # Debug: Print the full CloudHunter command
2392- printf " CloudHunter command: python3 %s/cloudhunter.py %s -r %s/resolvers.txt -t 50 [URL]\n" " $tools /CloudHunter" " $PERMUTATION_FLAG " " $tools /CloudHunter" >> " $LOGFILE "
2404+ printf " CloudHunter command: %s/venv/bin/ python3 %s/cloudhunter.py %s -r %s/resolvers.txt -t 50 [URL]\n" " $tools /CloudHunter " " $tools /CloudHunter" " $PERMUTATION_FLAG " " $tools /CloudHunter" >> " $LOGFILE "
23932405
23942406 # Debug: Check if files exist
23952407 if [[ -f " $tools /CloudHunter/cloudhunter.py" ]]; then
@@ -2421,7 +2433,7 @@ function s3buckets() {
24212433 printf " %b[!] Failed to cd to %s.%b\n" " $bred " " $tools /CloudHunter" " $reset "
24222434 return 1
24232435 fi
2424- if ! python3 ./cloudhunter.py ${PERMUTATION_FLAG# -p } -r ./resolvers.txt -t 50 " $url " ; then
2436+ if ! " ${tools} /CloudHunter/venv/bin/ python3" ./cloudhunter.py ${PERMUTATION_FLAG# -p } -r ./resolvers.txt -t 50 " $url " ; then
24252437 printf " %b[!] CloudHunter command failed for URL %s.%b\n" " $bred " " $url " " $reset "
24262438 fi
24272439 ) >> " $dir /subdomains/cloudhunter_open_buckets.txt" 2>> " $LOGFILE "
@@ -2920,7 +2932,7 @@ function favicon() {
29202932 fi
29212933
29222934 # Run the favicon IP lookup tool
2923- python3 favUp.py -w " $domain " -sc -o favicontest.json 2>> " $LOGFILE " > /dev/null
2935+ " ${tools} /fav-up/venv/bin/ python3" " ${tools} /fav-up/ favUp.py" -w " $domain " -sc -o favicontest.json 2>> " $LOGFILE " > /dev/null
29242936
29252937 # Process the results if favicontest.json exists and is not empty
29262938 if [[ -s " favicontest.json" ]]; then
@@ -3456,7 +3468,7 @@ function cms_scanner() {
34563468 fi
34573469
34583470 # Run CMSeeK with timeout
3459- if ! timeout -k 1m " ${CMSSCAN_TIMEOUT} s" python3 " ${tools} /CMSeeK/cmseek.py" -l .tmp/cms.txt --batch -r & >> " $LOGFILE " ; then
3471+ if ! timeout -k 1m " ${CMSSCAN_TIMEOUT} s" " ${tools} /CMSeeK/venv/bin/ python3" " ${tools} /CMSeeK/cmseek.py" -l .tmp/cms.txt --batch -r & >> " $LOGFILE " ; then
34603472 exit_status=$?
34613473 if [[ ${exit_status} -eq 124 || ${exit_status} -eq 137 ]]; then
34623474 echo " TIMEOUT cmseek.py - investigate manually for $dir " >> " $LOGFILE "
@@ -3560,13 +3572,13 @@ function urlchecks() {
35603572 grep " $domain " .tmp/url_extract_tmp.txt | grep -E ' ^((http|https):\/\/)?([a-zA-Z0-9\-\.]+\.)+[a-zA-Z]{1,}(\/.*)?$' | grep -aEi " \.js$" | anew -q .tmp/url_extract_js.txt
35613573 grep " $domain " .tmp/url_extract_tmp.txt | grep -E ' ^((http|https):\/\/)?([a-zA-Z0-9\-\.]+\.)+[a-zA-Z]{1,}(\/.*)?$' | grep -aEi " \.js\.map$" | anew -q .tmp/url_extract_jsmap.txt
35623574 if [[ $DEEP == true ]] && [[ -s " .tmp/url_extract_js.txt" ]]; then
3563- interlace -tL .tmp/url_extract_js.txt -threads 10 -c " python3 ${tools} /JSA/jsa.py -f _target_ | anew -q .tmp/url_extract_tmp.txt" & > /dev/null
3575+ interlace -tL .tmp/url_extract_js.txt -threads 10 -c " ${tools} /JSA/venv/bin/ python3 ${tools} /JSA/jsa.py -f _target_ | anew -q .tmp/url_extract_tmp.txt" & > /dev/null
35643576 fi
35653577
35663578 grep " $domain " .tmp/url_extract_tmp.txt | grep -E ' ^((http|https):\/\/)?([a-zA-Z0-9\-\.]+\.)+[a-zA-Z]{1,}(\/.*)?$' | grep " =" | qsreplace -a 2>> " $LOGFILE " | grep -aEiv " \.(eot|jpg|jpeg|gif|css|tif|tiff|png|ttf|otf|woff|woff2|ico|pdf|svg|txt|js)$" | anew -q .tmp/url_extract_tmp2.txt
35673579
35683580 if [[ -s " .tmp/url_extract_tmp2.txt" ]]; then
3569- python3 " ${tools} / urless/urless/urless.py " < .tmp/url_extract_tmp2.txt | anew -q .tmp/url_extract_uddup.txt 2>> " $LOGFILE " > /dev/null
3581+ urless < .tmp/url_extract_tmp2.txt | anew -q .tmp/url_extract_uddup.txt 2>> " $LOGFILE " > /dev/null
35703582 fi
35713583
35723584 if [[ -s " .tmp/url_extract_uddup.txt" ]]; then
@@ -3764,7 +3776,7 @@ function jschecks() {
37643776 grep -iE " \.js($|\?)" .tmp/subjslinks.txt | anew -q .tmp/url_extract_js.txt
37653777 fi
37663778
3767- python3 " ${tools} / urless/urless/urless.py " < .tmp/url_extract_js.txt |
3779+ urless < .tmp/url_extract_js.txt |
37683780 anew -q js/url_extract_js.txt 2>> " $LOGFILE " > /dev/null
37693781
37703782 printf " %bRunning: Resolving JS URLs 2/6%b\n" " $yellow " " $reset "
@@ -4180,7 +4192,7 @@ function cors() {
41804192 # Proceed only if webs_all.txt exists and is non-empty
41814193 if [[ -s " webs/webs_all.txt" ]]; then
41824194 printf " ${yellow} \n[$( date +' %Y-%m-%d %H:%M:%S' ) ] Running: Corsy for CORS Scan${reset} \n\n"
4183- python3 " ${tools} /Corsy/corsy.py" -i " webs/webs_all.txt" -o " vulns/cors.txt" 2>> " $LOGFILE " > /dev/null
4195+ " ${tools} /Corsy/venv/bin/ python3" " ${tools} /Corsy/corsy.py" -i " webs/webs_all.txt" -o " vulns/cors.txt" 2>> " $LOGFILE " > /dev/null
41844196 else
41854197 end_func " No webs/webs_all.txt file found, CORS Scan skipped." " ${FUNCNAME[0]} "
41864198 return
@@ -4225,7 +4237,7 @@ function open_redirect() {
42254237 qsreplace FUZZ < " gf/redirect.txt" | sed ' /FUZZ/!d' | anew -q " .tmp/tmp_redirect.txt"
42264238
42274239 # Run Oralyzer with the generated payloads
4228- python3 " ${tools} /Oralyzer/oralyzer.py" -l " .tmp/tmp_redirect.txt" -p " ${tools} /Oralyzer/payloads.txt" > " vulns/redirect.txt" 2>> " $LOGFILE " > /dev/null
4240+ " ${tools} /Oralyzer/venv/bin/ python3" " ${tools} /Oralyzer/oralyzer.py" -l " .tmp/tmp_redirect.txt" -p " ${tools} /Oralyzer/payloads.txt" > " vulns/redirect.txt" 2>> " $LOGFILE " > /dev/null
42294241
42304242 # Remove ANSI color codes from the output
42314243 sed -r -i " s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" " vulns/redirect.txt"
@@ -4650,7 +4662,7 @@ function command_injection() {
46504662 # Run Commix if enabled
46514663 if [[ $SQLMAP == true ]]; then
46524664 printf " ${yellow} \n[$( date +' %Y-%m-%d %H:%M:%S' ) ] Running: Commix for Command Injection Checks${reset} \n\n"
4653- python3 " ${tools} / commix/commix.py " --batch -m " .tmp/tmp_rce.txt" --output-dir " vulns/command_injection" 2>> " $LOGFILE " > /dev/null
4665+ commix --batch -m " .tmp/tmp_rce.txt" --output-dir " vulns/command_injection" 2>> " $LOGFILE " > /dev/null
46544666 fi
46554667
46564668 # Additional tools can be integrated here (e.g., Ghauri, sqlmap)
0 commit comments