如何让我的 portscan 获得不错的结果?
how to make my portscan get decent results?
我正在使用 C 语言开发一个基本的端口扫描。
我认为我的程序正在运行,因为它显示了我的 IP 的开放端口。
但是当我执行程序时发生了一些奇怪的事情:每次都会得到不同的结果:
例如:
wholetomy@wholetomy:~/Desktop$ ./portscan 192.168.0.2
Porta 80 - status [ABERTA]
Porta 34294 - status [ABERTA]
Porta 38586 - status [ABERTA]
Porta 55424 - status [ABERTA]
wholetomy@wholetomy:~/Desktop$ ./portscan 192.168.0.2
Porta 80 - status [ABERTA]
我第二次执行该程序时,它只显示端口 80,所以我的程序发生了什么,有人可以解释一下吗?
端口扫描:
#include <stdio.h> // printf(), perror()
#include <sys/types.h> // AF_INET, SOCK_STREAM
#include <sys/socket.h> // socket(), connect()
#include <netinet/in.h> // struct sockaddr_in
#include <arpa/inet.h> // htons(), inet_addr()
#include <unistd.h> // close()
int main(int argc, char *argv[])
{
int meusocket;
int conecta;
int port;
int inicio = 0;
int final = 65535;
char * destino;
destino = argv[1];
struct sockaddr_in alvo;
for(port = inicio; port < final; port++)
{
meusocket = socket(AF_INET, SOCK_STREAM, 0);
alvo.sin_family = AF_INET;
alvo.sin_port = htons(port);
alvo.sin_addr.s_addr = inet_addr(destino);
conecta = connect(meusocket, (struct sockaddr *)&alvo, sizeof alvo);
if(conecta == 0)
{
printf("Porta %d - status [ABERTA] \n",port);
close(meusocket);
close(conecta);
}else{
close(meusocket);
close(conecta);
}
}
}
尝试多线程,并尝试查看操作系统中网络堆栈的源代码,你永远不知道,你可以做出一个好的漏洞利用引擎
我正在使用 C 语言开发一个基本的端口扫描。 我认为我的程序正在运行,因为它显示了我的 IP 的开放端口。 但是当我执行程序时发生了一些奇怪的事情:每次都会得到不同的结果:
例如:
wholetomy@wholetomy:~/Desktop$ ./portscan 192.168.0.2
Porta 80 - status [ABERTA]
Porta 34294 - status [ABERTA]
Porta 38586 - status [ABERTA]
Porta 55424 - status [ABERTA]
wholetomy@wholetomy:~/Desktop$ ./portscan 192.168.0.2
Porta 80 - status [ABERTA]
我第二次执行该程序时,它只显示端口 80,所以我的程序发生了什么,有人可以解释一下吗?
端口扫描:
#include <stdio.h> // printf(), perror()
#include <sys/types.h> // AF_INET, SOCK_STREAM
#include <sys/socket.h> // socket(), connect()
#include <netinet/in.h> // struct sockaddr_in
#include <arpa/inet.h> // htons(), inet_addr()
#include <unistd.h> // close()
int main(int argc, char *argv[])
{
int meusocket;
int conecta;
int port;
int inicio = 0;
int final = 65535;
char * destino;
destino = argv[1];
struct sockaddr_in alvo;
for(port = inicio; port < final; port++)
{
meusocket = socket(AF_INET, SOCK_STREAM, 0);
alvo.sin_family = AF_INET;
alvo.sin_port = htons(port);
alvo.sin_addr.s_addr = inet_addr(destino);
conecta = connect(meusocket, (struct sockaddr *)&alvo, sizeof alvo);
if(conecta == 0)
{
printf("Porta %d - status [ABERTA] \n",port);
close(meusocket);
close(conecta);
}else{
close(meusocket);
close(conecta);
}
}
}
尝试多线程,并尝试查看操作系统中网络堆栈的源代码,你永远不知道,你可以做出一个好的漏洞利用引擎