From 1ea21b7bc61522fbe1f6657ab6061850fb2f9b66 Mon Sep 17 00:00:00 2001 From: aixiao Date: Wed, 3 Jan 2024 09:19:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- forward-tunnel | Bin 4600448 -> 4600448 bytes forward-tunnel.c | 62 +++++++++++++++++++---------------------------- forward-tunnel.h | 3 +-- forward-tunnel.o | Bin 55368 -> 55368 bytes 4 files changed, 26 insertions(+), 39 deletions(-) diff --git a/forward-tunnel b/forward-tunnel index e63453df793e1c5aa238a6befc0c14ddbdbf87ed..98a1e004dd2d1d73be29e6766b6fc06a741fd8b9 100644 GIT binary patch delta 335 zcmWm0yH3Jj06<~p7YC9?A@v1F7<~Z}hbC;! zya*#BJBQ)RImUV}4E+6yNO@EE{8_z8#$@~-l+Epj|2_I`3DXh>*!K`eu)_f-TyVpK zV|d|%9})rxB7`s^h$4m)#F4-$&Tx(-E+9j}B~nNugDYf_Lmt;CpoklkP(}sSr6tta zmsD-)YD3pF+v{+oC^d61RdI{`*P-DK_h_IA9WAuc!2=%ggf4n`#>;Xr?dKOe$y|6P delta 335 zcmWl~yGlZF0Knn=t9eP&@>X8zlv&>Gn5E}vS!qj8AWlZR&me{P03nEzgOddH z!_iR$!NE81=kW2hmOatJcp%(={o(3+yKT%C)46VwRz~%;=~ojSP3W*+4+D%igb8L? zV8sz^u;UmGIB|kgxZs8dUiff^bNCTJ5FuRP5)!U(jWBKy!7c6(MGSEykVFb;WN<&x zgxvjc$OScZI2Gi2m;Y D^s#%1 diff --git a/forward-tunnel.c b/forward-tunnel.c index 9cf3add..7dccb40 100644 --- a/forward-tunnel.c +++ b/forward-tunnel.c @@ -1,6 +1,5 @@ #include "forward-tunnel.h" - const char *keyfile1 = "/home/aixiao/.ssh/id_rsa.pub"; const char *keyfile2 = "/home/aixiao/.ssh/id_rsa"; @@ -52,7 +51,7 @@ void *forward_tunnel(void *sock_) perror("socket"); return NULL; } - + memset(&sin, 0, sizeof(sin)); sin.sin_family = AF_INET; sin.sin_addr.s_addr = inet_addr(server_ssh_ip); @@ -136,16 +135,16 @@ void *forward_tunnel(void *sock_) while (1) { FD_ZERO(&fds); - FD_SET(forwardsock, &fds); // 设置一个描述符 + FD_SET(forwardsock, &fds); // 设置一个描述符 tv.tv_sec = 0; tv.tv_usec = 100000; rc = select(forwardsock + 1, &fds, NULL, NULL, &tv); - if (-1 == rc) { // 返回-1表示出错 + if (-1 == rc) { // 返回-1表示出错 perror("select"); goto shutdown; } - if (rc && FD_ISSET(forwardsock, &fds)) { // 测试某一个描述符返回值: 若fd在描述符集中则返回非0,否则返回0 + if (rc && FD_ISSET(forwardsock, &fds)) { // 测试某一个描述符返回值: 若fd在描述符集中则返回非0,否则返回0 len = read(forwardsock, buffer, sizeof(buffer)); if (len < 0) { perror("read"); @@ -154,7 +153,7 @@ void *forward_tunnel(void *sock_) fprintf(stderr, "The client at %s:%d disconnected!\n", shost, sport); goto shutdown; } - + wr = 0; while (wr < len) { i = libssh2_channel_write(channel, buffer + wr, len - wr); @@ -166,11 +165,11 @@ void *forward_tunnel(void *sock_) fprintf(stderr, "libssh2_channel_write: %d\n", i); goto shutdown; } - + wr += i; } } - + while (1) { len = libssh2_channel_read(channel, buffer, sizeof(buffer)); @@ -180,7 +179,7 @@ void *forward_tunnel(void *sock_) fprintf(stderr, "libssh2_channel_read: %d", (int)len); goto shutdown; } - + wr = 0; while (wr < len) { i = write(forwardsock, buffer + wr, len - wr); @@ -188,7 +187,7 @@ void *forward_tunnel(void *sock_) perror("write"); goto shutdown; } - + wr += i; } @@ -199,8 +198,6 @@ void *forward_tunnel(void *sock_) } } - - shutdown: close(forwardsock); if (channel) @@ -211,7 +208,6 @@ shutdown: close(sock); libssh2_exit(); - return NULL; } @@ -261,7 +257,7 @@ static char help_info(void) return 0; } -int nice_( int increment) +int nice_(int increment) { int oldprio = getpriority(PRIO_PROCESS, getpid()); printf("%d\n", oldprio); @@ -280,8 +276,7 @@ int main(int argc, char *argv[], char **env) char *p = NULL; char *client_ip = NULL; int i, j; - - + char optstring[] = ":dr:s:p:l:u:e:h?"; while (-1 != (opt = getopt(argc, argv, optstring))) { switch (opt) { @@ -295,21 +290,20 @@ int main(int argc, char *argv[], char **env) p = strchr(optarg, ':'); if (p != NULL) { remote_destport = atoi(p + 1); - + *p = '\0'; remote_desthost = optarg; - + } else { - if (NULL == (p = strchr(optarg, '.'))) - { - remote_destport =atoi(optarg); + if (NULL == (p = strchr(optarg, '.'))) { + remote_destport = atoi(optarg); remote_desthost = "0.0.0.0"; } else { help_info(); exit(0); } } - + break; case 'p': server_ssh_port = atoi(optarg); @@ -335,17 +329,15 @@ int main(int argc, char *argv[], char **env) // 加密参数(账号密码) for (i = 1; i < argc; i++) { - - if (0 == strcmp(argv[i], "-e") || 0 == strcmp(argv[i], "-u") || 0 == strcmp(argv[i], "-p")) - { - for (j = strlen(argv[i+1]) - 1; j >= 0; j--) { - argv[i+1][j] = 'x'; + + if (0 == strcmp(argv[i], "-e") || 0 == strcmp(argv[i], "-u") || 0 == strcmp(argv[i], "-p")) { + for (j = strlen(argv[i + 1]) - 1; j >= 0; j--) { + argv[i + 1][j] = 'x'; } } } - - + printf("SSH Server: %s:%d, Local listen: %s:%d, User&Passwd: [%s]['%s']\n", server_ssh_ip, remote_destport, local_listenip, local_listenport, server_ssh_user, server_ssh_passwd); listensock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); @@ -361,12 +353,12 @@ int main(int argc, char *argv[], char **env) perror("inet_addr"); goto shutdown; } - + if (setsockopt(listensock, SOL_SOCKET, SO_REUSEADDR, &sockopt, sizeof(sockopt)) < 0) { perror("setsockopt"); return -1; } - + memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(local_listenport); @@ -375,12 +367,12 @@ int main(int argc, char *argv[], char **env) perror("bind"); goto shutdown; } - + if (listen(listensock, 500) < 0) { perror("listen"); goto shutdown; } - + fprintf(stderr, "Waiting for TCP connection on %s:%d...\n", inet_ntoa(sin.sin_addr), ntohs(sin.sin_port)); // 后台运行 @@ -390,11 +382,9 @@ int main(int argc, char *argv[], char **env) return -1; } } - // 进程优先级 if (-1 == (nice_(-20))) perror("nice_"); - // 多线程设置 pthread_t thread_id = 0; @@ -406,7 +396,6 @@ int main(int argc, char *argv[], char **env) if (pthread_sigmask(SIG_BLOCK, &signal_mask, NULL) != 0) { printf("block sigpipe error\n"); } - // 初始化线程属性 pthread_attr_init(&attr); @@ -438,7 +427,6 @@ int main(int argc, char *argv[], char **env) pthread_join(thread_id, NULL); pthread_exit(NULL); - shutdown: close(forwardsock); close(listensock); diff --git a/forward-tunnel.h b/forward-tunnel.h index 4ea214b..bc58cee 100644 --- a/forward-tunnel.h +++ b/forward-tunnel.h @@ -19,7 +19,6 @@ #include #include - #include #define MAX_EVENTS 1024 @@ -30,4 +29,4 @@ #define INADDR_NONE (in_addr_t)-1 #endif -#endif \ No newline at end of file +#endif diff --git a/forward-tunnel.o b/forward-tunnel.o index 65b7e8c77272b5c536fffe1550a0bc5693faf751..bd6dd76c00b41fb60f102824f2c11cada33e583a 100644 GIT binary patch delta 2077 zcmZuwU2Kz87(Q=L&)L_m|NXjlbsb&pXkpTAjD;~L#NZEfb8Imr-7ba%HWT(Mx;5$3oig~3^DvHDFNIPB}Smc82=)OOq67D;f*md#+V4c=X9Oj@LYV~d7t-r zpZDi`zuXkfP0^_uo4sybbA3~DVbx*=E}|yOml82_Ytm4?;vH5Qy;-4=f-E zI;5wBJ%!JCS^?CMDP{x9yGn~i3SNutt%pNw|0ix=!i>m3aPli9qROvlU$69(K&g1I zI+!j6o2;X7g7Q)d{@uKQ5VEc}IZB`uRuqHH!~IDDR`B_agwV|8F_#Rm73{C_wjJ!k zApNKEwgXHu8_k>^E0=s{IuFRZJW9j~{yb?aPjW5h_+K7O5%&^okmyhuc#WUcrzqCu1RKC+S4KtxnVw?L0bMkB@nsQ6Xv zjfP==_T%VPBN)XStAZXQ*ozBQ9da?fYCL_@dO#NG^%2rCK;V`dvR4-VgExZUe_N)& z+uoK%V1)x_UANI?lp*k=M=tQZaYq>%v0p_06UzTniR3D!Id3N_IhN@EBCf@@f>#7; ztJ2;I!@}h7drN_GRi3=b;~UyR{ELx(;~n4z#xr^-?Gnem=hf<^DQT?zo zr|ysY26~eu+-O}})V^=u5DB}A5jDkX^Z6iclK@D)=wr) z#o1Nalj2le2-b_w>l)zI?1Q>mFC<0nroVCaD>n~R?gU0X%*??E%tZYuqk)-e-|;w_ zE?O?mZ~of(LAt<6Aj;@1@oxOL8XJr-lbf;3b?wB&NH?=^6yWsMc!Fy|-o=2^Q=p)G zVybnWc9UR$mF^S2x4O9xW9dJ_+!m^yMVy{UCzyr;7T&{5<=PBp`9|{H#9&0BO`@}{ z+>}!Yr<=ua+xA!)jPL~W&~B|I&Qqwo=a>v@#waJJ?N~*Pv>Q}bi!eO*Y5GkA$RepN z&VUZ3nCSq%5414GTitFqR&2xGEr`?o2N9e=vOgg&=ymIINN9B7+sUk)K6XQAcKST9 za>VU(*nEahOGk9Ni|#+omLVLFzzFS2U`-%4w!30i2@X@oIj-dNQW}huIcSc^aj!%> zHE$>6q;)ziCfcJ7o*be;8)YDKpsHDmp&K*B`$m;(b-|?^LE0wnw0qMpCRhmBdX9N` zM)5WjcykyZp`YM~_3&M+8d)Zq)M9Y^V2wSC$D7{ zXa!@eiTASl7Un#|f(SJ6VO9@3j^1aP8#vw=r)KfWmYDOiG0d#iEWcPEiA!77L@$n| zuntDA7~;HDi84Nd3kdXr;;W_f(`!QS2sMAGAmn#*`mF)O`qZkP89SEWO2oK!PHvIR z`;r=zb{wzoh{29ZI3(Wg7!99I$5=b=lwpoNBVSsKMdgaguSfN1xiDXd6`f6y3+dxC z)DpwqaRzhvnwVia-jOyMo1wl09o1ZPNA^hPIa{{rg~1U%WRicP=#1*3=V>l--zDIr XsJgKMc8l%!bcy%zxjK9I#xD35NHjGB delta 2100 zcmZuwYiyHM7(Q=L&)L`7uJ_Bn-MYH1Wk@@&V`D-L7p0qHBOxi8fQTE6KxM2QW=U7V zGz1cL0;T#cu5U_`dT#@AKZC z@BJpn=;Rn3TUcsays~9UQ_Heu65Ejo1eWAlO1InA8m;>YAts6sb?oxV<^xMgJa7k7 zW9x{xQCXib&*!zwm&aQAG?tiC(KcVWeGW4u1Hs8ZDiJlhJNIOjrvz-`g}Ok-2Bqs{ z<1;59-!{;9^BDkN&E1Is0ybDs47T+5CI~pduNw)W+4E_q3~(0gukyAFs~DvJOx|{b zNmirTv*|L)_hj;byvw7KctFpS#_}ZZY>xi;{v`3u!S)kB+$B{m9F@LoHm3IyeNNo& zJqTHf6;Lfyf_c;{`@EW7B{RY}+|I2CBVhXz5t@A~KUfyr%haHUhLry}_>Z83Gs|ssDv^D%@hiR%g8#3K0)O(g&H^j! zaMgJkT}BxK*F18uXN;efp%L4g=)YI_ua`)!%Ji$R3p3g0cvd6UO~U?(Y`jr5XoYw@His(jY)LAibvYWa-WQ#XecrP84q&*#n8%2dtT z3Pr2-K7*gCa1<2q9-Rx-+?g!sl)q8o1bZIqCwE(};dsXE`I|$*7ANymW9a7BXVl4Zqc5*oNFtcz>!0FUboNEETl>w)(f`YD#v9@OI zJAwgLni4nKTwKRk`mZpz2kWjNPG8K#nT820d>b>BX%krGYsq&JgAo&L5MAwMrq2|@ z>HVU=eMiI(DIRAY8rNE5Jc*h2jL5K7jB;?=j$JI2_HtF#Dhv;Pka^YsvPo)-F`#`( zW*WrzU@K$1&E;}o$E7&C6>)m-FoMHK*5mSmUY8OHjjbq_gIPIUH05SCx*1p*@@&&M ze3p+($Aa;#^og^q8sSO_q-b{>djhex!x_0iP)s-K*ud$#88A|2rymk2cLUnV89OeO zcGLI8a7TElcM?&cQ5neWnANOB(2bQkdj^#2o`Op`0(7&u(&5YOiL)TG-IL72k1Jkt zfj5ou^>jU;XBVqOl8NrqB0bE->5@1xi1Nyq+tDV&8Md9fTw!Ew$)zt z;PpAt*I5Ne#7O5r?JJoG>%f&VOtTI0rA1g+ZkYUd)H^Qs<&tRVS{ZsHb7F#8A~-v0 zFpaO_3FgK-(gq?ERFBh?=A@72j&_Zf=9(VqOYuIF{1HW0*e$lL=VJ1kIGhwUQ)^(C R*nv-ncnP12bJwPJ!G9OYG=u;E