mirror of
https://github.com/telekom-security/tpotce.git
synced 2025-04-20 06:02:24 +00:00

multi stage build for dicompot rebuild fatt, glutton, hellpot, honeypots for alpine 3.19 bump glutton, hellpot, honeypots to latest master
68 lines
1.4 KiB
Go
68 lines
1.4 KiB
Go
package glutton
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"net"
|
|
"os"
|
|
"runtime"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/glaslos/lsof"
|
|
"github.com/google/gopacket/pcap"
|
|
)
|
|
|
|
func countOpenFiles() (int, error) {
|
|
if runtime.GOOS == "linux" {
|
|
lines, err := lsof.ReadPID(os.Getpid())
|
|
return len(lines) - 1, err
|
|
}
|
|
return 0, errors.New("operating system type not supported for this command")
|
|
}
|
|
|
|
func (g *Glutton) startMonitor(quit chan struct{}) {
|
|
ticker := time.NewTicker(10 * time.Second)
|
|
go func() {
|
|
for {
|
|
select {
|
|
// case <-ticker.C:
|
|
// openFiles, err := countOpenFiles()
|
|
// if err != nil {
|
|
// fmt.Printf("Failed :%s", err)
|
|
// }
|
|
// runningRoutines := runtime.NumGoroutine()
|
|
// g.Logger.Info(fmt.Sprintf("running Go routines: %d, open files: %d", openFiles, runningRoutines))
|
|
case <-quit:
|
|
g.Logger.Info("monitoring stopped...")
|
|
ticker.Stop()
|
|
return
|
|
}
|
|
}
|
|
}()
|
|
}
|
|
|
|
func getNonLoopbackIPs(ifaceName string) ([]net.IP, error) {
|
|
nonLoopback := []net.IP{}
|
|
|
|
ifs, err := pcap.FindAllDevs()
|
|
if err != nil {
|
|
return nonLoopback, err
|
|
}
|
|
|
|
for _, iface := range ifs {
|
|
if strings.EqualFold(iface.Name, ifaceName) {
|
|
for _, addr := range iface.Addresses {
|
|
if !addr.IP.IsLoopback() && addr.IP.To4() != nil {
|
|
nonLoopback = append(nonLoopback, addr.IP)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if len(nonLoopback) == 0 {
|
|
return nonLoopback, fmt.Errorf("unable to find any non-loopback addresses for: %s", ifaceName)
|
|
}
|
|
|
|
return nonLoopback, nil
|
|
}
|