Dün, bir arkadaşım tarafından bana gönderilen WeChat açık platform kaynak kodunun asp.net versiyonunu aldım.
Bugün açıp içinde ne olduğunu görmek istiyorum, önce veritabanını SQL Server 2008'e bağlamak,
Sonra projeyi açın ve aşağıdaki şekilde gösterildiği gibi web projesini çalıştırmak için crtl+F5 çalıştırın:
Bu yüzden hemen veritabanının dt_manager yönetici tablosunu kontrol ettim ve yönetici hesabının admin olduğunu gördüm, ama şifrenin şifreli olduğunu bilmiyordum, sonuçta yeni başlayan biriydim
1 1 1 admin 77F992940A0EFD8025F5571B133BA6D5 28LH48 Süper admin 13800138000 123@qq.com 0 2013-12-04 01:53:36.000 1000000 0 888 12 186 Sana NULL 0 demiyor
Önce md5 web sitesine atıp şifresini çözün
Mu Buldunuz, 123456, admin, 123, admin888 gibi yaygın kullanılan birkaç şifreyi denedim, ama yine de giriş yapamadım
Ne yazık ki, asp.net kaynak kodunu kontrol edeceğim ve şifreli olduğunu görüyorum:
- public Model.manager GetModel(string user_name, string password, bool is_encrypt)
- {
- //检查一下是否需要加密
- if (is_encrypt)
- {
- //先取得该用户的随机密钥
- string salt = dal.GetSalt(user_name);
- if (string.IsNullOrEmpty(salt))
- {
- return null;
- }
- //把明文进行加密重新赋值
- password = DESEncrypt.Encrypt(password, salt);
- }
- return dal.GetModel(user_name, password);
- }
Kopya kodu
Genel olarak, önce kullanıcı tablosunda kullanıcının tuz değeri olduğu değerlendirilir ve varsa, kullanıcının girdiği şifre ve veritabanından elde edilen tuz değeri kullanılır
DESEncrypt şifreli, (ben de bilmiyorum.)DESEncrypt nedir?Sonra, şifreli şifreyi ve kullanıcıyı dal'a at. GetMode yöntemi,
Tekrar değerlendirmek gerekirse, yöntemde bir seçme ifadesi var ve kod şöyledir:
- /// <summary>
- /// 根据用户名密码返回一个实体
- /// </summary>
- public Model.manager GetModel(string user_name, string password)
- {
- StringBuilder strSql = new StringBuilder();
- strSql.Append("select id from " + databaseprefix + "manager");
- strSql.Append(" where user_name=@user_name and password=@password and is_lock=0");
- SqlParameter[] parameters = {
- new SqlParameter("@user_name", SqlDbType.NVarChar,100),
- new SqlParameter("@password", SqlDbType.NVarChar,100)};
- parameters[0].Value = user_name;
- parameters[1].Value = password;
- object obj = DbHelperSQL.GetSingle(strSql.ToString(), parameters);
- if (obj != null)
- {
- return GetModel(Convert.ToInt32(obj));
- }
- return null;
- }
Kopya kodu
Bu cihazı nasıl çözeceğimi bilmiyorum, o yüzden veritabanındaki şifreli şifreyi değiştireceğim! Çıngırtı
C#, aşağıdaki şekilde gösterildiği gibi şifre yerine bir kesme noktası belirler:
Gack, şifreli metin 123456 şifreleme alındıktan sonra EB51565598856A17 ve karar vererek veritabanına gidip güncelleme ifadesi ile değiştirin
Giriş başarılı!
|