-
Notifications
You must be signed in to change notification settings - Fork 38
/
Copy pathOptionsHelper.nim
101 lines (92 loc) · 4.36 KB
/
OptionsHelper.nim
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
import Structs
import AuxFunctions
proc PrintBanner*():void =
var banner = """
_..._
.-'_..._''.
_..._ .--. __ __ ___ __.....__ __.....__ .' .' '.\
.' '. |__|| |/ `.' `. .-'' '. .-'' '. / .'
. .-. ..--.| .-. .-. ' / .-''"'-. `. / .-''"'-. `. . '
| ' ' || || | | | | |/ /________\ \ ____ _____/ /________\ \| |
| | | || || | | | | || |`. \ .' /| || |
| | | || || | | | | |\ .-------------' `. `' .' \ .-------------'. '
| | | || || | | | | | \ '-.____...---. '. .' \ '-.____...---. \ '. .
| | | ||__||__| |__| |__| `. .' .' `. `. .' '. `._____.-'/
| | | | `''-...... -' .' .'`. `. `''-...... -' `-.______ /
| | | | .' / `. `. `
'--' '--' '----' '----'
@R0h1rr1m
"""
echo banner
proc PrintHelp*():void =
var optionsString = """
-v | --verbose Enable more verbose output.
-u | --username <Username> Username for NTLM Authentication.*
-h | --hash <NTLM Hash> NTLM password hash for NTLM Authentication.**
-p | --password <Password> Plaintext password.**
-t | --target <Target> Lateral movement target.*
-c | --command <Command> Command to execute.*
-d | --domain <Domain> Domain name for NTLM Authentication.
-s | --service <Service Name> Name of the service instead of a random one.
--help Show the help message.
"""
echo(optionsString)
proc ParseArgs*(argc:int, argv:seq[string], optionsStruct:ptr OPTIONS):bool =
optionsStruct.Service = ""
optionsStruct.Username = ""
optionsStruct.Hash = ""
optionsStruct.Domain = ""
optionsStruct.Target = ""
optionsStruct.Command = ""
optionsStruct.IsVerbose = false
optionsStruct.OutputUsername = ""
var i:int = 0
while(i<argc):
if(argv[i] == "-v" or argv[i] == "--verbose"):
optionsStruct.IsVerbose = true
elif(argv[i] == "--help"):
PrintHelp()
quit(0)
elif(argv[i] == "-u" or argv[i] == "--username"):
i+=1
if(i>=argc):
return false
optionsStruct.Username = argv[i]
elif(argv[i] == "-p" or argv[i] == "--password"):
i+=1
if(i>=argc):
return false
optionsStruct.Hash = NtlmCalculator(argv[i])
elif(argv[i] == "-h" or argv[i] == "--hash"):
i+=1
if(i>=argc):
return false
optionsStruct.Hash = argv[i]
elif(argv[i] == "-d" or argv[i] == "--domain"):
i+=1
if(i>=argc):
return false
optionsStruct.Domain = argv[i]
elif(argv[i] == "-t" or argv[i] == "--target"):
i+=1
if(i>=argc):
return false
optionsStruct.Target = argv[i]
elif(argv[i] == "-s" or argv[i] == "--service"):
i+=1
if(i>=argc):
return false
optionsStruct.Service = argv[i]
elif(argv[i] == "-c" or argv[i] == "--command"):
i+=1
if(i>=argc):
return false
optionsStruct.Command = argv[i]
elif(i != 0):
echo "[!] Unknown argument!"
return false
i+=1
if(optionsStruct.Username == "" or optionsStruct.Hash == "" or optionsStruct.Target == "" or optionsStruct.Command == ""):
echo "[!] Missing one or more arguments!"
return false
return true