From bfa0f1cf7ec733b2c2245eb5d6b946cdd87ed0e3 Mon Sep 17 00:00:00 2001 From: Max Lv Date: Mon, 31 Dec 2012 18:00:25 +0800 Subject: [PATCH] working on rc4 cipher --- assets/shadowsocks | Bin 42312 -> 42312 bytes jni/shadowsocks/encrypt.c | 67 +++++++++++------- jni/shadowsocks/encrypt.h | 11 +++ jni/shadowsocks/local.c | 15 +++- jni/shadowsocks/local.h | 2 +- libs/armeabi/shadowsocks | Bin 42312 -> 42312 bytes res/values/strings.xml | 13 ++-- res/xml/shadowsocks_preference.xml | 8 +++ src/com/github/shadowsocks/Shadowsocks.java | 8 +++ .../shadowsocks/ShadowsocksService.java | 6 +- 10 files changed, 93 insertions(+), 37 deletions(-) diff --git a/assets/shadowsocks b/assets/shadowsocks index c7f2e590c62ae0c40b4442a09b3ef87792192678..507b7dff0afcd6c4afb42742db14f273805dba49 100755 GIT binary patch delta 11866 zcmc(FeOQy{+4ptdxd}lL5m6Jkg%Car0*Z=C6>Ws{RuZ+&Qiqmyw4x2l+GuSTt(w$2 z*RIZ@7b;poYMJwE9Tn*820X6ox^DC7lFs$@Ri7??m5>C;I@?eM^8Bs@HTu3gj{ft$ z&wU&}e&>08U*~yVA9uJv`7{5?pZRJf*RWf)b`Gf{gdqY%VhQ0u3!yK};et5B6OuQK z5cyC(R8ocfD&$w~{@u(e=DmcN$8bUDWP~sXD8#Vz#)gXU##&Ijr8$%P2RAC%5o;4q z91uZOvScofJ|vqwDxD2t=wW#|bfawYh{Etx+A2#PGYWZ+ho?d>qg}FO>)HoW*FB(b zdq98f0e#m4dQF(ldOZ-Pvk@M>UoRvr_a~5!2lS60&>auxm*}5_WUiBT;qNyzDk7PS zpqUZLqg2fPLl5gXg)T>G&I74a>FW`btxF$BUGaea>;w9`2lOou=&wDX?}GlGgOF^D zBaSG@e&{b=Cgem&w~`}B_}~&DZ9@f4JI+3}xLR z6d+jtBpyfs#sR4Sq3y%RaU$xBvnD|u320e**fSP##*ofJiam)TB57deOXZM04?G7L z4?GO8-3gl)nE<2%Gk{qDdmaf9DGu>H8%7RgEC4SA3V;~EHi;u+(9?FtXz?}17;PhC zc&&voY;cY->~R@97E$VCj8R@^3@f-8V;l4`#{TMKEJy!0nSkE=7$b!G88dfJ1|w7i z#xSLVaWo;(j1eBOj4{G^#xS9hF{UjthKJRR5qfEi5&l}na78v_L_#iOE9{)d1o$SO zF=DoWF?^|G44dm2i-as-3>z}hM&tABV@`M!`~H*;WHCs_@jz3 zd}{_<$080lumr@dg>e=kn;FCDHpW;?+ZiLqUt>I#ke!SXr`3$}2&rL=1y#!!&OXE# zi>HBcK3v5Zi|iO<1i~rCi1nt)oRy4)qgz-4BIpd`x!9r@Ba+TC))Dd%V?@~}j0@pw z#zlnK8DpWGXN<_Yz!)q4GUNG(0mcZZ>x>a`F2-0$UdC8hzR6Yy*amL01O!nZ<7J2e z#@~nUojErI=iwVM&NrP3U&oEc!-$KI-@F?2=bcv@18q0%$cMt@nlO21n7lnq-h4;4 zqM;3U6v$O!az&V27ABX3$qU0|eVAMjCg+98*%-)NFgY(w&JL5)tYL~6CdY@#(P6R>Cif47xgbpThRN5% z!SluO|?vXip?0soh1>oc_VQLwF#yAz5N4T;8$R{bVDsb&oZ{2zAT>G%{1|K7pZ z2K@GJg>!WAXoFn65hVlurfx3%hlL}Ww4$#);QypMrZ~nR6Iq^2&7}wY4c$L1?Crd; z1DhuBA#fg80c-#)KrXNvhzF8(;22W^|M&A;q z)zY=`^ZEE5+7e&DWz&Dgr;Ido%Z<*`fM4oX!whFETc6SqW5g};U*VCNhG%_) z*enSSq0}?Bc&uUEeN!r-zf`JXI|4-#$r9|#m*(V9&|F)WzAhgV>~}wJd|6-1!ox!Z z*)S5LENXZqMYN@Ie;TH_#0C6c(2)s=BTM_|Nea_c@p}?Ug<0rB3C8hFZj$O*7pXY_ z(=Bte8C<~(mbjTyO6c1OqqCN{|I{fz9+5iSyvS@zy~L?aye8ncxw+J9kAKuTt9aJk zMKz25BOx)xW908cak8Fjbfq3YBt$$q;V;mvI7)BNkmI_0gK)`>hOD$$1ynFl9;zJ^tB*(~h z_p8Mzbc{G!eham=Tj?Zm7I&IfiVvkP3=V%R3M~i@-_Vs;Jl!z;KKD!XkK$zOt}db- z>)=wGEAquD2!Q&5DPn$b{Z#g;jRq-SWJZY`NHXS&U6A;J&tV=#u+?E*Di|fXNt?40AgSLINd;H|+(E};Q1ri(a zwtlKj(pW7n=216HvcbhX`jTsOal9e^zQM0|UBPH7f+f$Pi18xDn)*ndAtkNP$FZo*bFRV4vrp@|mr9`uD zk&GsqM#2)KXpK=Wz9C&JeO=;rCzS6oa=W+aYq2!?^n@Oia^due=Lt)rMk|iASRj!t?hgQlFIak zL_3!UrPrlhoy&r`9DTi$)9`zCz!5WCCB<^FWWh!~>tu%OvEm4EDwYJ3*+BALORy0Y zxE3$kqBoTj?58ta$I5lmp#OTW!Kf`aEV@=|Fl^B$nl|aJnW79M+TP3665p+F7og(G zZ-u0XE~!Nu0#WVaa%bChhD^~Yv1518|6DISwB~(Vupqhy$I5^_X_|eOk)-E}FY6Ul zIQ~lNa2l~!*el;VtcLRy-OdfJ&#peLC_6Cf;BeEy!VJggrUD#52c#p?Nh{8wbR(yM zG0Gq7%)|ziDQ?ma`U_yLFFP~t>Uq$==uEwp-As6B+{SfEri|7&g(>DN~bsdgRs2-R__M=a2Y+)0a`n0VhX?48{4sp6p3zqF^TbI@Pj zV|oMIZ*L&LwxDMqmjP^9=Y#*>4J7;H+e0Jq#{>r=_BelfZy*;TUk2Dfntn>Z(rB#S zZtfV{LsteSinGOBOk>dhIc{xix~Z5h?})&3eeHv|>fRih&k{7jw$jj*P!LlWq#12e zpMIY7mr}LJ3^~m{=%3g_G@Pi$F=M;(qZMs@&p4({c)*Hvy^zOCEPSx zc-t|~I8U-={I!%z`-a$33d*%&G2!w8{`G?`h2J=04fC*hy;f>VDJJf+S5fDU!ds5e zb!^c8O?MQ|TTZl>YS7tV2EOW)FhCZC9|4~LX8}8K4lvI@EA_EGG`NM*i>ZxV0=1^) z{J1*U?kx}fFhkF;?xl(enxqose_(IzOc%WfWJN2<uTPaS|OO1oT#p zCL)5pm32L8T!bb*zS{)vbN4c%oHqT-l=t+DPlxVMU-U`_$td%cdWm+rqow@o@__$G zf!y+S<+2G=D_^M0HLb%A@#kJPkke29>*=8LeINGDGR(#c4x863)O-SQ2fNQS^nEvuDD8GT(U*sh0Wnx$fAD_hs}d3<@-H z%LOBNND5bN!dckpqK%XK#+h)tG`DVRiV!(Wn18 zr|r6)dSi)zfN-YbhLiO#*eKvnz1`cnVl%CuTBsSs=@Qz6wl&GczePs=y(RT*DbYT1 zsZvsC2K>8vC_imijMVdfXD({~B=D!sgD=ziY5DU61TTk+>I>y3IoaO_{KvXosm>)H zF8=(0KcPo14)~LLb`*|q4EWVSO#@BtXm{o!N7FOlUqQ#^rSNdnth_a`&Ti*QqD{EO zmfnE>pqIAfeZf6L>GX7Y56(DYBkh>3;Tu-btJ7=qZh8NP@H4lbP5lFIBF2mJ5jeQRu%fSgS9=kn5bXK48gUV33hzT8xSL!_0q6{zWqnP<3I z+B;Jf&!YmLHOk>z%cV>d*TS&aN5uRDjT`Shqq2rM^pAXH_pOx;WnP8j?e-g;1OAI{ zTAIIR*d8~RtH5L%-1J=j`ttQX^5d^d@@n2U_3rk-`#$XYf$>QL@7w3$eb4mRGF~F@ zEWepXp($$+>*MU*m3AZj_#0es#HyBb1~L_&0lK z{X<`=JMdN!l{MNv;6DQ?8q*ySJcvow2&BE+MVn@6<*^&^qi{L>V%Cf}-gm~$`?hz_ zlXy`Jvvjy=#_am!w7bnD4K))R)=WITHha4K@_PJ4{R5g*FjnAwOIn7mb~h zCa%Eh8so@EFyi?3OZ^io*H$)EUa91KANA5DbIRg|p}@lqmdw@|=d13e9dqXL-+1WY z95rwEQ1#q0PD!`S&E$9D6qx(c;w7-|6kL9?1fI~%I_;{*QFIAoUEHB~FC$R3WyiYjroaTaVn(L<{qo|w_^ztx*>tS$WO z1=WdIyjfMl%sX8q^`MmGoVHjeO->o`|I|g>9#$q-xmfFR@qpx9f}8iH)t&wRxZnuV z9R2=i`mcwJN4a{~IR0)oNJmSzAYY=3bcuZ1b99Zan#UgAuhYO#6>h4TcN81)_AYvE zo-Sr}caxzBFBT(l%6`#B6ACqPi@W)1*>1Ksu@i*%UG1Wa3zY@D4|}(kv-9<`!xO94 zR`Gje!8x&mgU60~CogMF)f$0D)F|=d^`_xX>}J(n^hjX=Kj@{-!nBFJZ#BwR*&Cz} zq*=}*mDeg+H=NJuZFu_1(~~NnuMD+V(nTi~EluFDV-Rh!y=CoVhR2K$>5)zxZ{A=jgZ_#Uw^`Gn>IdDlasJ#f z8J;sZgNZicQompAVdrtbU!?x|2Y6En-Lqf^@AA-u;(Vpu^QTUA3OBpBaCi|nts8rl zu$qvItLU2Ir>vi@B;;MFag~I8djprL)><3^F=BiY=ZMCHxnsmPB^Aly8<+tWH#YELK-6`|$m2X)dmOmULqkmMj zS>jZz#H-3W%OP`xDo@vL7F6$8WOa%B_#)Zf|3rhVxsw)QN|gMwu-0UU@3j^c^N2E0 zNG_7?KWPasV|`Y-S4eg!qApRMTErg`X0Fw>NkW0}u;Pz=4d)DG9Fq7t*@X6@di-p> zQo?`U9pY7?KG`Is%`ipm=MT&F@%4>~T*h_sQsI|6S(>n~K*wh*?Xqm%&SguENlp&K zi;9tyEtVrggKW37SuvwDd0LF1YBm4dqDYIZAAFW$?^@LTh{jp=4qXKB!NKT-a>I$Nxk&ag@^ey2+9mI>qU zb=3Nu>I_((4Xg9@-8xnldjD>8b2k1WtP;0>`nvBhqm7;S)p-$h6nSa#`z?_cGh{z& zm;u{2MyiJ+M(RQ?~y_T_k+SJ^b}L#f*r3k^Av2gndG%yiTb1 zlBbnX@)@eAm_(JZk3SrlHbKYlCyqZj7m6&}B2=fOUs|4(PAIKxY3)$T5NI9nX1n>9 zD&g=wkG`lIZ|3W`9OC$eb7!!sT-9o6k?zbUVt)sk=`cqi{#o6?ggH9lFpGvQmKSwT zqAriRuRG8EySmo@Yvp!Su0v&6PL(}+JR9+M?REe){|hyRoJZ{oze7#yy%EpZh}o{= z>mqWd+IN13s`qMcLCq&oQ=T)%9vNKa^Rb>CT5G{o~*ZU zdH0y9t6txDkcKcCb-@A*Q$u0S_m)o!UXcbLaM`45!&TE*A1g*l0p+V@;i>%8Ys zDo-cDdH-epHA*FK43%2;?~09I_iOW08@YYl;jvG0dEcn`!(XGpXA`FDwkG|0-qynT zDt>>SuEX-Y^whe!8~MY+G!{R{--Sk39HGiUuu6aBm zc9T2GN#2@@3Q82I>7q4{XNz0A@Z(oI{_WASPAXOulc;6IWS5?AW4{VCUw+&-jIVY# ze_H;;CR=J<{9hbIR1$n)bPSG{*fE>$P1hJRX3WGHpKD#oEvoNOV98V zZqR)%9pwkEH_!diGLFAFsd=B}h`=XZYo4{GFml+UD*=x}m(yju(!68)o+#_tEdgs& z(=pox#wVj~eOm+8ld(2igEf?XKFB9*n{6Te6!^H}J==M(Aj5CL+X7Yv*z#(?8VxSl zf%?d=1+#R;YoT=U^?)@Ny7P^IH6EPyvw&48!{rE=>6 z)(g-XGs{(g&qG(%qdbOSi-%yplW>x^EoeXn(o4W>K=z=1!dCWnsDU%!rlu3N%iu=T zyKp3=$G*e(m@OY%i}b$6fb|eK_h=};4b0NbzktsAITo;5YmiWVB9xJTGE~8G8U;?s zYzv!16^}7KG0t|K@kxbE_<*rsI|pV1B)?(hj@i-}pNzBh{hsM3Y^Od#e&l<$#eWFk z6BfjVJyiZ9Fw?#NzyO+lCD_hf2{j;I4Oq1pkoH<=rWP8T?C_~vBu)d29 z8@~#5r2AJWeF2ya_#=P7`YX)Lb(_xGy(0dV)7&eVFuuCjt8^v?id zhq!2njo<|2vyXB`FuoZJeri|(J#k1^gUe`6z0q2RRF=a^ zR{&qvBP;CLj87^pfElQo!4Xp)cslDJ6F!PwpqB&eX;Oy1>}BKY3*b@>Jot$CZ9WXv zaOHnM#xF==qxt_YtL`_)-2ogp*3372$Z^&54{s+&u~4`mM<~#4Xe2=lRtk8+*JSo delta 10020 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 CjjY@N diff --git a/jni/shadowsocks/encrypt.c b/jni/shadowsocks/encrypt.c index e31384c5..379b42ab 100755 --- a/jni/shadowsocks/encrypt.c +++ b/jni/shadowsocks/encrypt.c @@ -1,9 +1,6 @@ #include "encrypt.h" #include "android.h" -#include -#include - static int random_compare(const void *_x, const void *_y) { uint32_t i = _i; uint64_t a = _a; @@ -115,30 +112,42 @@ static void mergesort(uint8_t array[], int length) } void encrypt(char *buf, int len) { - char *end = buf + len; - while (buf < end) { - *buf = (char)encrypt_table[(uint8_t)*buf]; - buf++; + if (_method == RC4_ENC) { + unsigned char mybuf[BUF_SIZE]; + RC4(&rc4_key, len, (unsigned char *) buf, mybuf); + memcpy(buf, mybuf, len); + } else { + char *end = buf + len; + while (buf < end) { + *buf = (char)encrypt_table[(uint8_t)*buf]; + buf++; + } } } void decrypt(char *buf, int len) { - char *end = buf + len; - while (buf < end) { - *buf = (char)decrypt_table[(uint8_t)*buf]; - buf++; + if (_method == RC4_ENC) { + unsigned char mybuf[BUF_SIZE]; + RC4(&rc4_key, len, (unsigned char *) buf, mybuf); + memcpy(buf, mybuf, len); + } else { + char *end = buf + len; + while (buf < end) { + *buf = (char)decrypt_table[(uint8_t)*buf]; + buf++; + } } } int send_encrypt(int sock, char *buf, int len, int flags) { - char mybuf[4096]; + char mybuf[BUF_SIZE]; memcpy(mybuf, buf, len); encrypt(mybuf, len); return send(sock, mybuf, len, flags); } int recv_decrypt(int sock, char *buf, int len, int flags) { - char mybuf[4096]; + char mybuf[BUF_SIZE]; int result = recv(sock, mybuf, len, flags); memcpy(buf, mybuf, len); decrypt(buf, len); @@ -146,20 +155,24 @@ int recv_decrypt(int sock, char *buf, int len, int flags) { } void get_table(const char* key) { - uint8_t *table = encrypt_table; - uint8_t *tmp_hash = MD5((const uint8_t*)key, strlen(key), NULL); - _a = htole64(*(uint64_t *)tmp_hash); - uint32_t i; + if (_method == RC4_ENC) { + RC4_set_key(&rc4_key, strlen(key), (unsigned char *) key); + } else { + uint8_t *table = encrypt_table; + uint8_t *tmp_hash = MD5((const uint8_t*)key, strlen(key), NULL); + _a = htole64(*(uint64_t *)tmp_hash); + uint32_t i; - for(i = 0; i < 256; ++i) { - table[i] = i; - } - for(i = 1; i < 1024; ++i) { - _i = i; - mergesort(table, 256); - } - for(i = 0; i < 256; ++i) { - // gen decrypt table from encrypt table - decrypt_table[encrypt_table[i]] = i; + for(i = 0; i < 256; ++i) { + table[i] = i; + } + for(i = 1; i < 1024; ++i) { + _i = i; + mergesort(table, 256); + } + for(i = 0; i < 256; ++i) { + // gen decrypt table from encrypt table + decrypt_table[encrypt_table[i]] = i; + } } } diff --git a/jni/shadowsocks/encrypt.h b/jni/shadowsocks/encrypt.h index 700398d1..eb2ee1ff 100755 --- a/jni/shadowsocks/encrypt.h +++ b/jni/shadowsocks/encrypt.h @@ -4,9 +4,19 @@ #include #include #include +#include +#include +#include + +#define BUF_SIZE 4096 + +#define TABLE_ENC 0 +#define RC4_ENC 1 unsigned char encrypt_table[256]; unsigned char decrypt_table[256]; +RC4_KEY rc4_key; + void get_table(const char* key); void encrypt(char *buf, int len); void decrypt(char *buf, int len); @@ -15,4 +25,5 @@ int recv_decrypt(int sock, char *buf, int len, int flags); unsigned int _i; unsigned long long _a; +int _method; diff --git a/jni/shadowsocks/local.c b/jni/shadowsocks/local.c index 36f22150..d523273b 100644 --- a/jni/shadowsocks/local.c +++ b/jni/shadowsocks/local.c @@ -21,7 +21,6 @@ #include "local.h" #include "socks5.h" -#include "encrypt.h" #include "android.h" #define min(a,b) (((a)<(b))?(a):(b)) @@ -567,12 +566,13 @@ int main (int argc, char **argv) char *port = NULL; char *key = NULL; char* timeout = "10"; + char* method = NULL; int c; int f_flags = 0; opterr = 0; - while ((c = getopt (argc, argv, "fs:p:l:k:t:")) != -1) { + while ((c = getopt (argc, argv, "fs:p:l:k:t:m:")) != -1) { switch (c) { case 's': server = optarg; @@ -592,6 +592,9 @@ int main (int argc, char **argv) case 't': timeout = optarg; break; + case 'm': + method = optarg; + break; } } @@ -600,6 +603,12 @@ int main (int argc, char **argv) exit(EXIT_FAILURE); } + if (method != NULL) { + if (strcmp(method, "rc4") == 0) { + _method = RC4_ENC; + } + } + if (f_flags) { /* Our process ID and Session ID */ @@ -653,7 +662,7 @@ int main (int argc, char **argv) _remote_port = strdup(remote_port); _timeout = atoi(timeout); - LOGD("calculating ciphers"); + LOGD("calculating ciphers %d", _method); get_table(key); int listenfd; diff --git a/jni/shadowsocks/local.h b/jni/shadowsocks/local.h index db8042fc..60a94e6e 100644 --- a/jni/shadowsocks/local.h +++ b/jni/shadowsocks/local.h @@ -2,7 +2,7 @@ #include -#define BUF_SIZE 4096 +#include "encrypt.h" struct listen_ctx { ev_io io; diff --git a/libs/armeabi/shadowsocks b/libs/armeabi/shadowsocks index c7f2e590c62ae0c40b4442a09b3ef87792192678..507b7dff0afcd6c4afb42742db14f273805dba49 100755 GIT binary patch delta 11866 zcmc(FeOQy{+4ptdxd}lL5m6Jkg%Car0*Z=C6>Ws{RuZ+&Qiqmyw4x2l+GuSTt(w$2 z*RIZ@7b;poYMJwE9Tn*820X6ox^DC7lFs$@Ri7??m5>C;I@?eM^8Bs@HTu3gj{ft$ z&wU&}e&>08U*~yVA9uJv`7{5?pZRJf*RWf)b`Gf{gdqY%VhQ0u3!yK};et5B6OuQK z5cyC(R8ocfD&$w~{@u(e=DmcN$8bUDWP~sXD8#Vz#)gXU##&Ijr8$%P2RAC%5o;4q z91uZOvScofJ|vqwDxD2t=wW#|bfawYh{Etx+A2#PGYWZ+ho?d>qg}FO>)HoW*FB(b zdq98f0e#m4dQF(ldOZ-Pvk@M>UoRvr_a~5!2lS60&>auxm*}5_WUiBT;qNyzDk7PS zpqUZLqg2fPLl5gXg)T>G&I74a>FW`btxF$BUGaea>;w9`2lOou=&wDX?}GlGgOF^D zBaSG@e&{b=Cgem&w~`}B_}~&DZ9@f4JI+3}xLR z6d+jtBpyfs#sR4Sq3y%RaU$xBvnD|u320e**fSP##*ofJiam)TB57deOXZM04?G7L z4?GO8-3gl)nE<2%Gk{qDdmaf9DGu>H8%7RgEC4SA3V;~EHi;u+(9?FtXz?}17;PhC zc&&voY;cY->~R@97E$VCj8R@^3@f-8V;l4`#{TMKEJy!0nSkE=7$b!G88dfJ1|w7i z#xSLVaWo;(j1eBOj4{G^#xS9hF{UjthKJRR5qfEi5&l}na78v_L_#iOE9{)d1o$SO zF=DoWF?^|G44dm2i-as-3>z}hM&tABV@`M!`~H*;WHCs_@jz3 zd}{_<$080lumr@dg>e=kn;FCDHpW;?+ZiLqUt>I#ke!SXr`3$}2&rL=1y#!!&OXE# zi>HBcK3v5Zi|iO<1i~rCi1nt)oRy4)qgz-4BIpd`x!9r@Ba+TC))Dd%V?@~}j0@pw z#zlnK8DpWGXN<_Yz!)q4GUNG(0mcZZ>x>a`F2-0$UdC8hzR6Yy*amL01O!nZ<7J2e z#@~nUojErI=iwVM&NrP3U&oEc!-$KI-@F?2=bcv@18q0%$cMt@nlO21n7lnq-h4;4 zqM;3U6v$O!az&V27ABX3$qU0|eVAMjCg+98*%-)NFgY(w&JL5)tYL~6CdY@#(P6R>Cif47xgbpThRN5% z!SluO|?vXip?0soh1>oc_VQLwF#yAz5N4T;8$R{bVDsb&oZ{2zAT>G%{1|K7pZ z2K@GJg>!WAXoFn65hVlurfx3%hlL}Ww4$#);QypMrZ~nR6Iq^2&7}wY4c$L1?Crd; z1DhuBA#fg80c-#)KrXNvhzF8(;22W^|M&A;q z)zY=`^ZEE5+7e&DWz&Dgr;Ido%Z<*`fM4oX!whFETc6SqW5g};U*VCNhG%_) z*enSSq0}?Bc&uUEeN!r-zf`JXI|4-#$r9|#m*(V9&|F)WzAhgV>~}wJd|6-1!ox!Z z*)S5LENXZqMYN@Ie;TH_#0C6c(2)s=BTM_|Nea_c@p}?Ug<0rB3C8hFZj$O*7pXY_ z(=Bte8C<~(mbjTyO6c1OqqCN{|I{fz9+5iSyvS@zy~L?aye8ncxw+J9kAKuTt9aJk zMKz25BOx)xW908cak8Fjbfq3YBt$$q;V;mvI7)BNkmI_0gK)`>hOD$$1ynFl9;zJ^tB*(~h z_p8Mzbc{G!eham=Tj?Zm7I&IfiVvkP3=V%R3M~i@-_Vs;Jl!z;KKD!XkK$zOt}db- z>)=wGEAquD2!Q&5DPn$b{Z#g;jRq-SWJZY`NHXS&U6A;J&tV=#u+?E*Di|fXNt?40AgSLINd;H|+(E};Q1ri(a zwtlKj(pW7n=216HvcbhX`jTsOal9e^zQM0|UBPH7f+f$Pi18xDn)*ndAtkNP$FZo*bFRV4vrp@|mr9`uD zk&GsqM#2)KXpK=Wz9C&JeO=;rCzS6oa=W+aYq2!?^n@Oia^due=Lt)rMk|iASRj!t?hgQlFIak zL_3!UrPrlhoy&r`9DTi$)9`zCz!5WCCB<^FWWh!~>tu%OvEm4EDwYJ3*+BALORy0Y zxE3$kqBoTj?58ta$I5lmp#OTW!Kf`aEV@=|Fl^B$nl|aJnW79M+TP3665p+F7og(G zZ-u0XE~!Nu0#WVaa%bChhD^~Yv1518|6DISwB~(Vupqhy$I5^_X_|eOk)-E}FY6Ul zIQ~lNa2l~!*el;VtcLRy-OdfJ&#peLC_6Cf;BeEy!VJggrUD#52c#p?Nh{8wbR(yM zG0Gq7%)|ziDQ?ma`U_yLFFP~t>Uq$==uEwp-As6B+{SfEri|7&g(>DN~bsdgRs2-R__M=a2Y+)0a`n0VhX?48{4sp6p3zqF^TbI@Pj zV|oMIZ*L&LwxDMqmjP^9=Y#*>4J7;H+e0Jq#{>r=_BelfZy*;TUk2Dfntn>Z(rB#S zZtfV{LsteSinGOBOk>dhIc{xix~Z5h?})&3eeHv|>fRih&k{7jw$jj*P!LlWq#12e zpMIY7mr}LJ3^~m{=%3g_G@Pi$F=M;(qZMs@&p4({c)*Hvy^zOCEPSx zc-t|~I8U-={I!%z`-a$33d*%&G2!w8{`G?`h2J=04fC*hy;f>VDJJf+S5fDU!ds5e zb!^c8O?MQ|TTZl>YS7tV2EOW)FhCZC9|4~LX8}8K4lvI@EA_EGG`NM*i>ZxV0=1^) z{J1*U?kx}fFhkF;?xl(enxqose_(IzOc%WfWJN2<uTPaS|OO1oT#p zCL)5pm32L8T!bb*zS{)vbN4c%oHqT-l=t+DPlxVMU-U`_$td%cdWm+rqow@o@__$G zf!y+S<+2G=D_^M0HLb%A@#kJPkke29>*=8LeINGDGR(#c4x863)O-SQ2fNQS^nEvuDD8GT(U*sh0Wnx$fAD_hs}d3<@-H z%LOBNND5bN!dckpqK%XK#+h)tG`DVRiV!(Wn18 zr|r6)dSi)zfN-YbhLiO#*eKvnz1`cnVl%CuTBsSs=@Qz6wl&GczePs=y(RT*DbYT1 zsZvsC2K>8vC_imijMVdfXD({~B=D!sgD=ziY5DU61TTk+>I>y3IoaO_{KvXosm>)H zF8=(0KcPo14)~LLb`*|q4EWVSO#@BtXm{o!N7FOlUqQ#^rSNdnth_a`&Ti*QqD{EO zmfnE>pqIAfeZf6L>GX7Y56(DYBkh>3;Tu-btJ7=qZh8NP@H4lbP5lFIBF2mJ5jeQRu%fSgS9=kn5bXK48gUV33hzT8xSL!_0q6{zWqnP<3I z+B;Jf&!YmLHOk>z%cV>d*TS&aN5uRDjT`Shqq2rM^pAXH_pOx;WnP8j?e-g;1OAI{ zTAIIR*d8~RtH5L%-1J=j`ttQX^5d^d@@n2U_3rk-`#$XYf$>QL@7w3$eb4mRGF~F@ zEWepXp($$+>*MU*m3AZj_#0es#HyBb1~L_&0lK z{X<`=JMdN!l{MNv;6DQ?8q*ySJcvow2&BE+MVn@6<*^&^qi{L>V%Cf}-gm~$`?hz_ zlXy`Jvvjy=#_am!w7bnD4K))R)=WITHha4K@_PJ4{R5g*FjnAwOIn7mb~h zCa%Eh8so@EFyi?3OZ^io*H$)EUa91KANA5DbIRg|p}@lqmdw@|=d13e9dqXL-+1WY z95rwEQ1#q0PD!`S&E$9D6qx(c;w7-|6kL9?1fI~%I_;{*QFIAoUEHB~FC$R3WyiYjroaTaVn(L<{qo|w_^ztx*>tS$WO z1=WdIyjfMl%sX8q^`MmGoVHjeO->o`|I|g>9#$q-xmfFR@qpx9f}8iH)t&wRxZnuV z9R2=i`mcwJN4a{~IR0)oNJmSzAYY=3bcuZ1b99Zan#UgAuhYO#6>h4TcN81)_AYvE zo-Sr}caxzBFBT(l%6`#B6ACqPi@W)1*>1Ksu@i*%UG1Wa3zY@D4|}(kv-9<`!xO94 zR`Gje!8x&mgU60~CogMF)f$0D)F|=d^`_xX>}J(n^hjX=Kj@{-!nBFJZ#BwR*&Cz} zq*=}*mDeg+H=NJuZFu_1(~~NnuMD+V(nTi~EluFDV-Rh!y=CoVhR2K$>5)zxZ{A=jgZ_#Uw^`Gn>IdDlasJ#f z8J;sZgNZicQompAVdrtbU!?x|2Y6En-Lqf^@AA-u;(Vpu^QTUA3OBpBaCi|nts8rl zu$qvItLU2Ir>vi@B;;MFag~I8djprL)><3^F=BiY=ZMCHxnsmPB^Aly8<+tWH#YELK-6`|$m2X)dmOmULqkmMj zS>jZz#H-3W%OP`xDo@vL7F6$8WOa%B_#)Zf|3rhVxsw)QN|gMwu-0UU@3j^c^N2E0 zNG_7?KWPasV|`Y-S4eg!qApRMTErg`X0Fw>NkW0}u;Pz=4d)DG9Fq7t*@X6@di-p> zQo?`U9pY7?KG`Is%`ipm=MT&F@%4>~T*h_sQsI|6S(>n~K*wh*?Xqm%&SguENlp&K zi;9tyEtVrggKW37SuvwDd0LF1YBm4dqDYIZAAFW$?^@LTh{jp=4qXKB!NKT-a>I$Nxk&ag@^ey2+9mI>qU zb=3Nu>I_((4Xg9@-8xnldjD>8b2k1WtP;0>`nvBhqm7;S)p-$h6nSa#`z?_cGh{z& zm;u{2MyiJ+M(RQ?~y_T_k+SJ^b}L#f*r3k^Av2gndG%yiTb1 zlBbnX@)@eAm_(JZk3SrlHbKYlCyqZj7m6&}B2=fOUs|4(PAIKxY3)$T5NI9nX1n>9 zD&g=wkG`lIZ|3W`9OC$eb7!!sT-9o6k?zbUVt)sk=`cqi{#o6?ggH9lFpGvQmKSwT zqAriRuRG8EySmo@Yvp!Su0v&6PL(}+JR9+M?REe){|hyRoJZ{oze7#yy%EpZh}o{= z>mqWd+IN13s`qMcLCq&oQ=T)%9vNKa^Rb>CT5G{o~*ZU zdH0y9t6txDkcKcCb-@A*Q$u0S_m)o!UXcbLaM`45!&TE*A1g*l0p+V@;i>%8Ys zDo-cDdH-epHA*FK43%2;?~09I_iOW08@YYl;jvG0dEcn`!(XGpXA`FDwkG|0-qynT zDt>>SuEX-Y^whe!8~MY+G!{R{--Sk39HGiUuu6aBm zc9T2GN#2@@3Q82I>7q4{XNz0A@Z(oI{_WASPAXOulc;6IWS5?AW4{VCUw+&-jIVY# ze_H;;CR=J<{9hbIR1$n)bPSG{*fE>$P1hJRX3WGHpKD#oEvoNOV98V zZqR)%9pwkEH_!diGLFAFsd=B}h`=XZYo4{GFml+UD*=x}m(yju(!68)o+#_tEdgs& z(=pox#wVj~eOm+8ld(2igEf?XKFB9*n{6Te6!^H}J==M(Aj5CL+X7Yv*z#(?8VxSl zf%?d=1+#R;YoT=U^?)@Ny7P^IH6EPyvw&48!{rE=>6 z)(g-XGs{(g&qG(%qdbOSi-%yplW>x^EoeXn(o4W>K=z=1!dCWnsDU%!rlu3N%iu=T zyKp3=$G*e(m@OY%i}b$6fb|eK_h=};4b0NbzktsAITo;5YmiWVB9xJTGE~8G8U;?s zYzv!16^}7KG0t|K@kxbE_<*rsI|pV1B)?(hj@i-}pNzBh{hsM3Y^Od#e&l<$#eWFk z6BfjVJyiZ9Fw?#NzyO+lCD_hf2{j;I4Oq1pkoH<=rWP8T?C_~vBu)d29 z8@~#5r2AJWeF2ya_#=P7`YX)Lb(_xGy(0dV)7&eVFuuCjt8^v?id zhq!2njo<|2vyXB`FuoZJeri|(J#k1^gUe`6z0q2RRF=a^ zR{&qvBP;CLj87^pfElQo!4Xp)cslDJ6F!PwpqB&eX;Oy1>}BKY3*b@>Jot$CZ9WXv zaOHnM#xF==qxt_YtL`_)-2ogp*3372$Z^&54{s+&u~4`mM<~#4Xe2=lRtk8+*JSo delta 10020 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 CjjY@N diff --git a/res/values/strings.xml b/res/values/strings.xml index 95702f0c..afead46d 100755 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -61,10 +61,15 @@ Shadowsocks is an open source socks proxy.\n\nYou can find more details here:\ngithub.com/shadowsocks About - Proxy Type - - GAE - PaaS + + Encrypt Method + + Table + RC4 + + + table + rc4 diff --git a/res/xml/shadowsocks_preference.xml b/res/xml/shadowsocks_preference.xml index 9701c28b..3b026e80 100755 --- a/res/xml/shadowsocks_preference.xml +++ b/res/xml/shadowsocks_preference.xml @@ -39,6 +39,14 @@ android:summary="@string/sitekey_summary" android:title="@string/sitekey"> + +