mirror of
https://github.com/bettercap/bettercap
synced 2025-07-06 04:52:10 -07:00
new: ticker now broadcasts a tick event
This commit is contained in:
parent
31b06638d8
commit
bfe307ffe6
5 changed files with 45 additions and 2 deletions
|
@ -35,4 +35,6 @@ func init() {
|
|||
|
||||
plugin.Defines["httpRequest"] = httpRequest
|
||||
plugin.Defines["http"] = httpPackage{}
|
||||
|
||||
plugin.Defines["random"] = randomPackage{}
|
||||
}
|
||||
|
|
26
js/random.go
Normal file
26
js/random.go
Normal file
|
@ -0,0 +1,26 @@
|
|||
package js
|
||||
|
||||
import (
|
||||
"math/rand"
|
||||
"net"
|
||||
"github.com/bettercap/bettercap/network"
|
||||
)
|
||||
|
||||
type randomPackage struct {
|
||||
}
|
||||
|
||||
func (c randomPackage) String(size int, charset string) string {
|
||||
runes := []rune(charset)
|
||||
nrunes := len(runes)
|
||||
buf := make([]rune, size)
|
||||
for i := range buf {
|
||||
buf[i] = runes[rand.Intn(nrunes)]
|
||||
}
|
||||
return string(buf)
|
||||
}
|
||||
|
||||
func (c randomPackage) Mac() string {
|
||||
hw := make([]byte, 6)
|
||||
rand.Read(hw)
|
||||
return network.NormalizeMac(net.HardwareAddr(hw).String())
|
||||
}
|
|
@ -72,6 +72,8 @@ func (mod *Ticker) Configure() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
type TickEvent struct {}
|
||||
|
||||
func (mod *Ticker) Start() error {
|
||||
if err := mod.Configure(); err != nil {
|
||||
return err
|
||||
|
@ -85,6 +87,8 @@ func (mod *Ticker) Start() error {
|
|||
break
|
||||
}
|
||||
|
||||
session.I.Events.Add("tick", TickEvent{})
|
||||
|
||||
for _, cmd := range mod.Commands {
|
||||
if err := mod.Session.Run(cmd); err != nil {
|
||||
mod.Error("%s", err)
|
||||
|
|
|
@ -105,7 +105,7 @@ func (mod *WiFiModule) startProbing(staMac net.HardwareAddr, ssid string) error
|
|||
}
|
||||
}
|
||||
|
||||
mod.Info("sent probe frames")
|
||||
mod.Debug("sent probe frames")
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package session
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"github.com/bettercap/bettercap/js"
|
||||
"github.com/evilsocket/islazy/log"
|
||||
"github.com/robertkrimen/otto"
|
||||
|
@ -56,9 +58,18 @@ func jsOnEventFunc(call otto.FunctionCall) otto.Value {
|
|||
|
||||
for event := range listener {
|
||||
if expr == "" || event.Tag == expr {
|
||||
// some objects don't do well with js, so convert them to a generic map
|
||||
// before passing them to the callback
|
||||
var opaque interface{}
|
||||
if raw, err := json.Marshal(event); err != nil {
|
||||
I.Events.Log(log.ERROR, "error serializing event %s: %v", event.Tag, err)
|
||||
} else if err = json.Unmarshal(raw, &opaque); err != nil {
|
||||
I.Events.Log(log.ERROR, "error serializing event %s: %v", event.Tag, err)
|
||||
}
|
||||
|
||||
// lock vm
|
||||
I.script.Lock()
|
||||
if _, err := cb.Call(otto.NullValue(), event); err != nil {
|
||||
if _, err := cb.Call(otto.NullValue(), opaque); err != nil {
|
||||
I.Events.Log(log.ERROR, "error dispatching event %s: %v", event.Tag, err)
|
||||
}
|
||||
I.script.Unlock()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue