diff options
author | Bryan McNulty <bryanmcnulty@protonmail.com> | 2025-02-26 19:42:55 -0600 |
---|---|---|
committer | Bryan McNulty <bryanmcnulty@protonmail.com> | 2025-02-26 19:42:55 -0600 |
commit | 0591eed275fd24e5c1b959e1a182bea6f6275c34 (patch) | |
tree | d32e53640e65627180de9a290449309591bae771 /pkg/exec/exec.go | |
parent | 930699ae66d1ddaf44fec71e04c33ab193531584 (diff) | |
download | goexec-0591eed275fd24e5c1b959e1a182bea6f6275c34.tar.gz goexec-0591eed275fd24e5c1b959e1a182bea6f6275c34.zip |
Initial commit +scmrexec
Diffstat (limited to 'pkg/exec/exec.go')
-rw-r--r-- | pkg/exec/exec.go | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/pkg/exec/exec.go b/pkg/exec/exec.go new file mode 100644 index 0000000..6e18378 --- /dev/null +++ b/pkg/exec/exec.go @@ -0,0 +1,38 @@ +package exec + +import ( + "context" + "github.com/bryanmcnulty/adauth" +) + +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 Executor interface { + // Exec performs a single execution task without the need to call Init. + Exec(ctx context.Context, creds *adauth.Credential, target *adauth.Target, config *ExecutionConfig) + + // 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 +} |