--- fierce.pl	2007-06-14 12:58:50.000000000 -0400
+++ fierce-new.pl	2007-12-20 01:23:00.000000000 -0500
@@ -28,6 +28,7 @@
 my $range;
 my $search;
 my $suppress;
+my $stop;
 my $tcp_timeout;
 my $threads;
 my $traverse;   
@@ -104,6 +105,7 @@
                   	'dnsserver=s'	=> \$dns_server,
                   	'version'	=> \$version,
                   	'search=s'	=> \$search,
+                  	'stop=s'	=> \$stop,
                   	'wordlist=s'	=> \$wordlist,
                   	'fulloutput'	=> \$full_output,
                   	'nopattern'	=> \$nopattern,
@@ -240,10 +242,13 @@
 if (@zone) {
   output("\nWhoah, it worked - misconfigured DNS server found:");
   output($_->string) for (@zone);
-  quit_early("\nThere isn't much point continuing, you have everything.\n"
-             . "Have a nice day.");
+  if ($stop) {
+    quit_early("\nThere isn't much point continuing, you have everything.\n"
+                 . "Have a nice day.");
+  }
 } elsif ($dns) {
   output("\nUnsuccessful in zone transfer (it was worth a shot)");
+}
   output("Okay, trying the good old fashioned way... brute force");
   $wordlist = $wordlist || 'hosts.txt';
   if (-e $wordlist) {
@@ -296,7 +301,6 @@
   }
   # write to file any output generated by child threads
   print FILE for @output;
-}
 
 foreach my $current_name (sort keys(%known_names)) {
   @ip_and_hostname = split (/\x2C/, $current_name);
@@ -563,6 +567,7 @@
 		hosts found, as it will continue to traverse once it locates
 		servers that you specified in your search list.  The more the
 		better.
+	-stop		Stop scan if Zone Transfer works.
 	-suppress	Suppress all TTY output (when combined with -file).
 	-tcptimeout	Specify a different timeout (default 10 seconds).  You
 		may want to increase this if the DNS server you are querying

