mirror of
https://github.com/bettercap/bettercap
synced 2025-08-21 14:03:17 -07:00
Merge pull request #43 from evilsocket/revert-41-feature/sniff-truncate-urls
Revert "[feature] net.sniff.http truncate urls option"
This commit is contained in:
commit
fa13288170
6 changed files with 11 additions and 45 deletions
|
@ -23,10 +23,6 @@ func NewSniffer(s *session.Session) *Sniffer {
|
||||||
Stats: nil,
|
Stats: nil,
|
||||||
}
|
}
|
||||||
|
|
||||||
sniff.AddParam(session.NewBoolParameter("net.sniff.truncate",
|
|
||||||
"true",
|
|
||||||
"If true, will truncate long request URLs so user-agent fits on same line when possible, otherwise extra verbose / full URLs."))
|
|
||||||
|
|
||||||
sniff.AddParam(session.NewBoolParameter("net.sniff.verbose",
|
sniff.AddParam(session.NewBoolParameter("net.sniff.verbose",
|
||||||
"true",
|
"true",
|
||||||
"If true, will print every captured packet, otherwise only selected ones."))
|
"If true, will print every captured packet, otherwise only selected ones."))
|
||||||
|
@ -116,7 +112,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, s.Ctx.Truncate) == true {
|
if mainParser(pkt, s.Ctx.Verbose) == true {
|
||||||
s.Stats.NumDumped++
|
s.Stats.NumDumped++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,6 @@ import (
|
||||||
type SnifferContext struct {
|
type SnifferContext struct {
|
||||||
Handle *pcap.Handle
|
Handle *pcap.Handle
|
||||||
DumpLocal bool
|
DumpLocal bool
|
||||||
Truncate bool
|
|
||||||
Verbose bool
|
Verbose bool
|
||||||
Filter string
|
Filter string
|
||||||
Expression string
|
Expression string
|
||||||
|
@ -43,10 +42,6 @@ func (s *Sniffer) GetContext() (error, *SnifferContext) {
|
||||||
return err, ctx
|
return err, ctx
|
||||||
}
|
}
|
||||||
|
|
||||||
if err, ctx.Truncate = s.BoolParam("net.sniff.truncate"); err != nil {
|
|
||||||
return err, ctx
|
|
||||||
}
|
|
||||||
|
|
||||||
if err, ctx.Filter = s.StringParam("net.sniff.filter"); err != nil {
|
if err, ctx.Filter = s.StringParam("net.sniff.filter"); err != nil {
|
||||||
return err, ctx
|
return err, ctx
|
||||||
} else if ctx.Filter != "" {
|
} else if ctx.Filter != "" {
|
||||||
|
@ -82,7 +77,6 @@ func NewSnifferContext() *SnifferContext {
|
||||||
return &SnifferContext{
|
return &SnifferContext{
|
||||||
Handle: nil,
|
Handle: nil,
|
||||||
DumpLocal: false,
|
DumpLocal: false,
|
||||||
Truncate: true,
|
|
||||||
Verbose: true,
|
Verbose: true,
|
||||||
Filter: "",
|
Filter: "",
|
||||||
Expression: "",
|
Expression: "",
|
||||||
|
@ -105,12 +99,6 @@ func (c *SnifferContext) Log(sess *session.Session) {
|
||||||
log.Info("Skip local packets : %s", yes)
|
log.Info("Skip local packets : %s", yes)
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.Truncate {
|
|
||||||
log.Info("Truncate : %s", yes)
|
|
||||||
} else {
|
|
||||||
log.Info("Truncate : %s", no)
|
|
||||||
}
|
|
||||||
|
|
||||||
if c.Verbose {
|
if c.Verbose {
|
||||||
log.Info("Verbose : %s", yes)
|
log.Info("Verbose : %s", yes)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -2,9 +2,9 @@ package modules
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"regexp"
|
|
||||||
|
|
||||||
"github.com/evilsocket/bettercap-ng/core"
|
"github.com/evilsocket/bettercap-ng/core"
|
||||||
|
"regexp"
|
||||||
|
|
||||||
"github.com/google/gopacket"
|
"github.com/google/gopacket"
|
||||||
"github.com/google/gopacket/layers"
|
"github.com/google/gopacket/layers"
|
||||||
|
@ -13,12 +13,7 @@ import (
|
||||||
var httpRe = regexp.MustCompile("(?s).*(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH) (.+) HTTP/\\d\\.\\d.+Host: ([^\\s]+)")
|
var httpRe = regexp.MustCompile("(?s).*(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH) (.+) HTTP/\\d\\.\\d.+Host: ([^\\s]+)")
|
||||||
var uaRe = regexp.MustCompile("(?s).*User-Agent: ([^\\n]+).+")
|
var uaRe = regexp.MustCompile("(?s).*User-Agent: ([^\\n]+).+")
|
||||||
|
|
||||||
func httpParser(
|
func httpParser(ip *layers.IPv4, pkt gopacket.Packet, tcp *layers.TCP) bool {
|
||||||
ip *layers.IPv4,
|
|
||||||
pkt gopacket.Packet,
|
|
||||||
tcp *layers.TCP,
|
|
||||||
truncateURLs bool,
|
|
||||||
) bool {
|
|
||||||
data := tcp.Payload
|
data := tcp.Payload
|
||||||
dataSize := len(data)
|
dataSize := len(data)
|
||||||
|
|
||||||
|
@ -46,12 +41,6 @@ func httpParser(
|
||||||
}
|
}
|
||||||
url += fmt.Sprintf("%s", path)
|
url += fmt.Sprintf("%s", path)
|
||||||
|
|
||||||
// shorten / truncate long URLs if needed
|
|
||||||
formattedURL := string(url)
|
|
||||||
if truncateURLs {
|
|
||||||
formattedURL = vURL(url)
|
|
||||||
}
|
|
||||||
|
|
||||||
NewSnifferEvent(
|
NewSnifferEvent(
|
||||||
pkt.Metadata().Timestamp,
|
pkt.Metadata().Timestamp,
|
||||||
"http",
|
"http",
|
||||||
|
@ -68,7 +57,7 @@ func httpParser(
|
||||||
core.W(core.BG_RED+core.FG_BLACK, "http"),
|
core.W(core.BG_RED+core.FG_BLACK, "http"),
|
||||||
vIP(ip.SrcIP),
|
vIP(ip.SrcIP),
|
||||||
core.W(core.BG_LBLUE+core.FG_BLACK, method),
|
core.W(core.BG_LBLUE+core.FG_BLACK, method),
|
||||||
formattedURL,
|
vURL(url),
|
||||||
core.Dim(ua),
|
core.Dim(ua),
|
||||||
).Push()
|
).Push()
|
||||||
|
|
||||||
|
|
|
@ -10,17 +10,12 @@ import (
|
||||||
"github.com/google/gopacket/layers"
|
"github.com/google/gopacket/layers"
|
||||||
)
|
)
|
||||||
|
|
||||||
func tcpParser(
|
func tcpParser(ip *layers.IPv4, pkt gopacket.Packet, verbose bool) {
|
||||||
ip *layers.IPv4,
|
|
||||||
pkt gopacket.Packet,
|
|
||||||
verbose bool,
|
|
||||||
truncateURLs bool,
|
|
||||||
) {
|
|
||||||
tcp := pkt.Layer(layers.LayerTypeTCP).(*layers.TCP)
|
tcp := pkt.Layer(layers.LayerTypeTCP).(*layers.TCP)
|
||||||
|
|
||||||
if sniParser(ip, pkt, tcp) {
|
if sniParser(ip, pkt, tcp) {
|
||||||
return
|
return
|
||||||
} else if httpParser(ip, pkt, tcp, truncateURLs) {
|
} else if httpParser(ip, pkt, tcp) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,7 +88,7 @@ func unkParser(ip *layers.IPv4, pkt gopacket.Packet, verbose bool) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func mainParser(pkt gopacket.Packet, verbose bool, truncateURLs bool) bool {
|
func mainParser(pkt gopacket.Packet, verbose bool) bool {
|
||||||
nlayer := pkt.NetworkLayer()
|
nlayer := pkt.NetworkLayer()
|
||||||
if nlayer == nil {
|
if nlayer == nil {
|
||||||
log.Debug("Missing network layer skipping packet.")
|
log.Debug("Missing network layer skipping packet.")
|
||||||
|
@ -114,7 +109,7 @@ func mainParser(pkt gopacket.Packet, verbose bool, truncateURLs bool) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
if tlayer.LayerType() == layers.LayerTypeTCP {
|
if tlayer.LayerType() == layers.LayerTypeTCP {
|
||||||
tcpParser(ip, pkt, verbose, truncateURLs)
|
tcpParser(ip, pkt, verbose)
|
||||||
} else if tlayer.LayerType() == layers.LayerTypeUDP {
|
} else if tlayer.LayerType() == layers.LayerTypeUDP {
|
||||||
udpParser(ip, pkt, verbose)
|
udpParser(ip, pkt, verbose)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -2,9 +2,9 @@ package modules
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"regexp"
|
|
||||||
|
|
||||||
"github.com/evilsocket/bettercap-ng/core"
|
"github.com/evilsocket/bettercap-ng/core"
|
||||||
|
"regexp"
|
||||||
|
|
||||||
"github.com/google/gopacket"
|
"github.com/google/gopacket"
|
||||||
"github.com/google/gopacket/layers"
|
"github.com/google/gopacket/layers"
|
||||||
|
@ -37,7 +37,7 @@ func sniParser(ip *layers.IPv4, pkt gopacket.Packet, tcp *layers.TCP) bool {
|
||||||
ip.SrcIP.String(),
|
ip.SrcIP.String(),
|
||||||
domain,
|
domain,
|
||||||
SniffData{
|
SniffData{
|
||||||
"host": domain,
|
"Domain": domain,
|
||||||
},
|
},
|
||||||
"[%s] %s %s > %s",
|
"[%s] %s %s > %s",
|
||||||
vTime(pkt.Metadata().Timestamp),
|
vTime(pkt.Metadata().Timestamp),
|
||||||
|
|
|
@ -11,10 +11,8 @@ import (
|
||||||
"github.com/evilsocket/bettercap-ng/session"
|
"github.com/evilsocket/bettercap-ng/session"
|
||||||
)
|
)
|
||||||
|
|
||||||
const sniffTimeFormat = "2006-01-02 15:04:05"
|
|
||||||
|
|
||||||
func vTime(t time.Time) string {
|
func vTime(t time.Time) string {
|
||||||
return t.Format(sniffTimeFormat)
|
return t.Format("15:04:05")
|
||||||
}
|
}
|
||||||
|
|
||||||
func vIP(ip net.IP) string {
|
func vIP(ip net.IP) string {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue