#include #include #include #include #include #include #include #include #include #include char *flip(char *bin); void asc_bin(char *bin); void xor(void); char *bin_asc(void); char bina[2][10][20]; int main() { int sockfd,nbytes; struct sockaddr_in server; char buff[10],buff2[10]; char sempass[]="HELICOTRMA"; fd_set readfds; char answer[40]; struct snegotiation { uint8_t ver; uint8_t method; uint8_t methods; }sneg; sneg.ver=0x5; sneg.method=0x1; sneg.methods=0x3; struct rnegotiation { uint8_t ver; uint8_t method; }rneg; struct srequest { uint8_t ver; uint8_t cmd; uint8_t rsv; uint8_t atyp; uint32_t addr; uint16_t port; }__attribute__((packed)); struct srequest sreq; sreq.ver=0x05; sreq.cmd=0x01; sreq.rsv=0x00; sreq.atyp=0x01; server.sin_port=htons(24027); memcpy(&sreq.port,&server.sin_port,2); inet_aton("69.55.233.83",&server.sin_addr); memcpy(&sreq.addr,&server.sin_addr,4); struct rrequest { uint8_t ver; uint8_t rep; uint8_t rsv; uint8_t atyp; uint32_t addr; uint16_t port; }__attribute__((packed)); struct rrequest rreq; server.sin_family=AF_INET; server.sin_port=htons(1080); inet_aton("123.232.108.98",&server.sin_addr); memset(server.sin_zero,'\0',sizeof(server.sin_zero)); printf("socket\n"); if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0) { perror("socket"); exit(EXIT_FAILURE); } printf("connecting to %s:%i\n",inet_ntoa(server.sin_addr),ntohs(server.sin_port)); if(connect(sockfd,(struct sockaddr *)&server,sizeof(server))<0) { perror("connect"); exit(EXIT_FAILURE); } if((nbytes=send(sockfd,&sneg,sizeof(sneg),0))<0) { perror("send"); exit(EXIT_FAILURE); } printf("sent %i bytes\n",nbytes); if((nbytes=recv(sockfd,&rneg,sizeof(rneg),0))<0) { perror("recv"); exit(EXIT_FAILURE); } printf("received %i bytes\n",nbytes); printf("Ver:%i\nMethod:%i\n",rneg.ver,rneg.method); //want ver:5 method:0 if((nbytes=send(sockfd,&sreq,sizeof(sreq),0))<0) { perror("send"); exit(EXIT_FAILURE); } printf("sent %i bytes\n",nbytes); if((nbytes=recv(sockfd,&rreq,sizeof(rreq),0))<0) { perror("recv"); exit(EXIT_FAILURE); } printf("received %i bytes\n",nbytes); printf("proxy reply:%i\n",rreq.rep); if((nbytes=recv(sockfd,buff,sizeof(buff),0))<0) { perror("recv"); exit(EXIT_FAILURE); } printf("recieved %i bytes\n",nbytes); buff[10]='\0'; printf("semtex: %s\n",buff); asc_bin(sempass); asc_bin(buff); //bina[0]=sempass - bina[1]=sent sempass xor(); strcpy(buff,bin_asc()); if((nbytes=send(sockfd,buff,sizeof(buff),0))<0) { perror("send"); exit(EXIT_FAILURE); } printf("sent %i bytes\n",nbytes); strcpy(buff2,"jonathan06"); if((nbytes=send(sockfd,buff2,sizeof(buff2),0))<0) { perror("send"); exit(EXIT_FAILURE); } printf("sent %i bytes\n",nbytes); FD_ZERO(&readfds); FD_SET(sockfd,&readfds); select(sockfd+1,&readfds,NULL,NULL,NULL); while(FD_ISSET(sockfd,&readfds)==0) { if((nbytes=recv(sockfd,answer,sizeof(answer),0))<0) { perror("recv"); exit(EXIT_FAILURE); } } printf("recieved %i bytes\n",nbytes); int i; for(i=0;i<10;i++) printf("%i ",buff[i]); return(0); } void asc_bin(char *bin) { int i,a,b=0; static int q=0; float asc; char bin2[20]; for(i=0;i