ДействиеСценарий / Говнокод #7087 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
private function formatResponse( map:Dictionary ):String
		{
// В этой функции было больше строчек, я оставил только те, где используется map
			ha1_1.writeUTFBytes( map.username + ":" + map.realm + ":" + password );
			ha1_2.writeUTFBytes( ":" + map.nonce + ":" + map.cnonce );
			ha2.writeUTFBytes( "AUTHENTICATE:" + map[ "digest-uri" ] );
			b.writeUTFBytes( sha1 + ":" + map.nonce + ":" + map.nc + ":" + map.cnonce + ":" + map.qop + ":" + sha2 );
			return Hex.fromArray( b );
		}

		override public function handleChallenge( stage:int, challenge:XML ):XML
		{
			var decodedChallenge:String = Base64.decode( challenge );
			var challengeKeyValuePairs:Array = decodedChallenge.replace( /\"/g, "").split( "," );
			var challengeMap:Dictionary = new Dictionary();
			for each( var keyValuePair:String in challengeKeyValuePairs )
			{
				var keyValue:Array = keyValuePair.split( "=" );
				challengeMap[ keyValue[ 0 ] ] = keyValue[ 1 ];
			}

			var resp:XML = new XML( response );
			resp.setNamespace( DigestMD5.NS );

			if( !challengeMap.rspauth )
			{
				var responseMap:Dictionary = new Dictionary();
				responseMap.username = connection.username;
				responseMap.realm = challengeMap.realm ? challengeMap.realm : "";
				responseMap.nonce = challengeMap.nonce;
				responseMap.cnonce = new Date().time;
				responseMap.nc = "00000001";
				responseMap.qop = challengeMap.qop ? challengeMap.qop : "auth";
				responseMap[ "digest-uri" ] = "xmpp/" + ( challengeMap.realm ? challengeMap.realm : connection.domain );
				responseMap.charset = challengeMap.charset;
				responseMap.response = formatResponse( responseMap );

				var challengeResponse:String = "username=\"" + responseMap.username + "\"";
				if( challengeMap.realm ) challengeResponse += ",realm=\"" + responseMap.realm + "\"";
				challengeResponse += ",nonce=\"" + responseMap.nonce + "\"";
				challengeResponse += ",cnonce=\"" + responseMap.cnonce + "\"";
				challengeResponse += ",nc=" + responseMap.nc;
				challengeResponse += ",qop=" + responseMap.qop;
				challengeResponse += ",digest-uri=\"" + responseMap[ "digest-uri" ] + "\"";
				challengeResponse += ",response=" + responseMap.response;
				challengeResponse += ",charset=" + responseMap.charset;
				challengeResponse = Base64.encode( challengeResponse );

				resp.setChildren( challengeResponse );
			}

			return resp;
		}

Тут довольно много читать, но если вы не побоитесь и все же осилите, то откроете для себя еще один уголок прекрасного. Часть кода из первой функции вырезана т.как приниципиального значения не имела. Код явно переписан с чего-то похожего на Java человеком который ни разу не открыл маны по AS3.
Целиком обозреть бессмертное творение можно тут: http://fisheye.igniterealtime.org/browse/~raw,r=12385/sparkweb/trunk/SparkWeb2/src/org/igniterealtime/xiff/auth/DigestMD5.as

Запостил: wvxvw wvxvw, (Updated )

Комментарии (5) RSS

  • >вы не побоитесь и все же осилите, то откроете для себя еще один уголок прекрасного
    Govno же
    Ответить
  • г,J)W:D(H)E.I(T)TH!Y?I!J:K:ET?ZR!K:OP)P.G(T)D G.K!C.Y?R"E"I,A!I J"K,N)M?P)M N?X(K$X,W!N"E?U(K$H?I$S"E$B K:S(V(L:E$E!KO:S"S!EMP!Z O.Y"W!C,Y V!U K)N$X,A.O.B,REH?H?Z N,W.Y$V"E?R,N$U$Q!Y?H(I JI.G$T"K(V!F.W)A!G:O)C?W KY:P:B.FI(H E"B$M,V$N.GW!C,Z.I)O G$D:I:P"A.S(C.C.N V"Z!F!I$T,M(U.C"R,K H!E.S"N S:L?U)R.D?I,D G(U.L.V.P,J?ZM,U$T.Z:V,I:G(S"H?E:P Q.JY)B$V!J:A,Y U?J"W:I)D.L:I)Y"A:I,T$K?SH,DF!N?V O"P)B!LJ!V)E!ER"C)Q)N)W"O:T)JS N$H!P.X"E)Z B)D,O"L!Z)NJ:Y?G"H,M(ZM"W?P?B"N V(J?H:SF:O!O M"J.I?L!W!E)Z,U)N U.C)H,L.T$B)R)A.Z Y?RI:L"B$C"A,F"O)O R.B)G:N P.J.C!C,R(O(TQ$P M"HB?Y.LI)G)PC?I,V Q$W)Q:E.Q"W:HB?O,J$JY?X:R!GI?L(V"R$P)E F,KQ:G(K.I P(N?F!T(T"I?D$O,Z:D:T,M(YB R!J:J(G$G"Y!IG:N E"Y T,W Q!J"F(P?A)T?P:M$R M,AV(P"Y M.D"M,S)YY,V?P"G(H?C.WZ)V D:B)I.M,V:P(N,T(M!L"L!C$U$H?W!S H Z,Q.L,N(X$Z(A"B,U$G"U,C E W?Y.SR:Q?I$E?E:S.K,N X(H.G B!H,M,W(WL.Y:W.T"C S:Y:R!S:AV!N"N?O!B,C$H$Z"I(MU:G:V(N(G$GM:C!S?M,C(Z)CN"U)S.B X!E$D)M"W?V)Z$Q$T!ZN!M.YНCWSMGNFJQJIZRGMTNIKZJITYTOXFYNUPOM
    Ответить
  • ь)ZP T:W O"RB$K,P!G(R,F M!I W?F?I"H.N"P)Y?V!P?Q(V(P:R:FI$E T(C"R,A?Q.S!R"I.N?L O:HY!IV)X RE?R!Z$J!Z"H$Y.S$G,T.J"Z Y(A YT Q$T$O,U:P!A:R:R,Z.Q?RH B.Z:N.B?JQ(O,Y$L,H?H!T!R"Z?Y:VA"C"R)L$DE(T F:Y.N:D!J)T)E.Z?U H Q$C.O$W,V!G:N:W.K W.P M A!E)JJ)L,F$P!N$H"I C,F"O(H(D)N)K)J"D!ND"P)U,F(P,T BF M)J.F,W$GM?I,B:L)B"MD V,Z$J!W)H"N(Z?B!P,T(Q.PVO!X)Z,Y!Z X(Y?C$K?DK)D Y.FN$E,H!YJ?K:NI:E R?FJ,X:L!PA$D!B!W:K:W.U:F.JH)M.M(X$N C?R?P U.W!T(K$S"T:O!Y:W?Y"SMA,F?I,C D"U:V?G?M"T?E:V(Y!R)N.F.N H)J$I:D(Z,GO!Y!D"G.N:N"U"U:N:R!A T K$W)V(D)J(D(Q:N.S Y.D(Y C(C.X:Q)J"Z JS!C?Q)U)W"P)B!Q CV.A!E"D(F GM"W"V$N)T"N$YC.K(EQC$GB,R V"K)I?Y.Y.LS(C)R(F"P,U N(C.S!Q$S G.B.U"O V$X:X U)N.J O.X(P)H(I Q.F!X:M"Z?UH"QO?WJ)Y?I(DL"YH"H"Y!TJ!S?K)F G(W"K"C!V,S.C"S:Y"Q,W:F:O AA"X W.L!N!A!V,B"N)B:P!V GO$K"H?P:LY:G VV"V"G)C)Y.DS O W?V$B!R?Q,L!D C?S.Y)I E:O:A(O L.W)Y?W,D)D)Q!P Z?D?D?X$I:S?WP$OB:F)K.W!L"B"SH Q"X:KV?U$U)T"A!ZE,V$R)A GJ?X?X$F,H$X)O.E:G!C:J I!PG$J$P(B(Y:G$L,X,P,T(I$M)W.Q,Y)T"S P?G.X"Z.U?N?PK(I,C$X!W)Z.E:F C(C!A.L"SW(Q P,A!C.DS!G!W J?H,K$F:I$M.DUEТQHTPNZJOTAGHWZAMIGWAOWFVXGOHPKMPEQJEKGBAAZBG
    Ответить
  • Мать неодобрительно посмотрев на мои покрасневшие было глаза спросила:
    Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8