forked from moloch--/wire-transfer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwiretransfer.py
executable file
·79 lines (60 loc) · 1.98 KB
/
wiretransfer.py
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
#!/usr/bin/env python3
"""
@author: moloch
Copyright 2018
"""
import os
import sys
import logging
from english2bin import Binary2DictlessEnglish
from tornado.ioloop import IOLoop
from tornado.web import Application, RequestHandler, StaticFileHandler
from tornado.options import define, options
define("target",
group="application",
default=os.environ.get('WIRE_TRANSFER_TARGET', "shell.exe"),
help="target file to transfer")
define("dictionary",
group="application",
default=os.environ.get('WIRE_TRANSFER_DICTIONARY', "dictionary.txt"),
help="encode file with dictionary")
define("listen_port",
group="application",
default=os.environ.get('WIRE_TRANSFER_LPORT', 8888),
type=int,
help="listen port")
define("debug",
default=os.environ.get('WIRE_TRANSFER_DEBUG', False),
group="application",
help="start the application in debugging mode",
type=bool)
class MainHandler(RequestHandler):
def initialize(self):
self.encoder = self.application.settings['encoder']
def get(self):
with open(options.target, "rb") as fp:
data = self.encoder.encode_file(fp)
self.render("templates/legit.html", data=data)
def make_app():
return Application([
(r"/", MainHandler),
(r"/static/(.*)", StaticFileHandler, {"path": "./static/"}),
], encoder=Binary2DictlessEnglish(options.dictionary))
def main():
""" Starts the app based on cli arguments """
if options.debug:
root_logger = logging.getLogger()
root_logger.setLevel(logging.DEBUG)
app = make_app()
app.listen(options.listen_port)
IOLoop.current().start()
if __name__ == '__main__':
os.chdir(os.path.dirname(os.path.abspath(__file__)))
try:
options.parse_command_line()
assert os.path.exists(options.target)
assert os.path.exists(options.dictionary)
main()
except IOError as error:
print(str(error))
sys.exit()