delphi - paginas - modificar archivo host windows 10
¿Cómo puedo identificar los hosts de Windows en una subred con Delphi? (2)
¿Por qué no usa un escáner como nmap para esto?
Y si no puede por alguna razón, puede leer sobre cómo lo hacen.
Compruebe la detección remota del sistema operativo y los métodos de toma de huellas dactilares TCP / IP admitidos por Nmap. Espero que esto ayude.
Tengo una aplicación administrativa que me gustaría ser capaz de "descubrir" hosts de Windows en la misma subred especificada por el usuario o por el usuario. ¿Cuál cree que es la mejor manera de descubrir rápidamente si una variedad de hosts están en línea, usando Delphi?
Consideré hacer ping a los hosts (posiblemente usando WMI y Delphi ), pero creo que puede haber una manera más confiable. Me preocupa que los clientes puedan estar configurados para no responder a las solicitudes de ping. Usando nbtscan , puedo obtener rápidamente una lista de los hosts de Windows en mi subred:
nbtscan 192.168.1.0/24
Me gustaría poder replicar esta funcionalidad, pero no estoy seguro de dónde comenzar. Actualmente estoy usando el componente ICS creado por François Piette para Delphi 2010.
Doy la bienvenida a cualquier sugerencia.
Después de algunas excavaciones, encontré este proyecto en Sourceforge que demuestra cómo realizar una búsqueda de NetBios en un solo host utilizando los componentes de Indy. Probé y este proyecto funciona bien con Delphi 2010. Esto podría, por supuesto, modificarse para realizar consultas de NetBios en un rango de direcciones.
unit uNbLookup;
interface
(************************************************************
06-02-2007 - Petricca Antonio ([email protected])
Free for any purpose...
Thanks to:
Jim Halfpenny
http://directory.fsf.org/security/misc/nbtstat.pl.html
************************************************************)
uses
IdGlobal,
IdUDPClient,
SysUtils,
Windows;
function NetBiosLookup(AAddress: PChar; AHostName: PChar; ATimeOut: Integer): BOOL; stdcall;
implementation
const
NB_REQUEST = #$A2#$48#$00#$00#$00#$01#$00#$00 +
#$00#$00#$00#$00#$20#$43#$4b#$41 +
#$41#$41#$41#$41#$41#$41#$41#$41 +
#$41#$41#$41#$41#$41#$41#$41#$41 +
#$41#$41#$41#$41#$41#$41#$41#$41 +
#$41#$41#$41#$41#$41#$00#$00#$21 +
#$00#$01;
NB_PORT = 137;
NB_BUFSIZE = 8192;
function NetBiosLookup(AAddress: PChar; AHostName: PChar; ATimeOut: Integer): BOOL; stdcall;
var
Buffer : TIdBytes;
I : Integer;
RepName : String;
UDPClient : TIdUDPClient;
begin
RepName := '''';
Result := False;
UDPClient := nil;
if not Assigned(AHostName) then
Exit;
try
UDPClient := TIdUDPClient.Create(nil);
with UDPClient do begin
Host := Trim(AAddress);
Port := NB_PORT;
Send(NB_REQUEST);
end;
SetLength(Buffer, NB_BUFSIZE);
if (0 < UDPClient.ReceiveBuffer(Buffer, ATimeOut)) then begin
for I := 1 to 15 do
RepName := RepName + Chr(Buffer[56 + I]);
RepName := Trim(RepName);
StrPCopy(AHostName, RepName);
Result := True;
end;
except
Result := False;
end;
if Assigned(UDPClient) then
FreeAndNil(UDPClient);
end;
end.