rendered paste body#include <stdio.h>#include <stdlib.h>#include <netdb.h>#include <string.h>#include <netinet/in.h>#include <arpa/inet.h>#include <sys/socket.h>#include <sys/types.h>#include <unistd.h>#include <string.h>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 sempassxor();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<strlen(bin);i++){ asc=(float)bin[i]; a=0; while((int)asc!=0) { asc/=2; if(asc==(int)asc) bin2[a]='0'; else bin2[a]='1'; asc=(int)asc; a++; bin2[a]='\0'; }//end while strcpy(bina[q][b],flip(bin2)); b++;}//end forq++;}//end asc_binchar *flip(char *bin){int i,a;char bin2[20];a=strlen(bin)-1;for(i=0;i<strlen(bin);i++){ bin2[i]=bin[a]; a--;}bin2[i]='\0';return(bin2);}//end flipvoid xor(void){int i,a;for(i=0;i<10;i++){ for(a=0;a<strlen(bina[0][0]);a++) { if(bina[0][i][a]==bina[1][i][a]) bina[2][i][a]='0'; else bina[2][i][a]='1'; } }}char *bin_asc(void){int i,a,b,ans;char bin[10];for(i=0;i<10;i++){ans=0; for(a=0;a<strlen(bina[2][0]);a++) { if(bina[2][i][a]=='1') b=1; else if(bina[2][i][a]=='0') b=0; ans=ans*2+b; }bin[i]=ans;printf("%i ",ans);}printf("\n");return(bin);}//end bin_asc