Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

DHCP Sweep

by OzzyOsbourne (Chaplain)
on Mar 07, 2002 at 20:23 UTC ( [id://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
Domain Nodelet?
Node Status?
node history
Node Type: sourcecode [id://150114]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others studying the Monastery: (4)
As of 2024-04-25 15:10 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found