./c0de/c/napscan.txt

0.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
/* napscan.c - quick portscanner written by napster. */
 
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <netdb.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
 
 
char *ipaddy;
int portlow, porthigh;
 
unsigned int resolved_host;
 
/* prototypes... */
 
void reseed(void);
void usage(char *progname);
unsigned int resolve(char *host);
 
void usage(char *progname)
{
        system("clear");
        printf("napscan v1.0 by napster.\n");
        printf ("usage: %s <address> <portlow> <porthigh> \n",progname); exit(1); 
}
 
main(int argc, char *argv[])
{
 
        struct sockaddr_in sin;
        int sockdesc, x;
 
        if (argc<4) usage(argv[0]);
 
        ipaddy    = argv[1];
        portlow   = atoi(argv[2]);
        porthigh  = atoi(argv[3]);
 
        resolved_host = resolve(ipaddy);
 
        if (porthigh > 65535) 
        {
                printf("Uh, dood... highest possible high port is 65535.. \n");
                exit(0);
        }
        if (portlow < 0)
        {
                printf("Uh, dood... negative ports? get some help... \n");
                exit(0);
        }
        system("clear");
        printf("                       napscan.c by napster.\n");
        printf("                             [1.28.97]\n\n");
        printf("Portscanning: %s.\n", ipaddy);
        printf("Portlow: %d\n", portlow);
        printf("Porthigh: %d\n\n", porthigh);
        printf("Ports open:");
 
        reseed();
 
        for (x=portlow;x<=porthigh;x++)
        {
 
                fflush(stdout);
 
                sockdesc = socket(AF_INET, SOCK_STREAM, 0);
 
                if (sockdesc < 0) {
                        perror("socket");
                        exit(-1);
                }
 
                sin.sin_family = AF_INET;
                sin.sin_port = htons(x);
                sin.sin_addr.s_addr = resolved_host;
                if (connect(sockdesc, (struct sockaddr *)&sin, sizeof(sin)) == 0) printf(" %d", x); 
                fflush(stdout); 
                close(sockdesc);
        }
        printf("\n");
        exit(0);
}
 
 
void reseed(void) 
{
        srand(time(NULL));
}
 
 
unsigned int resolve(char *host)
{
  /* resolve routine written by Aut0psy. */
 
        struct hostent *he;
        struct sockaddr_in tmp;
 
        /* Lookup host. */
        he = gethostbyname(host);
 
        if (he)
        {
                /* Copy host into a temporary endpoint. */
                memcpy((caddr_t)&tmp.sin_addr.s_addr, he->h_addr, he->h_length);        
        } else {
                perror("resolving");
                exit(-1);
        }
 
        /* Return address in network byte order. */
        return(tmp.sin_addr.s_addr);
}
 
 

Back