Skip to content

Commit e359513

Browse files
publish version 1.2
1 parent e927cb0 commit e359513

File tree

13 files changed

+495
-141
lines changed

13 files changed

+495
-141
lines changed

PySploit.py

100644100755
Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from core.banner import Banner
33
from sys import argv
44
from utilities.color import *
5+
from utilities.files import *
56
from argparse import ArgumentParser, SUPPRESS
67
from subprocess import check_call, CalledProcessError, call
78
import os
@@ -40,15 +41,8 @@ def install():
4041
print(red("\n[!]") + green(" You") + " should run command as root\n")
4142
exit()
4243
try:
43-
shutil.copytree('core/','/etc/pysploit-framework/core/')
44-
shutil.copytree('files/','/etc/pysploit-framework/files/')
45-
shutil.copytree('modules/','/etc/pysploit-framework/modules/')
46-
shutil.copytree('samples/','/etc/pysploit-framework/samples/')
47-
shutil.copytree('utilities/','/etc/pysploit-framework/utilities/')
48-
shutil.copy('PySploit.py', '/etc/pysploit-framework')
49-
shutil.copy('README.md', '/etc/pysploit-framework/docs')
50-
shutil.copy('LICENSE', '/etc/pysploit-framework/docs')
51-
shutil.copy('pysploit', '/etc/pysploit-framework/docs')
44+
copy(['PySploit.py','core/','files','modules/','samples/','utilities/'], '/etc/pysploit-framework')
45+
copy(['README.md','LICENSE','pysploit'],'/etc/pysploit-framework/docs')
5246
except FileExistsError:
5347
print(red("\n[!]") + green(' Check') + " if all tool files exist and try again\n")
5448
exit()
@@ -71,8 +65,8 @@ def install():
7165
print(blue('\n[CO]') + green(" Tool") + ' installed successfully type pysploit to run it\n')
7266
def uninstall():
7367
try:
74-
shutil.rmtree('/etc/pysploit-framework/')
75-
os.remove('/bin/pysploit')
68+
rm('/etc/pysploit-framework/')
69+
rm('/bin/pysploit')
7670
except PermissionError:
7771
print(red("\n[!]") + green(" You") + " should run command as root\n")
7872
exit()
@@ -85,7 +79,7 @@ def uninstall():
8579
def main():
8680
parser = ArgumentParser(prog='PySploit',usage='python3 PySploit.py [options]', add_help=False)
8781
help_arguments = parser.add_argument_group('help arguments')
88-
help_arguments.add_argument('-v', '--version', action='version', version="version 1.0")
82+
help_arguments.add_argument('-v', '--version', action='version', version="version 1.2")
8983
help_arguments.add_argument('-h', '--help', action='help', default=SUPPRESS, help='show this help message and exit.')
9084
optional_arguments = parser.add_argument_group('optional arguments')
9185
optional_arguments.add_argument('-c', '--create', dest='filename', required=False, help='create module sample')
@@ -102,7 +96,7 @@ def main():
10296
interpreter().check_upgrade()
10397
elif args.manual == True:
10498
try:
105-
check_call('man /etc/pysploit-framework/docs/pysploit &> /dev/null',shell=True)
99+
check_call('man /etc/pysploit-framework/docs/pysploit',shell=True)
106100
except CalledProcessError:
107101
print(red('\n[!]') + green(' Tool') + " manual is not installed yet\n")
108102
elif args.install == True:

core/banner.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,5 +44,17 @@ def banner2():
4444
print(' Free exploit framework for pentester and python developer')
4545
print(green('-') * 75)
4646
print(white(''))
47+
def banner3():
48+
print(' ____ _____ __ _ __')
49+
print(' / __ \__ __/ ___/____ / /___ (_) /_')
50+
print(' / /_/ / / / /\__ \/ __ \/ / __ \/ / __/')
51+
print(' / ____/ /_/ /___/ / /_/ / / /_/ / / /_')
52+
print(' /_/ \__, //____/ .___/_/\____/_/\__/')
53+
print(' /____/ /_/')
54+
print('')
55+
print(green('-') * 75)
56+
print(' Free exploit framework for pentester and python developer')
57+
print(green('-') * 75)
58+
print(white(''))
4759

48-
choice([banner1, banner2])()
60+
choice([banner1, banner2, banner3])()

core/interpreter.py

Lines changed: 45 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,47 @@
11
from utilities.color import * # import utilites
2-
from utilities.screen_cleaner import clear # import utilites
32
from core.main_completer import completer # completer import
4-
from imp import reload # import reload function from imp module
5-
from os import system
3+
import os
4+
from imp import reload
65
from urllib.request import urlopen
76
from urllib.error import URLError
87

98
class interpreter(object):
9+
def search_module(query):
10+
import utilities.files
11+
from core.module_obtainer import obtainer
12+
reload(utilities.files)
13+
from utilities.files import count_subfolders_files
14+
print('{:44}{:29}'.format('\nModules','Description'))
15+
print('{:43}{:29}'.format('-------','-----------'))
16+
count_subfolders_files('modules')
17+
unfiltered_result = []
18+
result = []
19+
for first_result in count_subfolders_files.result:
20+
for second_result in first_result:
21+
unfiltered_result.append(''.join(second_result))
22+
for final_result in unfiltered_result:
23+
if final_result.endswith('.pyc') or final_result.startswith('__init__') or not final_result.endswith('.py'):
24+
unfiltered_result.remove(final_result)
25+
for filt_result in unfiltered_result:
26+
result.append(filt_result.split('.')[0])
27+
try:
28+
for i in range(0,10):
29+
for root, dirs, files in os.walk('modules'):
30+
if query in root+result[i]:
31+
if result[i]+'.py' in files:
32+
path = os.path.join(root, result[i]+'.py')
33+
path = path.split('/')
34+
path_first_index = path[0]
35+
path.remove(path_first_index)
36+
path = '/'.join(path)
37+
if obtainer.description_obtainer(obtainer,path.split('.py')[0]):
38+
print('{:44}{:44}'.format(path.split('.py')[0],obtainer.info['description']))
39+
except IndexError:
40+
pass
41+
except ImportError:
42+
pass
43+
44+
print('')
1045
def check_upgrade(self):
1146
try:
1247
self.current_version = open('core/version.txt','r').read()
@@ -23,39 +58,10 @@ def check_upgrade(self):
2358
pass
2459
def start_interpreter(self):
2560
completer()
26-
try:
27-
self.main_ask = input(underline("PySploit") + " >> ").split()
28-
if self.main_ask[0] == "clear" or self.main_ask[0] == "Clear" or self.main_ask[0] == "CLEAR":
29-
clear()
30-
elif self.main_ask[0] == "banner" or self.main_ask[0] == "Banner" or self.main_ask[0] == 'BANNER':
31-
Banner()
32-
elif self.main_ask[0] == 'exit' or self.main_ask[0] == "Exit" or self.main_ask[0] == 'close' or self.main_ask[0] == 'Close':
33-
exit(0)
34-
elif self.main_ask[0] == "use" or self.main_ask[0] == "Use" or self.main_ask[0] == "USE":
35-
from core.module_obtainer import obtainer
36-
from core.module_interpreter import module_interpreter
37-
try:
38-
if obtainer.obtaining_info(obtainer, self.main_ask[1]):
39-
while True:
40-
module_interpreter(self.main_ask[1].split('/')[-1], self.main_ask[1].split('/')[-1+1],self.main_ask[1])
41-
except IndexError:
42-
print('\n' + red('[!]') + green(' You') + ' should enter the module name\n')
43-
elif self.main_ask[0] == 'restart' or self.main_ask[0] == 'Restart' or self.main_ask[0] == 'RESTART':
44-
import core.module_interpreter # import module_interpreter module from core foloder
45-
print('\n' + blue('[~]') + ' restarting the program ..... success\n')
46-
reload(core.module_interpreter)
47-
from core.module_interpreter import module_interpreter
48-
elif self.main_ask[0] == 'exec' or self.main_ask[0] == 'execute':
49-
try:
50-
self.main_ask.remove('exec' if self.main_ask[0] == 'exec' else 'execute')
51-
system(' '.join(self.main_ask))
52-
except IndexError:
53-
print(red("\n[!] ") + green("Please ") + " enter the command\n")
54-
elif self.main_ask[0] == 'upgrade' or self.main_ask[0] == 'Upgrade' or self.main_ask[0] == 'UPGRADE':
55-
self.check_upgrade()
56-
else:
57-
print('\n' + red('[!]') + green(' option') + ' not found\n')
58-
except (KeyboardInterrupt,EOFError):
59-
print('\n' + red('\n[!]') + green(' type') + gray(' exit') + ' to close the program\n')
60-
except IndexError:
61-
return None
61+
from core.validator import validator
62+
while True:
63+
try:
64+
self.main_ask = input(underline("PySploit") + " >> ").split()
65+
validator(self.main_ask).validate_interpreter_mode()
66+
except (KeyboardInterrupt,EOFError):
67+
print('\n' + red('\n[!]') + green(' type') + gray(' exit') + ' to close the program\n')

core/main_completer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ def listCompleter(text,state):
1818
self.listCompleter = listCompleter
1919
t = tabCompleter()
2020
# tool command
21-
t.createListCompleter(["clear", "use", "exit", "banner","exec","restart", "upgrade"
21+
t.createListCompleter(["clear", "exit", "banner","exec","restart", "upgrade", 'search'
2222
# modules
2323
# auxiliary modules
2424
,"use auxiliary/gather/ip_gather","use auxiliary/gather/ip_lookup", "use auxiliary/core/pyconverter"
2525
# exploit modules
26-
,"use exploit/windows/ftp/ftpshell_overflow", "use exploit/android/login/login_bypass"])
26+
,"use exploit/windows/ftp/ftpshell_overflow", "use exploit/android/login/login_bypass", "use exploit/windows/http/oracle9i_xdb_pass"])
2727
readline.set_completer_delims('\t')
2828
readline.parse_and_bind("tab: complete")
2929
readline.set_completer(t.listCompleter)

0 commit comments

Comments
 (0)