jarm: update jarm to not fail on handshake failure (#328)
This commit is contained in:
parent
11611670fe
commit
00fe9ca9af
|
@ -6,7 +6,6 @@ import (
|
||||||
_ "fmt"
|
_ "fmt"
|
||||||
jarm "github.com/RumbleDiscovery/jarm-go"
|
jarm "github.com/RumbleDiscovery/jarm-go"
|
||||||
"github.com/zmap/zgrab2"
|
"github.com/zmap/zgrab2"
|
||||||
"io"
|
|
||||||
"log"
|
"log"
|
||||||
"net"
|
"net"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -103,13 +102,8 @@ func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, inter
|
||||||
// Stores raw hashes returned from parsing each protocols Hello message
|
// Stores raw hashes returned from parsing each protocols Hello message
|
||||||
rawhashes := []string{}
|
rawhashes := []string{}
|
||||||
|
|
||||||
// Stores final module results
|
|
||||||
r := Results{}
|
|
||||||
|
|
||||||
// Loop through each Probe type
|
// Loop through each Probe type
|
||||||
for _, probe := range jarm.GetProbes(target.Host(), int(scanner.GetPort())) {
|
for _, probe := range jarm.GetProbes(target.Host(), int(scanner.GetPort())) {
|
||||||
data := jarm.BuildProbe(probe)
|
|
||||||
|
|
||||||
var (
|
var (
|
||||||
conn net.Conn
|
conn net.Conn
|
||||||
err error
|
err error
|
||||||
|
@ -120,20 +114,14 @@ func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, inter
|
||||||
return zgrab2.TryGetScanStatus(err), nil, err
|
return zgrab2.TryGetScanStatus(err), nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = conn.Write([]byte(data))
|
_, err = conn.Write(jarm.BuildProbe(probe))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
rawhashes = append(rawhashes, "")
|
rawhashes = append(rawhashes, "")
|
||||||
conn.Close()
|
conn.Close()
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
// ret, err = zgrab2.ReadAvailable(conn)
|
ret, _ = zgrab2.ReadAvailableWithOptions(conn, 1484, 500*time.Millisecond, 0, 1484)
|
||||||
ret, err = zgrab2.ReadAvailableWithOptions(conn, 1484, 500*time.Millisecond, 0, 1484)
|
|
||||||
if err != io.EOF && err != nil {
|
|
||||||
rawhashes = append(rawhashes, "")
|
|
||||||
conn.Close()
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
ans, err := jarm.ParseServerHello(ret, probe)
|
ans, err := jarm.ParseServerHello(ret, probe)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -142,12 +130,11 @@ func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, inter
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
rawhashes = append(rawhashes, string(ans))
|
rawhashes = append(rawhashes, ans)
|
||||||
conn.Close()
|
conn.Close()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fprint := jarm.RawHashToFuzzyHash(strings.Join(rawhashes, ","))
|
return zgrab2.SCAN_SUCCESS, &Results{
|
||||||
r.Fingerprint = string(fprint)
|
Fingerprint: jarm.RawHashToFuzzyHash(strings.Join(rawhashes, ",")),
|
||||||
return zgrab2.SCAN_SUCCESS, &r, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -145,9 +145,7 @@ func ReadAvailableWithOptions(conn net.Conn, bufferSize int, readTimeout time.Du
|
||||||
}
|
}
|
||||||
return ret, err
|
return ret, err
|
||||||
}
|
}
|
||||||
if err != nil {
|
|
||||||
return ret, err
|
|
||||||
}
|
|
||||||
if n >= maxReadSize {
|
if n >= maxReadSize {
|
||||||
return ret, err
|
return ret, err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue