#include <stdio.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define SERV_HOST_ADDR “192.168.33.33”
#define MAXPORT 1024
#define BUFLEN 1024
#define SBUFLEN 256
int main(int argc, char **argv)
{struct sockaddr_in addr;
struct servent *sent;
int fd, i, j, rtn, n;
char buf[BUFLEN];
for (i = 1; i < MAXPORT; i++) {
/* ソケットの準備 */
fd = socket(AF_INET, SOCK_STREAM, 0);
memset((char *)&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr(SERV_HOST_ADDR);
addr.sin_port = htons((short)i);
/* サーバとの接続 */
if ((rtn = connect(fd, (struct sockaddr *)&addr, sizeof(addr))) == -1) {
//printf("e");
close(fd);
continue;
}
/* サービス名の取得 */
if ((sent = getservbyport(htons(i), "tcp")) == NULL) {
printf("unknown service (port %d) is available.\n", i);
} else {
printf("%s\tservice (port %d) is available.\n", sent->s_name, i);
}
close(fd);
}
}
ポートスキャン実験用のソースプログラム
(/u/kane/rinkou/scan/portscan.c)
対象サーバのIPアドレス