forked from AKXX/social-engineer-toolkit
-
Notifications
You must be signed in to change notification settings - Fork 2
/
seautomate
executable file
·142 lines (118 loc) · 4.97 KB
/
seautomate
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#!/usr/bin/env python
# coding=utf-8
import sys
import os
import time
import subprocess
import re
# Py2/3 compatibility
# Python3 renamed raw_input to input
try:
input = raw_input
except NameError:
pass
try:
reload
except NameError:
from importlib import reload
# check where we are and load default directory
if os.path.isdir("/usr/share/setoolkit"):
if not os.path.isfile("setoolkit"):
os.chdir("/usr/share/setoolkit")
sys.path.append("/usr/share/setoolkit")
import src.core.setcore as core
# if we can't see our config then something didn't go good..
if not os.path.isfile("/etc/setoolkit/set.config"):
core.print_error("Cannot locate SET executable. Try running from the local directory.")
core.print_error("If this does not work, please run the setup.py install file.")
sys.exit()
#
# Simple client mode for SET
#
#
# try to import pexpect
try:
import pexpect
# if pexpect fails
except ImportError:
print("\n[*] PEXPECT is required, please download and install before running this...")
print("[*] Exiting SEAUTOMATE mode...")
sys.exit()
# try to define filename through argument specified during command line mode
try:
filename = sys.argv[1]
# if we through an exception spit out the command line syntax
except IndexError:
print("\nThe Social-Engineer Toolkit Automate - Automatation for SET")
print("\nSimply create a file that has each option you want from menu mode.")
print("For example your file should look something like this:")
print("\n2\n2\n2\nhttps://gmail.com\n2\n2\n443\netc.\n")
print("Usage: ./seautomate <filename>")
sys.exit()
# if the filename doesnt exist, throw an error
if not os.path.isfile(filename):
print("\n[*] Sorry hoss, unable to locate that filename, try again.\n")
sys.exit()
password = False
# if the path is around
if os.path.isfile(filename):
try:
print("[*] Spawning SET in a threaded process...")
child = pexpect.spawn("python setoolkit")
child.expect("99\) Exit the Social-Engineer Toolkit")
with open(filename) as fileopen:
for line in fileopen:
line = line.rstrip()
# if we just use enter send default
if line == "":
line = "blank line"
#match1 = re.search("OMGPASSWORDHERE", line)
#if match1:
# line = line.replace("OMGPASSWORDHERE", "")
# password = True
#if password is False:
print("[*] Sending command {0} to the interface...".format(line))
#if password is True:
# print("[*] Sending command [**********] (password masked) to the interface...")
# password = False
if line == "blank line":
line = "\n"
if line == "CONTROL-C-HERE":
try:
print("[*] This may take a few seconds while SET catches up...")
child.expect("Next line of the body:")
time.sleep(2)
child.sendline("\n")
child.sendcontrol('c')
# if the user is using pexpect < 2.3
except AttributeError:
print("[-] Error: You are running pexpect < 2.3 which is needed for this function")
choice = input("Would you like to install it now yes or no: ")
if choice == "yes" or choice == "y":
#subprocess.Popen("wget http://sourceforge.net/projects/pexpect/files/pexpect/Release%202.3/pexpect-2.3.tar.gz;"
# "tar -zxvf pexpect-2.3.tar.gz;"
# "cd pexpect-2.3;"
# "python setup.py install;"
# "cd ..;"
# "rm -rf pexpect-2*", shell=True).wait()
subprocess.Popen("pip install pexpect", shell=True).wait()
try:
reload(pexpect)
child.sendcontrol('c')
except:
print("[*] Relaunch the Social-Engineer Toolkit for changes to apply.")
sys.exit()
if line != "CONTROL-C-HERE":
child.sendline(line)
print("[*] Finished sending commands, interacting with the interface..")
child.interact()
# sometimes pexpect can throw errors upon exit this handles them
except OSError:
sys.exit()
# handle keyboardinterrupts (controlc)
except KeyboardInterrupt:
print("[*] Control-C detected, exiting the Social-Engineer Toolkit..")
sys.exit()
# handle everything else
except Exception as e:
print("[*] Something went wrong, printing error: {0}".format(e))