Scripting

BetterCAP has a builtin Javascript engine based on Otto that you can use to interact with the session and automate tasks.

Session scripts can be loaded using the -script FILENAME command line argument:

sudo bettercap -script /path/to/script.js

Once loaded the script can run session commands:

run('net.probe on');

or shell commands:

run('!touch /tmp/yo');

register for specific events:

onEvent('wifi.client.handshake', function(event){
    var data = event.data;
    var gps = session.GPS; // session is a global object with all the session data
    var what = 'handshake';

    if(data.pmkid != null) {
        what = "RSN PMKID";
    } else if(data.full) {
        what += " (full)";
    } else if(data.half) {
        what += " (half)";
    }

    log('💰 Captured ' + what + ':');
    log(' station: ' + data.station);
    log(' ap: ' + data.ap);
    log(' lat:' + gps.Latitude + ' lon:' + gps.Longitude + ' updated_at:' + gps.Updated.String());
});

register for any event:

onEvent(function(event){
    log(event.tag);
});

perform HTTP queries:

var resp = http.Get(url, {});
if( resp.Error ) {
    log(resp.Error.Error());
} else {
    log(resp.JSON.something);
}

and a variety of other tasks depending on your imagination :D Check the scripts repository for some example scripts.