--- ansh/src/client3.c 2011/10/05 23:57:24 1.1.1.1.2.1 +++ ansh/src/client3.c 2011/10/07 13:41:26 1.1.1.1.2.2 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ - * $Id: client3.c,v 1.1.1.1.2.1 2011/10/05 23:57:24 misho Exp $ + * $Id: client3.c,v 1.1.1.1.2.2 2011/10/07 13:41:26 misho Exp $ * *************************************************************************/ #include "global.h" @@ -27,7 +27,7 @@ SetRemoteWinz(int h, u_short id, struct sockaddr *sa, pos[1] = htons(ws.ws_col); pos[2] = htons(ws.ws_xpixel); pos[3] = htons(ws.ws_ypixel); - if (icmpSend(h, id, ANSH_FLG_WINZ, buf, sizeof ws, sa, sizeof(struct sockaddr)) == -1) + if (icmpSend(h, id, ANSH_FLG_WINZ, Crypted, buf, sizeof ws, sa, sizeof(struct sockaddr)) == -1) return -1; return 0; @@ -43,7 +43,7 @@ ConnectL3(int h, u_short id, struct sockaddr *sa, int u_short aid; struct sockaddr s; char flg, nl = 0; - u_char *buf; + u_char *buf, *str; socklen_t sl; FTRACE(3); @@ -107,7 +107,15 @@ ConnectL3(int h, u_short id, struct sockaddr *sa, int } else nl ^= nl; - rlen = icmpSend(h, id, ANSH_FLG_CPOUT, buf, rlen, sa, sizeof(struct sockaddr)); + if (Crypted) { + str = cryptBuffer(buf, rlen, Crypted); + if (str) { + memcpy(buf, str, rlen); + free(str); + } + } + + rlen = icmpSend(h, id, ANSH_FLG_CPOUT, Crypted, buf, rlen, sa, sizeof(struct sockaddr)); if (rlen == ANSH_FLG_ERR) { ret = -1; break; @@ -116,7 +124,7 @@ ConnectL3(int h, u_short id, struct sockaddr *sa, int sl = sizeof s; rlen = len; memset(buf, 0, rlen); - flg = icmpRecv(h, &aid, buf, &rlen, &s, &sl); + flg = icmpRecv(h, &aid, &Crypted, buf, &rlen, &s, &sl); if (flg == ANSH_FLG_ERR) { ret = -1; break; @@ -131,6 +139,15 @@ ConnectL3(int h, u_short id, struct sockaddr *sa, int } if (flg != ANSH_FLG_OK) continue; + + if (Crypted) { + str = cryptBuffer(buf, rlen, Crypted); + if (str) { + memcpy(buf, str, rlen); + free(str); + } + } + rlen = write(STDOUT_FILENO, buf, rlen); if (rlen == -1) { printf("Error:: write(stdout) #%d - %s\n", errno, strerror(errno));