diff options
author | Peter Wu <lekensteyn@gmail.com> | 2012-09-26 15:04:18 +0200 |
---|---|---|
committer | Peter Wu <lekensteyn@gmail.com> | 2012-09-26 15:04:18 +0200 |
commit | 2497c1392b81e093f4de2541a98746aebd449a7f (patch) | |
tree | db87e59d4c70c677ddb1899d9161b004f6e454ac /abuse.c | |
download | c-files-2497c1392b81e093f4de2541a98746aebd449a7f.tar.gz |
Initial commit
Diffstat (limited to 'abuse.c')
-rw-r--r-- | abuse.c | 57 |
1 files changed, 57 insertions, 0 deletions
@@ -0,0 +1,57 @@ +#include <stdio.h> +#include <sys/socket.h> +#include <arpa/inet.h> +#include <string.h> +#include <unistd.h> +#include <stdlib.h> + +#define host "192.168.2.3" +#define port 8888 + +int f(struct in_addr *saddr, const char *data, const size_t data_len) { + int sockfd; + struct sockaddr_in addr; + sockfd = socket(AF_INET, SOCK_STREAM, 0); + if (sockfd < -1) { + perror("socket"); + return 1; + } + memset(&addr, 0, sizeof(addr)); + addr.sin_family = AF_INET; + addr.sin_port = htons(port); + addr.sin_addr = *saddr; + if (connect(sockfd, (struct sockaddr *)&addr, sizeof(addr))) { + perror("connect"); + return 1; + } + write(sockfd, data, data_len); + close(sockfd); + return 0; +} +int main(int argc, char **argv) { + struct in_addr saddr; + const char *data = "GET / HTTP/1.0\r\n\r\n"; + const size_t data_len = strlen(data); + if (argc != 2) { + fprintf(stderr, "Usage: %s count\n", *argv); + return 1; + } + if (!inet_aton(host, &saddr)) { + perror("inet_aton"); + return 1; + } + int count = atoi(argv[1]); + const char dot = '.'; + unsigned fails; + while (--count >= 0) { + if (!(count % 10)) { + write(STDOUT_FILENO, &dot, sizeof(dot)); + } + if (f(&saddr, data, data_len)) { + if (++fails > 10) break; + } else + fails /= 2; + } + putchar('\n'); + return 0; +} |