work with data files
This commit is contained in:
parent
9ec2c9dacf
commit
73c0b2d3a6
|
@ -0,0 +1,4 @@
|
||||||
|
.,CH,TXT,QUERY,NOERROR,qr,aa,tc,RD,ra,ad,cd,z,0,0,0,0,DO,4097,NSID .,CH,TXT,QUERY,REFUSED,QR,aa,tc,RD,ra,ad,cd,z,1,0,0,1,DO,4096,NSID
|
||||||
|
auThoRs.bInD.,CH,TXT,QUERY,NOERROR,qr,aa,tc,rd,ra,ad,cd,z,0,0,0,0,do,0,nsid auThoRs.bInD.,CH,TXT,QUERY,NOERROR,QR,AA,tc,rd,ra,ad,cd,z,1,15,1,0,do,0,nsid
|
||||||
|
bind.,NONE,SOA,NOTIFY,NOERROR,qr,AA,tc,RD,ra,ad,cd,Z,0,0,0,0,do,0,nsid bind.,NONE,SOA,NOTIFY,REFUSED,QR,aa,tc,RD,ra,ad,cd,z,1,0,0,0,do,0,nsid
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
# NSD3 fingerprint
|
||||||
|
.,CH,TXT,QUERY,NOERROR,qr,aa,tc,RD,ra,ad,cd,z,0,0,0,0,DO,4097,NSID .,CH,TXT,QUERY,NOERROR,QR,aa,tc,RD,ra,ad,cd,z,1,0,0,1,DO,4096,nsid
|
||||||
|
auThoRs.bInD.,CH,TXT,QUERY,NOERROR,qr,aa,tc,rd,ra,ad,cd,z,0,0,0,0,do,0,nsid auThoRs.bInD.,CH,TXT,QUERY,NOERROR,QR,aa,tc,rd,ra,ad,cd,z,1,0,0,0,do,0,nsid
|
||||||
|
bind.,NONE,SOA,NOTIFY,NOERROR,qr,AA,tc,RD,ra,ad,cd,Z,0,0,0,0,do,0,nsid .,CLASS0,TYPE0,NOTIFY,NXDOMAIN,QR,AA,tc,RD,ra,ad,cd,z,0,0,0,0,do,0,nsid
|
|
@ -2,7 +2,9 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bufio"
|
||||||
"dns"
|
"dns"
|
||||||
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
@ -132,6 +134,13 @@ func (f *fingerprint) StringNoSections() string {
|
||||||
return strings.Join(s[2:13], ",")
|
return strings.Join(s[2:13], ",")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Return a new fingerprint, set from string
|
||||||
|
func newFingerprint(s string) *fingerprint {
|
||||||
|
f := new(fingerprint)
|
||||||
|
f.setString(s)
|
||||||
|
return f
|
||||||
|
}
|
||||||
|
|
||||||
// SetString sets the strings str to the fingerprint *f.
|
// SetString sets the strings str to the fingerprint *f.
|
||||||
func (f *fingerprint) setString(str string) {
|
func (f *fingerprint) setString(str string) {
|
||||||
for i, s := range strings.Split(str, ",") {
|
for i, s := range strings.Split(str, ",") {
|
||||||
|
@ -349,6 +358,30 @@ func (f *fingerprint) compare(f1 *fingerprint) (diff int) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Read the finger prints from the file. Lines starting with
|
||||||
|
// # are comments. Each line should contain one fingerprint in string format.
|
||||||
|
func fingerPrintFromFile(f string) ([]*fingerprint, error) {
|
||||||
|
r, e := os.Open(f)
|
||||||
|
if e != nil {
|
||||||
|
return nil, e
|
||||||
|
}
|
||||||
|
b := bufio.NewReader(r)
|
||||||
|
l, p, e := b.ReadLine()
|
||||||
|
i := 1
|
||||||
|
prints := make([]*fingerprint, 0)
|
||||||
|
for e == nil {
|
||||||
|
if p {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
if l[0] != '#' {
|
||||||
|
prints = append(prints, newFingerprint(string(l)))
|
||||||
|
}
|
||||||
|
l, p, e = b.ReadLine()
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
return prints, nil
|
||||||
|
}
|
||||||
|
|
||||||
func valueOfBool(b bool, w string) string {
|
func valueOfBool(b bool, w string) string {
|
||||||
if b {
|
if b {
|
||||||
return strings.ToUpper(w)
|
return strings.ToUpper(w)
|
||||||
|
|
|
@ -38,19 +38,9 @@ func main() {
|
||||||
nameserver = string([]byte(nameserver)[1:]) // chop off @
|
nameserver = string([]byte(nameserver)[1:]) // chop off @
|
||||||
nameserver += ":" + strconv.Itoa(*port)
|
nameserver += ":" + strconv.Itoa(*port)
|
||||||
c := dns.NewClient()
|
c := dns.NewClient()
|
||||||
fp := new(fingerprint)
|
prints, _ := fingerPrintFromFile("data/q")
|
||||||
for _, s := range fingerprints() {
|
for _, f := range prints {
|
||||||
fp.setString(s)
|
f1 := probe(c, nameserver, f)
|
||||||
fp1 := probe(c, nameserver, fp)
|
println(f.String(), f1.String())
|
||||||
println(s, "|", fp1.String())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// A list of all the evil finger prints
|
|
||||||
func fingerprints() []string {
|
|
||||||
return []string{
|
|
||||||
".,CH,TXT,QUERY,NOERROR,qr,aa,tc,RD,ra,ad,cd,z,0,0,0,0,DO,4097,NSID", // general
|
|
||||||
"auThoRs.bInD.,CH,TXT,QUERY,NOERROR,qr,aa,tc,rd,ra,ad,cd,z,0,0,0,0,do,0,nsid", // case
|
|
||||||
"bind.,NONE,SOA,NOTIFY,NOERROR,qr,AA,tc,RD,ra,ad,cd,Z,0,0,0,0,do,0,nsid", // notify
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue