home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2007 April / PCpro_2007_04.ISO / files / dsl / NVinst.exe / Scripts / Scaner / udp_nbns137.nvs < prev   
Encoding:
Text File  |  2007-02-10  |  1.2 KB  |  50 lines

  1. program Scan_UDP_NBNS137;
  2. {
  3. checks for presents of NetBios Name Service on UDP port 137
  4. and resolves hostnames and browsemasters if possible
  5. }
  6.  
  7. procedure SetDetected(hname,responce:string);
  8. begin
  9. if length(hname)<>0 then NVSCAN_HOSTNAME:=LowerCase(hname);
  10. NVSCAN_RESPONCE:=responce;
  11. NVSCAN_DETECTED:=true;
  12. end;
  13.  
  14. var s,name,hostname,bmlist:string;
  15.     n,i,j,tip,svc:integer;
  16. begin
  17. s:=chr(1+random(142))+chr(1+random(142));
  18. s:=s+#0#0#0#1#0#0#0#0#0#0' CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'#0#0#33#0#1;
  19. send(s);
  20. s:=recv;
  21. if length(s)>56 then
  22.  begin
  23.  n:=ord(s[57]);
  24.  if (n*18+57)<=length(s) then
  25.   begin
  26.   for i:=0 to n-1 do
  27.    begin
  28.    j:=58+i*18;
  29.    name:=Trim(copy(s,j,15));
  30.    svc:=ord(s[j+15]);
  31.    tip:=ord(s[j+16]);
  32.    if (tip and $80)=0 then
  33.     begin
  34.     case svc of
  35.      0:hostname:=name;
  36.      $20:hostname:=name;
  37.      $1d:bmlist:=bmlist+(name+', ');
  38.      end;
  39.     end;
  40.    end;
  41.   if length(bmlist)>2 then
  42.    begin
  43.    setlength(bmlist,length(bmlist)-2);
  44.    bmlist:='Master browser: '+bmlist;
  45.    end else setlength(bmlist,0);
  46.   SetDetected(hostname,bmlist);
  47.   end else if length(s)>0 then SetDetected('','Invalid reply');
  48.  end else if length(s)>0 then SetDetected('','Too short reply');
  49. end.
  50.