#!/usr/bin/env python
#------------------Bombermans Team---------------------------------#
#Author : B3mB4m
#Concat : b3mb4m@protonmail.com
#Project : https://github.com/b3mb4m/Shellsploit
#LICENSE : https://github.com/b3mb4m/Shellsploit/blob/master/LICENSE
#------------------------------------------------------------------#
import sys
import os
name = os.sep.join([x for x in os.getcwd().split(os.sep) if x != os.getcwd().split(os.sep)[-1]])
sys.path.append(name)
if sys.version_info.major == 3:
raw_input = input
from .control import *
from .core.logo.logo import banner
from .core.logo.counter import *
from .core.Comp import tab
shellcodeModules = {
"linux86":
["binsh_spawn","read","exec","chmod","tcp_bind","reverse_tcp","download&exec"],
"linux64":
["read","binsh_spawn","tcp_bind","reverse_tcp"],
"linux":
["binsh_spawn","tcp_bind","reverse_tcp","read"],
"osx86":
["tcp_bind","binsh_spawn","reverse_tcp"],
"osx64":
["reverse_tcp","tcp_bind","binsh_spawn"],
"FreeBSDx86":
["binsh_spawn","reverse_tcp2","reverse_tcp","read","exec","tcp_bind"],
"FreeBSDx64":
["binsh_spawn","tcp_bind","reverse_tcp","exec"],
"linux_arm":
["binsh_spawn","chmod","reverse_tcp","exec"],
"linux_mips":
["binsh_spawn","chmod","reverse_tcp","tcp_bind"],
"windows":
["messagebox","download&execute","exec", "reverse_tcp", "tcp_bind"],
"solarisx86":
["binsh_spawn","read","reverse_tcp","tcp_bind"],
"injectors":
["Linux/x86/ptrace","Linux64/ptrace","Windows/x86/tLsInjectorDLL",
"Windows/x86/CodecaveInjector","Windows/Dllinjector",
"Windows/BFD/Patching",
"MacOSX/BFD/Patching",
"Linux/BFD/Patching",
"Linux/ARM/x86/BFD/Patching",
"FreeBSD/x86/BFD/Patching",
#Dllinjector is still passive.
],
"backdoors":
["linux86/reverse_tcp","linux64/reverse_tcp","osx86/reverse_tcp",
"unix/python/reverse_tcp","unix/perl/reverse_tcp",
"unix/bash/reverse_tcp","unix/ruby/reverse_tcp"]
}
tab.start(1)
db = B3mB4mLogo().start()
def start():
print (banner( db[0], db[1], db[2], db[3]+5))
shellsploit()
def shellsploit():
try:
bash = bcolors.OKBLUE + bcolors.UNDERLINE + "ssf" + bcolors.ENDC
bash += bcolors.OKBLUE + " > "+ bcolors.ENDC
terminal = raw_input(bash)
except KeyboardInterrupt:
sys.exit("\n[*] (Ctrl + C ) Detected, Trying To Exit ...")
if terminal[:4] == "help":
from .core.help import mainhelp
mainhelp()
shellsploit()
elif terminal[:14] == "show backdoors":
from .core.backdoors import backdoorlist
backdoorlist()
shellsploit()
elif terminal[:2] == "os":
from .core.commands import oscommand
oscommand( terminal[3:])
shellsploit()
elif terminal[:6] == "banner":
print (banner( db[0], db[1], db[2], db[3]+4))
shellsploit()
elif terminal[:3] == "use":
all_sc_modules = []
for platforms in shellcodeModules.keys():
for shellcodeType in shellcodeModules[platforms]:
all_sc_modules.append("{}/{}".format(platforms,shellcodeType))
if terminal.split()[1] in all_sc_modules:
for shellcode in all_sc_modules:
if terminal.split()[1] == shellcode:
B3mB4m().control(shellcode)
shellsploit()
print ("\nModule not avaible !\n")
shellsploit()
elif terminal[:14] == "show injectors":
from .core.lists import injectorlist
injectorlist()
shellsploit()
elif terminal[:5] == "clear":
from .core.commands import clean
clean()
shellsploit()
elif terminal[:12] == "show modules":
from .core.shellcodes import shellcodelist
shellcodelist()
shellsploit()
elif terminal[:4] == "exit":
sys.exit("\nThanks for using shellsploit !\n")
else:
if terminal == "":
shellsploit()
else:
print (bcolors.RED + bcolors.BOLD + "[-] Unknown command: %s" % terminal + bcolors.ENDC)
shellsploit()
def main():
import optparse
parser = optparse.OptionParser()
parser.add_option('-p', '--payload', action="store")
parser.add_option('-e', '--encoder', action="store", default="False")
parser.add_option('-o', '--output', action="store", default=True)
parser.add_option('-l','--list', action="store", default=True)
parser.add_option('-n','--nc', action="store", default=True)
parser.add_option('--host', action="store")
parser.add_option('--port', action="store")
(options, args) = parser.parse_args()
if options.list == "backdoors":
from .core.backdoors import backdoorlist
backdoorlist( require=False)
sys.exit()
if options.list == "shellcodes":
from .core.shellcodes import shellcodelist
shellcodelist()
sys.exit()
if options.list == "encoders":
from .core.backdoors import encoderlist
encoderlist( require=False)
sys.exit()
if options.list == "injectors":
from .core.lists import injectorlist
injectorlist()
sys.exit()
elif options.nc == "netcat" or options.nc == "nc":
from .Session.netcat import nc
if options.port:
nc( PORT)
else:
nc()
sys.exit()
else:
if options.payload:
if options.host and options.port:
from .core.backdoors import backdoorlist
from .core.backdoors import encoderlist
if options.payload in backdoorlist( require=True):
from .Session.generator import process
if "py" in options.encoder and "python" not in options.payload:
sys.exit("\nThis encoder can not use with that payload\n")
if options.output:
process( options.payload, options.host, options.port, options.encoder, options.output)
else:
process( options.payload, options.host, options.port, options.encoder,True)
#Default, file will be create with random name.
else:
sys.exit("\npython shellsploit -p PAYLOAD -e ENCODER --host IP --port P0RT\n")
else:
sys.exit("\npython shellsploit -p PAYLOAD -e ENCODER --host IP --port P0RT\n")
else:
start()