| Thành viên | Trả lời |
coder
 lap trinh khong bien gioi 144 bài
| 19-3-2010 21:49:22 Tài khoản của DNN sử dụng ASPNET MemberShip của dotnet 2.0 nên đáng nhẽ là không thể đặt mật khẩu được. Vì cái class bao gồm các method sau :
public override bool ChangePassword(string username, string oldPassword, string newPassword); public override bool ChangePasswordQuestionAndAnswer(string username, string password, string newPasswordQuestion, string newPasswordAnswer);
nhưng và tài khoản của thằng này có thêm một vài thông số tương đối quái dị là cái passwordSal. Để đặt lại mật khẩu của tài khoản DNN chúng ta làm như sau :
đọc ra UserId của chú 'host'.
SELECT u.UserName, ms.Password, ms.PasswordFormat, ms.PasswordSalt, u.UserId FROM aspnet_Users AS u INNER JOIN aspnet_Membership AS ms ON u.UserId = ms.UserId WHERE u.UserName = 'host'
Crypto cy = new Crypto(); string pwd = cy.Encode(txtPass.Text, "iOPf/5fnJQBhBXwY34zWQg==");
rồi update lại bảng aspnet_Users
update aspnet_Users set Password='pwd' where UserId='abc...' --- http://coder.awas.vn http://mobile.awas.vn http://vtv.awas.vn http://baihatviet.awas.vn
|
coder
 lap trinh khong bien gioi 144 bài
| 19-3-2010 21:50:26 Còn cái class lìu tìu làm việc Crypto đây.
namespace Pwd { using System; using System.Reflection; using System.Text; using System.Web.Configuration; using System.Web.Security;
public class Crypto { public Crypto() { }
// Fields private MethodInfo _EncDecMethod = null;
// Methods public string Decrypt(string data) { string str; Initialize(); try { byte[] buffer = Convert.FromBase64String(data); object[] parameters = new object[5]; parameters[0] = false; parameters[1] = buffer; parameters[3] = 0; parameters[4] = buffer.Length; byte[] bytes = (byte[])_EncDecMethod.Invoke(null, parameters); str = Encoding.UTF8.GetString(bytes); } catch { throw new Exception("Failed to encrypt data."); } return str; }
public string Encrypt(byte[] bytes) { string str = ""; Initialize(); try { object[] parameters = new object[5]; parameters[0] = true; parameters[1] = bytes; parameters[3] = 0; parameters[4] = bytes.Length; byte[] inArray = (byte[])_EncDecMethod.Invoke(null, parameters); str = Convert.ToBase64String(inArray); } catch { throw new Exception("Failed to encrypt data."); } return str; }
private void Initialize() { try { _EncDecMethod = typeof(MachineKeySection).GetMethod("EncryptOrDecryptData", BindingFlags.NonPublic | BindingFlags.Static, Type.DefaultBinder, new Type[] { typeof(bool), typeof(byte[]), typeof(byte[]), typeof(int), typeof(int) }, null); } catch { throw new Exception("Failed to initialized base encryption method."); } }
public string Encode(string pass, string salt) { byte[] bytes = Encoding.Unicode.GetBytes(pass); byte[] src = Convert.FromBase64String(salt); byte[] data = new byte[src.Length + bytes.Length]; Buffer.BlockCopy(src, 0, data, 0, src.Length); Buffer.BlockCopy(bytes, 0, data, src.Length, bytes.Length);
string s = Encrypt(data); return s; } } }
--- http://coder.awas.vn http://mobile.awas.vn http://vtv.awas.vn http://baihatviet.awas.vn
|
lamtn

0 bài
| 9-6-2010 7:53:52

|
 |