L
lazynov
Как имея имена компьтеров в сети узнать их IP? Или просто: как узнать IP-адреса всех компьютеров в сети! Помогите! PLEASE!
Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе
TStringList * __fastcall GetLANHosts()
{
TStringList *pcls = new TStringList();
AnsiString strTemp;
struct hostent *host;
struct in_addr *ptr;
DWORD dwScope(RESOURCE_CONTEXT);
NETRESOURCE *NetResource(NULL);
HANDLE hEnum;
WNetOpenEnum(dwScope, NULL, NULL, NULL, &hEnum );
WSADATA wsaData;
WSAStartup(MAKEWORD(1,1),&wsaData);
if ( hEnum )
{
DWORD Count(0xFFFFFFFF);
DWORD BufferSize(2048);
LPVOID Buffer(new char[2048]);
WNetEnumResource( hEnum, &Count, Buffer, &BufferSize );
NetResource = (NETRESOURCE*)Buffer;
char szHostName[200];
for (unsigned int i = 0; i < BufferSize/sizeof(NETRESOURCE);i++, NetResource++ )
{
if (NetResource->dwUsage == RESOURCEUSAGE_CONTAINER && NetResource->dwType == RESOURCETYPE_ANY)
{
if (NetResource->lpRemoteName )
{
AnsiString strFullName = NetResource->lpRemoteName;
if (strFullName.SubString(1,2)=="\\\\")
{
strFullName = strFullName.SubString(3,128);
}
gethostname( szHostName, strlen( szHostName ) );
host = gethostbyname(strFullName.c_str());
if(host == NULL)
continue;
ptr = (struct in_addr *) host->h_addr_list[0];
int a=0;
int b=0;
int c=0;
int d=0;
asm
{
mov eax, [ebp-0x000000a0]
xor edx, edx
mov dl, [eax]
mov [ebp-0x000000c0],edx
}
asm
{
mov eax, [ebp-0x000000a0]
xor edx, edx
mov dl, [eax+0x01]
mov [ebp-0x000000c4],edx
}
asm
{
mov ecx, [ebp-0x000000a0]
xor eax, eax
mov al, [ecx+0x02]
mov [ebp-0x000000c8],eax
}
asm
{
mov edx, [ebp-0x000000a0]
xor ecx, ecx
mov cl, [edx+0x03]
mov [ebp-0x000000cc],ecx
}
pcls->Add("["+IntToStr(a)+"."+IntToStr(b)+"."+IntToStr(c)+"."+IntToStr(d)+"] "+strFullName+" ("+NetResource->lpComment+")");
}
}
}
delete Buffer;
WNetCloseEnum( hEnum );
}
WSACleanup();
return pcls;
}
Проблема получить их IP-адреса, а имена компов в сети я знаю как найти!Це проблема сеть просканить на наличие машин?
Судя по количеству твоих постов и даты регистрации, ты своих 5 шпиц не в какой велосипед всунуть не можешь.Для: 62316e
Велосипедисты вперед biggrin.gif
Опа. ещё один гуру. Ети вставки ниче не оптимизируют.И как, применение ассемблера сильно оптимизировало процесс определения IP-адресов?
int a = ptr->S_un.S_un_b.s_b1;
int b = ptr->S_un.S_un_b.s_b2;
int c = ptr->S_un.S_un_b.s_b3;
int d = ptr->S_un.S_un_b.s_b4;
Код приложения?Если не тяжело код покажы плиз к groups.rar
procedure GetGroups(list: TListBox);
var
EnumWorkGroupHandle, EnumComputerHandle: THandle;
EnumError: DWORD;
Network: TNetResource;
WorkGroupEntries, ComputerEntries: DWORD;
EnumWorkGroupBuffer, EnumComputerBuffer: array[1..MaxEntries] of TNetResource;
EnumBufferLength: DWORD;
i, j: DWORD;
begin
list.Clear;
FillChar(Network, SizeOf(Network), 0);
with Network do
begin
dwScope := RESOURCE_GLOBALNET;
dwType := RESOURCETYPE_ANY;
dwUsage := RESOURCEUSAGE_CONTAINER;
end;
EnumError := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, @Network, EnumWorkGroupHandle);
if EnumError = NO_ERROR then
begin
WorkGroupEntries := MaxEntries;
EnumBufferLength := SizeOf(EnumWorkGroupBuffer);
EnumError := WNetEnumResource(EnumWorkGroupHandle, WorkGroupEntries, @EnumWorkGroupBuffer, EnumBufferLength);
if EnumError = NO_ERROR then
begin
for i := 1 to WorkGroupEntries do
begin
EnumError := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, @EnumWorkGroupBuffer[I], EnumComputerHandle);
if EnumError = NO_ERROR then
begin
ComputerEntries := MaxEntries;
EnumBufferLength := SizeOf(EnumComputerBuffer);
EnumError := WNetEnumResource(EnumComputerHandle, ComputerEntries, @EnumComputerBuffer, EnumBufferLength);
if EnumError = NO_ERROR then
for j := 1 to ComputerEntries do
list.Items.Add(Copy(EnumComputerBuffer[j].lpRemoteName, 3, Length(EnumComputerBuffer[J].lpRemoteName) - 2));
WNetCloseEnum(EnumComputerHandle);
end;
end;
end;
WNetCloseEnum(EnumWorkGroupHandle);
end;
if EnumError = ERROR_NO_MORE_ITEMS then
EnumError := NO_ERROR;
end;
Обучение наступательной кибербезопасности в игровой форме. Начать игру!