Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   скан диапозона ip [delphi] (https://forum.antichat.xyz/showthread.php?t=179849)

OPF_Nik 18.02.2010 15:53

скан диапозона ip [delphi]
 
народ подскажите, есть диапозон, например 127.0.0.1-127.0.255.255, как идеи можете предложить, что бы просканить весь диапозон?

=Zeus= 18.02.2010 17:09

В интернете есть куча исходников на эту тему. Есть идея воспользоваться гуглом и не морочить другим мозги.

slesh 19.02.2010 10:22

Даже тут на форуме были примеры этого.
работает всё по принципу. типа так:
Код:

start_addr := inet_addr('127.0.0.1');
stop_addr := inet_addr('127.0.255.255');

while start_addr <> stop_addr do
begin
 выполняешь свои действия
 asm
  mov eax, start_addr
  bswap eax
  inc eax
  bswap eax
  mov start_addr, eax
 end;
end;

т.е. ты определишь начальный и конечный адрес. Затем просто увеличиваешь начальный на 1 и так пока он не станет равным конечному.
Но т.к. в IP порядок байт обратный тому который хранится в памяти, то для увеличения придется поменять порядок байт, что и делает инструкция bswap

flacs 19.02.2010 13:09

Код:

  function IpToInt(ip: string): dword; // превращаем IP в число
  begin
    result := inet_addr(PChar(ip));
    result := (result shl 24) or (result and $FF00 shl 8) or
              (result and $FF0000 shr 8) or (result shr 24);
  end;

  function IntToIP(i: DWORD): string;  // число в IP
  var kk: DWORD;
  begin
    kk:=(i shl 24) or (i and $FF00 shl 8) or
        (i and $FF0000 shr 8) or (i shr 24);
    Result:= inet_ntoa(in_addr(kk))
  end;

  procedure Scan;
  begin
    AddrTo:=IpToInt(IpTo); AddrFrom:=IpToInt(IpFrom);
    for i:=AddrTo to AddrFrom do ping_addr(IntToIp(i));
  end;


slesh 19.02.2010 13:16

2 flacs вот какраз bswap и выполняет
kk:=(i shl 24) or (i and $FF00 shl 8) or (i and $FF0000 shr 8) or (i shr 24);
только выполняет это всё намного быстрее

или как вариант можно юзать апишку из winsock - ntohl она считай и реализует эти действия

sn0w 19.02.2010 13:22

канал какой? лвс или че еще? для лвс делал арпсканер

rankor777 19.02.2010 21:51

Ужас, зачем вам в делфи вставки на асме? Для ускорения чтоли? xD
Сканить порты лучше внешним сканером (VNC ByPass Auth например), потому как они лучше по-любому.


Время: 01:10