Added some timing to sniffer.

This commit is contained in:
evilsocket 2017-11-18 16:49:49 +01:00
commit 73b3c9e340

View file

@ -11,6 +11,7 @@ import (
"net" "net"
"os" "os"
"regexp" "regexp"
"time"
) )
type SnifferContext struct { type SnifferContext struct {
@ -87,18 +88,24 @@ func (c *SnifferContext) Close() {
} }
type SnifferStats struct { type SnifferStats struct {
NumLocal uint64 NumLocal uint64
NumMatched uint64 NumMatched uint64
NumDumped uint64 NumDumped uint64
NumWrote uint64 NumWrote uint64
Started time.Time
FirstPacket time.Time
LastPacket time.Time
} }
func NewSnifferStats() *SnifferStats { func NewSnifferStats() *SnifferStats {
return &SnifferStats{ return &SnifferStats{
NumLocal: 0, NumLocal: 0,
NumMatched: 0, NumMatched: 0,
NumDumped: 0, NumDumped: 0,
NumWrote: 0, NumWrote: 0,
Started: time.Now(),
FirstPacket: time.Time{},
LastPacket: time.Time{},
} }
} }
@ -250,10 +257,24 @@ func (s *Sniffer) PrintStats() error {
s.Ctx.Log() s.Ctx.Log()
log.Infof(" Local Packets : %d\n", s.Stats.NumLocal) first := "never"
log.Infof(" Matched Packets : %d\n", s.Stats.NumMatched) last := "never"
log.Infof(" Dumped Packets : %d\n", s.Stats.NumDumped)
log.Infof(" Wrote Packets : %d\n", s.Stats.NumWrote) if s.Stats.FirstPacket.IsZero() == false {
first = s.Stats.FirstPacket.String()
}
if s.Stats.LastPacket.IsZero() == false {
last = s.Stats.LastPacket.String()
}
log.Infof(" Sniffer Started : %s\n", s.Stats.Started)
log.Infof(" First Packet Seen : %s\n", first)
log.Infof(" Last Packet Seen : %s\n", last)
log.Infof(" Local Packets : %d\n", s.Stats.NumLocal)
log.Infof(" Matched Packets : %d\n", s.Stats.NumMatched)
log.Infof(" Dumped Packets : %d\n", s.Stats.NumDumped)
log.Infof(" Wrote Packets : %d\n", s.Stats.NumWrote)
return nil return nil
} }
@ -284,6 +305,12 @@ func (s *Sniffer) Start() error {
break break
} }
now := time.Now()
if s.Stats.FirstPacket.IsZero() {
s.Stats.FirstPacket = now
}
s.Stats.LastPacket = now
is_local := false is_local := false
if s.isLocalPacket(packet) { if s.isLocalPacket(packet) {
is_local = true is_local = true