Skip to content

Commit

Permalink
new: gps.new event now reports GPS data changes as they occur (fixes #…
Browse files Browse the repository at this point in the history
  • Loading branch information
evilsocket committed May 11, 2021
1 parent 8310209 commit 8c00207
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 20 deletions.
8 changes: 0 additions & 8 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -32,26 +32,18 @@ require (
github.com/jpillora/go-tld v1.1.1
github.com/koppacetic/go-gpsd v0.4.0
github.com/kr/binarydist v0.1.0 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/malfunkt/iprange v0.9.0
github.com/mattn/go-colorable v0.1.8 // indirect
github.com/mdlayher/dhcp6 v0.0.0-20190311162359-2a67805d7d0b
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect
github.com/mgutz/logxi v0.0.0-20161027140823-aebf8a7d67ab // indirect
github.com/miekg/dns v1.1.41
github.com/mitchellh/go-homedir v1.1.0
github.com/pkg/errors v0.9.1 // indirect
github.com/robertkrimen/otto v0.0.0-20200922221731-ef014fd054ac
github.com/stretchr/testify v1.7.0 // indirect
github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07
github.com/thoj/go-ircevent v0.0.0-20190807115034-8e7ce4b5a1eb
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 // indirect
golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1
golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57 // indirect
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
gopkg.in/sourcemap.v1 v1.0.5 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
honnef.co/go/tools v0.0.0-2019.2.1 // indirect
)
7 changes: 5 additions & 2 deletions modules/events_stream/events_view.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@ package events_stream

import (
"fmt"
"github.com/bettercap/bettercap/network"
"github.com/bettercap/bettercap/session"
"io"
"os"
"strings"

"github.com/bettercap/bettercap/network"
"github.com/bettercap/bettercap/session"

"github.com/bettercap/bettercap/modules/net_sniff"
"github.com/bettercap/bettercap/modules/syn_scan"

Expand Down Expand Up @@ -119,6 +120,8 @@ func (mod *EventsStream) Render(output io.Writer, e session.Event) {
mod.viewBLEEvent(output, e)
} else if strings.HasPrefix(e.Tag, "hid.") {
mod.viewHIDEvent(output, e)
} else if strings.HasPrefix(e.Tag, "gps.") {
mod.viewGPSEvent(output, e)
} else if strings.HasPrefix(e.Tag, "mod.") {
mod.viewModuleEvent(output, e)
} else if strings.HasPrefix(e.Tag, "net.sniff.") {
Expand Down
24 changes: 24 additions & 0 deletions modules/events_stream/events_view_gps.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package events_stream

import (
"fmt"
"io"

"github.com/bettercap/bettercap/session"
"github.com/evilsocket/islazy/tui"
)

func (mod *EventsStream) viewGPSEvent(output io.Writer, e session.Event) {
if e.Tag == "gps.new" {
gps := e.Data.(session.GPS)

fmt.Fprintf(output, "[%s] [%s] latitude:%f longitude:%f quality:%s satellites:%d altitude:%f\n",
e.Time.Format(mod.timeFormat),
tui.Green(e.Tag),
gps.Latitude,
gps.Longitude,
gps.FixQuality,
gps.NumSatellites,
gps.Altitude)
}
}
15 changes: 5 additions & 10 deletions modules/gps/gps.go
Original file line number Diff line number Diff line change
Expand Up @@ -138,16 +138,7 @@ func (mod *GPS) readFromSerial() {
if line, err := mod.readLine(); err == nil {
if s, err := nmea.Parse(line); err == nil {
// http://aprs.gids.nl/nmea/#gga
if m, ok := s.(nmea.GNGGA); ok {
mod.Session.GPS.Updated = time.Now()
mod.Session.GPS.Latitude = m.Latitude
mod.Session.GPS.Longitude = m.Longitude
mod.Session.GPS.FixQuality = m.FixQuality
mod.Session.GPS.NumSatellites = m.NumSatellites
mod.Session.GPS.HDOP = m.HDOP
mod.Session.GPS.Altitude = m.Altitude
mod.Session.GPS.Separation = m.Separation
} else if m, ok := s.(nmea.GPGGA); ok {
if m, ok := s.(nmea.GGA); ok {
mod.Session.GPS.Updated = time.Now()
mod.Session.GPS.Latitude = m.Latitude
mod.Session.GPS.Longitude = m.Longitude
Expand All @@ -156,6 +147,8 @@ func (mod *GPS) readFromSerial() {
mod.Session.GPS.HDOP = m.HDOP
mod.Session.GPS.Altitude = m.Altitude
mod.Session.GPS.Separation = m.Separation

mod.Session.Events.Add("gps.new", mod.Session.GPS)
}
} else {
mod.Debug("error parsing line '%s': %s", line, err)
Expand All @@ -173,6 +166,8 @@ func (mod *GPS) runFromGPSD() {
mod.Session.GPS.Longitude = report.Lon
mod.Session.GPS.FixQuality = ModeInfo[report.Mode]
mod.Session.GPS.Altitude = report.Alt

mod.Session.Events.Add("gps.new", mod.Session.GPS)
})

mod.gpsd.Subscribe("SKY", func(r interface{}) {
Expand Down

0 comments on commit 8c00207

Please sign in to comment.