@@ -50,14 +50,14 @@ fn main() {
50
50
51
51
debug ! ( "Main() `opts` arguments are {:?}" , opts) ;
52
52
53
- if !opts. quiet && !opts. accessible {
54
- print_opening ( ) ;
53
+ if !opts. greppable && !opts. accessible {
54
+ print_opening ( & opts ) ;
55
55
}
56
56
57
57
let ips: Vec < IpAddr > = parse_addresses ( & opts) ;
58
58
59
59
if ips. is_empty ( ) {
60
- warning ! ( "No IPs could be resolved, aborting scan." , false ) ;
60
+ warning ! ( "No IPs could be resolved, aborting scan." , opts . greppable , opts . accessible ) ;
61
61
std:: process:: exit ( 1 ) ;
62
62
}
63
63
@@ -68,8 +68,9 @@ fn main() {
68
68
& ips,
69
69
batch_size,
70
70
Duration :: from_millis ( opts. timeout . into ( ) ) ,
71
- opts. quiet ,
71
+ opts. greppable ,
72
72
PortStrategy :: pick ( opts. range , opts. ports , opts. scan_order ) ,
73
+ opts. accessible ,
73
74
) ;
74
75
debug ! ( "Scanner finished building: {:?}" , scanner) ;
75
76
@@ -101,23 +102,22 @@ fn main() {
101
102
ip,
102
103
opts. batch_size,
103
104
"'rustscan -b <batch_size> <ip address>'" ) ;
104
- warning ! ( x, opts. quiet ) ;
105
+ warning ! ( x, opts. greppable , opts . accessible ) ;
105
106
}
106
107
107
108
let mut nmap_bench = NamedTimer :: start ( "Nmap" ) ;
108
109
for ( ip, ports) in ports_per_ip. iter_mut ( ) {
109
110
let nmap_str_ports: Vec < String > = ports. into_iter ( ) . map ( |port| port. to_string ( ) ) . collect ( ) ;
110
111
111
- detail ! ( "Starting Nmap" , opts. quiet || opts. no_nmap) ;
112
-
113
112
// nmap port style is 80,443. Comma separated with no spaces.
114
113
let ports_str = nmap_str_ports. join ( "," ) ;
115
114
116
115
// if quiet mode is on nmap should not be spawned
117
- if opts. quiet || opts. no_nmap {
116
+ if opts. greppable || opts. no_nmap {
118
117
println ! ( "{} -> [{}]" , & ip, ports_str) ;
119
118
continue ;
120
119
}
120
+ detail ! ( "Starting Nmap" , opts. greppable, opts. accessible) ;
121
121
122
122
let addr = ip. to_string ( ) ;
123
123
let user_nmap_args =
@@ -127,7 +127,7 @@ fn main() {
127
127
output ! ( format!(
128
128
"The Nmap command to be run is nmap {}\n " ,
129
129
& nmap_args. join( " " )
130
- ) ) ;
130
+ ) , opts . greppable . clone ( ) , opts . accessible . clone ( ) ) ;
131
131
132
132
// Runs the nmap command and spawns it as a process.
133
133
let mut child = Command :: new ( "nmap" )
@@ -148,7 +148,7 @@ fn main() {
148
148
}
149
149
150
150
/// Prints the opening title of RustScan
151
- fn print_opening ( ) {
151
+ fn print_opening ( opts : & Opts ) {
152
152
debug ! ( "Printing opening" ) ;
153
153
let s = r#".----. .-. .-. .----..---. .----. .---. .--. .-. .-.
154
154
| {} }| { } |{ {__ {_ _}{ {__ / ___} / {} \ | `| |
@@ -163,23 +163,16 @@ Faster Nmap scanning with Rust."#;
163
163
println ! ( "{}" , info. gradient( Color :: Yellow ) . bold( ) ) ;
164
164
funny_opening ! ( ) ;
165
165
166
- let mut config_dir = match dirs:: config_dir ( ) {
167
- Some ( dir) => dir,
168
- None => panic ! ( "Could not infer config file path." ) ,
169
- } ;
170
- config_dir. push ( "rustscan" ) ;
171
- config_dir. push ( "config.toml" ) ;
172
-
173
166
let mut home_dir = match dirs:: home_dir ( ) {
174
167
Some ( dir) => dir,
175
168
None => panic ! ( "Could not infer config file path." ) ,
176
169
} ;
177
170
home_dir. push ( ".rustscan.toml" ) ;
178
171
179
172
detail ! ( format!(
180
- "The config file is expected to be at {:?} or {:?} " ,
181
- config_dir , home_dir
182
- ) ) ;
173
+ "The config file is expected to be at {:?}" ,
174
+ home_dir
175
+ ) , opts . greppable , opts . accessible ) ;
183
176
}
184
177
#[ cfg( not( tarpaulin_include) ) ]
185
178
fn build_nmap_arguments < ' a > (
@@ -212,7 +205,7 @@ fn parse_addresses(opts: &Opts) -> Vec<IpAddr> {
212
205
Ok ( mut iter) => ips. push ( iter. nth ( 0 ) . unwrap ( ) . ip ( ) ) ,
213
206
_ => {
214
207
let failed_to_resolve = format ! ( "Host {:?} could not be resolved." , ip_or_host) ;
215
- warning ! ( failed_to_resolve, opts. quiet ) ;
208
+ warning ! ( failed_to_resolve, opts. greppable , opts . accessible ) ;
216
209
}
217
210
} ,
218
211
}
@@ -229,7 +222,7 @@ fn adjust_ulimit_size(opts: &Opts) -> rlimit::rlim {
229
222
Ok ( _) => {
230
223
detail ! (
231
224
format!( "Automatically increasing ulimit value to {}." , limit) ,
232
- opts. quiet
225
+ opts. greppable , opts . accessible
233
226
) ;
234
227
}
235
228
Err ( _) => println ! ( "{}" , "ERROR. Failed to set ulimit value." ) ,
@@ -247,7 +240,7 @@ fn infer_batch_size(opts: &Opts, ulimit: rlimit::rlim) -> u16 {
247
240
// Adjust the batch size when the ulimit value is lower than the desired batch size
248
241
if ulimit < batch_size {
249
242
warning ! ( "File limit is lower than default batch size. Consider upping with --ulimit. May cause harm to sensitive servers" ,
250
- opts. quiet
243
+ opts. greppable , opts . accessible
251
244
) ;
252
245
253
246
// When the OS supports high file limits like 8000, but the user
@@ -273,7 +266,7 @@ fn infer_batch_size(opts: &Opts, ulimit: rlimit::rlim) -> u16 {
273
266
detail ! ( format!(
274
267
"File limit higher than batch size. Can increase speed by increasing batch size '-b {}'." ,
275
268
ulimit - 100
276
- ) , opts. quiet ) ;
269
+ ) , opts. greppable , opts . accessible ) ;
277
270
}
278
271
279
272
batch_size as u16
@@ -292,7 +285,7 @@ mod tests {
292
285
addresses : vec ! [ "127.0.0.1" . to_owned( ) ] ,
293
286
ports : None ,
294
287
range : None ,
295
- quiet : true ,
288
+ greppable : true ,
296
289
batch_size : 50_000 ,
297
290
timeout : 1_000 ,
298
291
ulimit : Some ( 2_000 ) ,
@@ -314,7 +307,7 @@ mod tests {
314
307
addresses : vec ! [ "127.0.0.1" . to_owned( ) ] ,
315
308
ports : None ,
316
309
range : None ,
317
- quiet : true ,
310
+ greppable : true ,
318
311
batch_size : 50_000 ,
319
312
timeout : 1_000 ,
320
313
ulimit : Some ( 2_000 ) ,
@@ -337,7 +330,7 @@ mod tests {
337
330
addresses : vec ! [ "127.0.0.1" . to_owned( ) ] ,
338
331
ports : None ,
339
332
range : None ,
340
- quiet : true ,
333
+ greppable : true ,
341
334
batch_size : 50_000 ,
342
335
timeout : 1_000 ,
343
336
ulimit : Some ( 2_000 ) ,
@@ -359,7 +352,7 @@ mod tests {
359
352
addresses : vec ! [ "127.0.0.1" . to_owned( ) ] ,
360
353
ports : None ,
361
354
range : None ,
362
- quiet : true ,
355
+ greppable : true ,
363
356
batch_size : 50_000 ,
364
357
timeout : 1_000 ,
365
358
ulimit : Some ( 2_000 ) ,
@@ -376,8 +369,23 @@ mod tests {
376
369
}
377
370
#[ test]
378
371
fn test_print_opening_no_panic ( ) {
372
+ let opts = Opts {
373
+ addresses : vec ! [ "127.0.0.1" . to_owned( ) ] ,
374
+ ports : None ,
375
+ range : None ,
376
+ greppable : true ,
377
+ batch_size : 50_000 ,
378
+ timeout : 1_000 ,
379
+ ulimit : Some ( 2_000 ) ,
380
+ command : Vec :: new ( ) ,
381
+ accessible : false ,
382
+ scan_order : ScanOrder :: Serial ,
383
+ no_config : false ,
384
+ no_nmap : false ,
385
+ top : false ,
386
+ } ;
379
387
// print opening should not panic
380
- print_opening ( ) ;
388
+ print_opening ( & opts ) ;
381
389
assert ! ( 1 == 1 ) ;
382
390
}
383
391
#[ test]
@@ -386,7 +394,7 @@ mod tests {
386
394
addresses : vec ! [ "127.0.0.1" . to_owned( ) ] ,
387
395
ports : None ,
388
396
range : None ,
389
- quiet : false ,
397
+ greppable : false ,
390
398
batch_size : 10 ,
391
399
timeout : 1_000 ,
392
400
ulimit : None ,
@@ -409,7 +417,7 @@ mod tests {
409
417
addresses : vec ! [ "127.0.0.1" . to_owned( ) , "192.168.0.0/30" . to_owned( ) ] ,
410
418
ports : None ,
411
419
range : None ,
412
- quiet : true ,
420
+ greppable : true ,
413
421
batch_size : 10 ,
414
422
timeout : 1_000 ,
415
423
ulimit : Some ( 2_000 ) ,
@@ -440,7 +448,7 @@ mod tests {
440
448
addresses : vec ! [ "google.com" . to_owned( ) ] ,
441
449
ports : None ,
442
450
range : None ,
443
- quiet : true ,
451
+ greppable : true ,
444
452
batch_size : 10 ,
445
453
timeout : 1_000 ,
446
454
ulimit : Some ( 2_000 ) ,
@@ -462,7 +470,7 @@ mod tests {
462
470
addresses : vec ! [ "127.0.0.1" . to_owned( ) , "im_wrong" . to_owned( ) ] ,
463
471
ports : None ,
464
472
range : None ,
465
- quiet : true ,
473
+ greppable : true ,
466
474
batch_size : 10 ,
467
475
timeout : 1_000 ,
468
476
ulimit : Some ( 2_000 ) ,
@@ -484,7 +492,7 @@ mod tests {
484
492
addresses : vec ! [ "im_wrong" . to_owned( ) , "300.10.1.1" . to_owned( ) ] ,
485
493
ports : None ,
486
494
range : None ,
487
- quiet : true ,
495
+ greppable : true ,
488
496
batch_size : 10 ,
489
497
timeout : 1_000 ,
490
498
ulimit : Some ( 2_000 ) ,
0 commit comments