|
作者: fora [fora] 论坛用户 | 登录 |
这样一个端口一个端口的连接,速度上有些慢,请问有没有其它的方法,快速得到开放端口列表的,谢谢。 for i_port:=0 to 150 do begin //创建套接字 sClntSock:=Socket(AF_INET,SOCK_STREAM,0); addr.sin_family:=AF_INET; addr.sin_addr.S_addr:=SingleHostAddr; addr.sin_port:=htons(i_port); if Connect(sClntSock,addr,sizeof(addr))<>0 then begin TimeOut.tv_sec:=2; TimeOut.tv_usec:=0; TreeView1.Items.AddChild(OpenNode,inttostr(i_port)+' 端口未打开'); end else begin TimeOut.tv_sec:=2; TimeOut.tv_usec:=0; TreeView1.Items.AddChild(OpenNode,inttostr(i_port)+' 端口已打开'); end; CloseSocket(sClntSock); end; |
地主 发表时间: 06/09 16:15 |
回复: ricky [ricky] 版主 | 登录 |
端口连接扫描一定要用多线程的,要不然等死了 |
B1层 发表时间: 06/09 20:27 |
回复: fora [fora] 论坛用户 | 登录 |
和尚,没有别的方法了吗,多线程,我要把这些端口分成几组来扫描吗? 比较急,如果有例子,请发给我一份,先谢谢了。 fora_218@sina.com. 另外,那个攻取NetBios Host Name的有没有快速的方法?帮个忙哦,:) 前些天打风云,把功课耽误了,以后不敢了,呵呵 |
B2层 发表时间: 06/10 21:49 |
回复: ricky [ricky] 版主 | 登录 |
没有别的办法,因为tcp/ip协议确定一个端口是否可以connect就要那么长时间,要不就不准确,不过好像可以通过调整setsockopt里的时间参数来减小等待时间,不过,网上ping大于500ms的很多,所以1个端口用1s来确定失败很正常。 至于gethostbyaddr,这个函数肯定是读不到hostname,不过你查查net系列函数,应该有方法的 |
B3层 发表时间: 06/11 09:12 |
回复: fora [fora] 论坛用户 | 登录 |
我已经做了多线程,但出了个问题。线程上到50,扫描第一次可以成功,再扫就不成了。 不知道该释放什么了,:( 因为我是用的delphi的TThread |
B4层 发表时间: 06/20 11:20 |
回复: 286 [unique] 版主 | 登录 |
快速扫描有以下几种方法: 1 分布式扫描。 2 半开式扫描。 3 多线程扫描。 其中,第一种视实际环境而定。 第二种速度最快,可以半分钟内扫完6万多个端口。 第三种视编程水平而定。 |
B5层 发表时间: 07/02 15:18 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号