./c0de/c/get_banner.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.
/* get ftpd banner - kafar */
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <signal.h>
#include <errno.h>
 
struct hostent *hp;
struct sockaddr_in addr;
struct sigaction handler;
char *buffer;
int sock, i;
FILE *fd;
 
void OnAlarm(int signum) {
fprintf(stderr, "Timeout.\n");
exit(0); }
 
main(int argc, char **argv) {
if (argc != 3) {
fprintf(stderr, "usage: %s <hostname> <port>\n", argv[0]);
return 1; }
 
hp = gethostbyname(argv[1]);
if (hp == NULL) {
fprintf(stderr, "Unknown host.\n");
return 1; }
 
memset((char *)&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(atoi(argv[2]));
handler.sa_handler = OnAlarm;
sigaction(SIGALRM, &handler, NULL);
 
sock = socket(AF_INET, SOCK_STREAM, 0);
bcopy(hp->h_addr, (char *)&addr.sin_addr, hp->h_length);
 
alarm(10);
if (connect(sock, (struct sockaddr *)&addr, sizeof(addr)) != 0) {
fprintf(stderr, "Connection refused.\n");
return 1; }
 
fd = fdopen(sock, "r");
alarm(30);
buffer = (char *)malloc(128);
i = recv(sock, buffer, 128, 0);
buffer[i] == '\0';
fprintf(stdout, "%s", buffer);
 
close(sock);
return 0; }
 

Back