Reputation: 57
I am scanning IP addresses in a network (where I am VPN'ed).
func scanTestHandler(c *gin.Context) {
var ipRanges ScanApiBody
decoder := json.NewDecoder(c.Request.Body)
if err := decoder.Decode(&ipRanges); err != nil {
http.Error(c.Writer, err.Error(), http.StatusBadRequest)
c.Writer.WriteHeader(http.StatusBadRequest)
return
}
if len(ipRanges.Ranges) == 0 {
http.Error(c.Writer, "No Ranges Provided", http.StatusBadRequest)
c.Writer.WriteHeader(http.StatusBadRequest)
return
}
client := &http.Client{
Transport: &digest.Transport{
Username: "root",
Password: "root",
},
// Timeout: time.Second * 3,
}
wg := sync.WaitGroup{}
ctx := context.TODO()
count := atomic.Int32{}
sem := semaphore.NewWeighted(200)
streamChan := make(chan ScanApiRes)
for ri := 0; ri < len(ipRanges.Ranges); ri++ {
ipRange := ipRanges.Ranges[ri]
for ip := ipRange.Start; !ip.Equal(ipRange.End); ip = incrementIP(ip) {
wg.Add(1)
go func(client *http.Client, ip net.IP) {
s := time.Now()
sem.Acquire(ctx, 1)
defer wg.Done()
defer sem.Release(1)
defer count.Add(1)
_, err := client.Head(fmt.Sprintf("http://%s", ip))
if err != nil {
log.Println(err)
}
scannedIp := ScanApiRes{
// TODO: Add result of scan
}
streamChan <- scannedIp
fmt.Printf("%v - %v - %v\n", count.Load(), ip.String(), time.Since(s))
}(client, ip)
}
}
go func(s chan ScanApiRes) {
for item := range s {
c.SSEvent("ip-summary", item)
}
}(streamChan)
wg.Wait()
close(streamChan)
}
Here are some of the logs from the terminal:
0 - 10.0.108.72 - 3.354931667s
1 - 10.0.108.16 - 3.678023666s
2 - 10.0.108.26 - 3.697749125s
3 - 10.0.108.14 - 3.736625542s
4 - 10.0.108.17 - 3.76629875s
5 - 10.0.108.4 - 3.823524458s
6 - 10.0.108.49 - 3.917469042s
7 - 10.0.108.18 - 3.969688917s
8 - 10.0.108.27 - 4.032998625s
9 - 10.0.108.37 - 4.069573833s
10 - 10.0.108.58 - 4.115886208s
11 - 10.0.108.42 - 4.15664s
12 - 10.0.108.41 - 4.19622275s
13 - 10.0.108.50 - 4.239392625s
14 - 10.0.108.22 - 4.276969542s
15 - 10.0.108.28 - 4.325756625s
16 - 10.0.108.21 - 4.354717417s
17 - 10.0.108.19 - 4.45664575s
18 - 10.0.108.29 - 4.484881208s
19 - 10.0.108.5 - 4.540046708s
20 - 10.0.108.52 - 4.579810375s
21 - 10.0.108.59 - 4.636688625s
22 - 10.0.108.7 - 4.804590792s
23 - 10.0.108.62 - 4.836241334s
24 - 10.0.108.31 - 4.862378333s
25 - 10.0.108.40 - 4.899775084s
26 - 10.0.108.8 - 4.936755375s
27 - 10.0.108.39 - 4.987377584s
28 - 10.0.108.44 - 5.029282458s
29 - 10.0.108.56 - 5.09347775s
30 - 10.0.108.55 - 5.1229095s
31 - 10.0.108.74 - 5.165836625s
32 - 10.0.108.83 - 5.212342958s
33 - 10.0.108.75 - 5.268523208s
34 - 10.0.108.76 - 5.335620042s
35 - 10.0.108.78 - 5.355333334s
36 - 10.0.108.45 - 5.378485666s
37 - 10.0.108.87 - 5.401183541s
38 - 10.0.108.73 - 5.429159459s
39 - 10.0.108.54 - 5.455198292s
40 - 10.0.108.77 - 5.480277125s
41 - 10.0.108.69 - 5.50076225s
42 - 10.0.108.32 - 5.557850833s
43 - 10.0.108.82 - 5.576487791s
44 - 10.0.108.11 - 5.634108416s
45 - 10.0.108.10 - 5.65177525s
46 - 10.0.108.34 - 5.690411459s
47 - 10.0.108.9 - 5.720816042s
48 - 10.0.108.61 - 5.741371583s
49 - 10.0.108.63 - 5.768093042s
50 - 10.0.108.33 - 6.176018541s
51 - 10.0.108.90 - 6.22304675s
52 - 10.0.108.65 - 6.240586375s
53 - 10.0.108.68 - 6.270167292s
54 - 10.0.108.64 - 6.287038958s
55 - 10.0.108.66 - 6.3059385s
56 - 10.0.108.79 - 6.334709458s
57 - 10.0.108.23 - 6.369138542s
58 - 10.0.108.67 - 6.394803292s
59 - 10.0.108.96 - 6.419526375s
60 - 10.0.108.92 - 6.437589084s
61 - 10.0.108.91 - 6.457618167s
62 - 10.0.108.93 - 6.478853667s
63 - 10.0.108.20 - 6.486225291s
64 - 10.0.108.30 - 6.519222416s
65 - 10.0.108.53 - 6.552244542s
66 - 10.0.108.71 - 6.615237208s
67 - 10.0.108.95 - 6.647860792s
68 - 10.0.108.38 - 6.66335975s
69 - 10.0.108.80 - 6.685832833s
70 - 10.0.108.70 - 6.711968167s
71 - 10.0.108.81 - 6.744482041s
72 - 10.0.108.6 - 6.764567958s
73 - 10.0.108.84 - 6.784441542s
74 - 10.0.108.51 - 6.807673s
75 - 10.0.108.85 - 6.830097708s
76 - 10.0.108.1 - 8.726269333s
77 - 10.0.108.13 - 8.754624583s
78 - 10.0.108.2 - 8.784178666s
79 - 10.0.108.48 - 8.821517959s
80 - 10.0.108.36 - 8.851277584s
81 - 10.0.108.25 - 8.867614375s
82 - 10.0.108.47 - 8.911953125s
83 - 10.0.108.15 - 8.937707625s
84 - 10.0.108.35 - 8.957096667s
85 - 10.0.108.3 - 8.981076375s
86 - 10.0.108.46 - 9.015118666s
87 - 10.0.108.94 - 9.034539208s
88 - 10.0.108.86 - 9.041660666s
89 - 10.0.108.88 - 9.061379084s
90 - 10.0.108.89 - 9.073388041s
91 - 10.0.108.12 - 9.114054333s
92 - 10.0.108.57 - 10.213736708s
93 - 10.0.108.24 - 10.245989041s
94 - 10.0.108.60 - 11.855088958s
10.0.108.60
could take much less time in the second run (or even more).Timeout
settings of the client
as well and I have not been able to get desired results.Upvotes: 1
Views: 55