more lint driven refactoring

This commit is contained in:
evilsocket 2018-04-24 18:26:16 +02:00
commit 0de6f3a76e
No known key found for this signature in database
GPG key ID: 1564D7F30393A456
57 changed files with 168 additions and 241 deletions

2
Gopkg.lock generated
View file

@ -195,6 +195,6 @@
[solve-meta] [solve-meta]
analyzer-name = "dep" analyzer-name = "dep"
analyzer-version = 1 analyzer-version = 1
inputs-digest = "16887d6924226ea7174b18c0c2a92da30997904da44648f7df6927b3ec8e8de1" inputs-digest = "2b0f222c61ea5761232c564da1ab8bd87de5daf61b4ba4ebc89e8f0965a89f95"
solver-name = "gps-cdcl" solver-name = "gps-cdcl"
solver-version = 1 solver-version = 1

View file

@ -122,7 +122,7 @@ func (f *PfFirewall) enable(enabled bool) {
func (f PfFirewall) EnableRedirection(r *Redirection, enabled bool) error { func (f PfFirewall) EnableRedirection(r *Redirection, enabled bool) error {
rule := f.generateRule(r) rule := f.generateRule(r)
if enabled == true { if enabled {
fd, err := os.OpenFile(f.filename, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0600) fd, err := os.OpenFile(f.filename, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0600)
if err != nil { if err != nil {
return err return err

View file

@ -54,7 +54,7 @@ func (f WindowsFirewall) generateRule(r *Redirection, enabled bool) []string {
fmt.Sprintf("listenport=%d", r.SrcPort), fmt.Sprintf("listenport=%d", r.SrcPort),
} }
if enabled == true { if enabled {
rule = append(rule, fmt.Sprintf("connectport=%d", r.DstPort)) rule = append(rule, fmt.Sprintf("connectport=%d", r.DstPort))
rule = append(rule, fmt.Sprintf("connectaddress=%s", r.DstAddress)) rule = append(rule, fmt.Sprintf("connectaddress=%s", r.DstAddress))
rule = append(rule, fmt.Sprintf("protocol=%s", r.Protocol)) rule = append(rule, fmt.Sprintf("protocol=%s", r.Protocol))
@ -93,7 +93,7 @@ func (f *WindowsFirewall) EnableRedirection(r *Redirection, enabled bool) error
} }
rule := f.generateRule(r, enabled) rule := f.generateRule(r, enabled)
if enabled == true { if enabled {
rule = append([]string{"interface", "portproxy", "add", "v4tov4"}, rule...) rule = append([]string{"interface", "portproxy", "add", "v4tov4"}, rule...)
} else { } else {
rule = append([]string{"interface", "portproxy", "delete", "v4tov4"}, rule...) rule = append([]string{"interface", "portproxy", "delete", "v4tov4"}, rule...)

View file

@ -20,7 +20,7 @@ func main() {
defer sess.Close() defer sess.Close()
if core.HasColors == false { if core.HasColors == false {
if *sess.Options.NoColors == true { if *sess.Options.NoColors {
fmt.Printf("\n\nWARNING: Terminal colors have been disabled, view will be very limited.\n\n") fmt.Printf("\n\nWARNING: Terminal colors have been disabled, view will be very limited.\n\n")
} else { } else {
fmt.Printf("\n\nWARNING: This terminal does not support colors, view will be very limited.\n\n") fmt.Printf("\n\nWARNING: This terminal does not support colors, view will be very limited.\n\n")

View file

@ -2,7 +2,7 @@ package modules
import ( import (
"github.com/bettercap/gatt" "github.com/bettercap/gatt"
"github.com/bettercap/gatt/linux/cmd" // "github.com/bettercap/gatt/linux/cmd"
) )
var defaultBLEClientOptions = []gatt.Option{ var defaultBLEClientOptions = []gatt.Option{
@ -10,6 +10,8 @@ var defaultBLEClientOptions = []gatt.Option{
gatt.LnxDeviceID(-1, true), gatt.LnxDeviceID(-1, true),
} }
/*
var defaultBLEServerOptions = []gatt.Option{ var defaultBLEServerOptions = []gatt.Option{
gatt.LnxMaxConnections(255), gatt.LnxMaxConnections(255),
gatt.LnxDeviceID(-1, true), gatt.LnxDeviceID(-1, true),
@ -19,3 +21,5 @@ var defaultBLEServerOptions = []gatt.Option{
AdvertisingChannelMap: 0x7, AdvertisingChannelMap: 0x7,
}), }),
} }
*/

View file

@ -157,7 +157,7 @@ func (s *EventsStream) Start() error {
s.waitChan <- &e s.waitChan <- &e
} }
if s.ignoreList.Ignored(e) == false { if !s.ignoreList.Ignored(e) {
s.View(e, true) s.View(e, true)
} else { } else {
log.Debug("Skipping ignored event %v", e) log.Debug("Skipping ignored event %v", e)

View file

@ -72,7 +72,7 @@ func (p *HttpProxy) Configure() error {
var scriptPath string var scriptPath string
var stripSSL bool var stripSSL bool
if p.Running() == true { if p.Running() {
return session.ErrAlreadyStarted return session.ErrAlreadyStarted
} else if err, address = p.StringParam("http.proxy.address"); err != nil { } else if err, address = p.StringParam("http.proxy.address"); err != nil {
return err return err

View file

@ -69,8 +69,8 @@ func NewHTTPProxy(s *session.Session) *HTTPProxy {
p.Proxy.Logger.SetOutput(ioutil.Discard) p.Proxy.Logger.SetOutput(ioutil.Discard)
p.Proxy.NonproxyHandler = http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { p.Proxy.NonproxyHandler = http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
if p.doProxy(req) == true { if p.doProxy(req) {
if p.isTLS == false { if !p.isTLS {
req.URL.Scheme = "http" req.URL.Scheme = "http"
} }
req.URL.Host = req.Host req.URL.Host = req.Host
@ -127,7 +127,7 @@ func (p *HTTPProxy) Configure(address string, proxyPort int, httpPort int, scrip
WriteTimeout: httpWriteTimeout, WriteTimeout: httpWriteTimeout,
} }
if p.sess.Firewall.IsForwardingEnabled() == false { if !p.sess.Firewall.IsForwardingEnabled() {
log.Info("Enabling forwarding.") log.Info("Enabling forwarding.")
p.sess.Firewall.EnableForwarding(true) p.sess.Firewall.EnableForwarding(true)
} }
@ -303,13 +303,13 @@ func (p *HTTPProxy) Start() {
var err error var err error
strip := core.Yellow("enabled") strip := core.Yellow("enabled")
if p.stripper.Enabled() == false { if !p.stripper.Enabled() {
strip = core.Dim("disabled") strip = core.Dim("disabled")
} }
log.Info("%s started on %s (sslstrip %s)", core.Green(p.Name), p.Server.Addr, strip) log.Info("%s started on %s (sslstrip %s)", core.Green(p.Name), p.Server.Addr, strip)
if p.isTLS == true { if p.isTLS {
err = p.httpsWorker() err = p.httpsWorker()
} else { } else {
err = p.httpWorker() err = p.httpWorker()
@ -332,7 +332,7 @@ func (p *HTTPProxy) Stop() error {
p.sess.UnkCmdCallback = nil p.sess.UnkCmdCallback = nil
if p.isTLS == true { if p.isTLS {
p.isRunning = false p.isRunning = false
p.sniListener.Close() p.sniListener.Close()
return nil return nil

View file

@ -54,7 +54,7 @@ func (t *CookieTracker) IsClean(req *http.Request) bool {
defer t.RUnlock() defer t.RUnlock()
// was it already processed? // was it already processed?
if _, found := t.set[t.keyOf(req)]; found == true { if _, found := t.set[t.keyOf(req)]; found {
return true return true
} }

View file

@ -42,7 +42,7 @@ type HostTracker struct {
func NewHostTracker() *HostTracker { func NewHostTracker() *HostTracker {
return &HostTracker{ return &HostTracker{
hosts: make(map[string]*Host, 0), hosts: make(map[string]*Host),
} }
} }
@ -55,7 +55,7 @@ func (t *HostTracker) Track(host, stripped string) {
func (t *HostTracker) Unstrip(stripped string) *Host { func (t *HostTracker) Unstrip(stripped string) *Host {
t.RLock() t.RLock()
defer t.RUnlock() defer t.RUnlock()
if host, found := t.hosts[stripped]; found == true { if host, found := t.hosts[stripped]; found {
return host return host
} }
return nil return nil

View file

@ -62,7 +62,7 @@ func (s *SSLStripper) dnsReply(pkt gopacket.Packet, peth *layers.Ethernet, pudp
redir := fmt.Sprintf("(->%s)", address) redir := fmt.Sprintf("(->%s)", address)
who := target.String() who := target.String()
if t, found := s.session.Lan.Get(target.String()); found == true { if t, found := s.session.Lan.Get(target.String()); found {
who = t.String() who = t.String()
} }
@ -160,7 +160,7 @@ func (s *SSLStripper) onPacket(pkt gopacket.Packet) {
func (s *SSLStripper) Enable(enabled bool) { func (s *SSLStripper) Enable(enabled bool) {
s.enabled = enabled s.enabled = enabled
if enabled == true && s.handle == nil { if enabled && s.handle == nil {
var err error var err error
if s.handle, err = pcap.OpenLive(s.session.Interface.Name(), 65536, true, pcap.BlockForever); err != nil { if s.handle, err = pcap.OpenLive(s.session.Interface.Name(), 65536, true, pcap.BlockForever); err != nil {
@ -181,7 +181,7 @@ func (s *SSLStripper) Enable(enabled bool) {
src := gopacket.NewPacketSource(s.handle, s.handle.LinkType()) src := gopacket.NewPacketSource(s.handle, s.handle.LinkType())
s.pktSourceChan = src.Packets() s.pktSourceChan = src.Packets()
for packet := range s.pktSourceChan { for packet := range s.pktSourceChan {
if s.enabled == false { if !s.enabled {
break break
} }
@ -249,7 +249,7 @@ func (s *SSLStripper) processURL(url string) string {
} }
} }
// fallback // fallback
if found == false { if !found {
url = strings.Replace(url, "://", "://wwww.", 1) url = strings.Replace(url, "://", "://wwww.", 1)
} }
@ -262,7 +262,7 @@ func (s *SSLStripper) processURL(url string) string {
// - handling stripped domains // - handling stripped domains
// - making unknown session cookies expire // - making unknown session cookies expire
func (s *SSLStripper) Preprocess(req *http.Request, ctx *goproxy.ProxyCtx) (redir *http.Response) { func (s *SSLStripper) Preprocess(req *http.Request, ctx *goproxy.ProxyCtx) (redir *http.Response) {
if s.enabled == false { if !s.enabled {
return return
} }
@ -284,7 +284,7 @@ func (s *SSLStripper) Preprocess(req *http.Request, ctx *goproxy.ProxyCtx) (redi
req.Header.Set("Host", original.Hostname) req.Header.Set("Host", original.Hostname)
} }
if s.cookies.IsClean(req) == false { if !s.cookies.IsClean(req) {
// check if we need to redirect the user in order // check if we need to redirect the user in order
// to make unknown session cookies expire // to make unknown session cookies expire
log.Info("[%s] Sending expired cookies for %s to %s", core.Green("sslstrip"), core.Yellow(req.Host), req.RemoteAddr) log.Info("[%s] Sending expired cookies for %s to %s", core.Green("sslstrip"), core.Yellow(req.Host), req.RemoteAddr)
@ -297,7 +297,7 @@ func (s *SSLStripper) Preprocess(req *http.Request, ctx *goproxy.ProxyCtx) (redi
func (s *SSLStripper) isMaxRedirs(hostname string) bool { func (s *SSLStripper) isMaxRedirs(hostname string) bool {
// did we already track redirections for this host? // did we already track redirections for this host?
if nredirs, found := s.redirs[hostname]; found == true { if nredirs, found := s.redirs[hostname]; found {
// reached the threshold? // reached the threshold?
if nredirs >= maxRedirs { if nredirs >= maxRedirs {
log.Warning("[%s] Hit max redirections for %s, serving HTTPS.", core.Green("sslstrip"), hostname) log.Warning("[%s] Hit max redirections for %s, serving HTTPS.", core.Green("sslstrip"), hostname)
@ -312,12 +312,11 @@ func (s *SSLStripper) isMaxRedirs(hostname string) bool {
// start tracking redirections // start tracking redirections
s.redirs[hostname] = 1 s.redirs[hostname] = 1
} }
return false return false
} }
func (s *SSLStripper) Process(res *http.Response, ctx *goproxy.ProxyCtx) { func (s *SSLStripper) Process(res *http.Response, ctx *goproxy.ProxyCtx) {
if s.enabled == false { if !s.enabled {
return return
} }
@ -355,7 +354,7 @@ func (s *SSLStripper) Process(res *http.Response, ctx *goproxy.ProxyCtx) {
// if we have a text or html content type, fetch the body // if we have a text or html content type, fetch the body
// and perform sslstripping // and perform sslstripping
if s.isContentStrippable(res) == true { if s.isContentStrippable(res) {
raw, err := ioutil.ReadAll(res.Body) raw, err := ioutil.ReadAll(res.Body)
if err != nil { if err != nil {
log.Error("Could not read response body: %s", err) log.Error("Could not read response body: %s", err)
@ -363,12 +362,12 @@ func (s *SSLStripper) Process(res *http.Response, ctx *goproxy.ProxyCtx) {
} }
body := string(raw) body := string(raw)
urls := make(map[string]string, 0) urls := make(map[string]string)
matches := httpsLinksParser.FindAllString(body, -1) matches := httpsLinksParser.FindAllString(body, -1)
for _, u := range matches { for _, u := range matches {
// make sure we only strip stuff we're able to // make sure we only strip stuff we're able to
// resolve and process // resolve and process
if strings.ContainsRune(u, '.') == true { if strings.ContainsRune(u, '.') {
urls[u] = s.processURL(u) urls[u] = s.processURL(u)
} }
} }

View file

@ -17,7 +17,7 @@ func getCachedCert(domain string, port int) *tls.Certificate {
certLock.Lock() certLock.Lock()
defer certLock.Unlock() defer certLock.Unlock()
if cert, found := certCache[key]; found == true { if cert, found := certCache[key]; found {
return cert return cert
} }
return nil return nil

View file

@ -77,15 +77,11 @@ func (j *JSRequest) UpdateHash() {
func (j *JSRequest) WasModified() bool { func (j *JSRequest) WasModified() bool {
// body was read // body was read
if j.bodyRead == true { if j.bodyRead {
return true return true
} }
// check if any of the fields has been changed // check if any of the fields has been changed
newHash := j.NewHash() return j.NewHash() != j.refHash
if newHash != j.refHash {
return true
}
return false
} }
func (j *JSRequest) GetHeader(name, deflt string) string { func (j *JSRequest) GetHeader(name, deflt string) string {
@ -137,7 +133,7 @@ func (j *JSRequest) ParseForm() map[string]string {
j.Body = j.ReadBody() j.Body = j.ReadBody()
} }
form := make(map[string]string, 0) form := make(map[string]string)
parts := strings.Split(j.Body, "&") parts := strings.Split(j.Body, "&")
for _, part := range parts { for _, part := range parts {
@ -171,7 +167,7 @@ func (j *JSRequest) ToRequest() (req *http.Request) {
} }
} }
if hadType == false && j.ContentType != "" { if !hadType && j.ContentType != "" {
req.Header.Set("Content-Type", j.ContentType) req.Header.Set("Content-Type", j.ContentType)
} }

View file

@ -64,20 +64,15 @@ func (j *JSResponse) UpdateHash() {
} }
func (j *JSResponse) WasModified() bool { func (j *JSResponse) WasModified() bool {
if j.bodyRead == true { if j.bodyRead {
// body was read // body was read
return true return true
} else if j.Body != "" { } else if j.Body != "" {
// body was not read but just set // body was not read but just set
return true return true
} }
// check if any of the fields has been changed // check if any of the fields has been changed
newHash := j.NewHash() return j.NewHash() != j.refHash
if newHash != j.refHash {
return true
}
return false
} }
func (j *JSResponse) GetHeader(name, deflt string) string { func (j *JSResponse) GetHeader(name, deflt string) string {

View file

@ -89,7 +89,7 @@ func (httpd *HttpServer) Configure() error {
var certFile string var certFile string
var keyFile string var keyFile string
if httpd.Running() == true { if httpd.Running() {
return session.ErrAlreadyStarted return session.ErrAlreadyStarted
} }
@ -130,7 +130,7 @@ func (httpd *HttpServer) Configure() error {
} }
if certFile != "" && keyFile != "" { if certFile != "" && keyFile != "" {
if core.Exists(certFile) == false || core.Exists(keyFile) == false { if !core.Exists(certFile) || !core.Exists(keyFile) {
log.Info("Generating server TLS key to %s", keyFile) log.Info("Generating server TLS key to %s", keyFile)
log.Info("Generating server TLS certificate to %s", certFile) log.Info("Generating server TLS certificate to %s", certFile)
if err := tls.Generate(certFile, keyFile); err != nil { if err := tls.Generate(certFile, keyFile); err != nil {
@ -155,7 +155,6 @@ func (httpd *HttpServer) Start() error {
return httpd.SetRunning(true, func() { return httpd.SetRunning(true, func() {
var err error var err error
if httpd.isTLS() { if httpd.isTLS() {
log.Info("HTTPS server starting on https://%s", httpd.server.Addr) log.Info("HTTPS server starting on https://%s", httpd.server.Addr)
err = httpd.server.ListenAndServeTLS(httpd.certFile, httpd.keyFile) err = httpd.server.ListenAndServeTLS(httpd.certFile, httpd.keyFile)

View file

@ -87,7 +87,7 @@ func (p *HttpsProxy) Configure() error {
var keyFile string var keyFile string
var stripSSL bool var stripSSL bool
if p.Running() == true { if p.Running() {
return session.ErrAlreadyStarted return session.ErrAlreadyStarted
} else if err, address = p.StringParam("https.proxy.address"); err != nil { } else if err, address = p.StringParam("https.proxy.address"); err != nil {
return err return err
@ -109,7 +109,7 @@ func (p *HttpsProxy) Configure() error {
return err return err
} }
if core.Exists(certFile) == false || core.Exists(keyFile) == false { if !core.Exists(certFile) || !core.Exists(keyFile) {
log.Info("Generating proxy certification authority TLS key to %s", keyFile) log.Info("Generating proxy certification authority TLS key to %s", keyFile)
log.Info("Generating proxy certification authority TLS certificate to %s", certFile) log.Info("Generating proxy certification authority TLS certificate to %s", certFile)
if err := tls.Generate(certFile, keyFile); err != nil { if err := tls.Generate(certFile, keyFile); err != nil {

View file

@ -101,7 +101,7 @@ func (mc *MacChanger) setMac(mac net.HardwareAddr) error {
} }
func (mc *MacChanger) Start() error { func (mc *MacChanger) Start() error {
if mc.Running() == true { if mc.Running() {
return session.ErrAlreadyStarted return session.ErrAlreadyStarted
} else if err := mc.Configure(); err != nil { } else if err := mc.Configure(); err != nil {
return err return err

View file

@ -69,30 +69,19 @@ func (mysql *MySQLServer) Configure() error {
var address string var address string
var port int var port int
if mysql.Running() == true { if mysql.Running() {
return session.ErrAlreadyStarted return session.ErrAlreadyStarted
} } else if err, mysql.infile = mysql.StringParam("mysql.server.infile"); err != nil {
return err
if err, mysql.infile = mysql.StringParam("mysql.server.infile"); err != nil { } else if err, address = mysql.StringParam("mysql.server.address"); err != nil {
return err
} else if err, port = mysql.IntParam("mysql.server.port"); err != nil {
return err
} else if mysql.address, err = net.ResolveTCPAddr("tcp", fmt.Sprintf("%s:%d", address, port)); err != nil {
return err
} else if mysql.listener, err = net.ListenTCP("tcp", mysql.address); err != nil {
return err return err
} }
if err, address = mysql.StringParam("mysql.server.address"); err != nil {
return err
}
if err, port = mysql.IntParam("mysql.server.port"); err != nil {
return err
}
if mysql.address, err = net.ResolveTCPAddr("tcp", fmt.Sprintf("%s:%d", address, port)); err != nil {
return err
}
if mysql.listener, err = net.ListenTCP("tcp", mysql.address); err != nil {
return err
}
return nil return nil
} }

View file

@ -103,9 +103,9 @@ func (p *Prober) Start() error {
for p.Running() { for p.Running() {
for _, ip := range addresses { for _, ip := range addresses {
if p.Running() == false { if !p.Running() {
return return
} else if p.Session.Skip(ip) == true { } else if p.Session.Skip(ip) {
log.Debug("Skipping address %s from UDP probing.", ip) log.Debug("Skipping address %s from UDP probing.", ip)
continue continue
} }

View file

@ -73,7 +73,7 @@ func (d *Discovery) runDiff(cache network.ArpTable) {
var rem network.ArpTable = make(network.ArpTable) var rem network.ArpTable = make(network.ArpTable)
d.Session.Lan.EachHost(func(mac string, e *network.Endpoint) { d.Session.Lan.EachHost(func(mac string, e *network.Endpoint) {
if _, found := cache[mac]; found == false { if _, found := cache[mac]; !found {
rem[mac] = e.IpAddress rem[mac] = e.IpAddress
} }
}) })
@ -100,7 +100,6 @@ func (d *Discovery) Start() error {
return d.SetRunning(true, func() { return d.SetRunning(true, func() {
every := time.Duration(1) * time.Second every := time.Duration(1) * time.Second
iface := d.Session.Interface.Name() iface := d.Session.Interface.Name()
for d.Running() { for d.Running() {
if table, err := network.ArpUpdate(iface); err != nil { if table, err := network.ArpUpdate(iface); err != nil {
log.Error("%s", err) log.Error("%s", err)

View file

@ -31,28 +31,13 @@ func (p ProtoPairList) Len() int { return len(p) }
func (p ProtoPairList) Less(i, j int) bool { return p[i].Hits < p[j].Hits } func (p ProtoPairList) Less(i, j int) bool { return p[i].Hits < p[j].Hits }
func (p ProtoPairList) Swap(i, j int) { p[i], p[j] = p[j], p[i] } func (p ProtoPairList) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
func rankByProtoHits(protos map[string]uint64) (ProtoPairList, uint64) {
pl := make(ProtoPairList, len(protos))
max := uint64(0)
i := 0
for k, v := range protos {
pl[i] = ProtoPair{k, v}
if v > max {
max = v
}
i++
}
sort.Sort(sort.Reverse(pl))
return pl, max
}
func (d *Discovery) getRow(e *network.Endpoint, withMeta bool) []string { func (d *Discovery) getRow(e *network.Endpoint, withMeta bool) []string {
sinceStarted := time.Since(d.Session.StartedAt) sinceStarted := time.Since(d.Session.StartedAt)
sinceFirstSeen := time.Since(e.FirstSeen) sinceFirstSeen := time.Since(e.FirstSeen)
addr := e.IpAddress addr := e.IpAddress
mac := e.HwAddress mac := e.HwAddress
if d.Session.Lan.WasMissed(e.HwAddress) == true { if d.Session.Lan.WasMissed(e.HwAddress) {
// if endpoint was not found in ARP at least once // if endpoint was not found in ARP at least once
addr = core.Dim(addr) addr = core.Dim(addr)
mac = core.Dim(mac) mac = core.Dim(mac)
@ -75,7 +60,7 @@ func (d *Discovery) getRow(e *network.Endpoint, withMeta bool) []string {
var traffic *packets.Traffic var traffic *packets.Traffic
var found bool var found bool
if traffic, found = d.Session.Queue.Traffic[e.IpAddress]; found == false { if traffic, found = d.Session.Queue.Traffic[e.IpAddress]; !found {
traffic = &packets.Traffic{} traffic = &packets.Traffic{}
} }
@ -135,7 +120,7 @@ func (d *Discovery) Show(by string) error {
hasMeta := false hasMeta := false
for _, t := range targets { for _, t := range targets {
if t.Meta.Empty() == false { if !t.Meta.Empty() {
hasMeta = true hasMeta = true
break break
} }

View file

@ -35,11 +35,11 @@ func (a BySentSorter) Less(i, j int) bool {
var aTraffic *packets.Traffic = nil var aTraffic *packets.Traffic = nil
var bTraffic *packets.Traffic = nil var bTraffic *packets.Traffic = nil
if aTraffic, found = session.I.Queue.Traffic[a[i].IpAddress]; found == false { if aTraffic, found = session.I.Queue.Traffic[a[i].IpAddress]; !found {
aTraffic = &packets.Traffic{} aTraffic = &packets.Traffic{}
} }
if bTraffic, found = session.I.Queue.Traffic[a[j].IpAddress]; found == false { if bTraffic, found = session.I.Queue.Traffic[a[j].IpAddress]; !found {
bTraffic = &packets.Traffic{} bTraffic = &packets.Traffic{}
} }
@ -58,11 +58,11 @@ func (a ByRcvdSorter) Less(i, j int) bool {
var aTraffic *packets.Traffic = nil var aTraffic *packets.Traffic = nil
var bTraffic *packets.Traffic = nil var bTraffic *packets.Traffic = nil
if aTraffic, found = session.I.Queue.Traffic[a[i].IpAddress]; found == false { if aTraffic, found = session.I.Queue.Traffic[a[i].IpAddress]; !found {
aTraffic = &packets.Traffic{} aTraffic = &packets.Traffic{}
} }
if bTraffic, found = session.I.Queue.Traffic[a[j].IpAddress]; found == false { if bTraffic, found = session.I.Queue.Traffic[a[j].IpAddress]; !found {
bTraffic = &packets.Traffic{} bTraffic = &packets.Traffic{}
} }

View file

@ -2,7 +2,6 @@ package modules
import ( import (
"fmt" "fmt"
"net"
"time" "time"
"github.com/bettercap/bettercap/session" "github.com/bettercap/bettercap/session"
@ -91,20 +90,6 @@ func (s Sniffer) Author() string {
return "Simone Margaritelli <evilsocket@protonmail.com>" return "Simone Margaritelli <evilsocket@protonmail.com>"
} }
func same(a, b net.HardwareAddr) bool {
if len(a) != len(b) {
return false
}
for idx, v := range a {
if b[idx] != v {
return false
}
}
return true
}
func (s Sniffer) isLocalPacket(packet gopacket.Packet) bool { func (s Sniffer) isLocalPacket(packet gopacket.Packet) bool {
ipl := packet.Layer(layers.LayerTypeIPv4) ipl := packet.Layer(layers.LayerTypeIPv4)
if ipl != nil { if ipl != nil {
@ -117,7 +102,7 @@ func (s Sniffer) isLocalPacket(packet gopacket.Packet) bool {
} }
func (s *Sniffer) onPacketMatched(pkt gopacket.Packet) { func (s *Sniffer) onPacketMatched(pkt gopacket.Packet) {
if mainParser(pkt, s.Ctx.Verbose) == true { if mainParser(pkt, s.Ctx.Verbose) {
s.Stats.NumDumped++ s.Stats.NumDumped++
} }
} }
@ -125,7 +110,7 @@ func (s *Sniffer) onPacketMatched(pkt gopacket.Packet) {
func (s *Sniffer) Configure() error { func (s *Sniffer) Configure() error {
var err error var err error
if s.Running() == true { if s.Running() {
return session.ErrAlreadyStarted return session.ErrAlreadyStarted
} else if err, s.Ctx = s.GetContext(); err != nil { } else if err, s.Ctx = s.GetContext(); err != nil {
if s.Ctx != nil { if s.Ctx != nil {
@ -149,7 +134,7 @@ func (s *Sniffer) Start() error {
src := gopacket.NewPacketSource(s.Ctx.Handle, s.Ctx.Handle.LinkType()) src := gopacket.NewPacketSource(s.Ctx.Handle, s.Ctx.Handle.LinkType())
s.pktSourceChan = src.Packets() s.pktSourceChan = src.Packets()
for packet := range s.pktSourceChan { for packet := range s.pktSourceChan {
if s.Running() == false { if !s.Running() {
break break
} }
@ -164,9 +149,9 @@ func (s *Sniffer) Start() error {
s.Stats.NumLocal++ s.Stats.NumLocal++
} }
if s.Ctx.DumpLocal == true || isLocal == false { if s.Ctx.DumpLocal || !isLocal {
data := packet.Data() data := packet.Data()
if s.Ctx.Compiled == nil || s.Ctx.Compiled.Match(data) == true { if s.Ctx.Compiled == nil || s.Ctx.Compiled.Match(data) {
s.Stats.NumMatched++ s.Stats.NumMatched++
s.onPacketMatched(packet) s.onPacketMatched(packet)

View file

@ -11,7 +11,7 @@ import (
func dnsParser(ip *layers.IPv4, pkt gopacket.Packet, udp *layers.UDP) bool { func dnsParser(ip *layers.IPv4, pkt gopacket.Packet, udp *layers.UDP) bool {
dns, parsed := pkt.Layer(layers.LayerTypeDNS).(*layers.DNS) dns, parsed := pkt.Layer(layers.LayerTypeDNS).(*layers.DNS)
if parsed == false { if !parsed {
return false return false
} }
@ -19,14 +19,14 @@ func dnsParser(ip *layers.IPv4, pkt gopacket.Packet, udp *layers.UDP) bool {
return false return false
} }
m := make(map[string][]string, 0) m := make(map[string][]string)
for _, a := range dns.Answers { for _, a := range dns.Answers {
if a.IP == nil { if a.IP == nil {
continue continue
} }
hostname := string(a.Name) hostname := string(a.Name)
if _, found := m[hostname]; found == false { if _, found := m[hostname]; !found {
m[hostname] = make([]string, 0) m[hostname] = make([]string, 0)
} }

View file

@ -20,7 +20,7 @@ func tcpParser(ip *layers.IPv4, pkt gopacket.Packet, verbose bool) {
return return
} else if httpParser(ip, pkt, tcp) { } else if httpParser(ip, pkt, tcp) {
return return
} else if verbose == true { } else if verbose {
NewSnifferEvent( NewSnifferEvent(
pkt.Metadata().Timestamp, pkt.Metadata().Timestamp,
"tcp", "tcp",
@ -47,7 +47,7 @@ func udpParser(ip *layers.IPv4, pkt gopacket.Packet, verbose bool) {
return return
} else if krb5Parser(ip, pkt, udp) { } else if krb5Parser(ip, pkt, udp) {
return return
} else if verbose == true { } else if verbose {
NewSnifferEvent( NewSnifferEvent(
pkt.Metadata().Timestamp, pkt.Metadata().Timestamp,
"udp", "udp",
@ -68,7 +68,7 @@ func udpParser(ip *layers.IPv4, pkt gopacket.Packet, verbose bool) {
} }
func unkParser(ip *layers.IPv4, pkt gopacket.Packet, verbose bool) { func unkParser(ip *layers.IPv4, pkt gopacket.Packet, verbose bool) {
if verbose == true { if verbose {
NewSnifferEvent( NewSnifferEvent(
pkt.Metadata().Timestamp, pkt.Metadata().Timestamp,
pkt.TransportLayer().LayerType().String(), pkt.TransportLayer().LayerType().String(),
@ -111,13 +111,10 @@ func mainParser(pkt gopacket.Packet, verbose bool) bool {
unkParser(ip, pkt, verbose) unkParser(ip, pkt, verbose)
} }
return true return true
} } else if ok, radiotap, dot11 := packets.Dot11Parse(pkt); ok {
// are we sniffing in monitor mode? // are we sniffing in monitor mode?
if ok, radiotap, dot11 := packets.Dot11Parse(pkt); ok == true {
dot11Parser(radiotap, dot11, pkt, verbose) dot11Parser(radiotap, dot11, pkt, verbose)
return true return true
} }
return false return false
} }

View file

@ -31,11 +31,10 @@ func (s *SnifferStats) Print() error {
first := "never" first := "never"
last := "never" last := "never"
if s.FirstPacket.IsZero() == false { if !s.FirstPacket.IsZero() {
first = s.FirstPacket.String() first = s.FirstPacket.String()
} }
if !s.LastPacket.IsZero() {
if s.LastPacket.IsZero() == false {
last = s.LastPacket.String() last = s.LastPacket.String()
} }

View file

@ -3,7 +3,6 @@ package modules
import ( import (
"fmt" "fmt"
"net" "net"
"time"
"github.com/google/gopacket/layers" "github.com/google/gopacket/layers"
@ -11,10 +10,6 @@ import (
"github.com/bettercap/bettercap/session" "github.com/bettercap/bettercap/session"
) )
func vTime(t time.Time) string {
return t.Format("15:04:05")
}
func vIP(ip net.IP) string { func vIP(ip net.IP) string {
if session.I.Interface.IP.Equal(ip) { if session.I.Interface.IP.Equal(ip) {
return core.Dim("local") return core.Dim("local")

View file

@ -100,7 +100,7 @@ func (pp *PacketProxy) destroyQueue() {
func (pp *PacketProxy) runRule(enable bool) (err error) { func (pp *PacketProxy) runRule(enable bool) (err error) {
action := "-A" action := "-A"
if enable == false { if !enable {
action = "-D" action = "-D"
} }
@ -142,7 +142,7 @@ func (pp *PacketProxy) Configure() (err error) {
if pp.pluginPath == "" { if pp.pluginPath == "" {
return fmt.Errorf("The parameter %s can not be empty.", core.Bold("packet.proxy.plugin")) return fmt.Errorf("The parameter %s can not be empty.", core.Bold("packet.proxy.plugin"))
} else if core.Exists(pp.pluginPath) == false { } else if !core.Exists(pp.pluginPath) {
return fmt.Errorf("%s does not exist.", pp.pluginPath) return fmt.Errorf("%s does not exist.", pp.pluginPath)
} }
@ -155,7 +155,7 @@ func (pp *PacketProxy) Configure() (err error) {
return return
} else if sym, err = pp.plugin.Lookup("OnPacket"); err != nil { } else if sym, err = pp.plugin.Lookup("OnPacket"); err != nil {
return return
} else if pp.queueCb, ok = sym.(func(*nfqueue.Payload) int); ok == false { } else if pp.queueCb, ok = sym.(func(*nfqueue.Payload) int); !ok {
return fmt.Errorf("Symbol OnPacket is not a valid callback function.") return fmt.Errorf("Symbol OnPacket is not a valid callback function.")
} }
@ -187,7 +187,7 @@ func dummyCallback(payload *nfqueue.Payload) int {
} }
func (pp *PacketProxy) Start() error { func (pp *PacketProxy) Start() error {
if pp.Running() == true { if pp.Running() {
return session.ErrAlreadyStarted return session.ErrAlreadyStarted
} else if err := pp.Configure(); err != nil { } else if err := pp.Configure(); err != nil {
return err return err

View file

@ -41,7 +41,7 @@ func NewSynScanner(s *session.Session) *SynScanner {
ss.AddHandler(session.NewModuleHandler("syn.scan IP-RANGE [START-PORT] [END-PORT]", "syn.scan ([^\\s]+) ?(\\d+)?([\\s\\d]*)?", ss.AddHandler(session.NewModuleHandler("syn.scan IP-RANGE [START-PORT] [END-PORT]", "syn.scan ([^\\s]+) ?(\\d+)?([\\s\\d]*)?",
"Perform a syn port scanning against an IP address within the provided ports range.", "Perform a syn port scanning against an IP address within the provided ports range.",
func(args []string) error { func(args []string) error {
if ss.Running() == true { if ss.Running() {
return fmt.Errorf("A scan is already running, wait for it to end before starting a new one.") return fmt.Errorf("A scan is already running, wait for it to end before starting a new one.")
} }
@ -176,7 +176,7 @@ func (s *SynScanner) synScan() error {
// start sending SYN packets and wait // start sending SYN packets and wait
for _, address := range s.addresses { for _, address := range s.addresses {
if s.Running() == false { if !s.Running() {
break break
} }
mac, err := findMAC(s.Session, address, true) mac, err := findMAC(s.Session, address, true)
@ -186,7 +186,7 @@ func (s *SynScanner) synScan() error {
} }
for dstPort := s.startPort; dstPort < s.endPort+1; dstPort++ { for dstPort := s.startPort; dstPort < s.endPort+1; dstPort++ {
if s.Running() == false { if !s.Running() {
break break
} }

View file

@ -83,7 +83,7 @@ func (p *TcpProxy) Configure() error {
var proxyAddress string var proxyAddress string
var scriptPath string var scriptPath string
if p.Running() == true { if p.Running() {
return session.ErrAlreadyStarted return session.ErrAlreadyStarted
} else if err, address = p.StringParam("tcp.address"); err != nil { } else if err, address = p.StringParam("tcp.address"); err != nil {
return err return err
@ -111,7 +111,7 @@ func (p *TcpProxy) Configure() error {
} }
} }
if p.Session.Firewall.IsForwardingEnabled() == false { if !p.Session.Firewall.IsForwardingEnabled() {
log.Info("Enabling forwarding.") log.Info("Enabling forwarding.")
p.Session.Firewall.EnableForwarding(true) p.Session.Firewall.EnableForwarding(true)
} }

View file

@ -83,7 +83,7 @@ func (s *TcpProxyScript) OnData(from, to net.Addr, data []byte) []byte {
return nil return nil
} }
if ret.IsUndefined() == false && ret.IsString() { if !ret.IsUndefined() && ret.IsString() {
return []byte(ret.String()) return []byte(ret.String())
} }
} }

View file

@ -59,7 +59,7 @@ func (t *Ticker) Configure() error {
var commands string var commands string
var period int var period int
if t.Running() == true { if t.Running() {
return session.ErrAlreadyStarted return session.ErrAlreadyStarted
} else if err, commands = t.StringParam("ticker.commands"); err != nil { } else if err, commands = t.StringParam("ticker.commands"); err != nil {
return err return err
@ -82,7 +82,7 @@ func (t *Ticker) Start() error {
log.Info("Ticker running with period %.fs.", t.Period.Seconds()) log.Info("Ticker running with period %.fs.", t.Period.Seconds())
tick := time.NewTicker(t.Period) tick := time.NewTicker(t.Period)
for range tick.C { for range tick.C {
if t.Running() == false { if !t.Running() {
break break
} }

View file

@ -18,7 +18,7 @@ func findMAC(s *session.Session, ip net.IP, probe bool) (net.HardwareAddr, error
// do we have this ip mac address? // do we have this ip mac address?
mac, err = network.ArpLookup(s.Interface.Name(), ip.String(), false) mac, err = network.ArpLookup(s.Interface.Name(), ip.String(), false)
if err != nil && probe == true { if err != nil && probe {
from := s.Interface.IP from := s.Interface.IP
from_hw := s.Interface.HW from_hw := s.Interface.HW

View file

@ -69,7 +69,7 @@ func NewWiFiModule(s *session.Session) *WiFiModule {
bssid, err := net.ParseMAC(args[0]) bssid, err := net.ParseMAC(args[0])
if err != nil { if err != nil {
return err return err
} else if ap, found := w.Session.WiFi.Get(bssid.String()); found == true { } else if ap, found := w.Session.WiFi.Get(bssid.String()); found {
w.ap = ap w.ap = ap
w.stickChan = network.Dot11Freq2Chan(ap.Frequency) w.stickChan = network.Dot11Freq2Chan(ap.Frequency)
return nil return nil
@ -79,14 +79,11 @@ func NewWiFiModule(s *session.Session) *WiFiModule {
w.AddHandler(session.NewModuleHandler("wifi.recon clear", "", w.AddHandler(session.NewModuleHandler("wifi.recon clear", "",
"Remove the 802.11 base station filter.", "Remove the 802.11 base station filter.",
func(args []string) error { func(args []string) (err error) {
w.ap = nil w.ap = nil
w.stickChan = 0 w.stickChan = 0
var err error w.frequencies, err = network.GetSupportedFrequencies(w.Session.Interface.Name())
if w.frequencies, err = network.GetSupportedFrequencies(w.Session.Interface.Name()); err != nil {
return err return err
}
return nil
})) }))
w.AddHandler(session.NewModuleHandler("wifi.deauth BSSID", `wifi\.deauth ((?:[0-9A-Fa-f]{2}[:-]){5}(?:[0-9A-Fa-f]{2}))`, w.AddHandler(session.NewModuleHandler("wifi.deauth BSSID", `wifi\.deauth ((?:[0-9A-Fa-f]{2}[:-]){5}(?:[0-9A-Fa-f]{2}))`,
@ -253,19 +250,19 @@ func (w *WiFiModule) updateStats(dot11 *layers.Dot11, packet gopacket.Packet) {
bytes := uint64(len(packet.Data())) bytes := uint64(len(packet.Data()))
dst := dot11.Address1.String() dst := dot11.Address1.String()
if station, found := w.Session.WiFi.Get(dst); found == true { if station, found := w.Session.WiFi.Get(dst); found {
station.Received += bytes station.Received += bytes
} }
src := dot11.Address2.String() src := dot11.Address2.String()
if station, found := w.Session.WiFi.Get(src); found == true { if station, found := w.Session.WiFi.Get(src); found {
station.Sent += bytes station.Sent += bytes
} }
} }
if ok, enc, cipher, auth := packets.Dot11ParseEncryption(packet, dot11); ok == true { if ok, enc, cipher, auth := packets.Dot11ParseEncryption(packet, dot11); ok {
bssid := dot11.Address3.String() bssid := dot11.Address3.String()
if station, found := w.Session.WiFi.Get(bssid); found == true { if station, found := w.Session.WiFi.Get(bssid); found {
station.Encryption = enc station.Encryption = enc
station.Cipher = cipher station.Cipher = cipher
station.Authentication = auth station.Authentication = auth
@ -293,7 +290,7 @@ func (w *WiFiModule) Start() error {
src := gopacket.NewPacketSource(w.handle, w.handle.LinkType()) src := gopacket.NewPacketSource(w.handle, w.handle.LinkType())
w.pktSourceChan = src.Packets() w.pktSourceChan = src.Packets()
for packet := range w.pktSourceChan { for packet := range w.pktSourceChan {
if w.Running() == false { if !w.Running() {
break break
} else if packet == nil { } else if packet == nil {
continue continue
@ -302,9 +299,9 @@ func (w *WiFiModule) Start() error {
w.Session.Queue.TrackPacket(uint64(len(packet.Data()))) w.Session.Queue.TrackPacket(uint64(len(packet.Data())))
// perform initial dot11 parsing and layers validation // perform initial dot11 parsing and layers validation
if ok, radiotap, dot11 := packets.Dot11Parse(packet); ok == true { if ok, radiotap, dot11 := packets.Dot11Parse(packet); ok {
// check FCS checksum // check FCS checksum
if w.skipBroken && dot11.ChecksumValid() == false { if w.skipBroken && !dot11.ChecksumValid() {
log.Debug("Skipping dot11 packet with invalid checksum.") log.Debug("Skipping dot11 packet with invalid checksum.")
continue continue
} }
@ -326,7 +323,7 @@ func (w *WiFiModule) Stop() error {
// wait any pending write operation // wait any pending write operation
w.writes.Wait() w.writes.Wait()
// signal the main for loop we want to exit // signal the main for loop we want to exit
if w.pktSourceChanClosed == false { if !w.pktSourceChanClosed {
w.pktSourceChan <- nil w.pktSourceChan <- nil
} }
// close the pcap handle to make the main for exit // close the pcap handle to make the main for exit

View file

@ -16,7 +16,6 @@ var errNoRecon = errors.New("Module wifi.ap requires module wifi.recon to be act
func (w *WiFiModule) parseApConfig() (err error) { func (w *WiFiModule) parseApConfig() (err error) {
var bssid string var bssid string
if err, w.apConfig.SSID = w.StringParam("wifi.ap.ssid"); err != nil { if err, w.apConfig.SSID = w.StringParam("wifi.ap.ssid"); err != nil {
return return
} else if err, bssid = w.StringParam("wifi.ap.bssid"); err != nil { } else if err, bssid = w.StringParam("wifi.ap.bssid"); err != nil {
@ -28,13 +27,12 @@ func (w *WiFiModule) parseApConfig() (err error) {
} else if err, w.apConfig.Encryption = w.BoolParam("wifi.ap.encryption"); err != nil { } else if err, w.apConfig.Encryption = w.BoolParam("wifi.ap.encryption"); err != nil {
return return
} }
return return
} }
func (w *WiFiModule) startAp() error { func (w *WiFiModule) startAp() error {
// we need channel hopping and packet injection for this // we need channel hopping and packet injection for this
if w.Running() == false { if w.Running() {
return errNoRecon return errNoRecon
} else if w.apRunning { } else if w.apRunning {
return session.ErrAlreadyStarted return session.ErrAlreadyStarted
@ -47,7 +45,7 @@ func (w *WiFiModule) startAp() error {
}() }()
enc := core.Yellow("WPA2") enc := core.Yellow("WPA2")
if w.apConfig.Encryption == false { if !w.apConfig.Encryption {
enc = core.Green("Open") enc = core.Green("Open")
} }
log.Info("Sending beacons as SSID %s (%s) on channel %d (%s).", log.Info("Sending beacons as SSID %s (%s) on channel %d (%s).",

View file

@ -42,7 +42,7 @@ func (w *WiFiModule) sendDeauthPacket(ap net.HardwareAddr, client net.HardwareAd
func (w *WiFiModule) startDeauth(to net.HardwareAddr) error { func (w *WiFiModule) startDeauth(to net.HardwareAddr) error {
// if not already running, temporarily enable the pcap handle // if not already running, temporarily enable the pcap handle
// for packet injection // for packet injection
if w.Running() == false { if !w.Running() {
if err := w.Configure(); err != nil { if err := w.Configure(); err != nil {
return err return err
} }
@ -55,12 +55,12 @@ func (w *WiFiModule) startDeauth(to net.HardwareAddr) error {
bssid := to.String() bssid := to.String()
// are we deauthing every client of a given access point? // are we deauthing every client of a given access point?
if ap, found := w.Session.WiFi.Get(bssid); found == true { if ap, found := w.Session.WiFi.Get(bssid); found {
clients := ap.Clients() clients := ap.Clients()
log.Info("Deauthing %d clients from AP %s ...", len(clients), ap.ESSID()) log.Info("Deauthing %d clients from AP %s ...", len(clients), ap.ESSID())
w.onChannel(network.Dot11Freq2Chan(ap.Frequency), func() { w.onChannel(network.Dot11Freq2Chan(ap.Frequency), func() {
for _, c := range clients { for _, c := range clients {
if w.Running() == false { if !w.Running() {
break break
} }
w.sendDeauthPacket(ap.HW, c.HW) w.sendDeauthPacket(ap.HW, c.HW)
@ -73,9 +73,9 @@ func (w *WiFiModule) startDeauth(to net.HardwareAddr) error {
// search for a client // search for a client
aps := w.Session.WiFi.List() aps := w.Session.WiFi.List()
for _, ap := range aps { for _, ap := range aps {
if w.Running() == false { if !w.Running() {
break break
} else if c, found := ap.Get(bssid); found == true { } else if c, found := ap.Get(bssid); found {
log.Info("Deauthing client %s from AP %s ...", c.HwAddress, ap.ESSID()) log.Info("Deauthing client %s from AP %s ...", c.HwAddress, ap.ESSID())
w.onChannel(network.Dot11Freq2Chan(ap.Frequency), func() { w.onChannel(network.Dot11Freq2Chan(ap.Frequency), func() {
w.sendDeauthPacket(ap.HW, c.HW) w.sendDeauthPacket(ap.HW, c.HW)

View file

@ -28,7 +28,7 @@ func (w *WiFiModule) channelHopper() {
log.Info("Channel hopper started.") log.Info("Channel hopper started.")
for w.Running() == true { for w.Running() {
delay := w.hopPeriod delay := w.hopPeriod
// if we have both 2.4 and 5ghz capabilities, we have // if we have both 2.4 and 5ghz capabilities, we have
// more channels, therefore we need to increase the time // more channels, therefore we need to increase the time
@ -53,7 +53,7 @@ func (w *WiFiModule) channelHopper() {
} }
time.Sleep(delay) time.Sleep(delay)
if w.Running() == false { if !w.Running() {
return return
} }
} }

View file

@ -28,7 +28,7 @@ func (w *WiFiModule) stationPruner() {
defer w.reads.Done() defer w.reads.Done()
log.Debug("WiFi stations pruner started.") log.Debug("WiFi stations pruner started.")
for w.Running() == true { for w.Running() {
for _, s := range w.Session.WiFi.List() { for _, s := range w.Session.WiFi.List() {
sinceLastSeen := time.Since(s.LastSeen) sinceLastSeen := time.Since(s.LastSeen)
if sinceLastSeen > maxStationTTL { if sinceLastSeen > maxStationTTL {
@ -42,15 +42,15 @@ func (w *WiFiModule) stationPruner() {
func (w *WiFiModule) discoverAccessPoints(radiotap *layers.RadioTap, dot11 *layers.Dot11, packet gopacket.Packet) { func (w *WiFiModule) discoverAccessPoints(radiotap *layers.RadioTap, dot11 *layers.Dot11, packet gopacket.Packet) {
// search for Dot11InformationElementIDSSID // search for Dot11InformationElementIDSSID
if ok, ssid := packets.Dot11ParseIDSSID(packet); ok == true { if ok, ssid := packets.Dot11ParseIDSSID(packet); ok {
from := dot11.Address3 from := dot11.Address3
// skip stuff we're sending // skip stuff we're sending
if w.apRunning && bytes.Compare(from, w.apConfig.BSSID) == 0 { if w.apRunning && bytes.Equal(from, w.apConfig.BSSID) {
return return
} }
if network.IsZeroMac(from) == false && network.IsBroadcastMac(from) == false { if !network.IsZeroMac(from) && !network.IsBroadcastMac(from) {
var frequency int var frequency int
bssid := from.String() bssid := from.String()
@ -76,7 +76,7 @@ func (w *WiFiModule) discoverProbes(radiotap *layers.RadioTap, dot11 *layers.Dot
} }
req, ok := reqLayer.(*layers.Dot11MgmtProbeReq) req, ok := reqLayer.(*layers.Dot11MgmtProbeReq)
if ok == false { if !ok {
return return
} }
@ -106,7 +106,7 @@ func (w *WiFiModule) discoverProbes(radiotap *layers.RadioTap, dot11 *layers.Dot
func (w *WiFiModule) discoverClients(radiotap *layers.RadioTap, dot11 *layers.Dot11, packet gopacket.Packet) { func (w *WiFiModule) discoverClients(radiotap *layers.RadioTap, dot11 *layers.Dot11, packet gopacket.Packet) {
w.Session.WiFi.EachAccessPoint(func(bssid string, ap *network.AccessPoint) { w.Session.WiFi.EachAccessPoint(func(bssid string, ap *network.AccessPoint) {
// packet going to this specific BSSID? // packet going to this specific BSSID?
if packets.Dot11IsDataFor(dot11, ap.HW) == true { if packets.Dot11IsDataFor(dot11, ap.HW) {
ap.AddClient(dot11.Address2.String(), int(radiotap.ChannelFrequency), radiotap.DBMAntennaSignal) ap.AddClient(dot11.Address2.String(), int(radiotap.ChannelFrequency), radiotap.DBMAntennaSignal)
} }
}) })

View file

@ -88,7 +88,7 @@ func (w *WiFiModule) getRow(station *network.Station) ([]string, bool) {
// method handle both access point and clients // method handle both access point and clients
// transparently // transparently
clients := "" clients := ""
if ap, found := w.Session.WiFi.Get(station.HwAddress); found == true { if ap, found := w.Session.WiFi.Get(station.HwAddress); found {
if ap.NumClients() > 0 { if ap.NumClients() > 0 {
clients = strconv.Itoa(ap.NumClients()) clients = strconv.Itoa(ap.NumClients())
} }
@ -114,7 +114,7 @@ func (w *WiFiModule) Show(by string) error {
apSelected := w.isApSelected() apSelected := w.isApSelected()
if apSelected { if apSelected {
if ap, found := w.Session.WiFi.Get(w.ap.HwAddress); found == true { if ap, found := w.Session.WiFi.Get(w.ap.HwAddress); found {
stations = ap.Clients() stations = ap.Clients()
} else { } else {
return fmt.Errorf("Could not find station %s", w.ap.HwAddress) return fmt.Errorf("Could not find station %s", w.ap.HwAddress)
@ -135,7 +135,7 @@ func (w *WiFiModule) Show(by string) error {
rows := make([][]string, 0) rows := make([][]string, 0)
for _, s := range stations { for _, s := range stations {
if row, include := w.getRow(s); include == true { if row, include := w.getRow(s); include {
rows = append(rows, row) rows = append(rows, row)
} }
} }

View file

@ -54,7 +54,7 @@ func parseMAC(args []string) (string, error) {
if len(args) == 1 { if len(args) == 1 {
tmp := core.Trim(args[0]) tmp := core.Trim(args[0])
if tmp != "" { if tmp != "" {
if reMAC.MatchString(tmp) == false { if !reMAC.MatchString(tmp) {
return "", fmt.Errorf("%s is not a valid MAC address.", tmp) return "", fmt.Errorf("%s is not a valid MAC address.", tmp)
} else { } else {
mac = tmp mac = tmp
@ -91,9 +91,7 @@ func (w *WOL) Stop() error {
func buildPayload(mac string) []byte { func buildPayload(mac string) []byte {
raw, _ := net.ParseMAC(mac) raw, _ := net.ParseMAC(mac)
payload := make([]byte, 0) payload := []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
payload = append(payload, layers.EthernetBroadcast...)
for i := 0; i < 16; i++ { for i := 0; i < 16; i++ {
payload = append(payload, raw...) payload = append(payload, raw...)
} }
@ -118,11 +116,7 @@ func (w *WOL) wolETH(mac string) error {
} }
raw = append(raw, payload...) raw = append(raw, payload...)
if err := w.Session.Queue.Send(raw); err != nil { return w.Session.Queue.Send(raw)
return err
}
return nil
} }
func (w *WOL) wolUDP(mac string) error { func (w *WOL) wolUDP(mac string) error {
@ -159,9 +153,5 @@ func (w *WOL) wolUDP(mac string) error {
} }
raw = append(raw, payload...) raw = append(raw, payload...)
if err := w.Session.Queue.Send(raw); err != nil { return w.Session.Queue.Send(raw)
return err
}
return nil
} }

View file

@ -65,7 +65,7 @@ func (a *Aliases) Get(mac string) string {
a.Lock() a.Lock()
defer a.Unlock() defer a.Unlock()
if alias, found := a.data[mac]; found == true { if alias, found := a.data[mac]; found {
return alias return alias
} }
return "" return ""

View file

@ -58,7 +58,7 @@ func ArpUpdate(iface string) (ArpTable, error) {
func ArpLookup(iface string, address string, refresh bool) (string, error) { func ArpLookup(iface string, address string, refresh bool) (string, error) {
// Refresh ARP table if first run or if a force refresh has been instructed. // Refresh ARP table if first run or if a force refresh has been instructed.
if ArpParsed() == false || refresh == true { if ArpParsed() == false || refresh {
if _, err := ArpUpdate(iface); err != nil { if _, err := ArpUpdate(iface); err != nil {
return "", err return "", err
} }
@ -68,7 +68,7 @@ func ArpLookup(iface string, address string, refresh bool) (string, error) {
defer arpLock.RUnlock() defer arpLock.RUnlock()
// Lookup the hardware address of this ip. // Lookup the hardware address of this ip.
if mac, found := arpTable[address]; found == true { if mac, found := arpTable[address]; found {
return mac, nil return mac, nil
} }
@ -76,7 +76,7 @@ func ArpLookup(iface string, address string, refresh bool) (string, error) {
} }
func ArpInverseLookup(iface string, mac string, refresh bool) (string, error) { func ArpInverseLookup(iface string, mac string, refresh bool) (string, error) {
if ArpParsed() == false || refresh == true { if ArpParsed() == false || refresh {
if _, err := ArpUpdate(iface); err != nil { if _, err := ArpUpdate(iface); err != nil {
return "", err return "", err
} }

View file

@ -58,7 +58,7 @@ func (b *BLE) AddIfNew(id string, p gatt.Peripheral, a *gatt.Advertisement, rssi
defer b.Unlock() defer b.Unlock()
id = NormalizeMac(id) id = NormalizeMac(id)
if dev, found := b.devices[id]; found == true { if dev, found := b.devices[id]; found {
dev.LastSeen = time.Now() dev.LastSeen = time.Now()
dev.RSSI = rssi dev.RSSI = rssi
dev.Advertisement = a dev.Advertisement = a
@ -80,7 +80,7 @@ func (b *BLE) Remove(id string) {
defer b.Unlock() defer b.Unlock()
id = NormalizeMac(id) id = NormalizeMac(id)
if dev, found := b.devices[id]; found == true { if dev, found := b.devices[id]; found {
delete(b.devices, id) delete(b.devices, id)
if b.lostCb != nil { if b.lostCb != nil {
b.lostCb(dev) b.lostCb(dev)

View file

@ -77,7 +77,7 @@ func (lan *LAN) Get(mac string) (*Endpoint, bool) {
lan.Lock() lan.Lock()
defer lan.Unlock() defer lan.Unlock()
if e, found := lan.hosts[mac]; found == true { if e, found := lan.hosts[mac]; found {
return e, true return e, true
} }
return nil, false return nil, false
@ -106,7 +106,7 @@ func (lan *LAN) WasMissed(mac string) bool {
lan.Lock() lan.Lock()
defer lan.Unlock() defer lan.Unlock()
if ttl, found := lan.ttl[mac]; found == true { if ttl, found := lan.ttl[mac]; found {
return ttl < LANDefaultttl return ttl < LANDefaultttl
} }
return true return true

View file

@ -42,7 +42,7 @@ func (m *Meta) Get(name string) interface{} {
m.Lock() m.Lock()
defer m.Unlock() defer m.Unlock()
if v, found := m.m[name]; found == true { if v, found := m.m[name]; found {
return v return v
} }
return "" return ""
@ -75,7 +75,7 @@ func (m *Meta) GetOr(name string, dflt interface{}) interface{} {
m.Lock() m.Lock()
defer m.Unlock() defer m.Unlock()
if v, found := m.m[name]; found == true { if v, found := m.m[name]; found {
return v return v
} }
return dflt return dflt

View file

@ -90,7 +90,7 @@ func ParseTargets(targets string, aliasMap *Aliases) (ips []net.IP, macs []net.H
// check and resolve aliases // check and resolve aliases
for _, alias := range aliasParser.FindAllString(targets, -1) { for _, alias := range aliasParser.FindAllString(targets, -1) {
if mac, found := aliasMap.Find(alias); found == true { if mac, found := aliasMap.Find(alias); found {
mac = NormalizeMac(mac) mac = NormalizeMac(mac)
hw, err := net.ParseMAC(mac) hw, err := net.ParseMAC(mac)
if err != nil { if err != nil {

View file

@ -22936,7 +22936,7 @@ func OuiLookup(mac string) string {
octects := strings.Split(mac, ":") octects := strings.Split(mac, ":")
if len(octects) > 3 { if len(octects) > 3 {
prefix := octects[0] + octects[1] + octects[2] prefix := octects[0] + octects[1] + octects[2]
if vendor, found := oui[prefix]; found == true { if vendor, found := oui[prefix]; found {
return vendor return vendor
} }
} }

View file

@ -162,7 +162,7 @@ func (w *WiFi) GetClient(mac string) (*Station, bool) {
mac = NormalizeMac(mac) mac = NormalizeMac(mac)
for _, ap := range w.aps { for _, ap := range w.aps {
if client, found := ap.Get(mac); found == true { if client, found := ap.Get(mac); found {
return client, true return client, true
} }
} }

View file

@ -43,7 +43,7 @@ func (ap *AccessPoint) Get(bssid string) (*Station, bool) {
defer ap.Unlock() defer ap.Unlock()
bssid = NormalizeMac(bssid) bssid = NormalizeMac(bssid)
if s, found := ap.clients[bssid]; found == true { if s, found := ap.clients[bssid]; found {
return s, true return s, true
} }
return nil, false return nil, false
@ -55,7 +55,7 @@ func (ap *AccessPoint) AddClient(bssid string, frequency int, rssi int8) *Statio
bssid = NormalizeMac(bssid) bssid = NormalizeMac(bssid)
if s, found := ap.clients[bssid]; found == true { if s, found := ap.clients[bssid]; found {
// update // update
s.Frequency = frequency s.Frequency = frequency
s.RSSI = rssi s.RSSI = rssi

View file

@ -45,7 +45,7 @@ func Dot11Info(id layers.Dot11InformationElementID, info []byte) *layers.Dot11In
func NewDot11Beacon(conf Dot11ApConfig, seq uint16) (error, []byte) { func NewDot11Beacon(conf Dot11ApConfig, seq uint16) (error, []byte) {
flags := openFlags flags := openFlags
if conf.Encryption == true { if conf.Encryption {
flags = wpaFlags flags = wpaFlags
} }
@ -70,7 +70,7 @@ func NewDot11Beacon(conf Dot11ApConfig, seq uint16) (error, []byte) {
Dot11Info(layers.Dot11InformationElementIDDSSet, []byte{byte(conf.Channel & 0xff)}), Dot11Info(layers.Dot11InformationElementIDDSSet, []byte{byte(conf.Channel & 0xff)}),
} }
if conf.Encryption == true { if conf.Encryption {
stack = append(stack, &layers.Dot11InformationElement{ stack = append(stack, &layers.Dot11InformationElement{
ID: layers.Dot11InformationElementIDRSNInfo, ID: layers.Dot11InformationElementIDRSNInfo,
Length: uint8(len(wpaRSN) & 0xff), Length: uint8(len(wpaRSN) & 0xff),
@ -125,7 +125,7 @@ func Dot11ParseIDSSID(packet gopacket.Packet) (bool, string) {
for _, layer := range packet.Layers() { for _, layer := range packet.Layers() {
if layer.LayerType() == layers.LayerTypeDot11InformationElement { if layer.LayerType() == layers.LayerTypeDot11InformationElement {
dot11info, ok := layer.(*layers.Dot11InformationElement) dot11info, ok := layer.(*layers.Dot11InformationElement)
if ok == true && dot11info.ID == layers.Dot11InformationElementIDSSID { if ok && dot11info.ID == layers.Dot11InformationElementIDSSID {
if len(dot11info.Info) == 0 { if len(dot11info.Info) == 0 {
return true, "<hidden>" return true, "<hidden>"
} }
@ -152,7 +152,7 @@ func Dot11ParseEncryption(packet gopacket.Packet, dot11 *layers.Dot11) (bool, st
for _, layer := range packet.Layers() { for _, layer := range packet.Layers() {
if layer.LayerType() == layers.LayerTypeDot11InformationElement { if layer.LayerType() == layers.LayerTypeDot11InformationElement {
info, ok := layer.(*layers.Dot11InformationElement) info, ok := layer.(*layers.Dot11InformationElement)
if ok == true { if ok {
found = true found = true
if info.ID == layers.Dot11InformationElementIDRSNInfo { if info.ID == layers.Dot11InformationElementIDRSNInfo {
enc = "WPA2" enc = "WPA2"
@ -203,7 +203,7 @@ func Dot11ParseDSSet(packet gopacket.Packet) (bool, int) {
found := false found := false
for _, layer := range packet.Layers() { for _, layer := range packet.Layers() {
info, ok := layer.(*layers.Dot11InformationElement) info, ok := layer.(*layers.Dot11InformationElement)
if ok == true { if ok {
if info.ID == layers.Dot11InformationElementIDDSSet { if info.ID == layers.Dot11InformationElementIDDSSet {
channel, _ = Dot11InformationElementIDDSSetDecode(info.Info) channel, _ = Dot11InformationElementIDDSSetDecode(info.Info)
found = true found = true

View file

@ -99,7 +99,7 @@ func (s *NTLMState) AddClientResponse(seq uint32, value string, cb func(data NTL
s.Lock() s.Lock()
defer s.Unlock() defer s.Unlock()
if chall, found := s.Responses[seq]; found == true { if chall, found := s.Responses[seq]; found {
pair := NTLMChallengeResponse{ pair := NTLMChallengeResponse{
Challenge: chall, Challenge: chall,
Response: value, Response: value,

View file

@ -65,7 +65,7 @@ func NewQueue(iface *network.Endpoint) (q *Queue, err error) {
pktCb: nil, pktCb: nil,
} }
if q.active == true { if q.active {
if q.handle, err = pcap.OpenLive(iface.Name(), 1024, true, pcap.BlockForever); err != nil { if q.handle, err = pcap.OpenLive(iface.Name(), 1024, true, pcap.BlockForever); err != nil {
return return
} }
@ -229,7 +229,7 @@ func (q *Queue) Stop() {
q.Lock() q.Lock()
defer q.Unlock() defer q.Unlock()
if q.active == true { if q.active {
// wait for write operations to be completed // wait for write operations to be completed
q.writes.Wait() q.writes.Wait()
// signal the main loop to exit and close the handle // signal the main loop to exit and close the handle

View file

@ -95,7 +95,7 @@ func (env *Environment) Set(name, value string) string {
old, _ := env.Data[name] old, _ := env.Data[name]
env.Data[name] = value env.Data[name] = value
if cb, hasCallback := env.cbs[name]; hasCallback == true { if cb, hasCallback := env.cbs[name]; hasCallback {
cb(value) cb(value)
} }
@ -113,7 +113,7 @@ func (env *Environment) Get(name string) (bool, string) {
env.Lock() env.Lock()
defer env.Unlock() defer env.Unlock()
if value, found := env.Data[name]; found == true { if value, found := env.Data[name]; found {
return true, value return true, value
} }
@ -121,7 +121,7 @@ func (env *Environment) Get(name string) (bool, string) {
} }
func (env *Environment) GetInt(name string) (error, int) { func (env *Environment) GetInt(name string) (error, int) {
if found, value := env.Get(name); found == true { if found, value := env.Get(name); found {
if i, err := strconv.Atoi(value); err == nil { if i, err := strconv.Atoi(value); err == nil {
return nil, i return nil, i
} else { } else {

View file

@ -99,7 +99,7 @@ func (p *EventPool) Add(tag string, data interface{}) {
func (p *EventPool) Log(level int, format string, args ...interface{}) { func (p *EventPool) Log(level int, format string, args ...interface{}) {
if level == core.DEBUG && p.debug == false { if level == core.DEBUG && p.debug == false {
return return
} else if level < core.ERROR && p.silent == true { } else if level < core.ERROR && p.silent {
return return
} }

View file

@ -75,7 +75,7 @@ func (m SessionModule) ListParam(name string) (err error, values []string) {
} }
func (m SessionModule) StringParam(name string) (error, string) { func (m SessionModule) StringParam(name string) (error, string) {
if p, found := m.params[name]; found == true { if p, found := m.params[name]; found {
if err, v := p.Get(m.Session); err != nil { if err, v := p.Get(m.Session); err != nil {
return err, "" return err, ""
} else { } else {
@ -87,7 +87,7 @@ func (m SessionModule) StringParam(name string) (error, string) {
} }
func (m SessionModule) IntParam(name string) (error, int) { func (m SessionModule) IntParam(name string) (error, int) {
if p, found := m.params[name]; found == true { if p, found := m.params[name]; found {
if err, v := p.Get(m.Session); err != nil { if err, v := p.Get(m.Session); err != nil {
return err, 0 return err, 0
} else { } else {
@ -136,7 +136,7 @@ func (m *SessionModule) SetRunning(running bool, cb func()) error {
m.Started = running m.Started = running
m.StatusLock.Unlock() m.StatusLock.Unlock()
if *m.Session.Options.Debug == true { if *m.Session.Options.Debug {
if running { if running {
m.Session.Events.Add("mod.started", m.Name) m.Session.Events.Add("mod.started", m.Name)
} else { } else {
@ -145,7 +145,7 @@ func (m *SessionModule) SetRunning(running bool, cb func()) error {
} }
if cb != nil { if cb != nil {
if running == true { if running {
// this is the worker, start async // this is the worker, start async
go cb() go cb()
} else { } else {

View file

@ -294,7 +294,7 @@ func (s *Session) startNetMon() {
return return
} }
if s.IsOn("net.recon") == true && event.Source == true { if s.IsOn("net.recon") && event.Source == true {
addr := event.IP.String() addr := event.IP.String()
mac := event.MAC.String() mac := event.MAC.String()
@ -423,7 +423,7 @@ func (s *Session) Start() error {
} }
func (s *Session) Skip(ip net.IP) bool { func (s *Session) Skip(ip net.IP) bool {
if ip.IsLoopback() == true { if ip.IsLoopback() {
return true return true
} else if bytes.Compare(ip, s.Interface.IP) == 0 { } else if bytes.Compare(ip, s.Interface.IP) == 0 {
return true return true
@ -549,7 +549,7 @@ func (s *Session) Run(line string) error {
// is it a core command? // is it a core command?
for _, h := range s.CoreHandlers { for _, h := range s.CoreHandlers {
if parsed, args := h.Parse(line); parsed == true { if parsed, args := h.Parse(line); parsed {
return h.Exec(args, s) return h.Exec(args, s)
} }
} }
@ -557,7 +557,7 @@ func (s *Session) Run(line string) error {
// is it a module command? // is it a module command?
for _, m := range s.Modules { for _, m := range s.Modules {
for _, h := range m.Handlers() { for _, h := range m.Handlers() {
if parsed, args := h.Parse(line); parsed == true { if parsed, args := h.Parse(line); parsed {
return h.Exec(args) return h.Exec(args)
} }
} }
@ -569,7 +569,7 @@ func (s *Session) Run(line string) error {
} }
// is it a proxy module custom command? // is it a proxy module custom command?
if s.UnkCmdCallback != nil && s.UnkCmdCallback(line) == true { if s.UnkCmdCallback != nil && s.UnkCmdCallback(line) {
return nil return nil
} }

View file

@ -178,7 +178,7 @@ func (s *Session) getHandler(args []string, sess *Session) error {
} }
} }
fmt.Println() fmt.Println()
} else if found, value := s.Env.Get(key); found == true { } else if found, value := s.Env.Get(key); found {
fmt.Println() fmt.Println()
fmt.Printf(" %s: '%s'\n", key, value) fmt.Printf(" %s: '%s'\n", key, value)
fmt.Println() fmt.Println()
@ -245,7 +245,7 @@ func (s *Session) aliasHandler(args []string, sess *Session) error {
mac := args[0] mac := args[0]
alias := core.Trim(args[1]) alias := core.Trim(args[1])
if s.Lan.SetAliasFor(mac, alias) == true { if s.Lan.SetAliasFor(mac, alias) {
return nil return nil
} else { } else {
return fmt.Errorf("Could not find endpoint %s", mac) return fmt.Errorf("Could not find endpoint %s", mac)
@ -266,7 +266,7 @@ func (s *Session) registerCoreHandlers() {
prefix = core.Trim(prefix[4:]) prefix = core.Trim(prefix[4:])
modNames := []string{""} modNames := []string{""}
for _, m := range s.Modules { for _, m := range s.Modules {
if prefix == "" || strings.HasPrefix(m.Name(), prefix) == true { if prefix == "" || strings.HasPrefix(m.Name(), prefix) {
modNames = append(modNames, m.Name()) modNames = append(modNames, m.Name())
} }
} }
@ -299,7 +299,7 @@ func (s *Session) registerCoreHandlers() {
prefix = core.Trim(prefix[3:]) prefix = core.Trim(prefix[3:])
varNames := []string{""} varNames := []string{""}
for key := range s.Env.Data { for key := range s.Env.Data {
if prefix == "" || strings.HasPrefix(key, prefix) == true { if prefix == "" || strings.HasPrefix(key, prefix) {
varNames = append(varNames, key) varNames = append(varNames, key)
} }
} }
@ -314,7 +314,7 @@ func (s *Session) registerCoreHandlers() {
prefix = core.Trim(prefix[3:]) prefix = core.Trim(prefix[3:])
varNames := []string{""} varNames := []string{""}
for key := range s.Env.Data { for key := range s.Env.Data {
if prefix == "" || strings.HasPrefix(key, prefix) == true { if prefix == "" || strings.HasPrefix(key, prefix) {
varNames = append(varNames, key) varNames = append(varNames, key)
} }
} }
@ -362,7 +362,7 @@ func (s *Session) registerCoreHandlers() {
prefix = core.Trim(prefix[5:]) prefix = core.Trim(prefix[5:])
macs := []string{""} macs := []string{""}
s.Lan.EachHost(func(mac string, e *network.Endpoint) { s.Lan.EachHost(func(mac string, e *network.Endpoint) {
if prefix == "" || strings.HasPrefix(mac, prefix) == true { if prefix == "" || strings.HasPrefix(mac, prefix) {
macs = append(macs, mac) macs = append(macs, mac)
} }
}) })