Refactor print

This commit is contained in:
yuhan6665
2023-04-22 22:49:41 -04:00
parent 6acddceaee
commit baac7a6914
2 changed files with 21 additions and 17 deletions
+3 -3
View File
@@ -9,9 +9,9 @@ Usage
Recommend to run this tool locally. It may cause VPS to be flagged if you run scanner in the cloud.
```
./RealiTLScanner -addr www.microsoft.com
./RealiTLScanner -addr 20.53.203.50
./RealiTLScanner -addr 2607:f8b0:4004:c1b::65 -thread 10
./RealiTLScanner -addr www.microsoft.com -showFail -o
./RealiTLScanner -addr 20.53.203.50 -showFail -o
./RealiTLScanner -addr 2607:f8b0:4004:c1b::65 -thread 10 -showFail -o
```
Example
+18 -14
View File
@@ -19,7 +19,6 @@ func main() {
timeOutPtr := flag.Int("timeOut", 10, "Time out of a scan")
showFailPtr := flag.Bool("showFail", false, "Is Show fail logs")
flag.Parse()
fmt.Println("Reality TLS Scanner running: ", *addrPtr, ":", *portPtr)
s := Scanner{
addr: *addrPtr,
port: *portPtr,
@@ -33,7 +32,7 @@ func main() {
s.logFile, _ = os.OpenFile("results.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0600)
}
location, _ := time.LoadLocation("Asia/Shanghai")
s.logFile.WriteString("start scan at : " + time.Now().In(location).String() + "\n")
s.Print(fmt.Sprint("Reality TLS Scanner running: ", *addrPtr, ":", *portPtr, " start scan at : ", time.Now().In(location).String()))
defer s.logFile.Close()
s.Run()
}
@@ -59,7 +58,7 @@ func (s *Scanner) Run() {
}
conn, err := net.DialTimeout("tcp", str+":"+s.port, s.timeout)
if err != nil {
fmt.Println("Dial failed: ", err)
s.Print(fmt.Sprint("Dial failed: ", err))
} else {
addr = conn.RemoteAddr().(*net.TCPAddr).IP
line := "" + conn.RemoteAddr().String() + " \t"
@@ -70,19 +69,19 @@ func (s *Scanner) Run() {
})
err = c.Handshake()
if err != nil {
fmt.Println("", line, "TLS handshake failed: ", err)
s.Print(fmt.Sprint("", line, "TLS handshake failed: ", err))
} else {
state := c.ConnectionState()
alpn := state.NegotiatedProtocol
if alpn == "" {
alpn = " "
}
fmt.Println(fmt.Sprint("", line, "----- Found TLS v", TlsDic[state.Version], "\tALPN ", alpn, "\t", state.PeerCertificates[0].Subject))
s.Print(fmt.Sprint("", line, "----- Found TLS v", TlsDic[state.Version], "\tALPN ", alpn, "\t", state.PeerCertificates[0].Subject))
c.Close()
}
}
if addr == nil {
fmt.Println("Invalid address format")
s.Print("Invalid address format")
return
}
@@ -115,7 +114,9 @@ func (s *Scanner) Scan(increment bool) {
}
conn, err := net.DialTimeout("tcp", str+":"+s.port, s.timeout)
if err != nil {
fmt.Println("Dial failed: ", err)
if s.showFail {
s.Print(fmt.Sprint("Dial failed: ", err))
}
} else {
line := "" + conn.RemoteAddr().String() + " \t"
conn.SetDeadline(time.Now().Add(s.timeout))
@@ -126,7 +127,7 @@ func (s *Scanner) Scan(increment bool) {
err = c.Handshake()
if err != nil {
if s.showFail {
fmt.Println("", line, "TLS handshake failed: ", err)
s.Print(fmt.Sprint("", line, "TLS handshake failed: ", err))
}
} else {
defer c.Close()
@@ -135,18 +136,21 @@ func (s *Scanner) Scan(increment bool) {
if alpn == "" {
alpn = " "
}
outStr := fmt.Sprint("", line, "----- Found TLS v", TlsDic[state.Version], "\tALPN ", alpn, "\t", state.PeerCertificates[0].Subject)
if state.Version == 0x0304 && alpn == "h2" {
if s.output {
s.logFile.WriteString(outStr + "\n")
}
if s.showFail || (state.Version == 0x0304 && alpn == "h2") {
s.Print(fmt.Sprint("", line, "----- Found TLS v", TlsDic[state.Version], "\tALPN ", alpn, "\t", state.PeerCertificates[0].Subject))
}
fmt.Println(outStr)
}
}
go s.Scan(increment)
}
func (s *Scanner) Print(outStr string) {
if s.output {
s.logFile.WriteString(outStr + "\n")
}
fmt.Println(outStr)
}
func nextIP(ip net.IP, increment bool) net.IP {
// Convert to big.Int and increment
ipb := big.NewInt(0).SetBytes([]byte(ip))