<!--#include file="md5.asp"-->
<%
'************************************************ *
'* 作者:awaysrain(绝对零度) *
'* 完成时间:2003-10-10 *
'* 测试环境:WIN2000SERVER,SERV-U 4.2-beta版*
'************************************************ *
Dim iniPath,iniFileName,iniStr,tmpStr,n
Dim userName,passWord,tmp
userName = "myfso222" '用户名
passWord = "awaysrain" '密码
tmp = "ai" '随机生成两个小写字母,(应该是随机生成的,但是我这里省略了)
passWord = tmp & UCase(md5(passWord)) 'パスワードは MD5 で暗号化されています。Dongwang の MD5 暗号化プログラムを使用して、ランダムに 2 つの小文字を生成し、それらをパスワードと結合して MD5 暗号化を実行します。パスワードと MD5 暗号化結果がパスワードとして保存されます。たとえば、以下のawaysrain ユーザーの場合、私のパスワードは awaysrain です。まず、2 つの小文字 ai をランダムに生成し、それらを私のパスワード awaysrain に接続して、aiawaysrain と MD5 暗号化を取得します。 9118bfd94a9ce9CF37AE5bAA947ed596 2 つの小文字 AI および MD5 暗号化結果をランダムに生成する 9118bfd94a9cf37ae5baa947ed596 パスワードを取得するための接続 AI9118BFD94A9CF37AE5BA A947ed596
inipath = "D: Program Files Serv-U" 'ini ファイル
iniFileName = "ServUDaemon.ini" 'ini的文件名
Set fso=Server.CreateObject("Scripting.FileSystemObject")
Set ServUIni = fso.OpenTextFile(iniPath & "" & iniFileName,1,false)
iniStr = ""
n = 0
addedUserList = false
Set tf = fso.CreateTextFile(iniPath & "" & iniFileName & "._awaysrain.tmp", True)
'新しい一時 INI ファイルを生成する
Do While not ServUIni.AtEndOfStream
tmpStr = ServUIni.ReadLine
If Instr("awaysrain||" & tmpStr,"awaysrain||User")>0 then
'记录用户原来的数量
n = n+1
End If
If Instr("awaysrain||" & tmpStr,"awaysrain||[USER=")>0 and not addedUserList then
'往用户列表的部分添加现在的用户
n = n +1
tf.WriteLine("ユーザー" & n & "= & ユーザー名 & "|1|0")
addedUserList = true
終了の場合
tf.WriteLine(tmpStr)
ループ
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文件--------------------------
Set f1 = fso.GetFile(iniPath & "" & iniFileName)
f1.Copy (iniPath & "" & iniFileName & "._awaysrain.bak")
f1.Delete
'--------------------------Change the generated temporary INI file to the official INI------------- ---- --------
Set f1 = fso.GetFile(iniPath & "" & iniFileName & "._awaysrain.tmp")
f1.Copy (iniPath & "" & iniFileName)
f1.
削除 fso = 何も設定しない
%>
注: 上記のコードは、ServUDaemon.ini の形式にドメインが 1 つだけあり、
少なくとも 1 人のユーザーによってテストされていることを前提としています。ServUDaemon.ini ファイルの構造は次のとおりです。
=================================
[ドメイン1]
ユーザー1=222|1|0
ユーザー 2=myfso111|1|0
[USER=222|1]
パスワード=hwB1ECF70CDAF5DAE2B981AE394EEFCDC0
HomeDir=E:Temp
RelPaths=1
タイムアウト=600
Access1=E:Temp|RLP
[ユーザー=myfso111|1]
パスワード=ai9118BFD94A9CE9CF37AE5BAA947ED596
ホームディレクトリ=e:temp
relpaths = 1
タイムアウト= 600
Access1=E:Temp|RLP
生成后的文件结构如下
=================================
[domain1]
user1 = 222 | 1 | 0
ユーザー 2=myfso111|1|0
ユーザー 3=myfso222|1|0
[USER=222|1]
パスワード=hwB1ECF70CDAF5DAE2B981AE394EEFCDC0
ホームディレクトリ=E:Temp
RelPaths=1
タイムアウト= 600
Access1=E:Temp|RLP
[ユーザー=myfso111|1]
Password=ai9118BFD94A9CE9CF37AE5BAA947ED596
ホームディレクトリ=e:temp
RelPaths=1
タイムアウト=600
Access1=E:Temp|RLP
[ユーザー=myfso222|1]
Password=ai9118BFD94A9CE9CF37AE5BAA947ED596
ホームディレクトリ=e:temp
RelPaths=1
タイムアウト=600
Access1=E:Temp|RLP
MD5.ASPが添付されています
=========================================
<%
プライベート定数 BITS_TO_A_BYTE = 8
プライベート定数 BYTES_TO_A_WORD = 4
プライベート Const BITS_TO_A_WORD = 32
プライベート m_lOnBits(30)
プライベート m_l2Power(30)
プライベート関数 LShift(lValue, iShiftBits)
iShiftBits = 0 の場合
LShift = lValue
終了関数
ElseIf iShiftBits = 31 then
lValue と 1 の場合
LShift = &H80000000
それ以外
Lシフト = 0
終了の場合
終了関数
ElseIf iShiftBits < 0 または iShiftBits > 31 then
エラーレイズ6
End If
If (lValue および m_l2Power(31 - iShiftBits)) then
LShift = ((lValue And m_lOnBits(31 - (iShiftBits + 1))) * m_l2Power(iShiftBits)) Or &H80000000
それ以外
LShift = ((lValue And m_lOnBits(31 - iShiftBits)) * m_l2Power(iShiftBits))
終了の場合
終了関数
プライベート関数 RShift(lValue, iShiftBits)
iShiftBits = 0 の場合
RShift = lValue
終了関数
ElseIf iShiftBits = 31 then
lValue と &H80000000 の場合
Rシフト = 1
それ以外
Rシフト = 0
終了の場合
終了関数
ElseIf iShiftBits < 0 Or iShiftBits > 31 Then
Err.Raise 6
End If
RShift = (lValue And &H7FFFFFFE) m_l2Power(iShiftBits)
If (lValue And &H80000000) then
RShift = (RShift または (&H40000000 m_l2Power(iShiftBits - 1)))
終了の場合
終了関数
プライベート関数 RotateLeft(lValue, iShiftBits)
RotateLeft = LShift(lValue, iShiftBits) または RShift(lValue, (32 - iShiftBits))
End Function
Private Function AddUnsigned(lX, lY)
×4
y4
x8
y8
Dim lResult
lX8 = lX And &H80000000
lY8 = ly および &H80000000
LX4 = LXおよびH40000000
lY4 = lY And &H40000000
lResult = (lX And &H3FFFFFFF) + (lY And &H3FFFFFFF)
If lX4 And lY4 then
lResult = lResult Xor &H80000000 Xor lX8 Xor lY8
それ以外の場合、lX4 または lY4 の場合
If lResult And &H40000000 Then
lResult = lResult Xor &HC0000000 Xor lX8 Xor lY8
それ以外
lResult = lResult Xor &H40000000 Xor lX8 Xor lY8
終了の場合
それ以外
lResult = lResult Xor lX8 Xor lY8
End If
AddUnsigned = lResult
終了関数
プライベート関数 md5_F(x, y, z)
md5_F = (x と y) または ((x ではない) と z)
終了関数
プライベート関数 md5_G(x, y, z)
md5_G = (x と z) または (y と (z ではない))
終了関数
プライベート関数 md5_H(x, y, z)
md5_H = (x Xor y Xor z)
終了関数
プライベート関数 md5_I(x, y, z)
md5_I = (y Xor (x Or (Not z)))
End Function
Private Sub md5_FF(a, b, c, d, x, s, ac)
a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_F(b, c, d), x), ac))
a = 左回転(a, s)
a = AddUnsigned(a, b)
End Sub
Private Sub md5_GG(a, b, c, d, x, s, ac)
a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_G(b, c, d), x), ac))
a = 左回転(a, s)
a = AddUnsigned(a, b)
End Sub
Private Sub md5_HH(a, b, c, d, x, s, ac)
a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_H(b, c, d), x), ac))
a = 左回転(a, s)
a = AddUnsigned(a, b)
End Sub
Private Sub md5_II(a, b, c, d, x, s, ac)
a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_I(b, c, d), x), ac))
a = 左回転(a, s)
a = AddUnsigned(a, b)
End Sub
プライベート関数 ConvertToWordArray(sMessage)
Dim lMessageLength
薄暗い lNumberOfWords
Dim lWordArray()
Dim lBytePosition
ディム lByteCount
Dim lWordCount
Const MODULUS_BITS = 512
Const CONGRUENT_BITS = 448
lMessageLength = Len(sMessage)
lNumberOfWords = (((lMessageLength + ((MODULUS_BITS - CONGRUENT_BITS) BITS_TO_A_BYTE)) (MODULUS_BITS BITS_TO_A_BYTE)) + 1) * (MODULUS_BITS BITS_TO_A_WORD)
ReDim lWordArray(lNumberOfWords - 1)
lBytePosition = 0
lバイト数 = 0
lByteCount >= lMessageLength まで実行します
lwordcount = lbytecount bytes_to_a_word
lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE
lWordArray(lWordCount) = lWordArray(lWordCount) または LShift(Asc(Mid(sMessage, lByteCount + 1, 1)), lBytePosition)
lByteCount = lByteCount + 1
Loop
lWordCount = lByteCount BYTES_TO_A_WORD
lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE
lWordArray(lWordCount) = lWordArray(lWordCount) または LShift(&H80, lBytePosition)
lWordArray(lNumberOfWords - 2) = LShift(lMessageLength, 3)
lWordArray(lNumberOfWords - 1) = RShift(lMessageLength, 29)
ConvertToWordArray = lWordArray
終了関数
プライベート関数 WordToHex(lValue)
Dim lByte
Dim lCount
lCount = 0 ~ 3
lByte = RShift(lValue, lCount * BITS_TO_A_BYTE) および m_lOnBits(BITS_TO_A_BYTE - 1)
WordToHex = WordToHex & Right("0" & Hex(lByte), 2)
次
終了機能
パブリック関数 MD5(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)
ディム×
ディムk
ディムAA
ディムBB
ディムCC
ディムDD
ディム a
ディムb
ディムc
寸法定数
S11 = 7
定数 S12 = 12
定数 S13 = 17
定数S14 = 22
定数S21 = 5
const S22 = 9
定数 S23 = 14
定数S24 = 20
定数 S31 = 4
定数 S32 = 11
定数 S33 = 16
定数S34 = 23
定数 S41 = 6
定数S42 = 10
定数 S43 = 15
const s44 = 21
x = converttowordarray(smessage)
a =&h67452301
b = &HEFCDAB89
c = &H98BADCFE
d = &H10325476
For k = 0 To UBound(x) Step 16
AA = a
BB = b
CC=c
DD = d
md5_FF a、b、c、d、x(k + 0)、S11、&HD76AA478
md5_FF d、a、b、c、x(k + 1)、S12、&HE8C7B756
Md5_ff C、D、A、B、X(K + 2)、S13、&H242070DB
md5_FF b、c、d、a、x(k + 3)、S14、&HC1BDCEEE
md5_FF a、b、c、d、x(k + 4)、S11、&HF57C0FAF
md5_FF d、a、b、c、x(k + 5)、S12、&H4787C62A
md5_FF c、d、a、b、x(k + 6)、S13、&HA8304613
md5_FF b、c、d、a、x(k + 7)、S14、&HFD469501
md5_FF a、b、c、d、x(k + 8)、S11、&H698098D8
MD5_FF D、A、B、C、X(K + 9)、S12、およびH8B44F7AF
md5_FF c、d、a、b、x(k + 10)、S13、&HFFFF5BB1
md5_FF b、c、d、a、x(k + 11)、S14、&H895CD7BE
md5_FF a、b、c、d、x(k + 12)、S11、&H6B901122
md5_FF d, a, b, c, x(k + 13), S12, &HFD987193
md5_FF c、d、a、b、x(k + 14)、S13、&HA679438E
md5_FF b、c、d、a、x(k + 15)、S14、&H49B40821
md5_GG a、b、c、d、x(k + 1)、S21、&HF61E2562
md5_GG d、a、b、c、x(k + 6)、S22、&HC040B340
md5_GG c、d、a、b、x(k + 11)、S23、&H265E5A51
md5_GG b、c、d、a、x(k + 0)、S24、&HE9B6C7AA
md5_GG a、b、c、d、x(k + 5)、S21、&HD62F105D
md5_GG d、a、b、c、x(k + 10)、S22、&H2441453
md5_GG c, d, a, b, x(k + 15), S23, &HD8A1E681
md5_GG b, c, d, a, x(k + 4), S24, &HE7D3FBC8
MD5_GG A、B、C、D、X(K + 9)、S21、およびH21E1CDE6
md5_GG d、a、b、c、x(k + 14)、S22、&HC33707D6
md5_GG c、d、a、b、x(k + 3)、S23、&HF4D50D87
md5_GG b、c、d、a、x(k + 8)、S24、&H455A14ED
md5_GG a、b、c、d、x(k + 13)、S21、&HA9E3E905
MD5_GG D、A、B、C、X(K + 2)、S22、&HFCEFA3F8
md5_GG c、d、a、b、x(k + 7)、S23、&H676F02D9
MD5_GG B、C、D、A、X(K + 12)、S24、&H8D2A4C8A
MD5_HH A、B、C、D、X(K + 5)、S31、&HFFFA3942
md5_HH d、a、b、c、x(k + 8)、S32、&H8771F681
md5_HH c、d、a、b、x(k + 11)、S33、&H6D9D6122
md5_HH b, c, d, a, x(k + 14), S34, &HFDE5380C
md5_HH a、b、c、d、x(k + 1)、S31、&HA4BEEA44
md5_HH d、a、b、c、x(k + 4)、S32、&H4BDECFA9
md5_HH c、d、a、b、x(k + 7)、S33、&HF6BB4B60
md5_HH b、c、d、a、x(k + 10)、S34、&HBEBFBC70
md5_HH a、b、c、d、x(k + 13)、S31、&H289B7EC6
md5_HH d、a、b、c、x(k + 0)、S32、&HEAA127FA
md5_HH c、d、a、b、x(k + 3)、S33、&HD4EF3085
md5_HH b、c、d、a、x(k + 6)、S34、&H4881D05
md5_HH a、b、c、d、x(k + 9)、S31、&HD9D4D039
md5_HH d、a、b、c、x(k + 12)、S32、&HE6DB99E5
md5_HH c、d、a、b、x(k + 15)、S33、&H1FA27CF8
md5_HH b、c、d、a、x(k + 2)、S34、&HC4AC5665
md5_II a、b、c、d、x(k + 0)、S41、&HF4292244
md5_II d、a、b、c、x(k + 7)、S42、&H432AFF97
md5_II c、d、a、b、x(k + 14)、S43、&HAB9423A7
md5_II b、c、d、a、x(k + 5)、S44、&HFC93A039
md5_II a、b、c、d、x(k + 12)、S41、&H655B59C3
md5_II d、a、b、c、x(k + 3)、S42、&H8F0CCC92
md5_II c、d、a、b、x(k + 10)、S43、&HFFEFF47D
md5_II b、c、d、a、x(k + 1)、S44、&H85845DD1
md5_II a、b、c、d、x(k + 8)、S41、&H6FA87E4F
md5_II d、a、b、c、x(k + 15)、S42、&HFE2CE6E0
md5_II c、d、a、b、x(k + 6)、S43、&HA3014314
md5_II b、c、d、a、x(k + 13)、S44、&H4E0811A1
md5_II a、b、c、d、x(k + 4)、S41、&HF7537E82
md5_II d、a、b、c、x(k + 11)、S42、&HBD3AF235
md5_II c、d、a、b、x(k + 2)、S43、&H2AD7D2BB
md5_II b, c, d, a, x(k + 9), S44, &HEB86D391
a = AddUnsigned(a, AA)
b = AddUnsigned(b, BB)
c = AddUnsigned(c, CC)
d = AddUnsigned(d, DD)
次の
md5 = lcase(wordtohex(a)&wordtohex(b)&wordtohex(c)&wordtohex(d))
'md5 = lcase(wordtohex(b)&wordtohex(c))'私はこれをトリミングして16Byteデータベースパスワード:D
終了機能
%>