精华内容
下载资源
问答
  • 解密代码解密代码解密代码解密代码解密代码解密代码
  • asp代码解密工具,这里需要20个字符,我不知道说什么了,哈哈。
  • ASP代码解密

    2011-10-27 17:10:20
    ASP代码解密器ASP代码解密器ASP代码解密器ASP代码解密器ASP代码解密
  • 3款PHP代码解密工具

    2015-06-12 18:39:08
    3款PHP代码解密工具测试可用
  • asp代码解密工具

    2011-10-08 09:51:24
    asp代码解密工具 个人感觉很好用 拿出来分享一下
  • 微信公众平台开发最佳实践第2版 源代码 解密

    千次下载 热门讨论 2015-07-01 23:40:56
    微信公众平台开发最佳实践第2版 源代码 解密 php语言
  • 微信数据库最新的解密方式,C++代码解密微信数据库信息
                   

    一、知识回顾

    最近有人找我弄微信数据库解密的东西,其实这个现在网上都公开了,我在很早之前就静态分析过微信数据库加密算法,不了解的同学可以查看这里:Android中静态方式破解微信数据库加密密码,所以现在有人找我的话我都会告诉他们这个内容,微信数据库加密的密码很简单就是:MD5(IMEI+UIN).Substring(0, 7).toLower;设备的imei和微信登录账号后的唯一表示uin值拼接然后计算MD5值,取前7位在变成小写字母即可。这个我在那篇文章最后也说到了,这个加密算法不会变化的,因为维系为了兼容以前版本,如果数据库加密算法变动,那么老版本的用户升级到新版本,老版本的数据库解密就会失败,也就是用户看不到以前的消息内容了,这个用户会疯的,所以微信即使知道了这个算法被破解了,他也是没办法升级的,所以现在不会变,以后也不会变的。但是比较奇葩的是他按照我的文章操作计算出来的密码还是不可以。所以我就让他把我的数据库文件传给我我来解密,中间其实我遇到了问题最后才知道被微信转码坑了,因为他微信把IMEI和UIN传递给我了,结果我直接复制计算MD5是错的,最后才知道微信消息中有转码的。

     

    二、获取解密密码

    所以开始就计算错误,他一度怀疑微信的加密算法是不是变化了,但是这一点我还是坚信微信不可能换加密算法的,这个原因我之前也说了,对于微信来说几乎是不可能操作的。然后他就在网上搜找到一个收费的PC端工具,大致是这样的:

    只需要选择微信的数据库目录MicroMsg即可,就可以识别出来用户,然后点击指定用户就可以查看对应的数据了,所以他这么一说我倒是有点怀疑我的方法了?因为毕竟他用这个工具解密是没有问题的。所以我就用这个工具查看了一下的确没问题,那么为什么这个工具可以解密成功呢?所以我就想探究这个工具的原理,但是我不会PC端的软件逆向,但是我们可以借助强大的逻辑排除法定位,你看这个工具是需要选择微信数据库目录的,也就是这样的格式:

    我就好奇了,我们在之前的文章中了解到用忽的UIN是存储在xml中的,但是你看这个工具只要导入这个目录就可以解密,也就是说他能够拿到设备imei和uin值,所以我就怀疑他读取这个目录下的几个文件获取的,那么就一个一个排除,首先通过肉眼判断哪些文件肯定不是的,最后发现就这几个cfg文件打开是二进制文件,所以怀疑对象就在这几个文件了,因为文件不多,我们可以这么排除,就是通过逐一修改文件名,然后在用那个工具解密,如果提示错误了,那么就表示这个文件是关键的,通过最后排查,有两个文件不能修改,也就是上图中文件名后面没有11的两个,一个是systemInfo.cfg和CompatibleInfo.cfg了。那么这个文件是二进制文件,怎么解密呢?这个就简单了,直接用Jadx全局搜这两个文件:

    运气很好,正好在第一个dex中就搜到了,点进去查看:

    继续点进去查看:

    到这里就看明白了,原来不是什么加密操作,而是序列化对象到文件中,那么想看这个文件的原始内容就简单了,我们去写一个Java程序把文件中的内容读取出来是Map结果,然后把所有的key和value打印看看结果:

    运行看看结果:

    因为之前他在微信上把他的uin和imei发给我了,所以我一眼就看到了这里有他的imei和uin值,也就是说那个工具的确是通过这两个序列化文件来获取imei值和uin值然后计算密码的,所以我再一次相信他也是用MD5计算那个密码的,所以这时候我就不用他发给我的那个信息了,我就从这里打印的结果直接计算结果,然后在用sqlcipher.exe工具直接查看,竟然解开了:

    所以再一次确认了微信的数据库加密算法没有变化,那为什么他还是没解开呢?因为最后也确认了他和我计算的密码是一样的?那么我就要怀疑他使用的sqlcipher.exe工具了,最后果然是工具出了问题,我把我发给他的工具就可以用了。所以这个过程我被他微信发给我的信息坑了,他被解密数据的工具坑了。不过不管怎么样都成功了。所以以后如果你在操作微信解密失败问题,一定不要怀疑微信算法变了,不可能变的。如果有错误可能这些原因:

    第一、现在很多设备都有很多个imei值,一般是两个,所以如果一个失败了,就尝试第二个。因为你不知道微信获取的是哪个imei值。

    第二、获取imei值我们会用简单的拨号和设置中进行查看,这里我用小米 4+6.0系统验证发现这两种方式查看的值是不一样的,而拨号的方式是正确的。

    第三、就是有的同学imei和uin值都获取对了,但是计算MD5和全是字母小写这一点弄错了,也要注意。

    如果以上都没有问题,那么还是解密失败,就请怀疑你使用给的sqlcipher.exe工具吧,不过没关系了,从现在开始我要带你们开发这个工具,以后只要用我的工具就可以了。

     

    三、C++代码解密数据库

    那么到这里本文就算结束了吗?本来是结束了,因为帮他搞定了解密,但是我就去看了那个工具,发现他查看消息和其他功能都是收费的,这我就不答应了,这么简单的功能还收费,我就喜欢做免费的东西,所以在那一刻之后我决定了自己开发这个工具,功能和他都是差不多,只需要导入MicroMsg目录就可以预览信息了。那么在写这个工具之前,我们不用C++来编写界面,因为我不会,我只会用Java写界面,但是SQLCipher官网中没有Java中可以使用的jar功能,但是我们在之前的文章已经在VS中用C++实践成功了,所以我们可以用Java开发JNI来调用dll文件,把解密工作放到C++中做,数据展示放到Java层做这样就没问题了。其实主要还是我不会C++的图形化开发,我也不想去折腾学习了,因为我觉得价值不是很大。而且用Java做我们可以回顾JNI开发知识也是一件很好的事情。

    那么不多说了,先来解决第一件事就是利用之前的文章说的SQLCipher代码来解密微信数据库看看能否成功,代码修改很简单,直接把我们计算的密码替换一下,然后把微信的加密数据库EnMicroMsg.db放到工程目录下,运行即可:

    可惜的是运行代码提示数据库加密了,也就是我们解密数据库失败了,但是我们用sqlcipher.exe工具查看都没有问题,所以这里的密码是没有问题的,但是哪里出问题呢?代码也是没问题,因为我们之前写的demo都没有问题,所以就怀疑微信的数据库加密做了一些其他设置,我们可能还需要设置一些东西,就跑去SQLCipher官网查看api:

    然后找到这些内容,就尝试执行这些命令:

    然后在执行程序:

    这样就成功了,把userinfo数据表中的数据都成功打印出来了,到这里本文的内容就结束了,后面还有一篇文章介绍如何利用JNI把C++层的解密数据传递到Java层中进行展示,以及如何开发出工具。因为篇幅过长,本文就不在继续讲解了。

     

    那么看完本文之后,了解到微信中会把uin值和imei值序列化到cfg文件中,所以从这里看到我们的确只需要MicroMsg目录就可以进行解密操作了,但是我也发现

    加密数据库都放在这种类似于md5文件夹下面,所以我们为了后面更好的操作,所以我们要搞清楚这个文件夹名字怎么来的,这个比较简单,再去dex文件中跟踪即可:

    点进去查看跟踪可以看到,这里其实我不想说了,因为我之前在网上看到其他人说了,这个文件夹的算法就是:MD5("mm"+uin).toLower 即可。所以我就直接告诉大家了。

    当然因为现在微信作为最常用的聊天通信工具,很多人的聊天信息都保存了,当然微信官方说好了不会上传用户的聊天记录,所以有时候当我们无意中丢失了和朋友之间的聊天记录在找回来很麻烦了,比如手机摔坏了想找回聊天记录怎么办?这时候我们可以这么做吧手机的内存卡卸载下来,这一步一般如果不是一个喜欢动手的同学可以去找专业人员操作:

    卸载下来之后直接可以用电脑访问,这时候看到就是有root身份直接访问微信的沙盒数据,然后直接用这种解密方式就可以找回微信信息进行保存即可。当然如果你在大马路上无意中捡到一部手机的话,如果无法解锁找到失主,最好的方式是交给JC叔叔,当然你可以还有其他办法找到失主,这里不方便多说,当然也有现在很多JC叔叔破案可以通过手机中的微信聊天记录找到线索,如果有了犯罪分子的手机可以通过这种方式进行操作。

     

    本文涉及到的代码项目可以去编码美丽小密圈自取,欢迎加入小密圈一起学习探讨技术

     

    四、总结

    本文的内容就介绍完了,主要是利用C++代码解密微信数据库内容,只要这一步成功了,后续的工具就是把数据展示出来即可,这个是下一篇文章的内容了,敬请期待。

     

    《Android应用安全防护和逆向分析》

    点击立即购买:京东  天猫  

    更多内容:点击这里

    关注微信公众号,最新技术干货实时推送

               
    展开全文
  • SQL代码解密工具

    2018-08-04 14:51:49
    针对SQL存储过程加密进行解密的工具,可以浏览查看加密过的代码
  • 文件:http://pan.baidu.com/s/1i4CYyFF php代码解密 http://phpc.sinaapp.com http://www.phpjm.net/ 压缩包里两个文件夹里面的内容不同,求大神解决!
  • Asp代码解密器.zip

    2008-08-29 20:44:31
    Asp代码解密器.zip,不错的东东ASP脚本解密工具该软件用于对加密的ASP脚本进行解密使用,方便学习研究,支持多种文件类型
  • CMSEasy企业建站源代码解密工具,适用于纯本地解密机制! CMSEasy自6.0版本后,就对lib / defalut目录下面的php代码进入加密了,想改个接口都不行。我是没搞明白为什么要这样搞,说好的只要保留版权信息就可以修改...
  • ASP代码解密破解工具100%能用 下载看看
  • 砖石级的医药卫生行业客户资源管理系统(代码解密版) 砖石级的医药卫生行业客户资源管理系统(代码解密版) 砖石级的医药卫生行业客户资源管理系统(代码解密版) http://zgyhdd.fytcw.com
  • 需求:将数据库中取出的账户密码等密文利用java代码解密,并最终在Python中写入txt 从该例,我们知道了Python可以和java代码一起用。 通过接收url传过来的json数据,对json数据进行解析,就可以拿到数据!这些...

    需求:将数据库中取出的账户密码等密文利用java代码解密,并最终在Python中写入txt


    从该例,我们知道了Python可以和java代码一起用。

    通过接收url传过来的json数据,对json数据进行解析,就可以拿到数据!这些数据便可以为Python所用!


    接下来我们对这个过程进行详细的叙述。。。

    f.write(getJson(value[i]).decode('utf-8').encode('gbk')+'\n\n')
    密文经过了getJson函数后被解密,写入txt的是明文。

    getJson函数如下:

    def getJson(value):
        value=value.replace('+', '%2b')
        url ="http://localhost:8080/ngtradebackend/goods/getdecodejson.html?value=%s"%value
        data = urllib2.urlopen(url).read()
        data=json.loads(data)
        return data['decode']
    我们看到了熟悉的代码urllib2.urlopen(url).read()

    即Python访问了某个链接,只是这个链接比较特殊,返回的不是HTML,而是一组数据,一组json数据


    Python解析json对象

    getJson函数中有这么一句

        data=json.loads(data)
    表示将json对象转换为Python可以处理的对象。这个对象为dictionary类型,所以我们可以通过

    data['decode']  拿到decode这个key对应的value


    url对应的java代码

      //密保解密
        public ModelAndView getDecodeJson(HttpServletRequest request, HttpServletResponse response) throws NgTradeBackendException {
            String value=request.getParameter("value");
        	String decodeValue=value;
        	System.out.println(decodeValue);
            try {
                if(value.startsWith(GOODS_ATTR_KEY_STARTS_WITH_OLD)) {
                    decodeValue=
                        new String(des.decrypt((new BASE64Decoder().decodeBuffer(value.replace(GOODS_ATTR_KEY_STARTS_WITH_OLD, ""))),
                            GOODS_ATTR_KEY_OLD.getBytes()), "UTF-8");
                } else if(value.startsWith(GOODS_ATTR_KEY_STARTS_WITH_NEW)) {
                    decodeValue=
                        new String(des.decrypt((new BASE64Decoder().decodeBuffer(value.replace(GOODS_ATTR_KEY_STARTS_WITH_NEW, ""))),
                            GOODS_ATTR_KEY_NEW.getBytes()), "UTF-8");
                }
            } catch(Exception e) {
                e.printStackTrace();
            }
            Map model=new HashMap();
            model.put("decode", decodeValue);
            return new ModelAndView(JSON_VIEW, model);
        }
    这部分解密的代码在java工程中定义于某个Controller中,对应的url为

    <prop key="/goods/getdecodejson.html">getDecodeJson</prop>
        url ="http://localhost:8080/ngtradebackend/goods/getdecodejson.html?value=%s"%value

    这部分代码返回了JSON对象

            return new ModelAndView(JSON_VIEW, model);
    所以我们能够拿到json对象!


    其实整个过程都是我们熟悉的知识。

    Python访问网页,拿到数据,

    Java接收传过来的数据,进行处理,return一个对象,

    现在这两部分,只是通过一个可以返回json对象的url连接在一起罢了!


    注意

    不过本例中我们需要特别注意一点,以后也需要注意:

    Python访问一个url,不是url正确就一定能访问,

    因为很多网址,只有登录了,才能够访问到。


    之前我们拿不到数据,是因为根本就没有访问到这个url,这个url位于java工程中登录后的代码部分,

    所以我们需要先登录,才能够成功访问。

    展开全文
  • python代码实现仿射密码的解密

    仿射密码简介

    仿射密码的加密算法是一个线性变换,即对任意的明文字符x,先找到x对应的数字(a-z分别对应0-25),然后进行加密变换:y=e(x)=ax+b(mod26)y = e(x) = a*x+b(mod 26),找出数字y对应的字母x*,x*就是x的密文。
    知道a和b的前提下解密过程就是:x=d(e(x))=a(e(x)b)(mod26)x=d(e(x))=a'(e(x)-b)(mod 26),其中aa'为a的逆元(aa=1(mod26a*a'=1(mod 26)。

    实例

    下面我们以 e(x)=(5x+8)mod26e(x)=(5x+8)mod26函数为例子进行介绍,要加密的字符串为 AFFINE CIPHER。
    1
    其对应的加密结果是 IHHWVCSWFRCP。
    对于解密过程,正常解密者具有a与b,可以计算得到 aa'为 21,所以其解密函数是d(x)=21(x−8)(mod26),解密如下:
    2

    加密算法

    '''
    加密算法
    '''
    def Reflect():
        d = {}
        j = 0
        for i in range(ord('a'), ord('z') + 1):
            d[chr(i)] = j
            j += 1
        return d
    def Encode(a, b, s, d):
        c = ''
        for i in s:
            if i == ' ':
                c += i
                continue
            f = (a * d[i] + b) % 26
            for key, value in d.items():
                if value == f:
                    c += key
                    break
        return c
    
    s = input('请输入要加密的字符串:')
    s = s.lower()
    print('-----------加密方程为a*x + b(mod 26)--------------')
    a = eval(input('请输入参数a:'))
    b = eval(input('请输入参数b:'))
    d = Reflect()
    c = Encode(a, b, s, d)
    print('密文为:',c)
    

    唯密文攻击破解实战

    采用频率分析法,根据大量英文文献的统计得出,出现最多次数的两个英文字母为E和T,我们可以先统计出密文中个字母出现的次数,然后将出现最多的字母p1看做是由’E’加密而来的,将出现第二多p2的字母看做是由’T’加密而来的,令e(x)=ax+b(mod26)e(x)=a*x+b(mod 26),因为E对应4,T对应19,有{4a+b=p1(mod26)19a+b=p2(mod26)\begin{cases} 4a+b=p1(mod 26) \\ 19a+b=p2(mod 26)\end{cases}
    可以解出a与b的值,从而计算出明文值。若破译出的明文语义有误,则将’T’对应出现第三多的字母,重新计算a和b,依此类推,直到语义无误。
    解密代码:

    '''
    唯密文攻击
    '''
    #频率分布列表
    index = ['e', 't', 'a', 'o', 'i', 'n', 's', 'h', 'r', 'd', 'l', 'c', 'u', 'm', 'w', 'f', 'g', 'y', 'p', 'b', 'v', 'k', 'j', 'q', 'x', 'z']
    
    def frequency_Sort(s):
        d = dict()
        for i in range(ord('a'),ord('z')+1):
            sum = 0
            for j in s:
                if ord(j)==i :
                    sum += 1
            d[chr(i)] = sum
        d = sorted(d.items(), key = lambda x: x[1], reverse = True) #d的类型变为list,不再是dict
        c = []
        for k in d:
            c.append(k[0])
        return c
    
    def coefficient(a, b, m, n):     #求系数
        x1 = d[a]
        x2 = d[b]
        y1 = d[m]
        y2 = d[n]
        k = 0
        f = (x2 - x1)%26
        point = (y2 - y1) % 26
        while f % point != 0:
            f += 26
            k += 1
            if k == 1000:
                break
        if k == 1000:
            return 2,0
        _a = ( f / point ) % 26
        _b = ( x1 - y1 * _a) % 26
        return _a , _b
    
    def decodeFunction(a, b):
        q = []
        t = [0,1]
        numChu = 26 // a
        numYu = 26 % a
        while numYu != 0:
            q.append(numChu)
            j = a
            a = numYu
            numChu = j // a
            numYu = j % a
        q.append(numChu)
        for i in range(0,len(q) - 1):
            f = -q[i] * t[i + 1] + t[i]
            t.append(f)
        a = t[-1] % 26
        b = (-b * t[-1]) % 26
        return a, b
    s = input('请输入密文:')
    s = s.lower()
    j = 0
    d = dict()
    for i in range(ord('a'), ord('z') + 1):
        d[chr(i)] = j
        j += 1
    w = frequency_Sort(s)
    bug = ''
    for two in range(0, 25):
        for p1 in range(0, len(w) - 1):
            for p2 in range(p1 + 1, len(w)):
                a, b = coefficient(w[p1], w[p2], index[two], index[two + 1])
                if a % 2 == 0 or a % 13 == 0:
                    continue
                a, b = decodeFunction(a, b)
                c = ''
                for i in s:
                    if i == ' ':
                        c += i
                        continue
                    f = (d[i]*a + b)%26
                    for q,v in d.items():
                        if v == f:
                            c += q
                            break
                print('明文为:{}'.format(c))
                bug = input("若语义有误则输入'c'继续尝试(输入's'退出):")
                if bug == 's':
                    break
                else:
                    continue
            if bug == 's':
                break
        if bug == 's':
            break
    
    

    运行情况:
    测试一
    3
    测试二(上面实例里的密文解密
    4

    展开全文
  • 一、知识回顾最近有人找我弄微信数据库解密的东西,其实这个现在网上都公开了,我在很早之前就分析过微信数据库加密算法,不了解的同学可以查看这里:Android中破解微信数据库...
        
    一、知识回顾

    最近有人找我弄微信数据库解密的东西,其实这个现在网上都公开了,我在很早之前就分析过微信数据库加密算法,不了解的同学可以查看这里:Android中破解微信数据库加密密码,所以有人找我的话我都会告诉他们这个内容,微信数据库加密算法:MD5(IMEI+UIN).Substring(0, 7).toLower;设备的imei和微信登录账号后的唯一表示uin值拼接然后计算MD5值,取前7位在变成小写字母即可。这个我在那篇文章最后也说到了,这个加密算法是不会变化的,因为维系为了兼容以前版本,如果数据库加密算法变动,那么老版本的用户升级到新版本,老版本的数据库解密就会失败的,也就是用户看不到以前的消息内容,这个用户会疯的,所以微信即使知道了这个算法被破解了,他也是没办法升级的,所以现在不会变,以后也不会变的。但是比较奇葩的是他按照我的文章操作计算出来的密码还是不可以。所以我就让他把我的数据库文件传给我我来解密,中间其实我遇到了问题最后才知道被微信转码坑了,因为他微信把IMEI和UIN传递给我了,结果我直接复制计算MD5是错的,最后才知道微信消息中有转码的。


    二、获取解密密码

    所以开始就计算错误,他一度怀疑微信的加密算法是不是变化了,但是这一点我还是坚信微信不可能换加密算法的,这个原因我之前也说了,对于微信来说几乎是不可能操作的。然后他就在网上搜找到一个收费的PC端工具,大致是这样的:

    640?wx_fmt=png

    只需要选择微信的数据库目录MicroMsg即可,就可以识别出来用户,然后点击指定用户就可以查看对应的数据了,所以他这么一说我倒是有点怀疑我的方法了?因为毕竟他用这个工具解密是没有问题的。所以我就用这个工具查看了一下的确没问题,那么为什么这个工具可以解密成功呢?所以我就想探究这个工具的原理,但是我不会PC端的软件逆向,但是我们可以借助强大的逻辑排除法定位,你看这个工具是需要选择微信数据库目录的,也就是这样的格式:

    640?wx_fmt=png

    我就好奇了,我们在之前的文章中了解到用忽的UIN是存储在xml中的,但是你看这个工具只要导入这个目录就可以解密,也就是说他能够拿到设备imei和uin值,所以我就怀疑他读取这个目录下的几个文件来获取的,那么就一个一个排除,首先通过肉眼判断哪些文件肯定不是的,最后发现就这几个cfg文件打开是二进制文件,所以怀疑对象就在这几个文件了,因为文件不多,我们可以这么排除,就是通过逐一修改文件名,然后在用那个工具解密,如果提示错误了,那么就表示这个文件是关键的,通过最后排查,有两个文件不能修改,也就是上图中文件名后面没有11的两个,一个是systemInfo.cfgCompatibleInfo.cfg了。那么这个文件是二进制文件,怎么解密呢?这个就简单了,直接用Jadx全局搜这两个文件:

    640?wx_fmt=png

    运气很好,正好在第一个dex中就搜到了,点进去查看:

    640?wx_fmt=png

    继续点进去查看:

    640?wx_fmt=png

    到这里就看明白了,原来不是什么加密操作,而是序列化对象到文件中,那么想看这个文件的原始内容就简单了,我们去写一个Java程序把文件中的内容读取出来是Map结果,然后把所有的key和value打印看看结果:

    640?wx_fmt=png

    运行看看结果:

    640?wx_fmt=png

    因为之前他在微信上把他的uin和imei发给我了,所以我一眼就看到了这里有他的imei和uin值,也就是说那个工具的确是通过这两个序列化文件来获取imei值和uin值然后计算密码的,所以我再一次相信他也是用MD5计算那个密码的,所以这时候我就不用他发给我的那个信息了,我就从这里打印的结果直接计算结果,然后在用sqlcipher.exe工具直接查看,竟然解开了:

    640?wx_fmt=png

    所以再一次确认了微信的数据库加密算法没有变化,那为什么他还是没解开呢?因为最后也确认了他和我计算的密码是一样的?那么我就怀疑他使用的sqlcipher.exe工具,最后果然是工具出了问题,我把我发给他的工具就可以用了。所以这个过程我被他微信发给我的信息坑了,他被解密数据的工具坑了。不过不管怎么样都成功了。所以以后如果你在操作微信解密失败问题,一定不要怀疑微信算法变了,不可能变的。如果有错误可能这些原因:

    • 第一、现在很多设备都有很多个imei值,一般是两个,所以如果一个失败了,就尝试第二个。因为你不知道微信获取的是哪个imei值

    • 第二、获取imei值我们会用简单的拨号和设置中进行查看,这里我用小米 4+6.0系统验证发现这两种方式查看的值是不一样的,而拨号的方式是正确的

    • 第三、就是有的同学imei和uin值都获取对了,但是计算MD5和全是字母小写这一点弄错了,也要注意

    如果以上都是没有问题,那么还是解密失败,就请怀疑你使用的解密工具吧,不过没关系了,从现在开始我要带你们开发这个工具,以后只要用我的工具就可以了。


    三、C++代码解密数据库

    那么到这里本文就算结束了吗?本来是结束了,因为帮他搞定了解密,但是我就去看了那个工具,发现他查看消息和其他功能都是收费的,这我就不答应了,这么简单的功能还收费,我就喜欢做免费的东西,所以在那一刻之后我决定了自己开发这个工具,功能和他都是差不多,只需要导入MicroMsg目录就可以预览信息了。那么在写这个工具之前,我们不用C++来编写界面,注意因为我不会,我只会用Java写界面,但是SQLCipher官网中没有Java中可以使用的jar功能,但是我们在之前的文章已经在VS中用C++实践成功了,所以我们可以用Java开发JNI来调用dll文件,把解密工作放到C++中做,数据展示放到Java层做这样就没问题了。其实主要还是我不会C++的图形化开发,我也不想去折腾学习了,因为我觉得价值不是很大。而且用Java做我们可以回顾JNI开发知识也是一件很好的事情。


    那么不多说了,先来解决第一件事就是利用之前的文章说的SQLCipher代码来解密微信数据库看看能否成功,代码修改很简单,直接把我们计算的密码替换一下,然后把微信的加密数据库EnMicroMsg.db文件放到工程目录下,运行即可:

    640?wx_fmt=png

    可惜的是运行代码提示数据库加密了,也就是我们解密数据库失败了,但是我们用sqlcipher.exe工具查看都没有问题,所以这里的密码是没有问题的,但是哪里出问题呢?代码也是没问题,因为我们之前写的demo都没有问题,所以就怀疑微信的数据库加密做了一些其他设置,我们可能还需要设置一些东西,就跑去SQLCipher官网查看api:

    640?wx_fmt=png

    然后找到这些内容,就尝试执行这些命令:

    640?wx_fmt=png

    然后在执行程序:

    640?wx_fmt=png

    这样就成功了,把userinfo数据表中的数据都成功打印出来了,到这里本文的内容就结束了,后面还有一篇文章介绍如何利用JNI把C++层的解密数据传递到Java层中进行展示,以及如何开发出工具。因为篇幅过长,本文就不在继续讲解了。


    那么看完本文之后,了解到微信中会把uin值和imei值序列化到cfg文件中,所以从这里看到我们的确只需要MicroMsg目录就可以进行解密操作了,但是我也发现

    640?wx_fmt=png

    加密数据库都放在这种类似于md5文件夹下面,所以我们为了后面更好的操作,所以我们要搞清楚这个文件夹名字怎么来的,这个比较简单,再去dex文件中跟踪即可:

    640?wx_fmt=png

    点进去查看跟踪可以看到,这里其实我不想说了,因为我之前在网上看到其他人已经说了,这个文件夹的算法就是字符串"mm"和uin值拼接然后md5的小写字母即可:MD5("mm"+uin).toLower 。所以我就直接告诉大家了。


    当然因为现在微信作为最常用的聊天通信工具,很多人的聊天信息都不管随意删除,当然微信官方说好了不会上传用户的聊天记录,所以有时候当我们无意中丢失了和朋友之间的聊天记录在找回来很麻烦了,比如手机摔坏了想找回聊天记录怎么办?这时候我们可以这么做吧手机的内存卡卸载下来,这一步一般如果不是一个喜欢动手的同学可以去找专业人员操作:

    640?wx_fmt=jpeg

    卸载下来之后直接可以用电脑访问,这时候看到就是有root身份直接访问微信的沙盒数据,然后直接用这种解密方式就可以找回微信信息进行保存即可。当然如果你在大马路上无意中捡到一部手机的话,如果无法解锁找到失主,最好的方式是交给JC叔叔,当然你可以还有其他办法找到失主,这里不方便多说,当然也有现在很多JC叔叔破案可以通过手机中的微信聊天记录找到线索,如果有了犯罪分子的手机可以通过这种方式进行操作。


    严重说明

    本文的目的只有一个就是学习逆向分析技巧,如果有人利用本文技术进行非法操作带来的后果都是操作者自己承担,和本文以及本文作者没有任何关系,本文涉及到的代码项目可以去编码美丽小密圈自取,长按下方二维码加入小密圈一起学习探讨技术

    640?wx_fmt=png


    四、总结

    本文的内容就介绍完了,主要是利用C++代码解密微信数据库内容,只要这一步操作成功了,后续的工具就是把数据展示出来,这个是下一篇文章的内容了,敬请期待。


    手机查看文章不方便,可以网页看

    http://www.520monkey.com


    《Android应用安全防护和逆向分析》 

     点击查看图书详情

    640?wx_fmt=jpeg

    长按下面

    展开全文
  • 解密出来,没处理,只供学习使用,且勿用于商业用途
  • 在网上找了10来款经过加密的ASP源程序,均顺利通过了解密,还原出VB JS代C#码.
  • oracle wrapped 代码解密工具 unwraper

    千次阅读 2018-07-10 10:53:39
    Oracle中的Wrap 功能是为了不让别人看到函数/存储过程的SQL源码的明文,作为技术宅,有的时候想看源码但是看不到的那种心情是可以理解的,发一个简单易用的 Oracle wrapped 解码工具,该工具兼容win98及以上版本的 ...
  • PHP OA源码(附带代码解密工具)

    热门讨论 2011-04-23 16:58:26
    一个大的php+mysql开发的oa系统 源码是加密的 在压缩包里有解密工具 可以获得原代码 供新手学习参考
  • 最近有人找我弄微信数据库解密的东西,其实这个现在网上都公开了,我在很早之前就静态分析过微信数据库加密算法,不了解的同学可以查看这里:Android中静态方式破解微信数据库加密密码,所以现在有人找我的话我都会...
  • 1. 安全测试:测试你用网络工具加密的代码是否可以被快速解密。 2. 学习参考:对自己感兴趣的源码解密用于编程学习,或了解加密解密。 3. 安全评估:解密自己用的第三方源码是否有危险行为,比如后门、间谍行为.不得...
  • cocos2d-js源代码请到集中营下载:http://blog.makeapp.co/?p=523 效果图: 代码分析 1 建立JS数组,有三个数组 背景颜色-等级分数-版本选择 建好之后可以在程序里面直接调用; 版本数组里面每一个版本名字、类型、...
  • 包括原版,朝代版,金庸版,星座,豪车等等近10个版本,代码开源, 希望读者基于开源代码做出各种版本,供全名娱乐 ; 运行demo需要配置好 CocosEditor ,暂不支持其他工具。demo是跨平台的,可移植运行...
  • index_b=["&"]*max(index_a) index_b.append(0) for ke in index_a: index_b[ke]=index_a[ke] for one in index_b: if one=="&": print() else: print(one,end="")
  • 解密.代码

    2013-05-24 13:10:21
    DNF解密搜索 代码
  • 用于加密解密代码。用于加密解密代码。用于加密解密代码
  • rot解密代码

    2019-02-22 15:38:14
    rot解密代码,ROT13是它自己本身的逆反;也就是说,要还原ROT13,套用加密同样的算法即可得,故同样的操作可用再加密与解密。该算法并没有提供真正的密码学上的保全,故它不应该被套用在需要保全的用途上。它常常被...
  • 抽奖系统骗局解密 javascript代码解密 网上/电视随机数字抽奖,骗局解密

空空如也

空空如也

1 2 3 4 5 ... 20