分享
 
 
 

为Serv-U提供在线修改密码功能

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

由于日常工作的需要,单位使用Serv-U架设了一个FTP服务器,可是自从接手之后发现存在着一个非常严重的问题,这个FTP服务器是对外公开的,居然很多用户都没有设置密码。如果强制要求所有人设置密码又必须在服务器上设,这样岂不是要所有人都把自己的密码告诉管理员吗,毕竟很多人习惯于用同一个密码的。怎么办呢?最好的办法当然是能够提供一个Web页面来提供密码的修改功能。

说干就干,在网上查了一下,有一种方法是使用Serv-U自身提供的ODBC功能,用数据库来存储密码,通过直接对数据库进行操作来实现密码的修改功能,但经过考试这种方法并不太可行。因为这个FTP服务器已经运行了一年之久,里面已有将近六十个用户,要将这些用户从Ini文件移植到数据库出现错误的几率还是比较高的,还不如直接对INI文件进行操作来得干脆。

首先是要搞清楚Serv-U的用户信息在INI文件中是如何保存的,密码又是如何加密的。INI文件的结构比较简单,修改密码的话只要找到以[User=@UserID|1]节,并修改其下的Password键的值即可。@UserID指的是用户的登录ID。

1[GLOBAL]

2Version=6.1.0.5

3PacketTimeOut=300

4

5

6

7[Domain1]

8User1=

9User2=

10User3=

11

12

13

14[USER=abc|1]

15Password=niE383DC3710266ECAE04A6B3A18A2966D

16HomeDir=D:17AlwaysAllowLogin=1

18ChangePassword=1

19TimeOut=600

20Note1="Wizard generated account"

21Access1=D:22

23

用户密码的加密方法可以在Ser-U官方网站的知识库查到

http://rhinosoft.com/KBArticle.asp?RefNo=1177&prod=su

Manually Entering Encrypted Passwords into the ServUDaemon.ini File

To generate an encrypted password, first two random characters (the 'salt' - in the range a..z, A..Z) are added to the beginning of the clear-text password. This is then hashed using MD5 and the resulting hash is hex-encoded. The result of this is written as plain-text starting with the 2 salt characters followed by the hex-encoded hash.

For a user account in the .ini file, this will look like:

Password=cb644FB1F31184F8D3D169B54B3D46AB1A

The salt is the string "cb", the MD5 hash is "644FB1F31184F8D3D169B54B3D46AB1A".

When verifying a user's password, Serv-U will do the same. It parses the salt from the user's stored password (ie. "cb" in this case), prepends it the password the user sent to it by the client, MD5 hashes it, and compares the result with the stored hash. If the values are equal, then the entered password is correct.

加密的方法也就是随机生成两个字母,然后将字母和密码进行拼接,再求它们的MD5值,最后将随机字母放在MD5值的前面便是加密后的密码。

接下来就可以根据以上的分析编写程序来实现在线修改了。

1 /**//// <summary>

2 /// 获取指定字符串的MD5值

3 /// </summary>

4 /// <param name="strContent"></param>

5 /// <returns></returns>

6 public String MD5( String strContent )

7 {

8 System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();

9 byte[] bytes = System.Text.Encoding.UTF8.GetBytes( strContent );

10 bytes = md5.ComputeHash( bytes );

11 md5.Clear();

12 string ret = "";

13 for(int i=0 ; i<bytes.Length ; i++)

14 {

15 ret += Convert.ToString(bytes[i],16).PadLeft(2,'0');

16 }

17 return ret.PadLeft(32,'0').ToUpper();

18 }

19

20

21 /**//// <summary>

22 /// 生成随便字符串,字符串长度为2

23 /// </summary>

24 /// <returns></returns>

25 public string GetRandomString()

26 {

27 string strReturn = "";

28 Random ran = new Random();

29 strReturn += Convert.ToChar( ran.Next( 26 ) + 'a' ).ToString();

30 strReturn += Convert.ToChar( ran.Next( 26 ) + 'a' ).ToString();

31 return strReturn;

32 }

33

34 //由指定的随机字母和登录密码生成加密后的密码

35 public string CreateCryPassword( string strFrontChars, string strPassword )

36 {

37 return strFrontChars + MD5( strFrontChars + strPassword ).ToUpper().Trim();

38 }

39

40 /**//// <summary>

41 /// “修改密码”的点击事件,在此事件中对密码进行修改

42 /// </summary>

43 /// <param name="sender"></param>

44 /// <param name="e"></param>

45 private void btnModifyPwd_Click(object sender, System.EventArgs e)

46 {

47 string strUserID = txtLoginID.Text;

48 if( strUserID == String.Empty )

49 {

50 controlMessage.InnerHtml = "用户名不能为空";

51 return;

52 }

53

54 //判断两次密码输入是否相同

55 if( txtNewPassword.Text != txtConfirmPassword.Text )

56 {

57 controlMessage.InnerHtml = "两次输入的密码不一致,请重新输入";

58 return;

59 }

60

61 IniFile ini = new IniFile( _strServUDaemonPath );

62 string strSectionValue = "USER=" + strUserID.Trim() + "|1";

63

64 &nbs

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有