#!/usr/bin/env python # # Python installer # import subprocess import sys import os import platform # if nix then run installer if platform.system() == "Linux": # give installer a null value installer = False # Check user ID if os.getuid() != 0: print("Are you root? Please execute as root") exit() try: # if our command option is true then install stuff if sys.argv[1] == "install": installer = True # if index is out of range then flag options except IndexError: print("** SET Dependancy Installer **") print("** Written by: Dave Kennedy (ReL1K) **") print("** Visit: https://www.trustedsec.com **") print("\nTo install: setup.py install") # if user specified install then lets to the installation if installer is True: # if we trigger on sources.list then we know its ubuntu if os.path.isfile("/etc/apt/sources.list"): # force install of debian packages subprocess.Popen( "apt-get --force-yes -y install git python-pymssql build-essential python-pexpect python-pefile python-crypto python-openssl", shell=True).wait() # If pacman.conf exists, we have a Arch based system elif os.path.isfile("/etc/pacman.conf"): subprocess.Popen( "pacman -S --noconfirm --needed git python2 python2-beautifulsoup3 python2-pexpect python2-crypto", shell=True).wait() subprocess.Popen( "wget https://pefile.googlecode.com/files/pefile-1.2.10-139.tar.gz", shell=True).wait() subprocess.Popen( "tar xvfz pefile-1.2.10-139.tar.gz", shell=True).wait() subprocess.Popen( "chmod a+x pefile-1.2.10-139/setup.py", shell=True).wait() subprocess.Popen("rm -rf pefile-1.2.10-139*", shell=True).wait() # if dnf.conf is there, we are dealing with a >= fedora 22 - added thanks to whoismath pr elif os.path.isfile("/etc/dnf/dnf.conf"): subprocess.Popen("dnf -y install git python-pexpect python-pefile python-crypto pyOpenSSL", shell=True).wait() # if sources.list or pacman.conf is not available then we're running # something offset else: print( "[!] You're not running a Debian, Fedora or Arch variant. Installer not finished for this type of Linux distro.") print("[!] Install git, python-pexpect, python-crypto, python-openssl, python-pefile manually for all of SET dependancies.") sys.exit() if os.path.isdir("/usr/share/setoolkit"): print( "[!] SET is already installed in /usr/share/setoolkit. Remove and start again.") sys.exit() if not os.path.isfile("/usr/bin/git"): print("[-] Install failed. GIT is not installed. SET will not continue.") print("[!] Install GIT and run the installer again.") sys.exit() print("[*] Moving SET into the /usr/share/ directory...") subprocess.Popen( "cd .. && mv social-engineer-toolkit setoolkit && mv setoolkit /usr/share/", shell=True).wait() print("[*] Installing setoolkit installer to /usr/bin/setoolkit...") subprocess.Popen( "echo #!/bin/bash > /usr/bin/setoolkit", shell=True).wait() subprocess.Popen( "echo cd /usr/share/setoolkit >> /usr/bin/setoolkit", shell=True).wait() subprocess.Popen( "echo exec python2 setoolkit $@ >> /usr/bin/setoolkit", shell=True).wait() subprocess.Popen( "cp /usr/share/setoolkit/seupdate /usr/bin/", shell=True).wait() subprocess.Popen("chmod +x /usr/bin/setoolkit", shell=True).wait() print("[*] Note you will manually need to install Core Security 'Impacket'") print("[*] Download link: http://corelabs.coresecurity.com/index.php?module=Wiki&action=view&type=tool&name=Impacket") # https://impacket.googlecode.com/files/impacket-0.9.10.tar.gz print("[*] Once downloaded, tar -zxvf impacket*, go to the directory and run python setup.py install.") print("[*] We are now finished! To run SET, type setoolkit...") if platform.system() == 'Darwin': subprocess.Popen( "easy_install pexpect pycrypto pyopenssl pefile", shell=True).wait() if platform.system() != "Linux": if platform.system() != "Darwin": print("[!] Sorry this installer is not designed for any other system other than Linux and Mac. Please install the Python dependencies manually.")