diff --git a/caplets/beef-inject.js b/caplets/beef-inject.js index 5099b888..d06001c0 100644 --- a/caplets/beef-inject.js +++ b/caplets/beef-inject.js @@ -1,5 +1,6 @@ function onLoad() { console.log( "BeefInject loaded." ); + console.log("targets: " + env['arp.spoof.targets']); } function onResponse(req, res) { diff --git a/session/environment.go b/session/environment.go index ac80109c..afee43ca 100644 --- a/session/environment.go +++ b/session/environment.go @@ -23,6 +23,10 @@ func NewEnvironment() *Environment { return env } +func (env *Environment) Storage() *map[string]string { + return &env.storage +} + func (env *Environment) Has(name string) bool { env.lock.Lock() defer env.lock.Unlock() diff --git a/session/modules/http_proxy.go b/session/modules/http_proxy.go index 9fe01a47..96cc31eb 100644 --- a/session/modules/http_proxy.go +++ b/session/modules/http_proxy.go @@ -166,7 +166,7 @@ func (p *HttpProxy) Start() error { } else { scriptPath := v.(string) if scriptPath != "" { - if err, p.script = LoadProxyScript(scriptPath); err != nil { + if err, p.script = LoadProxyScript(scriptPath, p.Session); err != nil { return err } else { log.Debugf("Proxy script %s loaded.", scriptPath) diff --git a/session/modules/http_proxy_script.go b/session/modules/http_proxy_script.go index 163ff8d5..557d53c2 100644 --- a/session/modules/http_proxy_script.go +++ b/session/modules/http_proxy_script.go @@ -5,6 +5,8 @@ import ( "net/http" "sync" + "github.com/evilsocket/bettercap-ng/session" + "github.com/robertkrimen/otto" ) @@ -20,7 +22,7 @@ type ProxyScript struct { cbCache map[string]bool } -func LoadProxyScript(path string) (err error, s *ProxyScript) { +func LoadProxyScript(path string, sess *session.Session) (err error, s *ProxyScript) { log.Infof("Loading proxy script %s ...", path) raw, err := ioutil.ReadFile(path) @@ -29,9 +31,10 @@ func LoadProxyScript(path string) (err error, s *ProxyScript) { } s = &ProxyScript{ - Path: path, - Source: string(raw), - VM: otto.New(), + Path: path, + Source: string(raw), + VM: otto.New(), + gil: &sync.Mutex{}, onRequestScript: nil, onResponseScript: nil, @@ -45,6 +48,13 @@ func LoadProxyScript(path string) (err error, s *ProxyScript) { return } + // define session pointer + err = s.VM.Set("env", *sess.Env.Storage()) + if err != nil { + log.Errorf("Error while defining environment: %s", err) + return + } + // run onLoad if defined if s.hasCallback("onLoad") { _, err = s.VM.Run("onLoad()")