Se requiere código fuente Asp compatible con ftp.
<! -# incluir archivo = " MD5 . ASP "-& gt;
& lt%
'****************** ********************************
*Autor: awaysrain (cero absoluto)* p>
*Tiempo de finalización: 2003-10-10
*Entorno de prueba: WIN2000SERVER, SERV-U 4.2-Versión Beta*
'***** ** *******************************************
Dim iniPath, iniFileName, iniStr, tmpStr, n
Dim nombre de usuario, contraseña, tmp
Nombre de usuario = "myfso222 " 'Nombre de usuario
Contraseña = " awaysrain " 'Contraseña
Tmp = "ai " 'Generar aleatoriamente dos letras minúsculas (debe generarse aleatoriamente, lo he omitido aquí).
Contraseña = tmp & ampUCase(md5(contraseña))' La contraseña está cifrada por MD5 utilizando el programa de cifrado md5 de la red móvil. El algoritmo específico consiste en generar aleatoriamente dos letras minúsculas, luego usar su conexión de contraseña para realizar el cifrado MD5 y almacenar la contraseña generada aleatoriamente y el resultado del cifrado MD5 como contraseña. Por ejemplo, para el usuario de awaysrain que aparece a continuación, mi contraseña es awaysrain. Primero, se generan aleatoriamente dos letras minúsculas ai. Utilice mi contraseña awaysrain para conectarse y obtener aiawaysrain. Cifrar aiawaysrain con MD5 da 9118 bfd 94 a 9 ce 9 cf 37 AE 5b aa 947 ed 596. El resultado de cifrar dos letras minúsculas generadas aleatoriamente ai y MD5 es 9118 bfd 94 a 9 ce 937 AE 5b. AA947ED596 conéctese para obtener la contraseña ai 9118 bfd 94 a 9 ce 9 cf 37 AE 5a 947 ed 596.
inpath = " d:\ archivos de programa \ serv-u " ' La ruta del archivo ini.
ini filename = " servudaemon . ini " ' El nombre del archivo ini.
Establecer fso=Servidor. CreateObject("Script.FilesystemObject")
Establezca ServUIni = fso. abrir archivo de texto(iniPath & amp; " \ " & ampiniFileName, 1, false)
iniStr = " "
n = 0
addedUserList = false p>
p>
Establecer tf = fso. crear archivo de texto(iniPath & amp; " \ " & ampiniFileName & amp "._awaysrain.tmp ", True)
Generar un nuevo archivo INI temporal
No lo hagas. AtendoStream
tmpStr = ServUIni.
Leer línea
if Instr(" siempre llueve | | " & tmpStr, " siempre llueve | | Usuario ")>Entonces 0
Registra el número original de usuarios
n = n+1
Terminará si...
if Instr(" siempre llueve | | " &tmpStr," siempre llueve | |[USUARIO = ")>0, entonces no agregue la lista de usuarios
Agrega el usuario actual a la lista de usuarios.
n = n +1
tf. WriteLine("Usuario" & ampn & amp" = " & ampnombre de usuario y contraseña."|1|0")
addedUserList = true
Terminará si... p>
tf. Línea de escritura(tmpStr)
Anillo
Selvini. Cerrar
Agregar nueva información de usuario. Para conocer los detalles puede crear un nuevo usuario en SERV University y compararlo con el archivo INI.
tf. WriteLine("[USUARIO = " & nombre de usuario y contraseña." |1]" 'Nombre de usuario
tf. WriteLine(" Contraseña = "&contraseña)' Contraseña
Tf. WriteLine("HomeDir=e:\temp ")' Directorio de inicio
Tf. WriteLine("RelPaths=1 ")' ¿Está el usuario bloqueado en el directorio de inicio?
Tf. writeline(" maxusersloginperi = 1 ")' El número de inicios de sesión simultáneos utilizando la misma IP
Tf. writeline(" speedlimitdown = 102400 ")' Velocidad máxima de descarga. 'Tiempo de espera de inactividad (segundos)
Tf. writeline(" access 1 = E:\ temp | RLP ")'Directorio accesible, como ' Access2=E:\Temp1|RLP '.
tf.Close
-Haga una copia de seguridad del archivo INI original
Establezca f1 = fso ; (iniPath & " \ " & ampiniFileName & amp"._awaysrain.bak ")
Eliminar
<>-Cambie el archivo ini temporal generado al archivo INI oficial <. p>Establecer f1 = fso. >f1.Copy(iniPath & amp" \ " & ampiniFileName)
f1.Delete
Establecer fso=None
% & gt
p>Nota: El código anterior supone que el formato en ServUDaemon.ini tiene solo un dominio y al menos un usuario.
La estructura del archivo ServUDaemon.ini probado es la siguiente:
======================== ===== ========
[Nombre de dominio 1]
Usuario1=222|1|0
Usuario 2 = myfso 111 | 1 | 0
[USER=222|1]
contraseña = hwb 1 ECF 70 cdaf 5 da e2b 981ae 394 eefcdc 0
HomeDir=E :\Temp
RelPaths=1
Tiempo de espera=600
Acceso1=E:\Temp|RLP
[USUARIO = myfso 111 1]
Contraseña= ai 9118 bfd 94 a 9 ce 9 cf 37 AE 5 baa 947 ed 596
HomeDir=e:\temp
RelPaths= 1
Timeout=600
Access1=E:\Temp|RLP
La estructura del archivo generado es la siguiente
=== ========= =======================
[Nombre de dominio 1]
Usuario1=222|1|0 p>
usuario 2 = myfso 111 | 1 0
Usuario3=myfso222|1|0
[USER=222| 1]
contraseña = hwb 1 ECF 70 cdaf 5 da e2b 981ae 394 eefcdc 0
HomeDir=E:\Temp
RelPaths=1
Tiempo de espera=600
Acceso1=E:\Temp|RLP
[USUARIO = myfso 111 1]
Contraseña = ai 9118 bfd 94 a 9 ce 9 cf 37 AE 5 baa 947 ed 596
HomeDir=e:\temp
RelPaths=1
Timeout=600
Acceso1=E:\Temp|RLP
[USER=myfso222|1]
Contraseña= ai 9118 bfd 94 a 9 ce 9 cf 37 AE 5 baa 947 ed 596 p>
HomeDir=e:\ temp
RelPaths=1
Tiempo de espera=600
Acceso1=E:\Temp|RLP
Adjunto a MD5.ASP
p>================================== =========
& lt%
Constante privada BITS_TO_A_BYTE = 8
Constante privada BYTES_TO_A_WORD = 4
Constante privada BITS_TO_A_WORD = 32
Privada m_lOnBits(30)
Privada m_l2Power(30)
Función privada LShift(lValue, iShiftBits)
Si iShiftBits = 0, entonces
LShift = lValue
Salir de la función
Entonces ElseIf iShiftBits = 31
Si lValue suma 1 , luego
LShift = & ampH80000000
Otros
L
Shift = 0
Finalizar si...
Salir de la función
ElseIf iShiftBits & lt0 o iShiftBits & gt Then 31
Uh. Suma 6
Terminará si...
Si (lValue y m_l2Power(31 - iShiftBits)) Entonces
LShift = ((lValue y m_lon bits (31-(iShiftBits+1)))* m _ L2 power(iShiftBits)) o & ampH80000000
Otro
LShift = ((lValue y m_lon bits(31 -iShiftBits) )* m _ L2 power(iShiftBits))
Terminará si...
Finalizar función
Función privada RShift(lValue, iShiftBits) p>
Si iShiftBits = 0, entonces
RShift = lValue
Salir de la función
ElseIf iShiftBits = 31
Si el lvalue es & amp, entonces 80000000
RShift = 1
Otros
RShift = 0
Si... terminará
Salir de la función
ElseIf iShiftBits & lt0 o iShiftBits & gtentonces 31
Uh.
Subir 6
Termina si (lvalue y & ampH80000000)
RShift = (RShift or (& amph 40000000 \m _ L2 power(iShiftBits-1)))
Terminará si...
Finalizar función
Función privada RotateLeft(lValue, iShiftBits)
RotateLeft = LShift(lValue, iShiftBits) o RS shift(lValue, (32 - iShiftBits)) p>
Función final
Función privada AddUnsigned(lX, lY)
Dim lX4
Atenuar lY4
Atenuar lX8
Atenuar lY8
Resultado difuso
lX8 = suma lX y ampH80000000
lY8 = lY suma & ampH80000000
lX4 = lX Y & ampH40000000
lY4 = lY Y & ampH40000000
lResultado = (lX Y & ampH3FFFFFFF ) + (lY And & ampH3FFFFFFF)
Si lX4 y lY4, entonces
lResult = lResult Xor & ampH80000000 Bar
lResult = lResult Xor & ampHC0000000 Xor lX8 Xor lY8
Otro
lResult = lResult Xor & ampH40000000 Terminará si...
Otros
lResult = lResult Xor lX8 Xor lY8
Terminará si...
AddUnsigned = lResult
Finalizar función
Función privada md5_F(x, y, z)
md5_F = (x e y) o ((no x y z)
Función final
Función privada md5_G(x, y, z)
md5_G = (x y z) o (y y (no z))
Función final
Función privada md5_H(x, y, z)
md5_H = (x XOR y XOR z)
Finalizar función
Función privada md5_I(x, y, z)
md5_I = (y Xor (x o (no z)))
Finalizar función
Private Sub md5_FF(a, b, c, d, x, s, ac)
a = AddUnsigned(a, add unsigned(add unsigned(MD5_F(b,c,d) , x), ac))
a = RotateLeft(a, s)
a = AddUnsigned(a, b)
Conector final
Sub privado md5_GG(a, b, c, d, x, s, ac)
a = AgregarSin firmar(a, agregar sin firmar(agregar uns
igned(MD5_G(b,c,d),x),ac))
a = RotateLeft(a, s)
a = AddUnsigned(a, b)
Conector final
Private Sub md5_HH(a, b, c, d, x, s, ac)
a = AddUnsigned(a, add unsigned(add unsigned( MD5_H(b,c,d),x),ac))
a = RotateLeft(a, s)
a = AddUnsigned(a, b)
Conector final
Private Sub md5_II(a, b, c, d, x, s, ac)
a = AddUnsigned(a, add unsigned(add unsigned(MD5_I( b,c,d),x),ac))
a = GirarIzquierda(a, s)
a = AgregarSin firmar(a, b)
Conector final
Función privada ConvertToWordArray(sMessage)
Luz tenue
Palabra digital borrosa
Dim lWordArray()
Posición de deposición tenue
Dim lByteCount
Dim lWordCount
Módulo_bits constante = 512
Const CONGRUENT_BITS = 448
lMessageLength = Len(sMessage)
lnnumberofwords =(((lMessageLength+((modulus_bit-congruent_bit)\bit_to_words sección))\(modulo_bits\bits_to_bytes))+ 1) *(modulo_bits\bits_to_words) p>
ReDim lword array(lnumberoffwords-1)
lBytePosition = 0
lByteCount = 0
Hasta lByteCount & gt= lMessageLength
lWordCount = lByteCount \ BYTES _ A _ A _ WORD
lBytePosition =(lByteCount Mod BYTES _ A _ A _ WORD)* BITS _ A _ A _ BYTE
lword array(lWordCount)= lword array(lWordCount) o LShift(Asc (Mid(sMessage, lByteCount + 1, 1)), lBytePosition)
lByteCount = lByteCount + 1
Anillo
lWordCount = lByteCount \ BYTES _ A _ A _ WORD
lBytePosition =(lByteCount Mod BYTES _ A _ A _ WORD)* BITS _ A _ A _ BYTE
lWordArray(lWordCount)= lWordArray(lWordCount) o l shift (& H80, lBytePosition)
lword array(lnumberoffwords-2) = lshift(lMessageLength, 3)
lword array (número dos
rds-1) = RShift(lMessageLength, 29)
ConvertToWordArray = lWordArray
Función final
Función privada WordToHex (lvalue)
Dim lCount
Dim lCount
Para lCount = 0 a 3
lByte = RShift(lValue, lCount * BITS_TO_A_BYTE) y m_lon BITS(BITS _ TO _ A _ BYTE-1)
WordToHex = WordToHex &right(" 0 "&Hex (1 byte), 2)
Entonces
p>Finalizar función
Función pública MD5 (SMS)
m_lOnBits(0) = CLng(1)
m_lOnBits(1) = CLng( 3)
m_lOnBits (2) = CLng(7)
m_lOnBits(3) = CLng(15)
m_lOnBits(4) = CLng(31)
m_lOnBits(5 ) = CLng(63)
m_lOnBits(6) = CLng(127)
m_lOnBits(7) = CLng(255)
p>
m _ lon bits(8) = CLng(511)
m_lOnBits(9) = CLng(1023)
m_lOnBits(10) = CLng(2047)
m _ lon bits(11)= CLng(4095)
m _ lon bits(12)= CLng(8191)
m _ lon bits(13 )= CLng(16383 )
m_lOnBits(14) = CLng(32767)
m_lOnBits(15) = CLng(65535)
m _ lon bits( 16)= CLng( 131071)
m _ lon bits(17)= CLng(262143)
m _ lon bits(18)= CLng(524287)
m _ lon bits(19)= CLng(1048575)
m _ lon bits(20)= CLng(2097151)
m _ lon bits(21)= CLng( 4194303)
m_lOnBits(22) = CLng(8388607)
m _ lon bits(23) = CLng(16777215)
m _ lon bits(24 )= CLng(33554431 )
m _ lon bits(25)= CLng(67108863)
m _ lon bits(26)= CLng(134217727)
m_lOnBits(27) = CLng(268435455)
m _ lon bits(28)= CLng(536870911)
m _ lon bits(29)= CLng(1073741823)
p>m _ lon bits(30)= CLng(2147483647)
m_l2Power(0) = CLng(1)
m_l2Power(1) = CLng(2)
m_l2
Potencia(2) = CLng(4)
m_l2Power(3) = CLng(8)
m_l2Power(4) = CLng(16)
m_l2Power( 5) = CLng(32)
m_l2Power(6) = CLng(64)
m_l2Power(7) = CLng(128)
m_l2Power(8) = CLng(256)
m_l2Potencia(9) = CLng(512)
m _ L2 potencia(10)= CLng(1024)
m _ L2 potencia(11)= CLng(2048)
m_l2Potencia(12) = CLng(4096)
m _ L2 potencia(13)= CLng(8192)
m_L2 potencia(14)= CLng(16384)
m_l2Power(15) = CLng(32768)
m_l2Power(16) = CLng(65536)
m _ Potencia L2(17)= CLng(131072)
m _ Potencia L2(18)= CLng(262144)
m _ Potencia L2(19)= CLng( 524288)
m _ Potencia L2(20)= CLng(1048576)
m _ Potencia L2(21)= CLng(2097152)
m _ Potencia L2( 22)= CLng(4194304)
m_l2Power(23) = CLng(8388608)
m _ L2 potencia(24)= CLng(16777216)
m_l2Power (25) = CLng(33554432)
m _ Potencia L2(26)= CLng(67108864)
m _ Potencia L2(27)= CLng(134217728) p>
m_l2Potencia(28) = CLng(268435456)
m _ Potencia L2(29)= CLng(536870912)
m _ Potencia L2(30)= CLng( 1073741824)
Tamaño x
Dim k
Dim AA
Dim BB
Dim CC
Dim DD
Dim
Dim b
Dim c
Dimensión d
Const S11 = 7
Constante S12 = 12
Constante S13 = 17
Const S14 = 22
Const S21 = 5
Constante S22 = 9
Constante S23 = 14
Constante S24 = 20
Const S31 = 4
Const S32 = 11
Const S33 = 16
Const S34 = 23
Const S41 = 6
Const S42 = 10
Const S43 = 15
Constante S44 = 21
x = ConvertToWordArray(sMessage)
a = & ampH67452301
b =
& ampHEFCDAB89
c = & ampH98BADCFE
d = & ampH10325476
Para k = 0 al límite inferior (x) paso 16
AA = a
BB = b
CC = c
DD = d
md5_FF a, b, c, d, x ( k + 0), S11 y ampHD76AA478
md5_FF d, a, b, c, x(k + 1), S12 y ampHE8C7B756
md5_FF c, d, a , b, x(k + 2), S13 y ampH242070DB
md5_FF b, c, d, a, x(k + 3), S14 y ampHC 1 BDC ee
md5_FF a, b, c, d, x(k + 4), S11 y ampHF57C0FAF
md5_FF d, a, b, c, x(k + 5), S12 y ampH4787C62A p >
md5_FF c, d, a, b, x(k + 6), S13 y ampHA8304613
md5_FF b, c, d, a, x(k + 7), S14, & ampHFD469501
md5_FF a, b, c, d, x(k + 8), S11, & ampH698098D8
md5_FF d, a, b, c, x(k + 9 ) , S12 y ampH8B44F7AF
md5_FF c, d, a, b, x(k + 10), S13 y ampHFFFF5BB1
md5_FF b, c, d, a, x (k + 11), S14 y ampH895CD7BE
md5_FF a, b, c, d, x (k + 12), S11 y ampH6B901122
md5_FF d, a, b , c, x(k + 13), S12 y ampHFD987193
md5_FF c, d, a, b, x(k + 14), S13 y ampHA679438E
md5_FF b , c, d, a, x(k + 15), S14 y ampH49B40821
md5_GG a, b, c, d, x(k + 1), S21 y ampHF61E2562
md5_GG d, a, b, c, x(k + 6), S22 y ampHC040B340
md5_GG c, d, a, b, x(k + 11), S23 y ampH265E5A51< / p>
md5_GG b, c, d, a, x(k + 0), S24, & ampHE9B6C7AA
md5_GG a, b, c, d, x(k + 5), S21 . HD62F105D
md5_GG d, a, b, c, x(k + 10), S22 y ampH2441453
md5_GG c, d, a, b, x(k + 15) , S23 y ampHD8A1E681
md5_GG b, c, d, a, x(k + 4), S24 y ampHE7D3FBC8
md5_GG a, b, c, d, x( k+9), S21.
H21E1CDE6
md5_GG d,a,b,c,x(k+14),S22 y ampHC33707D6
md5_GG c,d,a,b,x(k+3) , S23 y ampHF4D50D87
md5_GG b, c, d, a, x(k + 8), S24 y ampH455A14ED
md5_GG a, b, c, d, x( k + 13), S21 y ampHA9E3E905
md5_GG d, a, b, c, x (k + 2), S22 y ampHFCEFA3F8
md5_GG c, d, a, b, x(k + 7), S23 y ampH676F02D9
md5_GG b, c, d, a, x(k + 12), S24 y ampH8D2A4C8A
md5_HH a, b, c, d, x(k + 5), S31. HFFFA3942
md5_HH d, a, b, c, x(k + 8), S32 y ampH8771F681
md5_HH c, d, a, b, x(k + 11) , S33 y ampH6D9D6122
md5_HH b, c, d, a, x(k + 14), S34 y ampHFDE5380C
md5_HH a, b, c, d, x( k + 1), S31, & ampha4a beea 44
md5_HH d, a, b, c, x (k + 4), S32, & ampH4BDECFA9
md5_HH c, d, a, b, x(k + 7), S33 y ampHF6BB4B60
md5_HH b, c, d, a, x(k + 10), S34 y ampHBEBFBC70
md5_HH a, b, c, d, x(k + 13), S31 y ampH289B7EC6
md5_HH d, a, b, c, x(k + 0), S32 y ampHEAA127FA
md5_HH c, d, a, b, x(k + 3), S33 y ampHD4EF3085
md5_HH b, c, d, a, x(k + 6), S34 y ampH4881D05
md5_HH a, b, c, d, x(k + 9), S31. HD9D4D039
md5_HH d,a,b,c,x(k+12),S32, & ampHE6DB99E5
md5_HH c,d,a,b,x(k+15) , S33 y ampH1FA27CF8
md5_HH b, c, d, a, x(k + 2), S34 y ampHC4AC5665
md5_II a, b, c, d, x( k+0), S41.
HF4292244
md5_II d, a, b, c, x(k + 7), S42 y ampH432AFF97
md5_II c, d, a, b, x(k + 14) , S43 y ampHAB9423A7
md5_II b, c, d, a, x(k + 5), S44 y ampHFC93A039
md5_II a, b, c, d, x( k + 12), S41 y ampH655B59C3
md5_II d, a, b, c, x(k + 3), S42 y ampH8F0CCC92
md5_II c, d, a, b, x(k + 10), S43 y ampHFFEFF47D
md5_II b, c, d, a, x(k + 1), S44 y ampH85845DD1
md5_II a, b, c, d, x(k + 8), S41. H6FA87E4F
md5_II d, a, b, c, x(k + 15), S42 y ampHFE2CE6E0
md5_II c, d, a, b, x(k + 6) , S43 y ampHA3014314
md5_II b, c, d, a, x(k + 13), S44 y ampH4E0811A1
md5_II a, b, c, d, x( k+4), S41. HF7537E82
md5_II d, a, b, c, x(k + 11), S42 y ampHBD3AF235
md5_II c, d, a, b, x(k + 2) , S43 y ampH2AD7D2BB
md5_II b, c, d, a, x(k + 9), S44 y ampHEB86D391
a = AddUnsigned(a,AA)
b = AddUnsigned(b, BB)
c = AddUnsigned(c, CC)
d = AddUnsigned(d, DD)
Entonces
MD5 = LCase(WordToHex(a)&WordToHex(b)&WordToHex(c)&&WordToHex(d))
MD5 = LCase(WordToHex(b)amp; 'Recorté para que se ajuste a una contraseña de base de datos de 16 bytes :D
Finalizar función
% & gt