HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

скан диапозона ip [delphi]
  #1  
Старый 18.02.2010, 15:53
OPF_Nik
Познающий
Регистрация: 07.11.2009
Сообщений: 36
С нами: 8690006

Репутация: 0
По умолчанию скан диапозона ip [delphi]

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

  #2  
Старый 18.02.2010, 17:09
=Zeus=
Участник форума
Регистрация: 10.08.2009
Сообщений: 238
С нами: 8817310

Репутация: 108
По умолчанию

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

  #3  
Старый 19.02.2010, 10:22
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами: 10097606

Репутация: 3349


По умолчанию

Даже тут на форуме были примеры этого.
работает всё по принципу. типа так:
Код:
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
 
Ответить с цитированием

  #4  
Старый 19.02.2010, 13:09
flacs
Познающий
Регистрация: 28.01.2009
Сообщений: 90
С нами: 9096406

Репутация: 80
По умолчанию

Код:
  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;
 
Ответить с цитированием

  #5  
Старый 19.02.2010, 13:16
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами: 10097606

Репутация: 3349


По умолчанию

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 она считай и реализует эти действия

Последний раз редактировалось slesh; 19.02.2010 в 13:18..
 
Ответить с цитированием

  #6  
Старый 19.02.2010, 13:22
sn0w
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
С нами: 10943066

Репутация: 1236


По умолчанию

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


snow white world wide
 
Ответить с цитированием

  #7  
Старый 19.02.2010, 21:51
rankor777
Познающий
Регистрация: 11.01.2008
Сообщений: 42
С нами: 9648596

Репутация: 49
По умолчанию

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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скан паспортов(не кардинг) fatalo Болталка 6 28.04.2009 00:27



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.