forked from trustedsec/ptf
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ptf
executable file
·87 lines (71 loc) · 3.02 KB
/
ptf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/usr/bin/env python
####################################################################################
# The PenTesters Framework (PTF) - Automatic Penetration Testing Platform Creation
# Written by: David Kennedy (ReL1K)
# Twitter: @TrustedSec, @HackingDave
# Website: https://www.trustedsec.com
####################################################################################
from src.core import *
import sys
import subprocess
import os
import socket
# create launcher
def create_launcher():
cwd = os.getcwd()
filewrite = open("/usr/local/bin/ptf", "w")
filewrite.write("#!/bin/sh\ncd %s\nchmod +x ptf\n./ptf $*" % (cwd))
filewrite.close()
subprocess.Popen("chmod +x /usr/local/bin/ptf", shell=True).wait()
# check for an Internet connection
def check_internet():
try:
print_status("You can always type ./ptf --no-network-connection to skip the Internet check..")
print_status("Checking for an Internet connection...")
rhost = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
rhost.connect(('google.com', 0))
rhost.settimeout(2)
return 1
except Exception:
return 0
# some OS doesn't have /usr/local/bin create them if not
if not os.path.isdir("/usr/local/bin/"): os.makedirs("/usr/local/bin/")
if os.geteuid() != 0:
print("\nThe Pentesters Framework (PTF) - by David Kennedy (ReL1K)")
print("\nThis needs to be run as root. Please sudo it up! Exiting...")
exit()
try:
# Bypass network check with argument
if not "--no-network-connection" in sys.argv[1:]:
# check internet connection
if check_internet() == 0:
print_warning("Unable to detect Internet connection. Needed for PTF.")
print_warning("We will now exit PTF. Launch again when you got a connection.")
print_warning("You can also run ptf with the --no-network-connection argument to bypass the network check.")
sys.exit()
# try to update ourself first
print_status("Trying to update myself first.. Then starting framework.")
subprocess.Popen("git pull", shell=True).wait()
# create automatic launcher
create_launcher()
# pull in the core library
from src.core import *
# pull in the framework
import src.framework
# if we want to skip going into module
if "--update-all" in sys.argv[1:]:
src.framework.handle_prompt("use modules/install_update_all")
elif "--update-installed" in sys.argv[1:]:
src.framework.handle_prompt("use modules/update_installed")
else:
# or just ask what you want
src.framework.mainloop()
except KeyboardInterrupt:
print("\n")
print_status("Exiting PTF - the easy pentest platform creation framework.")
exit()
sys.exit()
except Exception as e:
print_error("[!] DANGER WILL ROBINSON. DANGER WILL ROBINSON. Error has occured.")
print_error("[!] It's not possible its due to my coding skillz, it must be you? :-)")
print_error(("[!] Printing that error. Get that error. You get it: " + str(e)))