Hav0c
Power Member
Eu ontem estava um bocado aborrecido, por isso tentei criar um port scanner em perl. Depois, decidi fazer um em C, mas por alguma razão, so consigo apanhar apenas a primeira porta na versão em C.
Aqui estão os códigos:
ipscan.pl
A versão em C:
O quê que se passa com esse codigo?
Aqui estão os códigos:
ipscan.pl
Código:
#!/usr/bin/perl
use IO::Socket;
if(@ARGV != 1){
print "Hav0c\'s ports scanner\nUsage: $0 [host]\n";
exit 1;
}
for($i = 0; $i <= 65535; ++$i){
$host = IO::Socket::INET->new(PeerAddr=>$ARGV[0],PeerPort=>$i,proto=>'tcp') and print "Port $i is open\n";
}
exit;
Código:
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
int main(int argc,char *argv[])
{
int sock, port;
struct sockaddr_in host;
struct hostent *server;
if(argc != 2){
printf("Hav0c\'s port scanner\nUsage: %s [host address]\n",argv[0]);
return 1;
}
if((sock = socket(AF_INET,SOCK_STREAM,0)) == -1){
perror("Error creating socket");
return 1;
}
if((server=gethostbyname(argv[1])) == NULL){
perror("Error resolving host");
return 1;
}
for(port = 0; port <= 65535; port++){
host.sin_family = AF_INET;
host.sin_port = htons(port);
host.sin_addr = *((struct in_addr *)server->h_addr);
if(connect(sock,(struct sockaddr *)&host,sizeof(host)) != -1){
printf("Port %d is open\n",port);
continue;
}
}
return 0;
}