Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

DHCP Sweep

by OzzyOsbourne (Chaplain)
on Mar 07, 2002 at 20:23 UTC ( #150114=sourcecode: print w/replies, xml ) Need Help??
Category: NT Admin
Author/Contact Info OzzyOsbourne
Description: Sweep a subnet for the DHCP status of the machines.
# 10.10.01 Sweeps a subnet for the status of DHCP and outputs to DHCPs
+weep.txt
# Usage DHCPsweep.pl [subnet] [outputfile]
# eg. DHCPsweep.pl 10.17.117 DHCPsweep81.txt [enter]

use strict;
use Net::Ping;
use Win32::TieRegistry;

my (%Hash, @accounts);
open OUT, ">$ARGV[1]" or die "can't open outfile\n";

for(10..239){
  my $clsid;
  my $ip="$ARGV[0].$_";
  my $p = Net::Ping->new("icmp",2);
  print OUT "$ip\t";
  print "$ip\t";
  if ($p->ping("$ip")){
      $Registry->Delimiter("/");
      my $NT=$Registry->{"//$ip/HKEY_LOCAL_MACHINE/Software/Microsoft/
+Windows NT/CurrentVersion//CurrentVersion"};
      my $W95=$Registry->{"//$ip/HKEY_LOCAL_MACHINE/Software/Microsoft
+/Windows/CurrentVersion//Version"};
      if ($W95){
          print "\t$W95\t";
          print OUT "\t$W95\t" or die "no print";
      }elsif($NT eq '4.0'){
          print "\tNT $NT\t";
          print OUT "\tNT $NT\t";
          my $services=$Registry->{"//$ip/HKEY_LOCAL_MACHINE/System/Cu
+rrentControlSet/Services/"};
          if ($services){
            for (keys %$services){
              if ((/CPQANC\d/)||(/AMDPCN\d/)||(/DC21X41/)){
                s/\///;
                $clsid=$_;
              }
            }
            my $dhcp=$Registry->{"//$ip/HKEY_LOCAL_MACHINE/System/Curr
+entControlSet/Services/$clsid/parameters/tcpip//enableDHCP"} or print
+ "Can\'t access DHCPEnabled key";
            if ($dhcp eq '0x00000001'){ 
              print "enabled";
              print OUT "enabled";
            }
            if ($dhcp eq '0x00000000'){
              print "DISABLED";
              print OUT "DISABLED";
            }
          }else{
        print OUT "Can\'t access Services Key";
            print "Can\'t access Services Key";
          }
      }elsif($NT eq '5.0'){
          my $machine=$Registry->{"//$ip/HKEY_LOCAL_MACHINE/SYSTEM/Cur
+rentControlSet/Control/ComputerName/ComputerName//ComputerName"};
          print "$machine\t";
          print OUT "$machine\t";
          print "NT $NT\t";
          print OUT "NT $NT\t";
          my $services=$Registry->{"//$ip/HKEY_LOCAL_MACHINE/System/Cu
+rrentControlSet/Services/"};
          if ($services){
            for (keys %$services){
              if (/{/){
                s/\///;
                $clsid=$_;
              }
            }
            my $dhcp=$Registry->{"//$ip/HKEY_LOCAL_MACHINE/System/Curr
+entControlSet/Services/$clsid/parameters/tcpip//enableDHCP"} or print
+ "Can\'t access DHCPEnabled key";
            if ($dhcp eq '0x00000001'){ 
              print "enabled";
              print OUT "enabled";
            }
            if ($dhcp eq '0x00000000'){
              print "DISABLED";
              print OUT "DISABLED";
            }
          }else{
        print OUT "Can\'t access Services Key";
            print "Can\'t access Services Key";
          }
      }else{
      print OUT "--\tCan\'t access Registry";
          print "--\tCan\'t access Registry";
      }
            
      
  }else{
      print "--\tno ping response";
      print OUT "--\tno ping response";
  }
  $p->close();
  print "\n";
  print OUT "\n"
}
Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: sourcecode [id://150114]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (5)
As of 2017-11-21 18:33 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    In order to be able to say "I know Perl", you must have:













    Results (308 votes). Check out past polls.

    Notices?