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

In reply to DHCP Sweep by OzzyOsbourne

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.