aboutsummaryrefslogtreecommitdiff
path: root/internal/exec/exec.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/exec/exec.go')
-rw-r--r--internal/exec/exec.go44
1 files changed, 44 insertions, 0 deletions
diff --git a/internal/exec/exec.go b/internal/exec/exec.go
new file mode 100644
index 0000000..16fa543
--- /dev/null
+++ b/internal/exec/exec.go
@@ -0,0 +1,44 @@
+package exec
+
+import (
+ "context"
+ "github.com/RedTeamPentesting/adauth"
+)
+
+type CleanupConfig struct {
+ CleanupMethod string
+ CleanupMethodConfig interface{}
+}
+
+type ExecutionConfig struct {
+ ExecutableName string // ExecutableName represents the name of the executable; i.e. "notepad.exe", "calc"
+ ExecutablePath string // ExecutablePath represents the full path to the executable; i.e. `C:\Windows\explorer.exe`
+ ExecutableArgs string // ExecutableArgs represents the arguments to be passed to the executable during execution; i.e. "/C whoami"
+
+ ExecutionMethod string // ExecutionMethod represents the specific execution strategy used by the module.
+ ExecutionMethodConfig interface{}
+ ExecutionOutput string // not implemented
+ ExecutionOutputConfig interface{} // not implemented
+}
+
+type ShellConfig struct {
+ ShellName string // ShellName specifies the name of the shell executable; i.e. "cmd.exe", "powershell"
+ ShellPath string // ShellPath is the full Windows path to the shell executable; i.e. `C:\Windows\System32\cmd.exe`
+}
+
+type Module interface {
+ // Exec performs a single execution task without the need to call Init.
+ Exec(context.Context, *adauth.Credential, *adauth.Target, *ExecutionConfig) error
+ Cleanup(context.Context, *adauth.Credential, *adauth.Target, *CleanupConfig) error
+
+ // Init assigns the provided TODO
+ //Init(ctx context.Context, creds *adauth.Credential, target *adauth.Target)
+ //Shell(ctx context.Context, input chan *ExecutionConfig, output chan []byte)
+}
+
+func (cfg *ExecutionConfig) GetRawCommand() string {
+ if cfg.ExecutableArgs != "" {
+ return cfg.ExecutablePath + " " + cfg.ExecutableArgs
+ }
+ return cfg.ExecutablePath
+}