Advertisement
ar3sw0rmed

R0b10s-12 Reverse IP

Apr 29th, 2012
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 15.54 KB | None | 0 0
  1. #!/usr/bin/env perl
  2.  
  3. # RitX - Reverse IP Tool v1.5
  4. # Copyright (C) 2009-2012
  5. # r0b10S-12 <r12xr00tu@gmail.com>
  6.  
  7.  
  8. print "\n\t+-----------------------------+\n";
  9. print "\t|           RitX 1.5          |\n";
  10. print "\t|      Coded by r0b10S-12     |\n";
  11. print "\t+-----------------------------+\n\n\n";
  12.  
  13. use LWP::Simple;
  14. use Socket qw(inet_aton);
  15. use Getopt::Long;
  16.  
  17. # check missing modules...
  18. my @Modules = ("threads","LWP::ConnCache","HTTP::Cookies");
  19.  
  20. foreach my $module (@Modules)
  21. {
  22.     my $can = eval "use $module;1;";
  23.     if ($can && $module =~ /threads/)
  24.     {
  25.         # Do processing using threads
  26.         $thread_support = 1;
  27.     }
  28.     elsif(!$can && $module =~ /threads/)
  29.     {
  30.         # Do it without using threads
  31.         $thread_support = 0;
  32.     }
  33.     # The module isn't there
  34.     if ($@ =~ /Can't locate/) {
  35.         die "\n[!!] it seems that some modules are missing...:\n".$@."\n";
  36.     }
  37. }
  38.  
  39. my $b = $0;
  40. $b =~ s/.*\///;
  41. sub usage {
  42.     print <<HELP;
  43. Usage: perl $b [OPTIONS]
  44. Options:
  45.    -t, --target            Server hostname or IP
  46.    -c, --check             Check extracted domains that are in the same IP address to eleminate cached/old records
  47.    -b, --bing              Save Bing search results to a file
  48.        --list              List current supported Reverse Ip Lookup websites
  49.        --print             Print results
  50.        --timeout=SECONDS   Seconds to wait before timeout connection (default 30)
  51.        --user-agent        Specify User-Agent value to send in HTTP requests
  52.        --proxy             To use a Proxy
  53.        --proxy-auth        Proxy authentication information (user:password).
  54.    -o, --output=FILE       Save results to a file (default IP.txt)
  55.    -h, --help              This shity message
  56.    -v, --verbose           Print more informations
  57.  
  58.    Threads:
  59.    --threads=THREADS       Maximum number of concurrent IP checks (default 1) require --check
  60.  
  61. HELP
  62.     exit;
  63. }
  64.  
  65. my %SERV = (
  66.     Myipneighbors =>{
  67.         SITE    =>  "My-ip-neighbors.com",
  68.         URL     =>  "http://www.my-ip-neighbors.com/?domain=%s",
  69.         REGEX   =>  '<td class="action"\starget="\_blank"><a\shref="http\:\/\/whois\.domaintools\.com\/(.*?)"\starget="\_blank"\sclass="external">Whois<\/a><\/td>',
  70.     },
  71.     Yougetsignal =>{
  72.         SITE    =>  "Yougetsignal.com",
  73.         DATA    =>  'remoteAddress',
  74.         URL     =>  "http://www.yougetsignal.com/tools/web-sites-on-web-server/php/get-web-sites-on-web-server-json-data.php",
  75.         SP      =>  'Yougetsignal()',
  76.     },
  77.     Myiptest =>{
  78.         SITE    =>  "Myiptest.com",
  79.         URL     =>  "http://www.myiptest.com/staticpages/index.php/Reverse-IP/%s",
  80.         REGEX   =>  "<td style='width:200px;'><a href='http:\/\/www\.myiptest\.com\/staticpages\/index\.php\/Reverse-IP\/.*?'>(.*?)<\/a><\/td>",
  81.     },
  82.     WebHosting =>{
  83.         SITE    =>  "Whois.WebHosting.info",
  84.         URL     =>  "http://whois.webhosting.info/%s?pi=%s&ob=SLD&oo=DESC",
  85.         HEAVY   =>  1,
  86.         SP      =>  'Whoiswebhosting()',
  87.     },
  88.     Domainsbyip =>{
  89.         SITE    =>  'Domainsbyip.com',
  90.         URL     =>  'http://domainsbyip.com/%s/',
  91.         REGEX   =>  '<li class="site.*?"><a href="http\:\/\/domainsbyip.com\/domaintoip\/(.*?)/">.*?<\/a>',
  92.     },
  93.     Ipadress =>{
  94.         SITE    =>  "Ip-adress.com",
  95.         URL     =>  "http://www.ip-adress.com/reverse_ip/%s",
  96.         REGEX   =>  '<td style\=\"font\-size\:8pt\">.\n\[<a href="\/whois\/(.*?)">Whois<\/a>\]',
  97.     },
  98.     Bing =>{
  99.         SITE    =>  "Bing.com",
  100.         URL     =>  "http://api.search.live.net/xml.aspx?Appid=%s&query=ip:%s&Sources=Web&Version=2.0&Options=EnableHighlighting&Web.Count=50&Web.Options=DisableQueryAlterations&Web.Offset=",
  101.         SP      =>  'BingApi()',
  102.     },
  103.     ewhois =>{
  104.         SITE    =>  "Ewhois.com",
  105.         URL     =>  "http://www.ewhois.com/",
  106.         HEAVY   =>  1,
  107.         SP      =>  'eWhois()',
  108.     },
  109.     Sameip =>{
  110.         SITE    =>  "Sameip.org",
  111.         URL     =>  "http://sameip.org/ip/%s/",
  112.         REGEX   =>  '<a href="http:\/\/.*?" rel=\'nofollow\' title="visit .*?" target="_blank">(.*?)<\/a>',
  113.     },
  114.     Robtex =>{
  115.         SITE    =>  "Robtex.com",
  116.         URL     =>  "http://www.robtex.com/ajax/dns/%s.html",
  117.         REGEX   =>  "<li><a href\=\"\/dns\/.*?\.html\#shared\" >(.*?)<\/a><\/li>",
  118.     },
  119.     Webmax =>{
  120.         SITE    =>  "Tools.web-max.ca",
  121.         URL     =>  "http://ip2web.web-max.ca/?byip=1&ip=%s",
  122.         REGEX   =>  '<a href="http:\/\/.*?" target="_blank">(.*?)<\/a>',
  123.     },
  124.     DNStrails =>{
  125.         SITE    =>  "DNStrails.com",
  126.         URL     =>  "http://www.DNStrails.com/tools/lookup.htm?ip=%s&date=recent",
  127.         REGEX   =>  'date=recent">(.*?)<\/a>\s\(as\sa\swebserver\)',
  128.     },
  129.     Viewdns =>{
  130.         SITE    =>  "Viewdns.info",
  131.         URL     =>  "http://viewdns.info/reverseip/?host=%s",
  132.         SP      =>  "ViewDNS()"
  133.     }
  134. );
  135.  
  136. # Process options.
  137. my ($target,$timeout,$threadz,$check,$print,$bing,$proxy,$proxy_auth,$useragent,$filename,$verbose);
  138.  
  139. if ( @ARGV > 0 )
  140. {
  141.     GetOptions( 't|target=s'    => \$target,
  142.                 'timeout=i'     => \$timeout,
  143.                 'threads=i'     => \$threadz,
  144.                 'c|check'       => \$check,
  145.                 'print'         => \$print,
  146.                 'list'          => \&list_serv,
  147.                 'b|bing'        => \$bing,
  148.                 'proxy=s'       => \$proxy,
  149.                 'proxy-auth=s'  => \$proxy_auth,
  150.                 'user-agent'    => \$useragent,
  151.                 'o|output=s'    => \$filename,
  152.                 'v|verbose'     => \$verbose,
  153.                 'h|help'        => \&usage) or exit;
  154. }
  155. else
  156. {
  157.     print "[*] Usage    : perl $b [OPTIONS]\n";
  158.     print "    EXEMPLE  : perl $b -t www.target.com -o result.txt\n\n";
  159.     print "[*] Try 'perl $b -h' for more options.\n";
  160.     exit;
  161. }
  162.  
  163.  
  164. if($^O =~ /MSWin32|cygwin/ and ($threadz>10))
  165. {
  166.     print "\n[-] Sorry, maximum number of used threads is 10 for Windows to avoid some possible connection and performance issues\n\n";
  167.     exit;
  168. }
  169.  
  170. if ($target =~ /\d+.\d+.\d+.\d+/)
  171. {
  172.     # nice do nothing
  173. }
  174. elsif ($target =~ /([a-z][a-z0-9\-]+(\.|\-*\.))+[a-z]{2,6}$/)
  175. {
  176.     my $IP = getIP($target);
  177.     if ($IP)
  178.     {
  179.         $target = $IP;
  180.     }
  181.     else
  182.     {
  183.         die "\n[!!] Unable to Resolve Host $target ! \n";
  184.     }
  185. }
  186. else
  187. {
  188.     die "[-] Invalid Hostname or Ip address .\n";
  189. }
  190.  
  191. my $DNSx = gethostbyaddr(inet_aton($target),AF_INET);
  192. # Check if the target uses CloudFlare service
  193. my $IPx = unpack("N",inet_aton($target));
  194. if(($IPx >= 3428708352 and $IPx <= 3428708607) or ($IPx >= 3428692224 and $IPx <= 3428692479) or ($IPx >= 3340468224 and $IPx <= 3340470271) or ($IPx >= 2918526976 and $IPx <= 2918531071) or ($IPx >= 1729546240 and $IPx <= 1729547263))
  195. {
  196.     print "[WARNING] The target uses CloudFlare's service!!\n\n";
  197.     print "[!] do you wanna continue? [y/n]:";
  198.     my $choice=<STDIN>;
  199.     chop($choice);
  200.     if($choice eq "n")
  201.     {
  202.         print "\n[*] shutting down!!\n\n";
  203.         exit;
  204.     }
  205.     else
  206.     {
  207.         print  "[+] OK! as you like\n";
  208.     }
  209. }
  210.  
  211. # Global variables
  212. $bingApiKey  = 'B2EF5E9434B8778E2B01E5D6CE71545CCEC97C86';#get your own code
  213. $VERSION     = '1.5';
  214. $TMPdir      = "tmp";
  215. $useragent ||= 'Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.1) Gecko/20090624 Firefox/3.5';
  216. $filename  ||= "$target.txt";
  217. $timeout   ||= 30;
  218. $SIG{INT}    = \&trapsig;
  219.  
  220. mkdir $TMPdir or die "[-] Cant create tmp directory!\n" if ! -d $TMPdir;
  221.  
  222. my $ua = LWP::UserAgent->new(agent => $useragent);
  223. $ua->timeout($timeout);
  224. $ua->max_redirect(0);
  225. $ua->conn_cache(LWP::ConnCache->new());
  226. $ua->default_header('Referer' => "http://www.fbi.gov");
  227. $|++;
  228. if ($proxy)
  229. {
  230.     $proxy .= ":8080" if not $proxy =~ /:/;
  231.     # connect to the proxy
  232.     my $req = HTTP::Request->new(CONNECT => 'http://'.$proxy.'/' );
  233.     if (defined $proxy_auth)
  234.     {
  235.         my ($user,$password)=split(":",$proxy_auth);
  236.         $req->proxy_authorization_basic($user, $password);
  237.     }
  238.     my $res = $ua->request($req);
  239.     # connection failed
  240.     if ( not $res->is_success ){
  241.         print "\n[-] failed to connect to the proxy... ignore it\n\n";
  242.     }
  243.     else
  244.     {
  245.         $ua->proxy(http => "http://$proxy/");
  246.     }
  247. }
  248.  
  249. print "\n[*] This thing will take a little time so please wait...\n\n";
  250. print "[*] Processing:\n";
  251.  
  252. ### Functions
  253.  
  254. sub list_serv
  255. {
  256.     print "[*] List of available Reverse Ip Lookup services:\n\n";
  257.     foreach $X (keys %SERV)
  258.     {
  259.         print "    -> $SERV{$X}->{SITE}\n";
  260.     }
  261.     print "\n";
  262.     exit;
  263. }
  264.  
  265. sub trapsig
  266. {
  267.     print "\n\n[!!] Caught Interrupt (CTRL+C), Aborting\n";
  268.     print "[!!] Saving results\n";
  269.     save_report($filename);
  270.     exit();
  271. }
  272. sub add
  273. {
  274.     my $x = lc($_[0]);
  275.     ($x =~ /[\<\"]|freecellphonetracer|reversephonedetective|americanhvacparts|freephonetracer|phone\.addresses|reversephone\.theyellowpages|\.in-addr\.arpa|^\d+(\.|-)\d+(\.|-)/) ? return:0;
  276.     push(@{$SERV{$X}->{DUMP}},$x) if($verbose);
  277.     $x =~ s/http(.|s)\:\/\/|\*\.|^www\.|\///;#remove shit
  278.     ++$SERV{$X}->{NB};
  279.     push(@result,$x);
  280. }
  281. sub getIP
  282. {
  283.     my @ip = unpack('C4',(gethostbyname($_[0]))[4]) or return;
  284.     return join('.',@ip);
  285. }
  286.  
  287. sub getDNS
  288. {
  289.     return gethostbyaddr(inet_aton($_[0]),AF_INET);
  290. }
  291.  
  292. sub Req
  293. {
  294.     my ($URL,$data)=@_;
  295.     my $res;
  296.     if(!$data)
  297.     {
  298.         $res = $ua->get($URL);
  299.     }
  300.     else
  301.     {
  302.         $res = $ua->post($URL,
  303.         {
  304.             $data => $target,
  305.         });
  306.     }
  307.     if(!$res->is_success)
  308.     {
  309.         print "[!] Error: ".$res->status_line."\n" if ($verbose);
  310.     }
  311.     return $res->content;
  312. }
  313.  
  314. sub Yougetsignal
  315. {
  316.     my $resu = Req(sprintf($SERV{$X}->{URL},$target),$SERV{$X}->{DATA});
  317.     while ($resu =~ m/\["(.*?)\"\, \"(1|)\"\]/g)
  318.     {
  319.         add($1);
  320.     }
  321.     if ($resu =~ m/Daily reverse IP check limit reached for/i)
  322.     {
  323.         $ERROR = "E1";
  324.         $SERV{$X}->{NB} = $ERROR;
  325.     }
  326. }
  327.  
  328. sub eWhois
  329. {
  330.     sub callback
  331.     {
  332.         while($_[0] =~ m/"(.*?)","","","(UA\-[0-9]+\-[0-9]+|)",""/g)
  333.         {
  334.             add($1);
  335.         }
  336.     }
  337.     my $url = "http://www.ewhois.com/export/ip-address/$target/";
  338.     my $cookie_jar = HTTP::Cookies->new(autosave => 1);
  339.     my $browser = LWP::UserAgent->new(agent => $useragent);
  340.     $browser->cookie_jar($cookie_jar);
  341.     my $resu = $browser->post("http://www.ewhois.com/login/",
  342.     {
  343.         'data[User][email]'=>'r12xr00tu@gmail.com',
  344.         'data[User][password]'=>'RitX:::R1tX',
  345.         'data[User][remember_me]'=>'0'
  346.     });
  347.     if(!$resu->header('Location'))
  348.     {
  349.         print "[-] Sorry, we cant login to eWhois!\n";
  350.         return;
  351.     }
  352.     $browser->get($url, ':content_cb' => \&callback );
  353. }
  354.  
  355. sub Whoiswebhosting
  356. {
  357.     for (my $i=1;$i<=100;$i++)
  358.     {
  359.         my $resu = Req(sprintf($SERV{$X}->{URL},$target,$i));
  360.         if ($resu =~ m/<a href=\"\/.*?\?pi\=\d+\&ob\=SLD\&oo\=DESC\">Next\&nbsp\;\&gt\;\&gt\;<\/a>/g)
  361.         {
  362.             while ($resu =~ m/<td><a href="http:\/\/whois\.webhosting\.info\/.*?\.">(.*?)\.<\/a><\/td>/g)
  363.             {
  364.                 add($1);
  365.             }
  366.         }
  367.         else
  368.         {
  369.             while ($resu =~ m/<td><a href="http:\/\/whois\.webhosting\.info\/.*?\.">(.*?)\.<\/a><\/td>/g)
  370.             {
  371.                 add($1);
  372.             }
  373.             if ($resu =~ m/The security key helps us prevent automated searches/i)
  374.             {
  375.                 $ERROR = "E2";
  376.                 $SERV{$X}->{NB} = $ERROR;
  377.                 last;
  378.             }
  379.             last;
  380.         }
  381.     }
  382. }
  383.  
  384. sub ViewDNS
  385. {
  386.     my $resu = Req(sprintf($SERV{$X}->{URL},$target));
  387.     if($resu =~ m/<table border="1"><tr><td>Domain<\/td><td>Last Resolved Date<\/td><\/tr>(.*?)<\/table><br><\/td><\/tr>/i)
  388.     {
  389.         $resu = $1;
  390.         while($resu =~ m/<tr><td>(.*?)<\/td><td align="center">/gi)
  391.         {
  392.             add($1);
  393.         }
  394.     }
  395. }
  396.  
  397. sub BingApi
  398. {
  399.     my $b;
  400.     my $off = 0;
  401.     for(my $offset=50;$offset<=500;$offset+=50)
  402.     {
  403.         my $resu = Req(sprintf($SERV{$X}->{URL},$bingApiKey,$target).$offset);
  404.         if ($resu =~ m/<web\:Offset>(.*?)<\/web\:Offset>/gi)
  405.         {
  406.             $off = $1;
  407.         }
  408.         if ($off == $offset)
  409.         {
  410.             while ($resu =~ m/<web\:Url>http:\/\/(.*?)<\/web\:Url>/g)
  411.             {
  412.                 $b = $1;
  413.                 push(@bingtrash,$b) if $bing;
  414.                 $b =~ s/\/.*// if index($b,"/");
  415.                 add($b);
  416.             }
  417.         }
  418.         else
  419.         {
  420.             last;
  421.         }
  422.     }
  423. }
  424.  
  425. sub add2tmp
  426. {
  427.     syswrite(TMP,gethostbyaddr(inet_aton($_[0]),AF_INET).":$_[0];");
  428. }
  429.  
  430.  
  431. sub checkDomain
  432. {
  433.     if(getDNS('www.'.$_[0]) eq $DNSx)
  434.     {
  435.         $NEWNB++;
  436.         print "    Found : $_[0]\n";
  437.         push(@resx,'www.'.$_[0]);
  438.     }
  439.     elsif(getDNS($_[0]) eq $DNSx)
  440.     {
  441.         print "    Found : $_[0]\n";
  442.         $NEWNB++;
  443.         push(@resx,$_[0]);
  444.     }
  445.     else
  446.     {
  447.         print "    Try : $_[0]\n";
  448.     }
  449. }
  450.  
  451. sub save_report
  452. {
  453.     my $filen = $_[0];
  454.     if($donecheck && $threadz && $thread_support)
  455.     {
  456.         open (IN,"./$TMPdir/RitX-tmp.txt") or print ("\n[!] Can't create the file ($filen)\n");
  457.         open (OUT,">$target-checked.txt") or print ("\n[!] Can't create the file ($filen)\n");
  458.         syswrite(OUT,"# Genereted By RitX $VERSION\n# Those are the domains hosted on the same web server as ($target).\n# Results were tested and checked, so all old records were removed.\n\n");
  459.         while(<IN>)
  460.         {
  461.             chomp;
  462.             if (index($_,$DNSx))
  463.             {
  464.                 $NEWNB++;
  465.                 s/$DNSx://;
  466.                 syswrite(OUT,"$_\n");
  467.             }
  468.         }
  469.         close(IN);
  470.         close(OUT);
  471.     }
  472.     elsif($donecheck && !$threadz)
  473.     {
  474.         open (OUT,">$target-checked.txt") or print ("\n[!] Can't create the file ($filen)\n");
  475.         syswrite(OUT,"# Genereted By RitX $VERSION\n# Those are the domains hosted on the same web server as ($target).\n# Results were tested and checked, so all old records were removed.\n# Total domains: $NEWNB\n\n");
  476.         foreach (@resx)
  477.         {
  478.             syswrite(OUT,"$_\n") if ($_);
  479.         }
  480.         close(OUT);
  481.     }
  482.     open (F,">$filen") or print ("\n[!] Can't create the file ($filen)\n");
  483.     syswrite(F,"# Genereted By RitX $VERSION\n# Those are the domains hosted on the same web server as ($target).\n# Total domains: $TOTALNB\n\n");
  484.     foreach(@result)
  485.     {
  486.         syswrite(F,"$_\n") if ($_);
  487.     }
  488.     close(F);
  489. }
  490.  
  491.  
  492. #----------#
  493. foreach $X (keys %SERV)
  494. {
  495.     my $match = $SERV{$X}->{REGEX};
  496.     syswrite(STDOUT,"   -> $SERV{$X}->{SITE}\n");
  497.     if(!$SERV{$X}->{SP})
  498.     {
  499.         $res=Req(sprintf($SERV{$X}->{URL},$target),$SERV{$X}->{DATA});
  500.     }
  501.     else
  502.     {
  503.         eval($SERV{$X}->{SP});
  504.         next;
  505.     }
  506.     while($res =~ m/$match/g)
  507.     {
  508.         add($1);
  509.     }
  510. }
  511.  
  512. die "\n\n[-] Sorry, there is no data were retrieved!\n" if(scalar(@result)<1);
  513.  
  514. @result = sort(grep { ++$R12{$_} < 2 } @result);
  515. undef(%R12);
  516. $TOTALNB = scalar(@result);
  517.  
  518. if($verbose)
  519. {
  520.     print "\n[+] DEBUG:\n\n";
  521.     foreach $X (keys %SERV)
  522.     {
  523.         syswrite(STDOUT,"  + $SERV{$X}->{SITE}\n");
  524.         foreach $DMP (@{$SERV{$X}->{DUMP}})
  525.         {
  526.             syswrite(STDOUT,"    - $DMP\n");
  527.         }
  528.     }
  529. }
  530.  
  531. if($bing)
  532. {
  533.     if (scalar(@bingtrash)>0)
  534.     {
  535.         syswrite(STDOUT,"[+] saving Bing shit...  ");
  536.         my $file = "bingresults-$target.txt";
  537.         open (BING,">$file") or print ("\n[!] Can't create bing shit\n");
  538.         print BING "# Genereted By RitX $VERSION\n# Those are all search results from Bing.com ($target).\n\n";
  539.         foreach (@bingtrash)
  540.         {
  541.             print BING "$_\n";
  542.         }
  543.         close(BING);
  544.         syswrite(STDOUT,"DONE\n");
  545.         print "[+] bing results were saved into $file\n";
  546.     }
  547.     else
  548.     {
  549.         print "\n[-] no bing data!!\n\n"
  550.     }
  551. }
  552.  
  553. if ($check)
  554. {
  555.     my ($domain,$t);
  556.     print "\n[x] Checking and removing old records from results\n";
  557.     if ($threadz && $thread_support)
  558.     {
  559.         open(TMP,">./$TMPdir/RitX-tmp.txt");
  560.         TMP->autoflush(1);
  561.         foreach (@result)
  562.         {
  563.             threads->create(\&add2tmp,"www.$_")->detach;
  564.             $t++;
  565.             if($t==$threadz)
  566.             {
  567.                 $s+=$t;
  568.                 print "\r passed $s";
  569.                 undef $t;
  570.                 sleep 1;
  571.             }
  572.         }
  573.         close(TMP);
  574.     }
  575.     else
  576.     {
  577.         print "[-] Sorry your PERL installation doesn't support threads!\n\n" if !$thread_support;
  578.         &checkDomain($_) foreach (@result);
  579.     }
  580.     $donecheck = 1;
  581.     print "[+] Done\n";
  582. }
  583. &save_report($filename);
  584.  
  585.  
  586. print "\n[x] Result of $target : \n\n";
  587.  
  588. print "                        +--------+\n                        |   NB   |\n+-----------------------+--------+\n";
  589. foreach $X (keys %SERV)
  590. {
  591.     printf "| %-22s| %-7s|\n",$SERV{$X}->{SITE},(($SERV{$X}->{NB}) ? $SERV{$X}->{NB} : 0);
  592.     print "+--------------------------------+\n";
  593. }
  594. printf "  %-14s| Total | %-7s|\n"," ",$TOTALNB;
  595. print "                +----------------+\n";
  596. print "[+] After removing old records : $NEWNB\n\n" if $donecheck;
  597.  
  598. if ($ERROR)
  599. {
  600.     print "+--Keys------------------------------------+\n";
  601.     print "|E1: Daily reverse IP check limit reached. |\n";
  602.     print "|E2: Some Security Measures (Captcha).     |\n";
  603.     print "+------------------------------------------+\n";
  604. }
  605. if ($TOTALNB != 0 and $print)
  606. {
  607.     print "[+] Results:\n";
  608.     my $v = 0;
  609.     foreach my $RD (@result)
  610.     {
  611.         $v++;
  612.         print "  $RD\n";
  613.         if($v==20){<STDIN>;undef $v};
  614.     }
  615. }
  616. print "[+] All domain name results has been saved to ($filename)\n";
  617. print "[+] All checked domains are saved to ($target-checked.txt)\n" if ($NEWNB>0);
  618. print "[++] have fun :)\n";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement