手机
当前位置:查字典教程网 >编程开发 >ASP教程 >ASP + Serv-u 实现FTP的代码
ASP + Serv-u 实现FTP的代码
摘要:0andnotaddedUserListThen'往用户列表的部分添加现在的用户n=n+1tf.WriteLine("User"&n&"="...

<>

<%

DiminiPath,iniFileName,iniStr,tmpStr,n

DimuserName,passWord,tmp

userName="myfso222"'用户名

passWord="awaysrain"'密码

tmp="ai"'随机生成两个小写字母,(应该是随机生成的,但是我这里省略了)

passWord=tmp&UCase(md5(passWord))'密码,是MD5加密过的,用动网的MD5加密程序,具体算法是随机生成两位小写字母,然后和你的密码连接后进行MD5加密,把随机生成的密码和MD5加密后的结果作为密码存放,举个例子来说比如下面的awaysrain用户,我的密码为awaysrain先随机生成两位小写字母ai,和我的密码awaysrain连接得到aiawaysrain把aiawaysrain进行MD5加密得到9118BFD94A9CE9CF37AE5BAA947ED596把随机生成两位小写字母ai和MD5加密后的结果9118BFD94A9CE9CF37AE5BAA947ED596连接得到密码ai9118BFD94A9CE9CF37AE5BAA947ED596

iniPath="D:ProgramFilesServ-U"'ini文件的路径

iniFileName="ServUDaemon.ini"'ini的文件名

Setfso=Server.CreateObject("Scripting.FileSystemObject")

SetServUIni=fso.OpenTextFile(iniPath&""&iniFileName,1,false)

iniStr=""

n=0

addedUserList=false

Settf=fso.CreateTextFile(iniPath&""&iniFileName&"._awaysrain.tmp",True)

'生成新的临时INI文件

DoWhilenotServUIni.AtEndOfStream

tmpStr=ServUIni.ReadLine

IfInstr("awaysrain||"&tmpStr,"awaysrain||User")>0Then

'记录用户原来的数量

n=n+1

EndIf

IfInstr("awaysrain||"&tmpStr,"awaysrain||[USER=")>0andnotaddedUserListThen

'往用户列表的部分添加现在的用户

n=n+1

tf.WriteLine("User"&n&"="&userName&"|1|0")

addedUserList=true

EndIf

tf.WriteLine(tmpStr)

Loop

ServUIni.Close

'添加新用户的信息,具体内容可以在SERV-U中新建用户并对照INI文件

tf.WriteLine("[USER="&userName&"|1]")'用户名

tf.WriteLine("Password="&passWord)'密码

tf.WriteLine("HomeDir=e:temp")'主目录

tf.WriteLine("RelPaths=1")'是否锁定用户于主目录

tf.WriteLine("MaxUsersLoginPerIP=1")'相同IP同时登录数

tf.WriteLine("SpeedLimitDown=102400")'最大下载速度

tf.WriteLine("TimeOut=600")'空闲超时时间(秒)

tf.WriteLine("Access1=E:Temp|RLP")'可访问目录,可以不是一个,比如'Access2=E:Temp1|RLP'

tf.Close

'--------------------备份原来的INI文件--------------------------

Setf1=fso.GetFile(iniPath&""&iniFileName)

f1.Copy(iniPath&""&iniFileName&"._awaysrain.bak")

f1.Delete

'--------------------把生成的临时INI文件改为正式的INI--------------------------

Setf1=fso.GetFile(iniPath&""&iniFileName&"._awaysrain.tmp")

f1.Copy(iniPath&""&iniFileName)

f1.Delete

Setfso=nothing

%>

注:以上代码假设ServUDaemon.ini中的格式只有一个域并已经至少有一个用户

测试的ServUDaemon.ini文件结构如下:

==================================

[Domain1]

User1=222|1|0

User2=myfso111|1|0

[USER=222|1]

Password=hwB1ECF70CDAF5DAE2B981AE394EEFCDC0

HomeDir=E:Temp

RelPaths=1

TimeOut=600

Access1=E:Temp|RLP

[USER=myfso111|1]

Password=ai9118BFD94A9CE9CF37AE5BAA947ED596

HomeDir=e:temp

RelPaths=1

TimeOut=600

Access1=E:Temp|RLP

生成后的文件结构如下

==================================

[Domain1]

User1=222|1|0

User2=myfso111|1|0

User3=myfso222|1|0

[USER=222|1]

Password=hwB1ECF70CDAF5DAE2B981AE394EEFCDC0

HomeDir=E:Temp

RelPaths=1

TimeOut=600

Access1=E:Temp|RLP

[USER=myfso111|1]

Password=ai9118BFD94A9CE9CF37AE5BAA947ED596

HomeDir=e:temp

RelPaths=1

TimeOut=600

Access1=E:Temp|RLP

[USER=myfso222|1]

Password=ai9118BFD94A9CE9CF37AE5BAA947ED596

HomeDir=e:temp

RelPaths=1

TimeOut=600

Access1=E:Temp|RLP

附MD5.ASP

==========================================

<%

PrivateConstBITS_TO_A_BYTE=8

PrivateConstBYTES_TO_A_WORD=4

PrivateConstBITS_TO_A_WORD=32

Privatem_lOnBits(30)

Privatem_l2Power(30)

PrivateFunctionLShift(lValue,iShiftBits)

IfiShiftBits=0Then

LShift=lValue

ExitFunction

ElseIfiShiftBits=31Then

IflValueAnd1Then

LShift=&H80000000

Else

LShift=0

EndIf

ExitFunction

ElseIfiShiftBits<0OriShiftBits>31Then

Err.Raise6

EndIf

If(lValueAndm_l2Power(31-iShiftBits))Then

LShift=((lValueAndm_lOnBits(31-(iShiftBits+1)))*m_l2Power(iShiftBits))Or&H80000000

Else

LShift=((lValueAndm_lOnBits(31-iShiftBits))*m_l2Power(iShiftBits))

EndIf

EndFunction

PrivateFunctionRShift(lValue,iShiftBits)

IfiShiftBits=0Then

RShift=lValue

ExitFunction

ElseIfiShiftBits=31Then

IflValueAnd&H80000000Then

RShift=1

Else

RShift=0

EndIf

ExitFunction

ElseIfiShiftBits<0OriShiftBits>31Then

Err.Raise6

EndIf

RShift=(lValueAnd&H7FFFFFFE)m_l2Power(iShiftBits)

If(lValueAnd&H80000000)Then

RShift=(RShiftOr(&H40000000m_l2Power(iShiftBits-1)))

EndIf

EndFunction

PrivateFunctionRotateLeft(lValue,iShiftBits)

RotateLeft=LShift(lValue,iShiftBits)OrRShift(lValue,(32-iShiftBits))

EndFunction

PrivateFunctionAddUnsigned(lX,lY)

DimlX4

DimlY4

DimlX8

DimlY8

DimlResult

lX8=lXAnd&H80000000

lY8=lYAnd&H80000000

lX4=lXAnd&H40000000

lY4=lYAnd&H40000000

lResult=(lXAnd&H3FFFFFFF)+(lYAnd&H3FFFFFFF)

IflX4AndlY4Then

lResult=lResultXor&H80000000XorlX8XorlY8

ElseIflX4OrlY4Then

IflResultAnd&H40000000Then

lResult=lResultXor&HC0000000XorlX8XorlY8

Else

lResult=lResultXor&H40000000XorlX8XorlY8

EndIf

Else

lResult=lResultXorlX8XorlY8

EndIf

AddUnsigned=lResult

EndFunction

PrivateFunctionmd5_F(x,y,z)

md5_F=(xAndy)Or((Notx)Andz)

EndFunction

PrivateFunctionmd5_G(x,y,z)

md5_G=(xAndz)Or(yAnd(Notz))

EndFunction

PrivateFunctionmd5_H(x,y,z)

md5_H=(xXoryXorz)

EndFunction

PrivateFunctionmd5_I(x,y,z)

md5_I=(yXor(xOr(Notz)))

EndFunction

PrivateSubmd5_FF(a,b,c,d,x,s,ac)

a=AddUnsigned(a,AddUnsigned(AddUnsigned(md5_F(b,c,d),x),ac))

a=RotateLeft(a,s)

a=AddUnsigned(a,b)

EndSub

PrivateSubmd5_GG(a,b,c,d,x,s,ac)

a=AddUnsigned(a,AddUnsigned(AddUnsigned(md5_G(b,c,d),x),ac))

a=RotateLeft(a,s)

a=AddUnsigned(a,b)

EndSub

PrivateSubmd5_HH(a,b,c,d,x,s,ac)

a=AddUnsigned(a,AddUnsigned(AddUnsigned(md5_H(b,c,d),x),ac))

a=RotateLeft(a,s)

a=AddUnsigned(a,b)

EndSub

PrivateSubmd5_II(a,b,c,d,x,s,ac)

a=AddUnsigned(a,AddUnsigned(AddUnsigned(md5_I(b,c,d),x),ac))

a=RotateLeft(a,s)

a=AddUnsigned(a,b)

EndSub

PrivateFunctionConvertToWordArray(sMessage)

DimlMessageLength

DimlNumberOfWords

DimlWordArray()

DimlBytePosition

DimlByteCount

DimlWordCount

ConstMODULUS_BITS=512

ConstCONGRUENT_BITS=448

lMessageLength=Len(sMessage)

lNumberOfWords=(((lMessageLength+((MODULUS_BITS-CONGRUENT_BITS)BITS_TO_A_BYTE))(MODULUS_BITSBITS_TO_A_BYTE))+1)*(MODULUS_BITSBITS_TO_A_WORD)

ReDimlWordArray(lNumberOfWords-1)

lBytePosition=0

lByteCount=0

DoUntillByteCount>=lMessageLength

lWordCount=lByteCountBYTES_TO_A_WORD

lBytePosition=(lByteCountModBYTES_TO_A_WORD)*BITS_TO_A_BYTE

lWordArray(lWordCount)=lWordArray(lWordCount)OrLShift(Asc(Mid(sMessage,lByteCount+1,1)),lBytePosition)

lByteCount=lByteCount+1

Loop

lWordCount=lByteCountBYTES_TO_A_WORD

lBytePosition=(lByteCountModBYTES_TO_A_WORD)*BITS_TO_A_BYTE

lWordArray(lWordCount)=lWordArray(lWordCount)OrLShift(&H80,lBytePosition)

lWordArray(lNumberOfWords-2)=LShift(lMessageLength,3)

lWordArray(lNumberOfWords-1)=RShift(lMessageLength,29)

ConvertToWordArray=lWordArray

EndFunction

PrivateFunctionWordToHex(lValue)

DimlByte

DimlCount

ForlCount=0To3

lByte=RShift(lValue,lCount*BITS_TO_A_BYTE)Andm_lOnBits(BITS_TO_A_BYTE-1)

WordToHex=WordToHex&Right("0"&Hex(lByte),2)

Next

EndFunction

PublicFunctionMD5(sMessage)

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)

m_lOnBits(8)=CLng(511)

m_lOnBits(9)=CLng(1023)

m_lOnBits(10)=CLng(2047)

m_lOnBits(11)=CLng(4095)

m_lOnBits(12)=CLng(8191)

m_lOnBits(13)=CLng(16383)

m_lOnBits(14)=CLng(32767)

m_lOnBits(15)=CLng(65535)

m_lOnBits(16)=CLng(131071)

m_lOnBits(17)=CLng(262143)

m_lOnBits(18)=CLng(524287)

m_lOnBits(19)=CLng(1048575)

m_lOnBits(20)=CLng(2097151)

m_lOnBits(21)=CLng(4194303)

m_lOnBits(22)=CLng(8388607)

m_lOnBits(23)=CLng(16777215)

m_lOnBits(24)=CLng(33554431)

m_lOnBits(25)=CLng(67108863)

m_lOnBits(26)=CLng(134217727)

m_lOnBits(27)=CLng(268435455)

m_lOnBits(28)=CLng(536870911)

m_lOnBits(29)=CLng(1073741823)

m_lOnBits(30)=CLng(2147483647)

m_l2Power(0)=CLng(1)

m_l2Power(1)=CLng(2)

m_l2Power(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_l2Power(9)=CLng(512)

m_l2Power(10)=CLng(1024)

m_l2Power(11)=CLng(2048)

m_l2Power(12)=CLng(4096)

m_l2Power(13)=CLng(8192)

m_l2Power(14)=CLng(16384)

m_l2Power(15)=CLng(32768)

m_l2Power(16)=CLng(65536)

m_l2Power(17)=CLng(131072)

m_l2Power(18)=CLng(262144)

m_l2Power(19)=CLng(524288)

m_l2Power(20)=CLng(1048576)

m_l2Power(21)=CLng(2097152)

m_l2Power(22)=CLng(4194304)

m_l2Power(23)=CLng(8388608)

m_l2Power(24)=CLng(16777216)

m_l2Power(25)=CLng(33554432)

m_l2Power(26)=CLng(67108864)

m_l2Power(27)=CLng(134217728)

m_l2Power(28)=CLng(268435456)

m_l2Power(29)=CLng(536870912)

m_l2Power(30)=CLng(1073741824)

Dimx

Dimk

DimAA

DimBB

DimCC

DimDD

Dima

Dimb

Dimc

Dimd

ConstS11=7

ConstS12=12

ConstS13=17

ConstS14=22

ConstS21=5

ConstS22=9

ConstS23=14

ConstS24=20

ConstS31=4

ConstS32=11

ConstS33=16

ConstS34=23

ConstS41=6

ConstS42=10

ConstS43=15

ConstS44=21

x=ConvertToWordArray(sMessage)

a=&H67452301

b=&HEFCDAB89

c=&H98BADCFE

d=&H10325476

Fork=0ToUBound(x)Step16

AA=a

BB=b

CC=c

DD=d

md5_FFa,b,c,d,x(k+0),S11,&HD76AA478

md5_FFd,a,b,c,x(k+1),S12,&HE8C7B756

md5_FFc,d,a,b,x(k+2),S13,&H242070DB

md5_FFb,c,d,a,x(k+3),S14,&HC1BDCEEE

md5_FFa,b,c,d,x(k+4),S11,&HF57C0FAF

md5_FFd,a,b,c,x(k+5),S12,&H4787C62A

md5_FFc,d,a,b,x(k+6),S13,&HA8304613

md5_FFb,c,d,a,x(k+7),S14,&HFD469501

md5_FFa,b,c,d,x(k+8),S11,&H698098D8

md5_FFd,a,b,c,x(k+9),S12,&H8B44F7AF

md5_FFc,d,a,b,x(k+10),S13,&HFFFF5BB1

md5_FFb,c,d,a,x(k+11),S14,&H895CD7BE

md5_FFa,b,c,d,x(k+12),S11,&H6B901122

md5_FFd,a,b,c,x(k+13),S12,&HFD987193

md5_FFc,d,a,b,x(k+14),S13,&HA679438E

md5_FFb,c,d,a,x(k+15),S14,&H49B40821

md5_GGa,b,c,d,x(k+1),S21,&HF61E2562

md5_GGd,a,b,c,x(k+6),S22,&HC040B340

md5_GGc,d,a,b,x(k+11),S23,&H265E5A51

md5_GGb,c,d,a,x(k+0),S24,&HE9B6C7AA

md5_GGa,b,c,d,x(k+5),S21,&HD62F105D

md5_GGd,a,b,c,x(k+10),S22,&H2441453

md5_GGc,d,a,b,x(k+15),S23,&HD8A1E681

md5_GGb,c,d,a,x(k+4),S24,&HE7D3FBC8

md5_GGa,b,c,d,x(k+9),S21,&H21E1CDE6

md5_GGd,a,b,c,x(k+14),S22,&HC33707D6

md5_GGc,d,a,b,x(k+3),S23,&HF4D50D87

md5_GGb,c,d,a,x(k+8),S24,&H455A14ED

md5_GGa,b,c,d,x(k+13),S21,&HA9E3E905

md5_GGd,a,b,c,x(k+2),S22,&HFCEFA3F8

md5_GGc,d,a,b,x(k+7),S23,&H676F02D9

md5_GGb,c,d,a,x(k+12),S24,&H8D2A4C8A

md5_HHa,b,c,d,x(k+5),S31,&HFFFA3942

md5_HHd,a,b,c,x(k+8),S32,&H8771F681

md5_HHc,d,a,b,x(k+11),S33,&H6D9D6122

md5_HHb,c,d,a,x(k+14),S34,&HFDE5380C

md5_HHa,b,c,d,x(k+1),S31,&HA4BEEA44

md5_HHd,a,b,c,x(k+4),S32,&H4BDECFA9

md5_HHc,d,a,b,x(k+7),S33,&HF6BB4B60

md5_HHb,c,d,a,x(k+10),S34,&HBEBFBC70

md5_HHa,b,c,d,x(k+13),S31,&H289B7EC6

md5_HHd,a,b,c,x(k+0),S32,&HEAA127FA

md5_HHc,d,a,b,x(k+3),S33,&HD4EF3085

md5_HHb,c,d,a,x(k+6),S34,&H4881D05

md5_HHa,b,c,d,x(k+9),S31,&HD9D4D039

md5_HHd,a,b,c,x(k+12),S32,&HE6DB99E5

md5_HHc,d,a,b,x(k+15),S33,&H1FA27CF8

md5_HHb,c,d,a,x(k+2),S34,&HC4AC5665

md5_IIa,b,c,d,x(k+0),S41,&HF4292244

md5_IId,a,b,c,x(k+7),S42,&H432AFF97

md5_IIc,d,a,b,x(k+14),S43,&HAB9423A7

md5_IIb,c,d,a,x(k+5),S44,&HFC93A039

md5_IIa,b,c,d,x(k+12),S41,&H655B59C3

md5_IId,a,b,c,x(k+3),S42,&H8F0CCC92

md5_IIc,d,a,b,x(k+10),S43,&HFFEFF47D

md5_IIb,c,d,a,x(k+1),S44,&H85845DD1

md5_IIa,b,c,d,x(k+8),S41,&H6FA87E4F

md5_IId,a,b,c,x(k+15),S42,&HFE2CE6E0

md5_IIc,d,a,b,x(k+6),S43,&HA3014314

md5_IIb,c,d,a,x(k+13),S44,&H4E0811A1

md5_IIa,b,c,d,x(k+4),S41,&HF7537E82

md5_IId,a,b,c,x(k+11),S42,&HBD3AF235

md5_IIc,d,a,b,x(k+2),S43,&H2AD7D2BB

md5_IIb,c,d,a,x(k+9),S44,&HEB86D391

a=AddUnsigned(a,AA)

b=AddUnsigned(b,BB)

c=AddUnsigned(c,CC)

d=AddUnsigned(d,DD)

Next

MD5=LCase(WordToHex(a)&WordToHex(b)&WordToHex(c)&WordToHex(d))

'MD5=LCase(WordToHex(b)&WordToHex(c))'Icropthistofit16bytedatabasepassword:D

EndFunction

%>

【ASP + Serv-u 实现FTP的代码】相关文章:

用ASP木马实现FTP和解压缩

对ASP脚本源代码进行加密

ASP模板类代码

实现对Access数据库表重命名的一段代码

用VB生成DLL封装ASP连接数据库的代码

ASP下实现自动采集程序及入库的代码

ASP编程常用的代码

用ASP实现对ORACLE数据库的操作

用ASP应用程序实现自己的UrlDeCode

ASP与PHP的不同之处

精品推荐
分类导航