ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
скан диапозона ip [delphi] |

18.02.2010, 15:53
|
|
Познающий
Регистрация: 07.11.2009
Сообщений: 36
Провел на форуме: 77411
Репутация:
0
|
|
скан диапозона ip [delphi]
народ подскажите, есть диапозон, например 127.0.0.1-127.0.255.255, как идеи можете предложить, что бы просканить весь диапозон?
|
|
|

18.02.2010, 17:09
|
|
Участник форума
Регистрация: 10.08.2009
Сообщений: 238
Провел на форуме: 724939
Репутация:
108
|
|
В интернете есть куча исходников на эту тему. Есть идея воспользоваться гуглом и не морочить другим мозги.
|
|
|

19.02.2010, 10:22
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
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
|
|
|

19.02.2010, 13:09
|
|
Познающий
Регистрация: 28.01.2009
Сообщений: 90
Провел на форуме: 432613
Репутация:
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;
|
|
|

19.02.2010, 13:16
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
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..
|
|
|

19.02.2010, 13:22
|
|
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
Провел на форуме: 1290766
Репутация:
1236
|
|
канал какой? лвс или че еще? для лвс делал арпсканер
__________________
 
snow white world wide
|
|
|

19.02.2010, 21:51
|
|
Познающий
Регистрация: 11.01.2008
Сообщений: 42
Провел на форуме: 95213
Репутация:
49
|
|
Ужас, зачем вам в делфи вставки на асме? Для ускорения чтоли? xD
Сканить порты лучше внешним сканером (VNC ByPass Auth например), потому как они лучше по-любому.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|