设计一个判断端口是否开启的扫描器程序的源代码怎么写?
for(int i=0;i6;i++)
{
for(int j=0;j10;j++)
{
theport[j].rmt_host=rmt_host;
theport[j].p=port[i*10+j];
theport[j].n=j;
Thread[j]=AfxBeginThread(pScan,(LPVOID)theport[j]);
//启动端口扫描线程
hThread[j]=Thread[j]-m_hThread;
Sleep(1);
}
WaitForMultipleObjects(10,hThread,TRUE,120000);
}
//扫描模块代码
SOCKET sockfd;
SOCKADDR_IN addr;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd 0)
{
exit(0);
}
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
addr.sin_addr.s_addr = inet_addr(rmt_host);
int r = connect(sockfd,(struct sockaddr *) addr, sizeof(addr));
//尝试连接端口进行检测
closesocket(sockfd);
//连接返回值处理
if (r!=-1)
{
::PostMessage(hWnd,WM_DISPLAY,port,0);
}
//显示端口扫描结果
LONG CScanDlg::OnDisplay(LONG lParam, UINT wParam)
{
LPSERVENT bar;
CString open;
int p=lParam;
bar = getservbyport(htons(p),"tcp");
open.Format("\t%d号端口(%s)开放!\r\n",p,(bar == NULL) ? "未知" :
bar-s_name);
m_HistoryEdit.AppendString (open);
return 0;
}
求IP端口扫描器的VB源码
'4个TEXTBOX控件,2个COMMANDBUTTON控件,一个WINSOCK控件
Dim portnum As Long
Dim start As String
Sub scanningports()
Dim porttwo As Long
portnum = Text1.Text
porttwo = Text2.Text
Command2.Enabled = True
On Error GoTo viriio
Do
portnum = portnum + 1
DoEvents
If start = True Then
'关闭当前WINSOCK
Winsock1.Close
'防止系统冻结
DoEvents
Winsock1.LocalPort = portnum
DoEvents
Text3.Text = portnum
Winsock1.Listen
DoEvents
Else
portnum = 0
Command1.Enabled = True
Text1.Locked = False
Text2.Locked = False
Exit Sub
End If
Winsock1.Close
DoEvents
Loop Until portnum = porttwo
portnum = 0
Command1.Enabled = True
logport.Text = logport.Text vbCrLf "Scanning Ports Done!" vbCrLf
Text1.Locked = False
Text2.Locked = False
viriio:
If Err.Number = 10048 Then
logport.Text = logport.Text vbCrLf "端口" Winsock1.LocalPort " 开启中"
Resume Next
End If
End Sub
Private Sub Command1_Click()
Command2.Enabled = True
If Text1.Text = "" Then
MsgBox "你必须指定开始端口号!"
Exit Sub
End If
If Text2.Text = "" Then
MsgBox "你必须指定一个结束端口号"
Exit Sub
End If
Text1.Locked = True
Text2.Locked = True
Command1.Enabled = False
Winsock1.Close
start = True
Call scanningports
logport.Text = logport.Text vbCrLf "端口" Text1.Text "- " Text3.Text " 已经成功扫描!"
End Sub
Private Sub Command2_Click()
Command2.Enabled = False
start = False
End Sub
端口扫描原理及工具 - 安全工具篇
"端口"是英文port的意译,可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部端口,不可见。例如计算机中的80端口、21端口、23端口等。
一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、 *** TP服务等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的 *** 服务呢?显然不能只靠IP地址,因为IP 地址与 *** 服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。
因此,一个开放的端口代表一个提供的服务,不同的服务具有不同的端口号, 因此要对服务进行测试,首先要确定是否开放对应端口号 。
TCP端口和UDP端口。由于TCP和UDP 两个协议是独立的,因此各自的端口号也相互独立,比如TCP有235端口,UDP也 可以有235端口,两者并不冲突。
1、周知端口
周知端口是众所周知的端口号,范围从0到1023,其中80端口分配给WWW服务,21端口分配给FTP服务等。我们在IE的地址栏里输入一个网址的时候是不必指定端口号的,因为在默认情况下WWW服务的端口是“80”。
2、动态端口
动态端口的范围是从49152到65535。之所以称为动态端口,是因为它 一般不固定分配某种服务,而是动态分配。
3、注册端口
端口1024到49151,分配给用户进程或应用程序。这些进程主要是用户安装的程序。
1、使用Nmap工具查找ip的tcp端口
-O :获取操作系统版本信息
2、使用Nmap工具查找udp端口
-sU :表示udp scan , udp端口扫描
-Pn :不对目标进行ping探测(不判断主机是否在线)(直接扫描端口)
对于udp端口扫描比较慢,扫描完6万多个端口需要20分钟左右
3、使用Nmap工具获取端口Banner
只会返回有Banner信息的,没有则不会返回。
4、使用Nmap嗅探服务版本信息
如果没有返回banner信息的,也可以使用该 *** 尝试嗅探服务版本信息。
5、利用nmap对目标进行完整测试
在针对内容测试时,有授权的情况下,可以利用nmap对目标进行完整测试
0条大神的评论