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"
}

Comment on DHCP Sweep
Download Code

Back to Code Catacombs

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: sourcecode [id://150114]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (6)
As of 2014-09-19 03:14 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (129 votes), past polls