diff --git a/example.js b/example.js index 6e02976a..37f42410 100644 --- a/example.js +++ b/example.js @@ -4,8 +4,8 @@ var telegramChatId = 'put your telegram chat id here'; function sendMessage(message) { var url = 'https://api.telegram.org/bot' + telegramToken + - '/sendMessage?chat_id=' + telegramChatId + - '&text=' + http.Encode(message); + '/sendMessage?chat_id=' + telegramChatId + + '&text=' + http.Encode(message); var resp = http.Get(url, {}); if( resp.Error ) { @@ -13,34 +13,22 @@ function sendMessage(message) { } } -log("session script loaded"); - -// enable recon and probing of new hosts -run('net.recon on'); -run('net.probe on'); - -// enable wifi scanning -run('set wifi.interface ' + wifiInterface); -run('wifi.recon on'); - -// register for wifi.deauthentication events -onEvent('wifi.deauthentication', function(event){ +function onDeauthentication(event) { var data = event.Data; var message = '🚨 Detected deauthentication frame:\n\n' + - 'Time: ' + event.Time.String() + "\n" + - 'GPS: lat=' + session.GPS.Latitude + " lon=" + session.GPS.Longitude + " updated_at=" + session.GPS.Updated.String() + "\n\n" + - 'RSSI: ' + data.RSSI + "\n" + - 'Reason: ' + data.Reason + "\n" + - 'Address1: ' + data.Address1 + "\n" + - 'Address2: ' + data.Address2 + "\n" + - 'Address3: ' + data.Address3; + 'Time: ' + event.Time.String() + "\n" + + 'GPS: lat=' + session.GPS.Latitude + " lon=" + session.GPS.Longitude + " updated_at=" + session.GPS.Updated.String() + "\n\n" + + 'RSSI: ' + data.RSSI + "\n" + + 'Reason: ' + data.Reason + "\n" + + 'Address1: ' + data.Address1 + "\n" + + 'Address2: ' + data.Address2 + "\n" + + 'Address3: ' + data.Address3; // send to telegram bot sendMessage(message); -}); +} -// register for wifi.client.handshake events -onEvent('wifi.client.handshake', function(event){ +function onHandshake(event){ var data = event.Data; var what = 'handshake'; @@ -60,12 +48,26 @@ onEvent('wifi.client.handshake', function(event){ // send to telegram bot sendMessage(message); -}); +} -// register for any event -onEvent(function(event){ +function onAnyEvent(event){ // if endpoint.new or endpoint.lost, clear the screen and show hosts if( event.Tag.indexOf('endpoint.') === 0 ) { - run('clear; net.show'); + // run('clear; net.show'); } -}); +} + +log("session script loaded"); + +// enable recon and probing of new hosts +run('net.recon on'); +run('net.probe on'); +// enable wifi scanning +run('set wifi.interface ' + wifiInterface); +run('wifi.recon on'); +// register for wifi.deauthentication events +onEvent('wifi.deauthentication', onDeauthentication); +// register for wifi.client.handshake events +onEvent('wifi.client.handshake', onHandshake); +// register for any event +onEvent(onAnyEvent); diff --git a/session/script.go b/session/script.go index 45c76618..c3db7b43 100644 --- a/session/script.go +++ b/session/script.go @@ -1,9 +1,8 @@ package session import ( - "github.com/evilsocket/islazy/plugin" - _ "github.com/bettercap/bettercap/js" + "github.com/evilsocket/islazy/plugin" ) type Script struct { diff --git a/session/script_builtin_runtime.go b/session/script_builtin_runtime.go index f180e196..40e1d8e1 100644 --- a/session/script_builtin_runtime.go +++ b/session/script_builtin_runtime.go @@ -56,9 +56,12 @@ func jsOnEventFunc(call otto.FunctionCall) otto.Value { for event := range listener { if expr == "" || event.Tag == expr { + // lock vm + I.script.Lock() if _, err := cb.Call(otto.NullValue(), event); err != nil { I.Events.Log(log.ERROR, "error dispatching event %s: %v", event.Tag, err) } + I.script.Unlock() } } }(filterExpr, cb)