端口扫描的工作原理_端口扫描查询程序的原理

hacker|
218

网络端口扫描属于本地扫描吗

网络端口扫描不属于本地扫描。根据查询相关公开信息显示:端口扫描技术原理是端口扫描向目标主机的TCP/IP服务端口发送探测数据包,并记录目标主机的响应。通过分析响应来判断服务端口是打开的还是关闭的,就可以得知端口提供的服务或信息,可以本地也可以远程。

求:网络端口扫描器的算法

闪电1.0 是一个多线程的端口扫描工具,用于进行狂速端口扫描。它具有极快的速度 和方便友好的操作界面,能快速地对大网段范围进行 Connect方式端口扫描。同时具有获取端口标识的功能,可以用来快速地获取端口标识(Banner),能对80端口标识进行特别处理,能方便地获取Web Server类型。当扫描到木马程序端口时,可以提示常见木马。 主要功能如下 ( 1) 发现因特网上的一个网络或者一台主机。 (2) 一旦发现一台主机,就能扫描到开放端口号和提供的服务, 能对常见木马端口返回标识。 (3)可以进行域名正向解析和反向解析。 (4)可以获取局域网在线主机的MAC地址和主机名。 (5)提供了基于窗口Ping功能和局域网信使服务。 (6)可以获取本机网络配制相关信息,如本机IP, 子网掩码,MAC地址,网卡类型和网关IP和DNS的IP。

你可以到 去下载

用C++编写端口扫描程序

#include stdio.h

#include winsock.h

#define NETWORK_ERROR -1

#define NETWORK_OK 0

#define PORT_MIN 1

#define PORT_MAX 65535

HANDLE hThread;

DWORD hID;

char hostname[30];

int starting_port = 0;

int ending_port = 0;

int nopen = 0;

DWORD portscan();

int main(){

int ret;

WSADATA dat;

DWORD version;

version = MAKEWORD(2,2);

ret = WSAStartup(version,dat);

if(ret != 0){ 

printf("Error initializing Winsock.\n");

WSACleanup();

return NETWORK_ERROR;

}

if(ret == 0){

printf("Enter hostname:");

scanf("%s",hostname);

printf("Enter starting port:");

scanf("%d",starting_port);

if(starting_port  PORT_MIN){

printf("Invalid port number.\n");

WSACleanup();

return NETWORK_ERROR;

}

printf("Enter ending port:");

scanf("%d",ending_port);

if(ending_port  PORT_MAX){

printf("Invalid port number.\n");

WSACleanup();

return NETWORK_ERROR;

}

printf("\nScanning [%s]...\n",hostname);

hThread = CreateThread(0,0,(LPTHREAD_START_ROUTINE)portscan,0,0,hID);

if(hThread == 0){

printf("Failed to create thread.\n");

WSACleanup();

return NETWORK_ERROR;

sleep(-1);

}

WSACleanup();

return NETWORK_OK;

}

DWORD portscan(){

int i,nret;

SOCKET thesocket;

LPHOSTENT hostent;

thesocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

hostent = gethostbyname((hostname));

for(i = starting_port;i  ending_port+1;++i){ 

SOCKADDR_IN hostinfo; 

hostinfo.sin_family = AF_INET;

hostinfo.sin_addr=*((LPIN_ADDR)*hostent-h_addr_list);

hostinfo.sin_port = htons(i);

nret = connect(thesocket,(LPSOCKADDR)hostinfo,sizeof(hostinfo)); 

if(nret == 0){

printf("\n\t%d\n",i); 

++nopen;

}

printf("\nScan complete.\n\n");

printf("Number of ports opened = %d\n",nopen);

closesocket(thesocket);

}

在网上摘抄了一个python编写的TCP端口扫描程序,求解释。

你那个写死的ip是本机ip吗

相当于判断当前脚本是否是被直接执行还是被当作模块调用(同一个文件可以有多种作用,如果直接执行可能输出测试日志,但作为模块一般不输出,所以要判断)

0条大神的评论

发表评论