Сейчас на форуме: bartolomeo, asfa, _MBK_ (+7 невидимых)

 eXeL@B —› Вопросы новичков —› action script encode decode
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 1.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 28 ноября 2011 00:54 · Поправил: Gloom31
· Личное сообщение · #1

Всем привет! Помогите доработать функцию .
вот функция Для раскодирования строки:
Code:
  1.  function decode(param1:String) : String
  2.         {
  3.             var _loc_12:* = undefined;
  4.             var _loc_13:* = undefined;
  5.             var _loc_14:String = null;
  6.             var _loc_2:* = new XMLDocument(param1);
  7.             _loc_2.ignoreWhite = true;
  8.             var _loc_3:* = _loc_2.childNodes[1];
  9.             if (_loc_3.nodeName != "main")
  10.             {
  11.                 return null;
  12.             }
  13.             var _loc_4:* = _loc_3.childNodes[1].nodeValue;
  14.             var _loc_5:String = "";
  15.             var _loc_6:String = "asdfghjkl";
  16.             var _loc_7:* = "asdfghjkl".length;
  17.             var _loc_8:Number = 33;
  18.             var _loc_9:Number = 126;
  19.             var _loc_10:Number = 0;
  20.             var _loc_11:* = 0;
  21.             while (_loc_11 < _loc_4.length)
  22.             {
  23.  
  24.                 _loc_12 = _loc_4.charCodeAt(_loc_11);
  25.                 if (_loc_12 >= _loc_8 && _loc_12 <= _loc_9)
  26.                 {
  27.                     _loc_13 = _loc_6.charCodeAt(_loc_10++);
  28.                     if (_loc_10 >= _loc_7)
  29.                     {
  30.                         _loc_10 = 0;
  31.                     }
  32.                     while (_loc_13 < _loc_8 || _loc_13 > _loc_9)
  33.                     {
  34.  
  35.                         _loc_13 = _loc_6.charCodeAt(_loc_10++);
  36.                         if (_loc_10 >= _loc_7)
  37.                         {
  38.                             _loc_10 = 0;
  39.                         }
  40.                     }
  41.                     _loc_12 = _loc_12 - _loc_8;
  42.                     _loc_13 = _loc_13 - _loc_8;
  43.                     if (_loc_13 > _loc_12)
  44.                     {
  45.                         _loc_12 = _loc_12 + (_loc_9 - _loc_8 + 1);
  46.                     }
  47.                     _loc_12 = _loc_12 - _loc_13;
  48.                     _loc_12 = _loc_12 + _loc_8;
  49.                 }
  50.                 if (_loc_12 == 9)
  51.                 {
  52.                     _loc_12 = 8;
  53.                 }
  54.                 else if (_loc_12 == 8)
  55.                 {
  56.                     _loc_12 = 9;
  57.                 }
  58.                 if (_loc_11 == 0 && _loc_12 == 65279)
  59.                 {
  60.                 }
  61.                 else
  62.                 {
  63.                     _loc_14 = String.fromCharCode(_loc_12);
  64.                     _loc_5 = _loc_5 + _loc_14;
  65.                 }
  66.                 _loc_11 = _loc_11 + 1;
  67.             }
  68.                  return _loc_5;
  69.         }// end function


как можно закодировать строку чтоб раскодировалась этой функцией?




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 28 ноября 2011 01:21 · Поправил: PE_Kill
· Личное сообщение · #2

Что такое this._m();? Какая то внутренняя функция?

И вот еще. AC правильно декомпильнулся? Потому что тут:
Gloom31 пишет:
if (_loc_12 == 9)
{
_loc_12 = 8;
}
else if (_loc_12 == 8)
{
_loc_12 = 9;
}
******
_loc_14 = String.fromCharCode(_loc_12);

Я так понимаю нечитабельная строка получится.

-----
Yann Tiersen best and do not fuck




Ранг: 1.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 28 ноября 2011 18:27
· Личное сообщение · #3

this._m() - да, это лишнее. недосмотрел! правильно так
_loc_14 = String.fromCharCode(_loc_12);
_loc_5 = _loc_5 + _loc_14;
}
_loc_11 = _loc_11 + 1;
}

return _loc_5;
А насчёт остального - сам понять не могу! ерунда какая-то... но всё прекрасно работает(в смысле расшифровывает) а вот как её в обратном порядке зашифровать не пойму никак..



Ранг: 78.7 (постоянный), 43thx
Активность: 0.070
Статус: Участник

Создано: 28 ноября 2011 18:41
· Личное сообщение · #4

Gloom31 пишет:
А насчёт остального - сам понять не могу!

Пробуй пошагово в Обратном порядке двигаться ! Если Алго обратимый, то Развернуть возможно.



Ранг: 1.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 28 ноября 2011 18:52
· Личное сообщение · #5

Я не очень понимаю action.. функцию выдернул из флешки а функция encode в проге exe..



Ранг: 1.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 28 ноября 2011 19:23 · Поправил: Gloom31
· Личное сообщение · #6

Чёт не представляю с чего начать(((
вот допустим
fromCharCode(_loc_12);
это для раскодирования. а для закодирования тоже этой-же функцией?
и это
_loc_2.ignoreWhite = true;
зачем тут?




Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 28 ноября 2011 20:05
· Личное сообщение · #7

Code:
  1. function decode(param1:String) : String
  2.  {
  3.         var _charX:* = undefined;
  4.         var _charY:* = undefined;
  5.         var buffer:String = null;
  6.         var _loc_2:* = new XMLDocument(param1);
  7.         _loc_2.ignoreWhite = true;
  8.         var _loc_3:* = _loc_2.childNodes[1];
  9.         if (_loc_3.nodeName != "main") {
  10.                 return null;
  11.         }
  12.         var instr:* = _loc_3.childNodes[1].nodeValue;
  13.         var outstr:String = "";
  14.         var xxstr:String = "asdfghjkl";
  15.         var xxlen:* = "asdfghjkl".length;
  16.         var lowLimit:Number = 0x21;
  17.         var highLimit:Number = 126;
  18.         var xxidx:Number = 0;
  19.         var idx:* = 0;
  20.         // цикл по всем символам входной строки
  21.         while(idx < instr.length) {
  22.                 // берем очередной символ
  23.                 _charX = instr.charCodeAt(idx);
  24.                 // если он в диапазоне
  25.                 if (_charX >= lowLimit && _charX <= highLimit) {
  26.                         // берем очередной (циклически) символ из "asdfghjkl"
  27.                         _charY = xxstr.charCodeAt(xxidx++);
  28.                         // зацикливание строки "asdfghjkl"
  29.                         if (xxidx >= xxlen) {
  30.                                 xxidx = 0;
  31.                         }
  32.                         // если выбраный символ не подходит
  33.                         while (_charY < lowLimit || _charY > highLimit) {
  34.                                 // выбираем пока не найдем подходящий
  35.                                 _charY = xxstr.charCodeAt(xxidx++);
  36.                                 if (xxidx >= xxlen) {
  37.                                         xxidx = 0;
  38.                                 }
  39.                         }
  40.                         // приводим оба символа к новой базе
  41.                         _charX -= lowLimit;
  42.                         _charY -= lowLimit;
  43.                         if (_charY > _charX) {
  44.                                 _charX += (highLimit - lowLimit + 1);
  45.                         }
  46.                         _charX += (lowLimit - _charY);
  47.                 }
  48.                 // обмен 8<-->9
  49.                 if (_charX == 9) {
  50.                         _charX = 8;
  51.                 } else if (_charX == 8) {
  52.                         _charX = 9;
  53.                 }
  54.                 if (idx == 0 && _charX == 65279) {
  55.                 } else {
  56.                         buffer = String.fromCharCode(_charX);
  57.                         outstr += buffer;
  58.                 }
  59.                 idx += 1;
  60.         }
  61.         return outstr;
  62.  }// end function


Gloom31 пишет:
_loc_2.ignoreWhite = true; зачем тут?

Это свойство объекта для разбора XML. К декодированию отношения не имеет.

-----
127.0.0.1, sweet 127.0.0.1


| Сообщение посчитали полезным: Gloom31

Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 28 ноября 2011 20:19 · Поправил: Clerk
· Личное сообщение · #8

> (_loc_13 < _loc_8 || _loc_13 > _loc_9)

Хороший, годный декомпилятор

И вы хотите чтобы я тратил своё драгоценное вемя на разбор сего дерьма.. тс даже не соизволил отредактировать текст. В биореатор его



Ранг: 1.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 28 ноября 2011 20:41
· Личное сообщение · #9

OKOB, Спасибо Огромное!!! сейчас в флешку скомпаную и сюда выложу!
Clerk, Серьёзно работает!!! вот эту муру
Code:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <main data_type="Q-ImageUploader">
  3.  <![CDATA[&cf]IDF/d kpS6lv8s2_DV,(_<UEGJ=e WZdPh:\CAOY?_RDdjyquf1
  4. &U[_?UC6 `XdHlQIPUY^H d7?^1JMQLK IL[X[_IcM:X$LiLC9VO YLScVOjVd MW=f lgO@2ZPVP- L];E^ 9Y HLX,GSMYi mBSX3'g`&qV 1OSLOZ0j"+!Z YK/i4wW9FcI[i hLT>s^H=MGY3"g{+xv OXIB,VD>H?0R^"gw&xn lZ?Z$9jOGRDlvwvi hLT>s^H?4RXfey{u LeGcV:V);n;&8]'euf VY\jcIO$9jPGRDlvuh KSFZ.E^ETH&T7TY%uwn}5*o0-L XD94Q\T\TW3[WX?~b3_X^H0FfSWJVHa&7PDGqELWLPNu OeGc2,WLgv$H2KVe MUa^1e]IU}J"o't__-vh OaQcx<i5#druK ZYTIXKI[S,N$LkSB8KNqWNcj ch])Q7:^fXG$FYJM\e~oG Ha<5R8U7THL;J_E,d@ZS;WG5/KSQsV[Zn kcF8R.Sk\)=2iO8US\T9noP ZLXR-+PTa,eE^VfjuD8(vl,/e [NhWP<ZFO#6b_X~Qf&g \QgPQgBa4KV&T7TY%uwng"rY!vL jKK6L,TYJX\B^Z=NP/ej4c`Q jO]VT%^97TB'PSM,"g{%i dBPQ:NF8WJ;5x'eL^TW^bVfFQ7r e`D>@ZFTJYH[Vno5^EPU7JsKdVv GXE8YK+bD=.Vz"gKkK[f]?oE9_w kKF>X*WUaU>=8akfr[+Y+u.%i jAdQ-9]1h$B9RK"gu#xn jYOPDjai[HCreSW[AYT9no^^rtsYzvh iQkFQ&:\K1h7>2MUSLYf9d[cucqJ f_lP3qeYLNd$[7;P}\IU"Ktuvu ]^N\FlYS;h6;5OMYLJ0j|n7h)pn"w kKF>X:MUWFc,70<VLD"Ktuvu ]^N\FkYY0[Uw8VYW:K_OQjV>~bXj'*q_f'g \QgPQgBa4KV7M4HRVZ\i,TP0M[1Z~VXj ^M\SU,]hU?U#6b_X66=[J\NV~oVa}P JIWF4Q9Wl1[BVL?'g\&c :.^KNSY9SZb4IOQ</w'[qt8,*.r GT;4X<Y*LQ7&SX]J3Y&rK NL@WLB<,YWKKe-]b`L~bXj'*q_f'g LNfDX3F1?XHHW}MPK`W[Lb!Kyg 0[W72V]'VXWO`7]JKCer,'c 56jHQUe&^3Ba}\IU"Ks_-6.7|0d /O[-_OIv`OW(RcRO3qiqpJ V\kD:=i)W[VHahB[?X3YJ="gvmw)g}yZj K1jD?5],TYJX\B^Z=NP/ejFY6C3gwi VHc(<[C(SUI0W(TeQW(eI='g[&qV -O^FPRf-]b`L6G6WZkH5lvu`.3(0jro 4KXDN7X:MaNYMTHjVW4W~VXxxe KKgKWbdzRT.Wi:R=@h:MUWFc,7,Pt\qvYs|wu M[MPM7]);hG;;>RNJQaOaiD?OG-f\[~Q`v KM]SL[:s^BJIU&7UOIHNb>RX0N$L'qdI L^S-O_V1e]IU}J"o't__-vh KfQ50?[oRTKFfevv%i XM]&:\K1h&E5Y"gtkx!&!orb ,fe9RC5[Y)UbKPbS~^td EY9(VZcNhtos]j I@d2L.\0NSR6YZecucpB"*'qf`v I\WAYT9wX<R%OU3F$h,|v ;cRx`L>8RH-O\(VRb\+v!Rq$X+,)c 3Ed6^Nd%^97TB'PSM,"gw%wv KXK3^F/bL94I^J_Z0jn hZAKV)Uc`F<0kYT&rc b/Bf/WYDI=TSIcMUEXR6'g@hX;I ^RZTHFR]m9CQV=/w]D=D[g J]`)^5G2?RSU"Ks_.;/<}5d -^UpeQJzSdJ$f${n kd?$P9f_\Uu?j*WUaU56E2?SFR&9I0Ve^jtoJ,VZ1v ID=-YQVX9Y`9`GEQi`[@QAFj$hwjq}Ua}^fq!
  5. !XZWTdJZ>a"]]>
  6. </main>

ей перевёл!



Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 28 ноября 2011 20:46 · Поправил: Clerk
· Личное сообщение · #10

Gloom31

Разбирайтесь сами с кодом, очень маловероятно что ктото захочет в этом дерьме копаться. Если не хотите сами - это не проблема, платите деньги и ребята решат вашу проблему оперативно.

Человеку можно помочь если он сам хочет чтото знать. Иначе деньги, деньги и есчо раз деньги давай.




Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 28 ноября 2011 21:23
· Личное сообщение · #11

Gloom31 пишет:
сейчас в флешку скомпаную и сюда выложу!


Это не обращенная функция, это причесаная твоя.

-----
127.0.0.1, sweet 127.0.0.1




Ранг: 1.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 28 ноября 2011 21:51
· Личное сообщение · #12

OKOB Гг Уже понял...



Ранг: 1.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 28 ноября 2011 22:50
· Личное сообщение · #13

Clerk пишет:
Иначе деньги, деньги и есчо раз деньги давай.

И сколько примерно?



Ранг: 30.0 (посетитель), 4thx
Активность: 0.030.01
Статус: Участник

Создано: 29 ноября 2011 00:10
· Личное сообщение · #14

Code:
  1.                         // приводим оба символа к новой базе
  2.                         _charX -= lowLimit;
  3.                         _charY -= lowLimit;
  4.                         if (_charY > _charX) {
  5.                                 _charX += (highLimit - lowLimit + 1);
  6.                         }
  7.                         _charX += (lowLimit - _charY);


Сюда внимание обрати



Ранг: 1.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 29 ноября 2011 00:41 · Поправил: Gloom31
· Личное сообщение · #15

punxer
Да я понял что тут вот только всяко перепробовал а обратно не расшифровывает



Ранг: 30.0 (посетитель), 4thx
Активность: 0.030.01
Статус: Участник

Создано: 29 ноября 2011 00:53
· Личное сообщение · #16

Gloom31
Что пробовал?




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 29 ноября 2011 06:12
· Личное сообщение · #17

Gloom31 выложи тестовые данные. Строка до шифрования, строка после.

-----
Yann Tiersen best and do not fuck




Ранг: 1.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 29 ноября 2011 19:38
· Личное сообщение · #18

punxer пишет:
Что пробовал?

Вот так
Code:
  1. _charX += lowLimit;
  2. _charY += lowLimit;
  3.                         if (_charY > _charX) {
  4.                                 _charX += (highLimit + lowLimit - 1);
  5.                         }
  6.                         _charX += (lowLimit + _charY);
наилучший результат. а в остальных случаях вообще крякозябры получаются(((



Ранг: 1.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 29 ноября 2011 19:39 · Поправил: Gloom31
· Личное сообщение · #19

PE_Kill пишет:
выложи тестовые данные. Строка до шифрования, строка после.

Вот Собрал флешку
-->crack.swf <--
а вот нормально закодированная строка
Code:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <main data_type="Q-ImageUploader">
  3. <![CDATA[&cf]IDF/d kpS6lv8s2_DV,(_<UEGJ=e WZdPh:\CAOY?_RDdjyquf1
  4. &U[_?UC6 `XdHlQFOW]a Vc6EP7K WHWANJM (i Z>bG=SW@_RDdjZMVZb ]bec;JG =WimL461 J]\fR\ *B]DXSOXd SV Qc]hHo [4N[43cj\xj MLOZRb3qmqpJ h`\ZlQjO]VTVo =<TG(S[<4I[P2i*i~d ASLC8RNoOSLOZ0j"'#Z YK/i9f[)!eZ%i#zo =<TG(S[>yTZ%u}(Y RS9^Y;b%EAB:TZ#sxn Y`HWT9^9f[*!eZ%i"c Q(6Z7XSXS/(VTd[3Y}\k}(k/wV +KMPNXb_\Z:GDI//w`P28[F]Y^RP+8a/JEWFXGNt_Y]Y US9^5-cHqI@OWKGaKn \`HW%9^fi~Q_nx)z%s%G 9^>Z7L_0"gw&i jAdQ-=O;m+?7^]"gLTVa[q NKW7T=`O=reSW[/c}?w5t,*)e ?M\UW/_E[%7ZO-3ceWxj YO[`L0ec>HTkacfUlQ&_y*%t![S c8[QE':WKMg=^BRO9OZ?3ceI ^RZTH5Y`ZVL$N:ZX4cc_v UQJ_RS&?P7KPq"K^Hs^uhNo R4KT;ZBB*QOQv#sWOn|<HU>~ilc ?:WTWMQOP.8[`#dVqDFrQ#[kY cL@WImeOE;9`JY#sxf<#~q'jr k_X>3E]M[3O_/4,Purqe ?M\UW+eKSI=-V8eU%?O"gtk{/)$jwb >ZldEq@hKM[FKX*>]5YW2[0W$h'i jAdQ-,V>ZHHhVZMH5iO`3qlqb >ZldEr@bVZ<WOT*GT4#dq]ou-v:+v MWY8L:1bH9=ON&SV[K+v"hqb >ZldEq@hKM[5R[6EB5RIFY0I$h%a)x"u[~g @^XC+,YWKKe>V_TEQG=eJ\O64jLL&rso ;;d=H&RW/JY)aY^:BI7OJ@[GqIyxsg JX^O_],RYpW`^KElvwvi VHc(<[C,MOQlTSWg&vgg*o0-p<c :.^KNSY9SZb2FSJ+/w(q_Q ZL\J[ObgBa4KV&T7TY%uwnj0u\z{L ZHJ*SVX)UeNShEBLE5`\jVlQ'g LNfDX3F1?XHHWjQWPV&vk}d /O[-_OIjYVTY5iO`3qh[(Z8'<%Q 5[[IR^V>=8aoRTKFfevv%i Z>cE4VZleU:.\-TSUe9d[cucpB%8*taev KM]SL[:s^BJIU93NJScNiL>Z0\$L'c :.^KNSY5Y`ZVL$N:ZXFY6C3gww"c S,GP9RW&T7TY;ZU[<cI/'gZn)fmx/'g JX^O_]M6G6WZkH5pbWPJ/c~Uao 4KXDN7X)WgM[K2S7YY}[O;,^OI$f#b!7$ksvJ V\kD:=i)W[VHay;X3QRHX>8LTZLj>S!Kyg 0[W72V]'VXWO`7]JKC{Wc\FE6Z$hx"qo )G]tOPO(:QVZ2i&Q({a/|cv EJ70SQS'_ZVW.ZrpXr YkQq@hKM[5R[6E,Pt\t&\vw|u KjG1S=NL>7OF1K'evt#j Pj_{RT8Wi4c`cv I\W8R];t^<UV~eY]x)(z(mo F?X-;dW)2dO"gu$j Pj_)YG<8`cOr@bVZ&rqggf0o}xc G?S6^Z[<B[PjVW4W~VXxxe IZa9d[czRT.Wi:R=@h$hwjx#[t$sf FWSx[LZ7Xh=TVjVW4W~VXxxe YOZRbUTFLE5Qk\[Elvg ZRYKc&6[9IOBZ=Q$hu \^HfC<_H0hRB*XNDSOaU+veLXGJ gj\$?@jOM[8QchB[?X*RWlTTJd*d=8R;_[gvI75]Oe MTg-]b`L)Q<5fdE@pdK1WbXcbS}HtrqsYsg McJXET'=YW~eRBdj^W\Ks K^f]S&T9b@ZR?lvPUJYHN<C[?GHHW*IH\VvWI_PDIJ>eSb9XQe JGaMSb4LRRqUfe~Q:cHONQX_3BP4KVBI,YHuXJd<TP*MY;foF7Qj RPT6\]fHCGV2/w(q_Q cPV,dR_m8X7NX~eZsuh bHkLTC=OH8USH8Q\JZYRLOh.ZWT?Ww&!
  5. k^kWTXSGT9o]]>
  6. </main>
  7.  




Ранг: 1.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 29 ноября 2011 19:51 · Поправил: Gloom31
· Личное сообщение · #20

А это код этой флешки
Code:
  1.  
  2. buton_3.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler_3);
  3.  
  4. function fl_MouseClickHandler_3(event:MouseEvent):void
  5. {
  6.          cod_1.text = '';
  7.          cod_2.text = '';
  8.          cod_3.text = '';
  9.          trace("Готово");
  10.          // Конец пользовательского кода
  11. }
  12.  
  13. buton_1.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);
  14.  
  15.  
  16. function fl_MouseClickHandler(event:MouseEvent):void
  17. {
  18.          import flash.xml.*;
  19.          // Начало пользовательского кода
  20.          var param1:String = cod_1.text;
  21.          var _charX:* = undefined;
  22.          var _charY:* = undefined;
  23.          var buffer:String = null;
  24.          var _loc_2:* = new XMLDocument(param1);
  25.          _loc_2.ignoreWhite = true;
  26.          var _loc_3:* = _loc_2.childNodes[1];
  27.          if (_loc_3.nodeName != "main")
  28.          {
  29.                  trace(_loc_3.nodeName);
  30.          }
  31.          var instr:* = _loc_3.childNodes[1].nodeValue;
  32.          var outstr:String = "";
  33.          var xxstr:String = "imupYbaIqvvbPPufghqbnFRnOecbdJdfgthuXncJifKubUHiidfer";
  34.          var xxlen:* = "imupYbaIqvvbPPufghqbnFRnOecbdJdfgthuXncJifKubUHiidfer".length;
  35.          var lowLimit:Number = 0x21;
  36.          var highLimit:Number = 126;
  37.          var xxidx:Number = 0;
  38.          var idx:* = 0;
  39.          // цикл по всем символам входной строки
  40.          while (idx < instr.length)
  41.          {
  42.                  // берем очередной символ
  43.                  _charX = instr.charCodeAt(idx);
  44.                  // если он в диапазоне
  45.                  if (_charX >= lowLimit && _charX <= highLimit)
  46.                  {
  47.                         // берем очередной (циклически) символ из "asdfghjkl"
  48.                         _charY = xxstr.charCodeAt(xxidx++);
  49.                         // зацикливание строки "asdfghjkl"
  50.                         if (xxidx >= xxlen)
  51.                         {
  52.                               xxidx = 0;
  53.                         }
  54.                         // если выбраный символ не подходит
  55.                         while (_charY < lowLimit || _charY > highLimit)
  56.                         {
  57.                               // выбираем пока не найдем подходящий
  58.                               _charY = xxstr.charCodeAt(xxidx++);
  59.                               if (xxidx >= xxlen)
  60.                               {
  61.                                    xxidx = 0;
  62.                               }
  63.                         }
  64.                         // приводим оба символа к новой базе
  65.                         _charX -=  lowLimit;
  66.                         _charY -=  lowLimit;
  67.                         if (_charY > _charX)
  68.                         {
  69.                               _charX += (highLimit - lowLimit + 1);
  70.                         }
  71.                         _charX += (lowLimit - _charY);
  72.  
  73.                  }
  74.                  // обмен 8<-->9
  75.                  if (_charX == 9)
  76.                  {
  77.                         _charX = 8;
  78.                  }
  79.                  else if (_charX == 8)
  80.                  {
  81.                         _charX = 9;
  82.                  }
  83.                  if (idx == 0 && _charX == 65279)
  84.                  {
  85.                  }
  86.                  else
  87.                  {
  88.                         buffer = String.fromCharCode(_charX);
  89.                         outstr +=  buffer;
  90.                  }
  91.                  idx +=  1;
  92.          }
  93.          cod_2.text = outstr;
  94.          trace("Готово");
  95.          // Конец пользовательского кода
  96. }
  97.  
  98.  
  99.  
  100. buton_2.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler_2);
  101.  
  102. function fl_MouseClickHandler_2(event:MouseEvent):void
  103. {
  104.          var _charX:* = undefined;
  105.          var _charY:* = undefined;
  106.          var buffer:String = null;
  107.          var instr:* = cod_2.text;
  108.          var outstr:String = "";
  109.          var xxstr:String = "imupYbaIqvvbPPufghqbnFRnOecbdJdfgthuXncJifKubUHiidfer";
  110.          var xxlen:* = "imupYbaIqvvbPPufghqbnFRnOecbdJdfgthuXncJifKubUHiidfer".length;
  111.          var lowLimit:Number = 0x21;
  112.          var highLimit:Number = 126;
  113.          var xxidx:Number = 0;
  114.          var idx:* = 0;
  115.          // цикл по всем символам входной строки
  116.          while (idx < instr.length)
  117.          {
  118.                  // берем очередной символ
  119.                  _charX = instr.charCodeAt(idx);
  120.                  // если он в диапазоне
  121.                  if (_charX >= lowLimit && _charX <= highLimit)
  122.                  {
  123.                         // берем очередной (циклически) символ из "asdfghjkl"
  124.                         _charY = xxstr.charCodeAt(xxidx++);
  125.                         // зацикливание строки "asdfghjkl"
  126.                         if (xxidx >= xxlen)
  127.                         {
  128.                               xxidx = 0;
  129.                         }
  130.                         // если выбраный символ не подходит
  131.                         while (_charY < lowLimit || _charY > highLimit)
  132.                         {
  133.                               // выбираем пока не найдем подходящий
  134.                               _charY = xxstr.charCodeAt(xxidx++);
  135.                               if (xxidx >= xxlen)
  136.                               {
  137.                                    xxidx = 0;
  138.                               }
  139.                         }
  140.                         // приводим оба символа к новой базе
  141.                         _charX +=  lowLimit;
  142.                         _charY +=  lowLimit;
  143.                         if (_charY > _charX)
  144.                         {
  145.                               _charX += (highLimit + lowLimit - 1);
  146.                         }
  147.                         _charX += (lowLimit + _charY);
  148.                  }
  149.                  // обмен 8<-->9
  150.                  if (_charX == 9)
  151.                  {
  152.                         _charX = 8;
  153.                  }
  154.                  else if (_charX == 8)
  155.                  {
  156.                         _charX = 9;
  157.                  }
  158.                  if (idx == 0 && _charX == 65279)
  159.                  {
  160.                  }
  161.                  else
  162.                  {
  163.                         buffer = String.fromCharCode(_charX);
  164.                         outstr +=  buffer;
  165.                  }
  166.                  idx +=  1;
  167.          }
  168.          var starts:String = '<?xml version="1.0" encoding="UTF-8"?><main data_type="Q-ImageUploader"><![CDATA[';
  169.          var end:String = "]]></main>";
  170.          cod_3.text = starts + outstr + end;
  171.          trace("Готово");
  172.          // Конец пользовательского кода
  173. }




Ранг: 1.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 29 ноября 2011 20:12
· Личное сообщение · #21

в принципе вот так ведь должно работать?
// приводим оба символа к новой базе
_charX += lowLimit;
_charY += lowLimit;
if (_charY > _charX)
{
_charX -= (highLimit - lowLimit + 1);
}
_charX -= (lowLimit - _charY);



Ранг: 30.0 (посетитель), 4thx
Активность: 0.030.01
Статус: Участник

Создано: 29 ноября 2011 20:27 · Поправил: punxer
· Личное сообщение · #22

Code:
  1.                       _charX +=  lowLimit;
  2.                         _charY +=  lowLimit;
  3.                         if (_charY > _charX)
  4.                         {
  5.                               _charX += (highLimit + lowLimit - 1);
  6.                         }
  7.                         _charX += (lowLimit + _charY);

может быть навскидку щас. UPDATED

А вообще это можно отлаживать?
Потрассируйте



Ранг: 1.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 29 ноября 2011 21:16
· Личное сообщение · #23

punxer пишет:
А вообще это можно отлаживать?Потрассируйте

Да. можно. но ошибок не показывает. функция работает только кодирует уже совсем по другому...



Ранг: 30.0 (посетитель), 4thx
Активность: 0.030.01
Статус: Участник

Создано: 29 ноября 2011 21:47
· Личное сообщение · #24

Gloom31
Так и смотрите что за символы получаются.
Причем тут ошибки. Я говорю об отладке алгоритма, а не дабы код работал



Ранг: 1.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 29 ноября 2011 22:01 · Поправил: Gloom31
· Личное сообщение · #25

Если
Code:
  1.                       _charX+=  lowLimit;
  2.                         _charY +=  lowLimit;
  3.                         if (_charY <  _charX)
  4.                         {
  5.                               _charX -= (highLimit - lowLimit + 1);
  6.                         }
  7.                         _charX -= (lowLimit - _charY);




Закодированная строка:
38!99!102!93!73!68!70!47!100!32!107!112!83!54!108!118!56!....
Раскодированная:
60!117!112!108!111!97!100!101!114!116!121!112!101!61!62!...
===============================

Идём обратно:
60!117!112!108!111!97!100!101!114!116!121!112!101!61!34!.....
Выход:
198!165!262!253!139!228!136!113!166!32!267!178!149!120!...

Интересная разница
198-38=160
165-99=66
262-102=160.....



Ранг: 1.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 29 ноября 2011 22:07 · Поправил: Gloom31
· Личное сообщение · #26


 _charX +=  lowLimit;    
 _charY +=  lowLimit;                        
if (_charY > _charX)                        
{                            
  _charX += (highLimit + lowLimit - 1);                       
 }                     
   _charX += (lowLimit + _charY);


может быть навскидку щас. UPDATED

Так на выходе
422!325!486!477!299!452!296!273!326!32!491!338!309!280!398!408!440!405!434!479!452!470!270!




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 29 ноября 2011 23:05
· Личное сообщение · #27

Пользуйся кнопкой "Правка", не создавай сообщения подряд.




Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 30 ноября 2011 12:05
· Личное сообщение · #28

На входе упростить до
Code:
  1. if(_charY > _charX)
  2.     _charX += 94; // ('~' - '!' + 1);
  3. _charX -= (_charY - '!');


и обратить (перевернуть)

Code:
  1. _charX += (_charY - '!');
  2. if((unsigned char)_charX > (unsigned char)'~')
  3.   _charX -= 94; // ('~' - '!' + 1);




6cb2_30.11.2011_EXELAB.rU.tgz - decode.rar

-----
127.0.0.1, sweet 127.0.0.1


| Сообщение посчитали полезным: Gloom31

Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 30 ноября 2011 19:25
· Личное сообщение · #29

OKOB
Хороший годный скрипт. Вот тока букоф многа слишком для анализа



Ранг: 1.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 30 ноября 2011 22:24 · Поправил: Gloom31
· Личное сообщение · #30

Всем Спасибо за помощь!
Разобрался вроде


. 1 . 2 . >>
 eXeL@B —› Вопросы новичков —› action script encode decode
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати