Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Port scanner code in c
- */
- #include<stdio.h>
- #include<sys/socket.h>
- #include<errno.h>
- #include<netdb.h>
- #include<string.h>
- #include<stdlib.h>
- int main(int argc , char **argv)
- {
- struct hostent *host;
- int err, i , sock ,start , end;
- char hostname[100];
- struct sockaddr_in sa;
- //Get the hostname to scan
- printf("Enter hostname or IP : ");
- gets(hostname);
- //Get start port number
- printf("\nEnter start port number : ");
- scanf("%d" , &start);
- //Get end port number
- printf("Enter end port number : ");
- scanf("%d" , &end);
- //Initialise the sockaddr_in structure
- strncpy((char*)&sa , "" , sizeof sa);
- sa.sin_family = AF_INET;
- //direct ip address, use it
- if(isdigit(hostname[0]))
- {
- printf("Doing inet_addr...");
- sa.sin_addr.s_addr = inet_addr(hostname);
- printf("Done\n");
- }
- //Resolve hostname to ip address
- else if( (host = gethostbyname(hostname)) != 0)
- {
- printf("Doing gethostbyname...");
- strncpy((char*)&sa.sin_addr , (char*)host->h_addr , sizeof sa.sin_addr);
- printf("Done\n");
- }
- else
- {
- herror(hostname);
- exit(2);
- }
- //Start the port scan loop
- printf("Starting the portscan loop : \n");
- for( i = start ; i <= end ; i++)
- {
- //Fill in the port number
- sa.sin_port = htons(i);
- //Create a socket of type internet
- sock = socket(AF_INET , SOCK_STREAM , 0);
- //Check whether socket created fine or not
- if(sock < 0)
- {
- perror("\nSocket");
- exit(1);
- }
- //Connect using that socket and sockaddr structure
- err = connect(sock , (struct sockaddr*)&sa , sizeof sa);
- //not connected
- if( err < 0 )
- {
- //printf("%s %-5d %s\r" , hostname , i, strerror(errno));
- fflush(stdout);
- }
- //connected
- else
- {
- printf("%-5d open\n", i);
- }
- close(sock);
- }
- printf("\r");
- fflush(stdout);
- return(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement