我想写一个大范围的扫描程序,但是总是出错!(100分)

  • 主题发起人 主题发起人 whaoye
  • 开始时间 开始时间
W

whaoye

Unregistered / Unconfirmed
GUEST, unregistred user!
我就用nmhttp控件来写,但是对于一个c类网段,肯定有的ip不存在,然后虽然有的ip存在,但是不见得是
开放了80端口,但是dephi中怎么来控制呢?每次都是弹出一个警告窗口,要么就是connection failed
或者就是remote host error(大概是吧,具体我也不记得了)我的意思就是怎么让他不弹出来呢
我试过了很多的办法,用continue也不能退出到下一个循环,或者是在connectionfailed里面或者
是其他的事件里加控制的代码也不行|?
最好是可以告诉我具体的程序好吗?
比如说写一个小程序,把所有的开放80端口的服务器扫描出来.
我的信箱whaoye@21cn.com
真的是很希望得到你的帮助!!!
 
对于端口扫描我懂一点点。
高级的扫描程序肯定不会向你这样。
至少不会用控件。
因为控件都是标准的socket,会留下痕迹,容易被发现
所以若想不留痕迹都用syn和fin扫描
即只完成三次握手的两次,这就要求使用原始套接字
如果有疑问可以和我联系
 
to: xueminliu
我也想知道syn各fin的实现方法,能否提点一下?
 
我有VC的代码,但是没有移植到Delphi下,自己试着写了一个,但是没有成功
如果要C的代码请mail我
 
请给我一份
 
我也要,请给我一份,好吗?


 
是ipmon吗?
 
现在我逐渐熟悉一些socket编程了,但是怎么实现三次握手的两次?
 
也给我一份
lzy291@263.net
 
大家好,放了两天的假,我研究了一下winsock编程,原来并不是很难的,
下面这个程序只是一个演示,很多的地方还需要修改,这里仅仅是起一个抛砖引
玉的作用。比如说没有加参数判断,来自定义server,而是直接探测127.0.0.1
(也就是自己了),然后也没有加错误的判断,你可以用wsgetlasterror来取得错误,
然后加上适当的判断。
最主要的一点是这个程序是单线程的,所以速度很慢,因为我对线程不是
很熟悉,所以希望高手把这个程序改一改,然后贴出来,好吗?还有就是好象还是
三次握手,要怎么只进行三次握手中的两次,还要等我慢慢的来研究了。

=======================================================================
版权没有,转载自由!!!不过希望你能贴出改进的版本!
搞得都是自己问自己答了,呵呵,100分啊,又不能给自己,所以,谁把多线程的
写出来,谁就可以得分,最好是给一些线程的相关资料。比如说用createthread
怎么来实现,而用tthread 类怎么来实现!!!!!!!!!!!!!!!!!
=======================================================================
源程序如下:




program Project1;
{$APPTYPE CONSOLE}

uses winsock,sysutils,windows;

const
startport=1;
stopport=30;
var
s:tsocket;
i,j,error:integer;
server:tsockaddrin;
wsa:twsadata;
begin

writeln('===============================================================================');
writeln('== Very Slow Port Scanner ==');
writeln('== Edit by whaoye@21cn.com ==');
writeln('===============================================================================');
writeln(' == ==');
writeln(' == ==');
writeln(' =====================================================================');
writeln(' == ==');
wsastartup(makeword(1,1),wsa);
server.sin_family:=AF_INET;
server.sin_addr.S_addr:=inet_addr('127.0.0.1');
for i:=startport to stopport do
begin
s:=socket(AF_INET, SOCK_STREAM, 0);
server.sin_port:=htons(i);
error:=connect(s,server,sizeof(server));
if error=0 then
begin
write(' == Scan port: '+inttostr(i));
for j:=0 to 5-length(inttostr(i)) do
write(' ');
writeln(' [ok] ==');
closesocket(s);
end;
end;
writeln(' == ==');
writeln(' =====================================================================');
writeln(' == ==');
writeln(' == ==');
writeln('===============================================================================');
writeln('== Thank you for your test! Good luck! ==');
writeln('== Edit by whaoye@21cn.com ==');
writeln('===============================================================================');
wsacleanup();
end.
 
关于线程:

procedure Thread;
var TThread:Thandle;
Threadid:DWord;
begin
Thread:=CreateThread(nil,0,nil,@i,0,Threadid);
i为一个要实现得结构
 
liuguan:
你可以再说清楚一点吗?最好是例子!!针对上面的这个扫描的程序的例子,好吗??
100分就给你哦!!!!!
 
但是,看见很多的程序里面都可以控制线程的数量,要怎么做呢??
其次,是不是执行线程入口函数完毕后,这个线程也自动被释放了呢?
 
后退
顶部