請問關于對ASP語言加密/解密問題(急)﹐100分(100分)

  • 主题发起人 主题发起人 rehappy
  • 开始时间 开始时间
R

rehappy

Unregistered / Unconfirmed
GUEST, unregistred user!
對于對ASP程式加密/解密問題﹐我一直是沒有重視﹐可以說一點不會
請問各位ASP大哥﹕
怎么去解密ASP程式﹐又怎么加密的?
下面是別人加密過的asp程式﹕我解不出來﹐求救!
<%@ LANGUAGE = VBScript.Encode %>
<%#@~^BwsAAA==@#@&amp;0GMPlm4Ps+s+UY,kU~"+;!n/DRsK.h@#@&amp;dVn/Cs!+xI5E/O wWDhcVn:UD#@#@&amp;db0PbxkODv+s+7ls;~JEE#@!@*!,G.PbxkY.`ns/CV!n~1t.c2c#b@!@*!~WM~bxdDDv+V/msE~E-r#@!@*ZPWM~k /YMcnV/mV;+SEpJbPD4+ P]nkwWUdR]+9rM+^DPr+DMWM lkw_k9'TX+J@#@&amp;U+XY@#@&amp;C^mKE YxY.rs`]+$;+kY oKD:cEmm^W!UDJb*@#@&amp;E/D C:'ODb:c];EdYcsWMhcJ!/DUlhnr#b@#@&amp;2lk/AGMN'O.b:cI5!+dDRwWDs`r2lk/AWMNEb*@#@&amp;aC/khWM[q'DDb:cIn5!+dYcoWM:cEal/dAKD[Frb*@#@&amp;alk/hKD9+'DDr:vIn5!+/D sKD:vE2lk/SW.N+E*#@#@&amp;bWPmm^G!xYxErPGD,;k+. ls+'rJ,GD,wC/khG.9'Jr~Y4+x,]n/aW /nR]n9k.+1OPr+..KDRCdagrN{TZ E@#@&amp;b0P^+ cl1mGE Yb@!+PWM~Vx`!dnD ls+b@!+~KD~VU`alddSWD[b@!v~WM~^+Uvwm//SWM[F*@!PDtnU,I+k2W /+c]nNbDmOPEnMDGDcC/agr[{!!*E@#@&amp;r0,2m/dSWMNF@!@*aC/khGD9 ~O4+x,]+kwW dnR"+9k.+^O,JnDMGDcld2QkNxTZGE@#@&amp;WKD~b'8PYKP^nxvl^mKEUO*@#@&amp;iCm1WE O^tM'm/^`hr9`Cm1GE YSrBF#b@#@&amp;dr0,C1mG!xDmtM@!W0PKD~`mm^G!xY14D@**G,CUN,l1mGEUO1t.@!+X#,W.~vlm^G!xOm4.@*,T,l NPmm1GE Y^tM@!1{*PY4nx,I+k2Gxk+cInNr.mOPrnDMW. m/w_r9'T!+E@#@&amp;U6Dd@#@&amp;0K.Pb'qPDW~sx`!d+Mxlsnb@#@&amp;d!/nDUCs+^tMx:bNc;k+DUCs+SkBq*@#@&amp;ik6Plkmv;/DUls+^4M#@*Z~Y4+x,]n/aW /nR]n9k.+1OPr+..KDRCdagrN{TZ&amp;E@#@&amp; +6D@#@&amp;WWMPr'8POG,V+ cwm//SG.N*@#@&amp;d2lddSW.N14D{ld^v:k[cald/SGMNSb~8##@#@&amp;ir0,wC/khG.9mtM@!cRPWM~cwm/khGD[^4D@**F~l N~2m//AGMN^tM@!+*b,WMP`alkdhKD[m4D@*1ZPl [Pal/kAGD9m4D@!,{b,W.PaC/khG.9mt.@*8 +PD4x~"+kwW / INrDmO~r+DMGDcl/a_rN{!Z*E@#@&amp;U6O@#@&amp;WWMPrx8PYG~^+U`aCk/AKD9F#@#@&amp;i2lk/AWMN^4M'lk^`skNv2C/khKD[FSrBFb#@#@&amp;db0~2m//AGMN^tM@!W%~KD,`wm/kAWMN^tM@*X{,lx9~wm//SG.N1tM@!*b~KD~`aC/khG.9mt.@*O!~l [,wCk/SWD9m4.@!OGbPKD~2m//SGD9mtM@*q yPDtnx~]/2W d+cIn[bD+^O,JnDMGMRCkwQkN{!ZXJ@#@&amp;U+XY@#@&amp;KxP.DKDPMndEs+,xn6O@#@&amp;/nY,^W xxdD/n.cZ.+mOr8N+1Y`rl9GN(R^W xn^DkW E#@#@&amp;mKUUR}wx~b22^k^lDrW `E! t{az|mGx dDDE*@#@&amp;/+DPMdY{/nD7+. ;D+mO+}4L^O`rl9W[4 .mGD9d+DJb@#@&amp;D/O }wnx,Ek+smDPk9P6.WsP蚚誧~h4+.n,俷靡'Br'Ek+D Ch+LJEPCx[~躇鎢{BE[aC/khG.9[Jv~mx[P梛瘍{vr[C1mKExD[rvJBmGx @#@&amp;r6PDkORArs,G.PM/DR$ro~Dtnx@#@&amp;d"+d2Kx/n "+[kMn1Y~r+MDWMRmdwQk['ZFTE@#@&amp;+^d+i@#@&amp;i^Gx R~+LkUPMlU/@#@&amp;d1WUUc26n^!YnPr;aNCD+,蚚誧P/Y,躇鎢xBr[2lk/AGMNFLEB,ht.nP俷靡{Br[;/n. lh+LEB,lU[,躇鎢'BE'ald/SGMN'rB,lx9P梛瘍{vJLl^mKEUOLJBr@#@&amp;ik0,^Gx RAD.W.dcZGE O'ZPO4x@#@&amp;7imGx ;WhskDKDmxk@#@&amp;i+s/@#@&amp;7imW UR"WV^8Cm0KMlU/@#@&amp;id]+k2W /n "+Nr.mOPrnMDGMRm/wQk9xFZc'+MDG.s/o{E[1Wx 3DMWM/c!b G+dmMrwDkGU@#@&amp;dnU9Pr0@#@&amp;x[,k6d@#@&amp;mKUxcZsWk+@#@&amp;k+Y,^W x' GOtbxT@#@&amp;4L^KVGD{)waVr^mYkGUvJ!x4mXXm(l13oMW!UN1WsWMJb@#@&amp;4obhlT+'z22VbmmYrWUcrMUt|aX|4C^0oDG; Nr:mLJb@#@&amp;"+/aW d+c.kD+~E@!t+m[@*@!YkDsn@*r[zw2Vr^mYrW cJVx4mXX{dzkYn: Cs+E*[r@!zDkDs+@*@!sk 3~.V'EdYHV+k4n+DB,t.+WxE/OX^nR1/dv@*@!z4nmN@*@!(G9X~DWa:lMobU'EFT!EP8L1WVK.'EJ[(L^W^WM[EB~8mmVoMGE Nxvr[4LrslL+LEEPG mKxY6Dh+ Ex/VW /+ ORM+Y!.U.mV!+x0Csk+@*@!a~l^kLU{m+UOD@*@!6G Y~1W^WD{06T!Z!~/bynxl@*載蜊躇鎢傖髡ㄛ峈賸蠟腔梛瘍假&amp;#63477;ㄛ蠟茼蜆冪都載蜊蠟腔躇鎢@!JWW Y@*@!8.@*@!k w;Y~OHwn'(;YDWU~Kxmsr13xBNC7ld1DbwY=YK2RSkUNKh ^^W/c#pBP7CsE'EP壽~敕Pv~@*@!&amp;w@*@!z(W[z@*J@#@&amp;zXEDAA==^#~@%>
 
好象用了MS的VB進行加密﹐可惜VB我不太懂
 
那个东西叫脚本编码器——script encoder
微软出的,哪里下载我忘了
怎么解密我不知道。。。
 
http://www.vvsoft.net/myhome.htm
上有工具可以做到快!
 
还没见着能够解密script encoder的东西,如果有请告诉我一声
 
我想一定會有﹐但我也不知道
 
有工具可以解开这种加密的,等我找找看。。
 
to 悲酥清风
我等了一個晚上﹐終于等到希望﹐我看到一段C程式可以解開這種加密﹐不過現在我沒有辦法編繹﹐放上來大家看看
/**********************************************************************/
/* scrdec.c - Decoder for Microsoft Script Encoder */
/* Version 1.3 */
/* */
/* COPYRIGHT: */
/* (c)2000/2001 MrBrownstone, mrbrownstone@virtualconspiracy.com */
/* Some changes by Joe Steele to correct minor stuff */
/* */
/* DISCLAIMER: */
/* This program is for demonstrative and educational purposes only. */
/* Use of this program is at your own risk. The author cannot be held */
/* responsible if any laws are broken by use of this program. */
/* */
/* If you use or distribute this code, this message should be held */
/* intact. Also, any program based upon this code should display the */
/* copyright message and the disclaimer. */
/**********************************************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define LEN_OUTBUF 64
#define LEN_INBUF 1024
#define STATE_INIT_COPY 100
#define STATE_COPY_INPUT 101
#define STATE_SKIP_ML 102
#define STATE_CHECKSUM 103
#define STATE_READLEN 104
#define STATE_DECODE 105
#define STATE_UNESCAPE 106
#define STATE_FLUSHING 107
#define STATE_DBCS 108
#define STATE_INIT_READLEN 109
unsigned char rawData[292] = {
0x64,0x37,0x69, 0x50,0x7E,0x2C, 0x22,0x5A,0x65, 0x4A,0x45,0x72,
0x61,0x3A,0x5B, 0x5E,0x79,0x66, 0x5D,0x59,0x75, 0x5B,0x27,0x4C,
0x42,0x76,0x45, 0x60,0x63,0x76, 0x23,0x62,0x2A, 0x65,0x4D,0x43,
0x5F,0x51,0x33, 0x7E,0x53,0x42, 0x4F,0x52,0x20, 0x52,0x20,0x63,
0x7A,0x26,0x4A, 0x21,0x54,0x5A, 0x46,0x71,0x38, 0x20,0x2B,0x79,
0x26,0x66,0x32, 0x63,0x2A,0x57, 0x2A,0x58,0x6C, 0x76,0x7F,0x2B,
0x47,0x7B,0x46, 0x25,0x30,0x52, 0x2C,0x31,0x4F, 0x29,0x6C,0x3D,
0x69,0x49,0x70, 0x3F,0x3F,0x3F, 0x27,0x78,0x7B, 0x3F,0x3F,0x3F,
0x67,0x5F,0x51, 0x3F,0x3F,0x3F, 0x62,0x29,0x7A, 0x41,0x24,0x7E,
0x5A,0x2F,0x3B, 0x66,0x39,0x47, 0x32,0x33,0x41, 0x73,0x6F,0x77,
0x4D,0x21,0x56, 0x43,0x75,0x5F, 0x71,0x28,0x26, 0x39,0x42,0x78,
0x7C,0x46,0x6E, 0x53,0x4A,0x64, 0x48,0x5C,0x74, 0x31,0x48,0x67,
0x72,0x36,0x7D, 0x6E,0x4B,0x68, 0x70,0x7D,0x35, 0x49,0x5D,0x22,
0x3F,0x6A,0x55, 0x4B,0x50,0x3A, 0x6A,0x69,0x60, 0x2E,0x23,0x6A,
0x7F,0x09,0x71, 0x28,0x70,0x6F, 0x35,0x65,0x49, 0x7D,0x74,0x5C,
0x24,0x2C,0x5D, 0x2D,0x77,0x27, 0x54,0x44,0x59, 0x37,0x3F,0x25,
0x7B,0x6D,0x7C, 0x3D,0x7C,0x23, 0x6C,0x43,0x6D, 0x34,0x38,0x28,
0x6D,0x5E,0x31, 0x4E,0x5B,0x39, 0x2B,0x6E,0x7F, 0x30,0x57,0x36,
0x6F,0x4C,0x54, 0x74,0x34,0x34, 0x6B,0x72,0x62, 0x4C,0x25,0x4E,
0x33,0x56,0x30, 0x56,0x73,0x5E, 0x3A,0x68,0x73, 0x78,0x55,0x09,
0x57,0x47,0x4B, 0x77,0x32,0x61, 0x3B,0x35,0x24, 0x44,0x2E,0x4D,
0x2F,0x64,0x6B, 0x59,0x4F,0x44, 0x45,0x3B,0x21, 0x5C,0x2D,0x37,
0x68,0x41,0x53, 0x36,0x61,0x58, 0x58,0x7A,0x48, 0x79,0x22,0x2E,
0x09,0x60,0x50, 0x75,0x6B,0x2D, 0x38,0x4E,0x29, 0x55,0x3D,0x3F,
0x51,0x67,0x2f
} ;

const unsigned char pick_encoding[64] = {
1, 2, 0, 1, 2, 0, 2, 0, 0, 2, 0, 2, 1, 0, 2, 0,
1, 0, 2, 0, 1, 1, 2, 0, 0, 2, 1, 0, 2, 0, 0, 2,
1, 1, 0, 2, 0, 2, 0, 1, 0, 1, 1, 2, 0, 1, 0, 2,
1, 0, 2, 0, 1, 1, 2, 0, 0, 1, 1, 2, 0, 1, 0, 2
};

unsigned char transformed[3][127];
int digits[0x7a];

unsigned char unescape (unsigned char c)
{
static unsigned char escapes[] = "#&amp;!*$";
static unsigned char escaped[] = "/r/n<>@";
int i=0;

if (c > 127)
return c;
while (escapes)
{
if (escapes == c)
return escaped;
i++;
}
return '?';
}
void maketrans (void)
{
int i, j;

for (i=31;
i<=127;
i++)
for (j=0;
j<3;
j++)
transformed[j][rawData[(i-31)*3 + j]] = (i==31) ? 9 : i;
}
void makedigits (void)
{
int i;

for (i=0;
i<26;
i++)
{
digits['A'+i] = i;
digits['a'+i] = i+26;
}
for (i=0;
i<10;
i++)
digits['0'+i] = i+52;
digits[0x2b] = 62;
digits[0x2f] = 63;
}
unsigned long int decodeBase64 (unsigned char *p)
{
unsigned long int val = 0;

val += (digits[p[0]] << 2);
val += (digits[p[1]] >> 4);
val += (digits[p[1]] &amp;
0xf) << 12;
val += ((digits[p[2]] >> 2) << 8);
val += ((digits[p[2]] &amp;
0x3) << 22);
val += (digits[p[3]] << 16);
val += ((digits[p[4]] << 2) << 24);
val += ((digits[p[5]] >> 4) << 24);

/* 543210 543210 543210 543210 543210 543210
765432
10
ba98
fedc
76
543210
fedcba 98----
|- LSB -||- -||- -| |- MSB -|
*/
return val;
}
int isLeadByte (unsigned int cp, unsigned char ucByte)
{
/* Code page 932 - Japanese Shift-JIS - 0x81-0x9f
0xe0-0xfc
936 - Simplified Chinese GBK - 0xa1-0xfe
949 - Korean Wansung - 0x81-0xfe
950 - Traditional Chinese Big5 - 0x81-0xfe
1361 - Korean Johab - 0x84-0xd3
0xd9-0xde
0xe0-0xf9 */
switch (cp)
{
case 932:
if ((ucByte > 0x80) &amp;&amp;
(ucByte < 0xa0)) return 1;
if ((ucByte > 0xdf) &amp;&amp;
(ucByte < 0xfd)) return 1;
else
return 0;
case 936:
if ((ucByte > 0xa0) &amp;&amp;
(ucByte < 0xff)) return 1;
else
return 0;
case 949:
case 950:
if ((ucByte > 0x80) &amp;&amp;
(ucByte < 0xff)) return 1;
else
return 0;
case 1361:
if ((ucByte > 0x83) &amp;&amp;
(ucByte < 0xd4)) return 1;
if ((ucByte > 0xd8) &amp;&amp;
(ucByte < 0xdf)) return 1;
if ((ucByte > 0xdf) &amp;&amp;
(ucByte < 0xfa)) return 1;
else
return 0;
default:
return 0;
}
}

int ScriptDecoder (unsigned char *inname, unsigned char *outname, unsigned int cp)
{
unsigned char inbuf[LEN_INBUF+1];
unsigned char outbuf[LEN_OUTBUF+1];
unsigned char c, lenbuf[7], csbuf[7];
unsigned char marker[] = "#@~^";
int nextstate, state = 0;
int i, j, k, m, ml = 0;
unsigned long int csum = 0, len = 0;
FILE *infile, *outfile;

infile = fopen (inname, "rb");
outfile = fopen (outname, "wb");
if (!infile || !outfile)
{
printf ("Error opening file!/n");
return 10;
}
maketrans();
makedigits();
memset (inbuf, 0, sizeof (inbuf));
memset (outbuf, 0, sizeof (outbuf));
memset (lenbuf, 0, sizeof (lenbuf));

state = STATE_INIT_COPY;
i = 0;
j = 0;

while (state)
{
if (inbuf == 0)
{
if (feof (infile))
break;

memset (inbuf, 0, sizeof (inbuf));
fgets (inbuf, LEN_INBUF, infile);
i = 0;
continue;
}
if (j == LEN_OUTBUF)
{
fwrite (outbuf, sizeof(char), j, outfile);
j = 0;
}
switch (state)
{
case STATE_INIT_COPY:
ml = strlen (marker);
m = 0;
state = STATE_COPY_INPUT;
break;

case STATE_COPY_INPUT:
if (inbuf == marker[m])
{
i++;
m++;
}
else

{
if (m)
{
k = 0;
state = STATE_FLUSHING;
}
else

outbuf[j++] = inbuf[i++];

}
if (m == ml)
state = STATE_INIT_READLEN;
break;

case STATE_FLUSHING:
outbuf[j++] = marker[k++];
m--;
if (m==0)
state = STATE_COPY_INPUT;
break;

case STATE_SKIP_ML:
i++;
if (!(--ml))
state = nextstate;
break;

case STATE_INIT_READLEN:
ml = 6;
state = STATE_READLEN;
break;

case STATE_READLEN:
lenbuf[6-ml] = inbuf[i++];
if (!(--ml))
{
len = decodeBase64 (lenbuf);
m = 0;
ml = 2;
state = STATE_SKIP_ML;
nextstate = STATE_DECODE;
}
break;

case STATE_DECODE:
if (!len)
{
ml = 6;
state = STATE_CHECKSUM;
break;
}
if (inbuf == '@')
state = STATE_UNESCAPE;
else

{
if (inbuf < 0x80)
{
outbuf[j++] = c = transformed[pick_encoding[m%64]][inbuf];
csum += c;
m++;
}
else

{
outbuf[j++] = inbuf;
if ((cp) &amp;&amp;
(isLeadByte (cp,inbuf)))
state = STATE_DBCS;
}
}
i++;
len--;
break;

case STATE_DBCS:
outbuf[j++] = inbuf[i++];
state = STATE_DECODE;
break;

case STATE_UNESCAPE:
outbuf[j++] = c = unescape (inbuf[i++]);
csum += c;
len--;
m++;
state = STATE_DECODE;
break;

case STATE_CHECKSUM:
csbuf[6-ml] = inbuf[i++];
if (!(--ml))
{
csum -= decodeBase64 (csbuf);
if (csum)
{
printf ("Error - Incorrect checksum! (%lu)/n", csum);
csum=0;
}
m = 0;
ml = 6;
state = STATE_SKIP_ML;
nextstate = STATE_INIT_COPY;
}
break;

default:
printf ("Invalid state: %d/n", state);
break;
}
}
fwrite (outbuf, sizeof (char), j, outfile);
fclose (infile);
fclose (outfile);
return 0;
}

int main (int argc, char **argv)
{
int cp = 0;

if (argc < 3)
{
printf ("Decoder for Microsoft Script Encoder v1.3/n"
"(c)2000/2001 MrBrownstone, mrbrownstone@virtualconspiracy.com/n"
"Home page: http://www.virtualconspiracy.com/scrdec.html/n/n"
"Usage: scrdec13 <infile> <outfile> [codepage]/n/n"
"Code pages can be 932 - Japanese/n"
" 936 - Chinese (Simplified)/n"
" 950 - Chinese (Traditional)/n"
" 949 - Korean (Wansung)/n"
" 1361 - Korean (Johab)/n"
"Any other code pagesdo
n't need to be specified./n");
return 10;
}
if (argc > 3)
cp = atoi (argv[3]);
return ScriptDecoder (argv[1], argv[2], cp);
}
 
把上面的程式run一下就可以解了
把分分了﹐game over
謝謝大家
 
后退
顶部