@@ -19,7 +19,6 @@ func main() {
1919 timeOutPtr := flag .Int ("timeOut" , 10 , "Time out of a scan" )
2020 showFailPtr := flag .Bool ("showFail" , false , "Is Show fail logs" )
2121 flag .Parse ()
22- fmt .Println ("Reality TLS Scanner running: " , * addrPtr , ":" , * portPtr )
2322 s := Scanner {
2423 addr : * addrPtr ,
2524 port : * portPtr ,
@@ -33,7 +32,7 @@ func main() {
3332 s .logFile , _ = os .OpenFile ("results.txt" , os .O_APPEND | os .O_CREATE | os .O_WRONLY , 0600 )
3433 }
3534 location , _ := time .LoadLocation ("Asia/Shanghai" )
36- s .logFile . WriteString ( " start scan at : " + time .Now ().In (location ).String () + " \n " )
35+ s .Print ( fmt . Sprint ( "Reality TLS Scanner running: " , * addrPtr , ":" , * portPtr , " start scan at : ", time .Now ().In (location ).String ()) )
3736 defer s .logFile .Close ()
3837 s .Run ()
3938}
@@ -59,7 +58,7 @@ func (s *Scanner) Run() {
5958 }
6059 conn , err := net .DialTimeout ("tcp" , str + ":" + s .port , s .timeout )
6160 if err != nil {
62- fmt .Println ("Dial failed: " , err )
61+ s . Print ( fmt .Sprint ("Dial failed: " , err ) )
6362 } else {
6463 addr = conn .RemoteAddr ().(* net.TCPAddr ).IP
6564 line := "" + conn .RemoteAddr ().String () + " \t "
@@ -70,19 +69,19 @@ func (s *Scanner) Run() {
7069 })
7170 err = c .Handshake ()
7271 if err != nil {
73- fmt .Println ("" , line , "TLS handshake failed: " , err )
72+ s . Print ( fmt .Sprint ("" , line , "TLS handshake failed: " , err ) )
7473 } else {
7574 state := c .ConnectionState ()
7675 alpn := state .NegotiatedProtocol
7776 if alpn == "" {
7877 alpn = " "
7978 }
80- fmt . Println (fmt .Sprint ("" , line , "----- Found TLS v" , TlsDic [state .Version ], "\t ALPN " , alpn , "\t " , state .PeerCertificates [0 ].Subject ))
79+ s . Print (fmt .Sprint ("" , line , "----- Found TLS v" , TlsDic [state .Version ], "\t ALPN " , alpn , "\t " , state .PeerCertificates [0 ].Subject ))
8180 c .Close ()
8281 }
8382 }
8483 if addr == nil {
85- fmt . Println ("Invalid address format" )
84+ s . Print ("Invalid address format" )
8685 return
8786 }
8887
@@ -115,7 +114,9 @@ func (s *Scanner) Scan(increment bool) {
115114 }
116115 conn , err := net .DialTimeout ("tcp" , str + ":" + s .port , s .timeout )
117116 if err != nil {
118- fmt .Println ("Dial failed: " , err )
117+ if s .showFail {
118+ s .Print (fmt .Sprint ("Dial failed: " , err ))
119+ }
119120 } else {
120121 line := "" + conn .RemoteAddr ().String () + " \t "
121122 conn .SetDeadline (time .Now ().Add (s .timeout ))
@@ -126,7 +127,7 @@ func (s *Scanner) Scan(increment bool) {
126127 err = c .Handshake ()
127128 if err != nil {
128129 if s .showFail {
129- fmt .Println ("" , line , "TLS handshake failed: " , err )
130+ s . Print ( fmt .Sprint ("" , line , "TLS handshake failed: " , err ) )
130131 }
131132 } else {
132133 defer c .Close ()
@@ -135,18 +136,21 @@ func (s *Scanner) Scan(increment bool) {
135136 if alpn == "" {
136137 alpn = " "
137138 }
138- outStr := fmt .Sprint ("" , line , "----- Found TLS v" , TlsDic [state .Version ], "\t ALPN " , alpn , "\t " , state .PeerCertificates [0 ].Subject )
139- if state .Version == 0x0304 && alpn == "h2" {
140- if s .output {
141- s .logFile .WriteString (outStr + "\n " )
142- }
139+ if s .showFail || (state .Version == 0x0304 && alpn == "h2" ) {
140+ s .Print (fmt .Sprint ("" , line , "----- Found TLS v" , TlsDic [state .Version ], "\t ALPN " , alpn , "\t " , state .PeerCertificates [0 ].Subject ))
143141 }
144- fmt .Println (outStr )
145142 }
146143 }
147144 go s .Scan (increment )
148145}
149146
147+ func (s * Scanner ) Print (outStr string ) {
148+ if s .output {
149+ s .logFile .WriteString (outStr + "\n " )
150+ }
151+ fmt .Println (outStr )
152+ }
153+
150154func nextIP (ip net.IP , increment bool ) net.IP {
151155 // Convert to big.Int and increment
152156 ipb := big .NewInt (0 ).SetBytes ([]byte (ip ))
0 commit comments