|
本帖最后由 sdwfwcm 于 2015-2-1 09:11 编辑
ipcfan在《管家婆知识普及之管家婆A8忘记密码或者清除A8密码方法》http://bbs.sunwy.org/forum.php?mod=viewthread&tid=145396&extra=&page=1中谈到了一种方法,我们知道A8的业务系统跟OA系统是分开的,它们的密码又是相关联的,正常情况下两个密码是一致的,通过OA系统的密码可以得到明码。打开表DBO.CRM.LoginUser找到PassWord列,里边数字、 加号组合就是密码,下边提供的是转换函数,转换是可逆的。[VS2008下通过]
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Microsoft.VisualBasic;
using Microsoft.VisualBasic.CompilerServices;
using System.Runtime.CompilerServices;
namespace ERPPASS
{
public partial class ERP密码 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write(Decrypt(int2str("15+91+128+135+133+129+")));
}
public string str2int(string strSource)
{
string str2 = "";
int num2 = Strings.Len(strSource);
for (int i = 1; i <= num2; i++)
{
str2 = str2 + StringType.FromInteger(Strings.Asc(Strings.Mid(strSource, i, 1)) + 13) + "+";
}
return str2;
}
public string Encrypt(string s)
{
string key = "A8ALLFORYOUFBLHCZCLSLYGYW";
int num4 = Strings.Len(s);
int num3 = Strings.Len(key);
int num6 = num3;
int num7 = num4;
for (int i = 0; ((num6 >> 0x1f) ^ i) <= ((num6 >> 0x1f) ^ num7); i += num6)
{
int num5 = num3;
for (int j = 1; j <= num5; j++)
{
if ((i + j) <= num4)
{
StringType.MidStmtStr(ref s, i + j, 1, StringType.FromChar(Strings.Chr(Strings.Asc(Strings.Mid(s, i + j, 1)) ^ Strings.Asc(Strings.Mid(key, j, 1)))));
if (StringType.StrCmp(Strings.Mid(s, i + j, 1), "\0", false) == 0)
{
StringType.MidStmtStr(ref s, i + j, 1, Strings.Mid(key, j, 1));
}
}
}
}
return s;
}
public string int2str(string strSource)
{
string str2 = "";
object obj2 = Strings.Split(strSource, "+", -1, 0);
int num2 = Information.UBound((Array)obj2, 1) - 1;
for (int i = 0; i <= num2; i++)
{
str2 = str2 + StringType.FromChar(Strings.Chr(IntegerType.FromObject(ObjectType.SubObj(Conversion.Int(RuntimeHelpers.GetObjectValue(LateBinding.LateIndexGet(obj2, new object[] { i }, null))), 13))));
}
return str2;
}
public string Decrypt(string s)
{
string key = "A8ALLFORYOUFBLHCZCLSLYGYW";
int num4 = Strings.Len(s);
int num3 = Strings.Len(key);
int num6 = num3;
int num7 = num4;
for (int i = 0; ((num6 >> 0x1f) ^ i) <= ((num6 >> 0x1f) ^ num7); i += num6)
{
int num5 = num3;
for (int j = 1; j <= num5; j++)
{
if ((i + j) <= num4)
{
StringType.MidStmtStr(ref s, i + j, 1, StringType.FromChar(Strings.Chr(Strings.Asc(Strings.Mid(s, i + j, 1)) ^ Strings.Asc(Strings.Mid(key, j, 1)))));
if (StringType.StrCmp(Strings.Mid(s, i + j, 1), "\0", false) == 0)
{
StringType.MidStmtStr(ref s, i + j, 1, Strings.Mid(key, j, 1));
}
}
}
}
return s;
}
}
}
|
|