package syn_scan

import (
	"bufio"
	"fmt"
	"net"
	"strconv"
	"strings"
)

func cleanBanner(banner string) string {
	clean := ""
	for _, c := range banner {
		if strconv.IsPrint(c) {
			clean += string(c)
		}
	}
	return clean
}

func tcpGrabber(mod *SynScanner, ip string, port int) string {
	dialer := net.Dialer{
		Timeout: bannerGrabTimeout,
	}

	if conn, err := dialer.Dial("tcp", fmt.Sprintf("%s:%d", ip, port)); err == nil {
		defer conn.Close()
		msg, _ := bufio.NewReader(conn).ReadString('\n')
		return cleanBanner(strings.Trim(msg, "\r\n\t "))
	} else {
		mod.Debug("%s:%d : %v", ip, port, err)
	}
	return ""
}