20
20
iface string
21
21
randomIPsCount int64
22
22
cidrNetwork string
23
+ ipList string
23
24
scanWorkers int
24
25
connTimeout time.Duration
25
26
scanPorts string
@@ -38,6 +39,7 @@ func init() {
38
39
flag .StringVar (& iface , "i" , "" , "use specific network interface" )
39
40
flag .Int64Var (& randomIPsCount , "n" , - 1 , "generate N random WAN IPs" )
40
41
flag .StringVar (& cidrNetwork , "net" , "" , "Network in CIDR notation to scan in random order" )
42
+ flag .StringVar (& ipList , "list" , "" , "IP/networks list (CIDR) to scan in random order" )
41
43
flag .IntVar (& scanWorkers , "w" , 64 , "workers count" )
42
44
flag .IntVar (& scanWorkers , "workers" , 64 , "workers count" )
43
45
flag .DurationVar (& connTimeout , "t" , 700 * time .Millisecond , "scan connect timeout" )
@@ -58,37 +60,7 @@ func init() {
58
60
flag .BoolVar (& callbackE , "cbde" , false , "disable callback errors" )
59
61
}
60
62
61
- func main () {
62
- flag .Parse ()
63
-
64
- if iface != "" {
65
- if err := network .SetInterface (iface ); err != nil {
66
- utils .EPrintln ("[E] iface" , err )
67
- return
68
- }
69
- utils .EPrintln ("[i] Iface" , iface )
70
- }
71
-
72
- var ipSource <- chan net.IP
73
- if cidrNetwork == "" {
74
- ipGenerator := generators .NewIPGenerator (4 , randomIPsCount )
75
- ipSource = ipGenerator .Generate ()
76
- } else {
77
- ipSource = generators .RandomHostsFromCIDRGen (cidrNetwork )
78
- }
79
- processor := services .NewProcessor (ipSource , scanWorkers )
80
-
81
- var cbFlags utils.Flags
82
- if ! callbackE {
83
- cbFlags = cbFlags .Set (utils .ERR )
84
- }
85
- if ! callbackW {
86
- cbFlags = cbFlags .Set (utils .WARN )
87
- }
88
- if ! callbackI {
89
- cbFlags = cbFlags .Set (utils .INFO )
90
- }
91
-
63
+ func setupSercices (processor * services.Processor ) {
92
64
if service == "" {
93
65
processor .AddService (services .NewDummyService ())
94
66
} else {
@@ -122,6 +94,19 @@ func main() {
122
94
processor .AddService (svc )
123
95
}
124
96
}
97
+ }
98
+
99
+ func process (processor * services.Processor ) {
100
+ var cbFlags utils.Flags
101
+ if ! callbackE {
102
+ cbFlags = cbFlags .Set (utils .ERR )
103
+ }
104
+ if ! callbackW {
105
+ cbFlags = cbFlags .Set (utils .WARN )
106
+ }
107
+ if ! callbackI {
108
+ cbFlags = cbFlags .Set (utils .INFO )
109
+ }
125
110
126
111
sp := utils.Spinner {}
127
112
sp .Start ()
@@ -154,3 +139,35 @@ func main() {
154
139
}
155
140
}
156
141
}
142
+
143
+ func main () {
144
+ flag .Parse ()
145
+
146
+ if iface != "" {
147
+ if err := network .SetInterface (iface ); err != nil {
148
+ utils .EPrintln ("[E] iface" , err )
149
+ return
150
+ }
151
+ utils .EPrintln ("[i] Iface" , iface )
152
+ }
153
+
154
+ var ipSource <- chan net.IP
155
+ if ipList != "" {
156
+ list , err := utils .LoadInput (ipList )
157
+ if err != nil {
158
+ utils .EPrintln ("[E] IP list" , err )
159
+ return
160
+ }
161
+ ipSource = generators .RandomHostsFromListGen (list )
162
+ } else if cidrNetwork == "" {
163
+ ipGenerator := generators .NewIPGenerator (4 , randomIPsCount )
164
+ ipSource = ipGenerator .Generate ()
165
+ } else {
166
+ ipSource = generators .RandomHostsFromCIDRGen (cidrNetwork )
167
+ }
168
+
169
+ processor := services .NewProcessor (ipSource , scanWorkers )
170
+
171
+ setupSercices (processor )
172
+ process (processor )
173
+ }
0 commit comments