![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
WinSock2 на чистом API без форм! Может у кого заволялось? [D6, D7, Win95/98, WinXP]
NikNet © (2005-04-14 07:14:00)Мастера!
Нужен простненьки Client/Server на чистом WinSock/WinApi
без всяких Forms,Classes,SysUtils
???
PLIZZZZZZZZ?
NikNet (2005-04-15 18:48:00) [1]Нафиг мне этот сканер НУЖЕН я же простым языком написал
Client/Server!!!
2Verg
Что бы меньше занимал!
Verg (2005-04-14 19:30:00) [2]И кто вас заставляет этой профонацией, типа "на чистом", заниматься?
"Чистоборцы" хреновы...
Только не лезьте в сети...
Digitman (2005-04-14 13:34:00) [3]
> Virus.exe © (14.04.05 13:00) [3]
ну и где тут "чистый API" ?
использование SysUtils ужепредполагает "грязь".
Virus.exe (2005-04-14 13:00:00) [4]
program scan;
{$APPTYPE CONSOLE}
{ Для использования winsock необходимо описать этот модуль в uses. }
uses
sysutils,winsock;
{ дефолтовый порт Socks прокси. Сюда можно вписать любой порт,
превратив наш сканнер, к примеру, в httpd (80 порт) сканнер. }
const
port = 1080;
{ Здесь объявляем переменные }
var
D:WSAData;
S:TSocket;
A:TSockAddr;
m1,m2,mask,val:String;
i:Integer;
begin
{ Если наш сканер запущен без параметров, выводим некоторую информацию.. }
if paramcount < 1 then
begin
writeln('Socks Scanner by har0n, har0n@gmx.net');
writeln('Example: scan.exe 127.0.0 1-255');
writeln(' http://www.security.net.tf');
exit;
end
else
{ Если сканер запущен с параметрами, в переменную mask заносим 1-ый параметр,
в val 2-ой параметр }
begin
mask:=paramstr(1);
val:=paramstr(2);
{ Определяем диапазон сканирования}
m1:= copy(val,1,pos('-',val)-1);
m2:= copy(val,pos('-',val)+1,length(val));
writeln('- Scanning begin: '+mask+'.'+m1+' - '+mask+'.'+m2+' -');
writeln;
{ Если WSAStartup() возвращает не нулевое значение, выводим сообщение об ошибке
и выходим из программы}
if WSAStartup($101,D)<>0 then
begin
writeln('error..');
exit;
end;
{ Начинаем процесс сканирования }
for i:= strtoint(m1) to strtoint(m2) do
begin
{ Определяем тип семейства сокетов, и IP адрес для сканирования }
A.sin_family:=AF_INET;
A.sin_addr.S_addr:=inet_addr(pchar(mask+'.'+inttostr(i)));
{ Создаем сокет }
S:=socket(AF_INET,SOCK_STREAM,0);
{ Если возвращено значение INVALID_SOCKET, выводим сообщение об ошибке }
if S=INVALID_SOCKET then
writeln('socket error');
{ Определяем порт (задается константой) }
A.sin_port:=htons(port);
{ Пытаемся подконнектиться, если удачно - выводим сообщение, что порт открыт,
в другом случае - сообщение о том, что порт закрыт (или недоступен) }
if connect(S,A,sizeof(A))=0 then
writeln(mask+'.'+inttostr(i)+' port '+inttostr(port)+' opened') else
writeln(mask+'.'+inttostr(i)+' port '+inttostr(port)+' closed');
end;
{ Завершаем работу с сокетами }
WSACleanup;
writeln;
writeln('- Scanning is completed -');
end;
end.
Пример взят с DelphiWorld
atruhin (2005-04-14 12:04:00) [5]А поисковик ни один не знаешь? В инете масса статей с примерами.
Digitman (2005-04-14 08:55:00) [6]
> простненьки
"простненьки" - это как ?