mirror of
https://github.com/bettercap/bettercap.git
synced 2024-11-08 06:30:13 -08:00
73 lines
1.4 KiB
Go
73 lines
1.4 KiB
Go
package zerogod
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/evilsocket/islazy/tui"
|
|
)
|
|
|
|
func Dump(by []byte) string {
|
|
s := ""
|
|
n := len(by)
|
|
rowcount := 0
|
|
width := 16
|
|
|
|
stop := (n / width) * width
|
|
k := 0
|
|
for i := 0; i <= stop; i += width {
|
|
k++
|
|
if i+width < n {
|
|
rowcount = width
|
|
} else {
|
|
rowcount = min(k*width, n) % width
|
|
}
|
|
|
|
s += fmt.Sprintf("%02d ", i)
|
|
for j := 0; j < rowcount; j++ {
|
|
s += fmt.Sprintf("%02x ", by[i+j])
|
|
}
|
|
for j := rowcount; j < width; j++ {
|
|
s += " "
|
|
}
|
|
s += fmt.Sprintf(" '%s'\n", viewString(by[i:(i+rowcount)]))
|
|
}
|
|
|
|
return s
|
|
}
|
|
|
|
func min(a, b int) int {
|
|
if a < b {
|
|
return a
|
|
}
|
|
return b
|
|
}
|
|
|
|
func viewString(b []byte) string {
|
|
r := []rune(string(b))
|
|
for i := range r {
|
|
if r[i] < 32 || r[i] > 126 {
|
|
r[i] = '.'
|
|
}
|
|
}
|
|
return string(r)
|
|
}
|
|
|
|
func handleGenericTCP(ctx *HandlerContext) {
|
|
defer ctx.client.Close()
|
|
|
|
ctx.mod.Info("accepted generic tcp connection for service %s (port %d): %v", tui.Green(ctx.service), ctx.srvPort, ctx.client.RemoteAddr())
|
|
|
|
buf := make([]byte, 1024)
|
|
for {
|
|
if read, err := ctx.client.Read(buf); err != nil {
|
|
ctx.mod.Error("error while reading from %v: %v", ctx.client.RemoteAddr(), err)
|
|
break
|
|
} else if read == 0 {
|
|
ctx.mod.Error("error while reading from %v: no data", ctx.client.RemoteAddr())
|
|
break
|
|
} else {
|
|
ctx.mod.Info("read %d bytes from %v:\n%s\n", read, ctx.client.RemoteAddr(), Dump(buf[0:read]))
|
|
}
|
|
}
|
|
}
|