Zjisteni IP adresy a jmena pocitace (nmblookup ?) - long

Marian Cavojsky cavojsky na soria-grey.sk
Středa Listopad 1 11:51:13 CET 2000


Dňa St, 01 nov 2000 ste napísali:

> Ano, to by zrejme bylo ono. Ale je dost otrava to psat. Stacilo by, kdyby 
> nmblookup -A <ip> vratil vzdy jmeno.
> 
> Hledal jsem na freshmeatu pod heslem nmblookup a nasel jsem tam 
> jakysi pythonovy script, ktery resi neco podobneho. Ale taky mi nenasel 
> vsechny pocitace na siti.
> 
>      Vladimir Smelhaus
> 

Tak som trosku poobzeral po disku a zistil som, ze po strate prdchadzajuceho
programu som sa ho pokusil napisat znova. Nebol dokonceny, tak som ho teraz
dopisal, aspon natolko, aby sa dal skusat.

Porovnaval som ho s tym co dokaze WinNT4.0. Mam ho na vedlajsej masine. Najde
presne to iste. Obaja najdu uz vypnute pocitace (este su o nich zaznamy vo
wins) a obaja nenajdu jeden pocitac, ktoremu sa vo svojej WorkGroupe nepodarilo
prevziat MasterBrowse

more smbbrowse.pl 
<program>
#!/usr/bin/perl

# Program prejde cez vsetky pocitace, ktore najde na sieti
# cez smb protokol a urobi vypis obsahu adresarov.

$WorkPath = "/tmp/";
$FileNameMaster = $WorkPath."smbbrowse.master";

if( $ARGV[0]=~/^$/){
  print "\nsmbbrowse.pl\t\t\t(C)2000 by Cavo\n\nsmbbrowse.pl <name>\n\t<name> name of machine on network.\n";
  exit 1;
}

# zisti mastra v mojej skupine
system "smbclient -L $ARGV[0] -N > ".$FileNameMaster;
open FILEMaster, "<".$FileNameMaster;
$Ano = 0;
while( $LineWork = <FILEMaster>){
  if( $LineWork=~/(\w+)\s+(\w+)/ && $Ano==1 && $1!=~/-+/){
    $Master = $2;
#    print "Check Masters: Workgroup:", $1, "\tMaster:", $2, "\n";
  }
  if( $LineWork=~/Workgroup/) {
    $Ano=1;
  }
}
close FILEMaster;

# zisti ostatnych mastrov vo vsetkych skupinach, ktore pozna
system "smbclient -L $Master -N > ".$FileNameMaster;
open FILEMaster, "<".$FileNameMaster;
$Ano = 0;
while( $LineWork = <FILEMaster>){
  if( $LineWork=~/(\w+)\s+(\w+)/ && $Ano==1 && $1!=~/-+/){
    push @Workgroups, $1;
    push @Masters, $2;
#    print "Workgroup:", $1, "\tMaster:", $2, "\n";
  }
  if( $LineWork=~/Workgroup/) {
    $Ano=1;
  }
}
close FILEMaster;

#zisti pocitace v skupinach
foreach( @Masters){
  $Master=$_;
  $Ano=0;
  system "smbclient -L $Master -N > $FileNameMaster";
  open FILEMaster, "<$FileNameMaster";
  while( $LineWork = <FILEMaster>){
    if( $Ano==1 && $LineWork=~/Workgroup/){
      $Ano=0;
    }
    if( $LineWork=~/(\w+)/ && $Ano==1 && $1!=~/-+/){
      push @Machine, $1;
#      print "Machine: ", $1, "\n";
    }
    if( $LineWork=~/Server\s+Comment/){
#      print "Nastavujem 1 pre $Master\n";
      $Ano=1;
    }
  }
  close FILEMaster;
}
unlink $FileNameMaster;

#vypise informaciu ci pocitac funguje
foreach( @Machine){
  system "nmblookup $_";
}
</program>

Tu su vystupy:
<Outputs>
[cavo na cavo]$ ./smbbrowse.pl soria_nt
Sending queries to 192.168.1.255
192.168.1.20 AC5<00>
Sending queries to 192.168.1.255
name_query failed to find name KOCZIANOVA
Sending queries to 192.168.1.255
192.168.1.163 KRAJCOVICOVA<00>
Sending queries to 192.168.1.255
name_query failed to find name SINKOVA
Sending queries to 192.168.1.255
name_query failed to find name STREICHEROVA
Sending queries to 192.168.1.255
192.168.1.4 CAVO<00>
Sending queries to 192.168.1.255
192.168.1.3 MAIL<00>
Sending queries to 192.168.1.255
192.168.1.1 SORIA_NT<00>
Sending queries to 192.168.1.255
192.168.1.159 WNT_VYSOKA<00>
Sending queries to 192.168.1.255
192.168.1.6 ZEUS<00>
[cavo na cavo]$ nmblookup \*
Sending queries to 192.168.1.255
192.168.1.4 *<00>
192.168.1.163 *<00>
192.168.1.20 *<00>
192.168.1.6 *<00>
192.168.1.159 *<00>
192.168.1.5 *<00>
192.168.1.1 *<00>
192.168.1.3 *<00>
</Outputs>

Pocitac, ktory ma IP 192.168.1.5 je ten strateny.

Skuste ten program preskusat a pripadne tam mozem doplnit nejake dalsie funkcie.

Ak by mal niekto popis smb protokolu, mozno by sa podarilo prinutit pocitac,
ked sa mu posle nejaky paket cez IP, prezradit na seba meno. Program by sa
urychlil a spresnil.

--
Marian Cavojsky
cavojsky @ soria-grey.sk
Spravca siete
Soria & Grey s.r.o
Reklamna Agentura


Další informace o konferenci Linux