The simple full-connection TCP port scanner. This utility lists the servers that open the specified port.
2c2f178a0939dd3208042185eefd81b52fe57d32f8e190530bd6b4b8757524b9
/*=============================================================================
Simple fullconnect port scanner - Easyscan 1.00
The Shadow Penguin Security (http://shadowpenguin.backsection.net)
Written by UNYUN (shadowpenguin@backsection.net)
=============================================================================
*/
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <string.h>
/*
#include <netinet/in.h>
#include <netdb.h>
*/
#define TIMEOUT_V 2 /* Connection Timeout value */
#define MAX_IPLEN 16
int sock;
main()
{
int portscan(int, char *);
int separation(char *,unsigned long *);
unsigned long ips,ipe,ip;
char buf[MAX_IPLEN],buf2[MAX_IPLEN];
int portn;
FILE *fp;
printf("Simple fullconnect port scanner - Easyscan 1.00\n");
printf("The Shadow Penguin Security, Inc.\n\n");
printf("Start IP address : ");
scanf("%s",buf);
if (separation(buf,&ips)==-1){
printf("Error : Invalid IP address.\n");
exit(1);
}
printf("End IP address : ");
scanf("%s",buf2);
if (separation(buf2,&ipe)==-1){
printf("Error : Invalid IP address.\n");
exit(1);
}
printf("Port : ");
scanf("%d",&portn);
if ((fp=fopen("log.txt","w"))==NULL){
printf("Can not write log file.\n");
exit(1);
}
fprintf(fp,"Start IP address : %s\n",buf);
fprintf(fp,"End IP address : %s\n",buf2);
fprintf(fp,"Port : %d\n",portn);
fprintf(fp,"\n\n");
for (ip=ips;ip<=ipe;ip++){
sprintf(buf,"%lu.%lu.%lu.%lu", ip>>24,
(ip&0x00ff0000)>>16,
(ip&0x0000ff00)>>8,
ip&0x000000ff);
printf("%15s...",buf);
fprintf(fp,"%15s...",buf);
if (portscan(portn,buf)==0){
printf("Connected!\n");
fprintf(fp,"Connected!\n");
}else{
printf("no\n");
fprintf(fp,"no\n");
}
}
fclose(fp);
}
int separation(char *ipaddr,unsigned long *ipl)
{
int i,j,n;
char buf[MAX_IPLEN];
int ip[4];
unsigned long d;
for (n=0,j=0,i=0;i<=strlen(ipaddr);i++){
if (ipaddr[i]=='.' || i==strlen(ipaddr)){
buf[j]=0;
ip[n]=atoi(buf);
if (ip[n]<0 || ip[n]>255) return (-1);
n++; j=0;
}else{
buf[j]=ipaddr[i];
j++;
}
}
if (n!=4) return (-1);
d=256;
*ipl=ip[3]+ip[2]*d+ip[1]*d*d+ip[0]*d*d*d;
return(0);
}
int portscan(int port, char *ipaddr)
{
struct sockaddr_in addr, server;
void timeoutfunc();
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock < 0){
printf("Socket creation error");
return(-1);
}
memset((char *) &server, 0, sizeof(server));
server.sin_family = AF_INET;
server.sin_addr.s_addr = htonl(INADDR_ANY);
server.sin_port = 0;
if (bind(sock, (struct sockaddr *) &server, sizeof(server)) < 0) {
close(sock);
printf("Bind error ");
return (-2);
}
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr(ipaddr);
addr.sin_port = htons(port);
signal(SIGALRM, timeoutfunc);
alarm(TIMEOUT_V);
if (connect(sock,(struct sockaddr *)&addr,sizeof(addr))!=0){
close(sock);
return (-3);
}
close(sock);
return (0);
}
void timeoutfunc()
{
close(sock);
}