bettercap/_example/example.js
2021-04-08 22:13:57 +02:00

99 lines
No EOL
3 KiB
JavaScript

require("config")
require("telegram")
var fakeESSID = random.String(16, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
var fakeBSSID = random.Mac()
function onDeauthentication(event) {
var data = event.data;
run('graph.to_dot ' + data.address1);
run('!dot -Tpng bettergraph.dot > /tmp/graph_deauth.png')
var message = '🚨 Detected deauthentication frame:\n\n' +
'Time: ' + event.time + "\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);
sendPhoto("/tmp/graph_deauth.png");
}
function onNewAP(event){
var ap = event.data;
if(ap.hostname == fakeESSID) {
run('graph.to_dot ' + ap.mac);
run('!dot -Tpng bettergraph.dot > /tmp/graph_ap.png')
var message = '🚨 Detected possible rogue AP:\n\n' +
'Time: ' + event.time + "\n" +
'GPS: lat=' + session.GPS.Latitude + " lon=" + session.GPS.Longitude + " updated_at=" + session.GPS.Updated.String() + "\n\n" +
'AP: ' + ap.mac + ' (' + ap.vendor + ')';
// send to telegram bot
sendMessage(message);
sendPhoto("/tmp/graph_ap.png");
}
}
function onHandshake(event){
var data = event.data;
var what = 'handshake';
run('graph.to_dot ' + data.station);
run('!dot -Tpng bettergraph.dot > /tmp/graph_handshake.png')
if(data.pmkid != null) {
what = "RSN PMKID";
} else if(data.full) {
what += " (full)";
} else if(data.half) {
what += " (half)";
}
var message = '💰 Captured ' + what + ':\n\n' +
'Time: ' + event.time + "\n" +
'GPS: lat=' + session.GPS.Latitude + " lon=" + session.GPS.Longitude + " updated_at=" + session.GPS.Updated.String() + "\n\n" +
'Station: ' + data.station + "\n" +
'AP: ' + data.ap;
// send to telegram bot
sendMessage(message);
sendPhoto("/tmp/graph_handshake.png");
}
function onTick(event) {
run('wifi.probe ' + fakeBSSID + ' ' + fakeESSID);
}
log("session script loaded, fake AP is " + fakeESSID);
// enable the graph module
run('graph on')
// create an empty ticker so we can run commands every few seconds
run('set ticker.commands ""')
run('set ticker.period 10')
run('ticker on')
// 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');
// send fake client probes every tick
onEvent('tick', onTick);
// register for wifi.deauthentication events
onEvent('wifi.deauthentication', onDeauthentication);
// register for wifi.client.handshake events
onEvent('wifi.client.handshake', onHandshake);
// register for wifi.ap.new events
onEvent('wifi.ap.new', onNewAP);