分类: Python

  • navicat保存的数据库密码忘了也能恢复

    数据库多了,真的难免忘记密码,这不,本地虚拟机环境(winserver2008R2)中安装的SQLServer2008就忘了。

    因为一般本地测试环境密码都很简单,无非就是123456,或者干脆没有,可能是SQL server2008当时不能设置这些弱密码了,稍微多休息了几天就给忘了,试了好几次实在想不起来了,就想着如何能找到这个密码呢?

    当然直接服务器上重置这个密码是最简单不过了,可我就是好奇到底设置的一个什么密码?所以就有了接下来的一些操作。

    目标对象就是navicat了,因为经常是通过它来连接访问的,并且重点是保存过密码,而且navicat提供导出连接的功能,觉得也太轻松了吧。

    用编辑器打开connections.ncx文件,找到了password字段,可惜是加密过的。

    有加密就会有解密,大神还是挺多的,这个python小程序真的挺有意思,一下子能全部拿下navicat保存过的密码,而且开源的,可以研究下。

    https://github.com/HyperSine/how-does-navicat-encrypt-password

    前段时间准备好好学学python的,可是落下了(后面必须还要捡起来,到时候再好好分析这源码),不过之前环境都配置好了,拿来直接用就可以。

    使用过程中有几点问题

    • Windows环境下最好用cmd,powershell好像不行,直接一闪而过,没研究什么原因。
    • python目录下有三个文件:NavicatCipher.py、NcxReader.py、ShowNavicat.py
    • 前两个文件都是要加参数的,所以直接用第三个ShowNavicat.py最方便,也不用navicat导出文件了,直接所有保存过的密码都出来了。
    • 使用cmd切换到python目录,使用.\ShowNavicat.py或者直接ShowNavicat.py回车就可以
    • 在ShowNavicat.py文件上右键使用IDLE编辑,然后直接按F5运行也可以。

    好了,下回学python了再深入摸索吧。这个解密还是挺酷的。


    1、NavicatCipher.py
    
    Usage:
        NavicatCrypto.py <enc|dec> [-ncx] <plaintext|ciphertext>
    
        <enc|dec>                "enc" for encryption, "dec" for decryption.
                                 This parameter must be specified.
    
        [-ncx]                   Indicate that plaintext/ciphertext is
                                 prepared for/exported from NCX file.
                                 This parameter is optional.
    
        <plaintext|ciphertext>   Plaintext string or ciphertext string.
                                 NOTICE: Ciphertext string must be a hex string.
                                 This parameter must be specified.
    Example:
    
    $ ./NavicatCipher.py enc "This is a test"
    0EA71F51DD37BFB60CCBA219BE3A
    
    $ ./NavicatCipher.py dec 0EA71F51DD37BFB60CCBA219BE3A
    This is a test
    
    $ ./NavicatCipher.py enc -ncx "This is a test"
    B75D320B6211468D63EB3B67C9E85933
    
    $ ./NavicatCipher.py dec -ncx B75D320B6211468D63EB3B67C9E85933
    This is a test
    
    $ python3
    Python 3.6.7 (default, Oct 22 2018, 11:32:17)
    [GCC 8.2.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from NavicatCipher import *
    >>> cipher = Navicat12Crypto()
    >>> cipher.EncryptString('This is a test')
    '0EA71F51DD37BFB60CCBA219BE3A'
    
    >>> cipher.DecryptString('0EA71F51DD37BFB60CCBA219BE3A')
    'This is a test'
    
    >>> cipher.EncryptStringForNCX('This is a test')
    'B75D320B6211468D63EB3B67C9E85933'
    
    >>> cipher.DecryptStringForNCX('B75D320B6211468D63EB3B67C9E85933')
    'This is a test'
    
    2、NcxReader.py
    
    Show database servers' information inside *.ncx file.
    
    Usage:
        NcxReader.py <Path to ncx file>
    Example:
    
    $ ./NcxReader ~/connectioms.ncx
    -----------------xxxxxxxxxxxx--------------------
    Connection Type  = MYSQL
    Host             = localhost
    Port             = 3306
    UserName         = root
    Password         = 12345678
    
    ------------------yyyyyyyyyy---------------------
    Connection Type  = MYSQL
    Host             = example.com
    Port             = 3306
    UserName         = server
    Password         = 0000000000
    
    ...
    ...
    ...
    
    3、ShowNavicat.py
    
    Just run it in Windows. It will list all Navicat configurations inside Windows Registry.
    
    Example:
    
    >ShowNavicat.py
    +--------------------------------------------------+
    |                   MySQL Server                   |
    +--------------------------------------------------+
    
    Host:              example.com
    Port:              3306
    Username:          server
    Password:          0000000000
    
    ...
    ...
    
    +--------------------------------------------------+
    |                  MariaDB Server                  |
    +--------------------------------------------------+
    
    ...
    ...
    
    +--------------------------------------------------+
    |                  MongoDB Server                  |
    +--------------------------------------------------+
    
    ...
    ...
    
    ...
    ...
  • 【笨办法学Python3】习题2 注释和#号

    【笨办法学Python3】习题2 注释和#号

    Windows部分:

    Linux部分:

    学习小结:

    1、这部分很简单,按照要求抄写即可。了解反向查错,一般错误提示行往前找才是真正错误的地方。

    2、练习完后才记起每个练习都有小视频,英语中字的,看看与自己操作有什么区别,也相当于练习了一遍英语。

    3、朗读时发现#字符,英语朗读的是Number,比书中octothorpe、pound character简单,不知道具体区别,不过octothorpe写了几遍也好记了。

    视频地址:

    http://ewm.ptpress.com.cn:8085/preview?qrCode=qr2018003615&verified=true

    # A comment, this is so you can read your program later.
    # Anything after the # is ignored by python.
    
    print("I could have code like this.") # and the comment after is ignored
    
    # You can also use a comment to "disable" or comment out code:
    # print("This won't run.")
    
    print("This will run.")
    
    print()
    print("Study Drills(巩固练习):")
    # 弄清楚#字符的作用,而且记住它的英文名字octothorpe / pound character
    print("1、octothorpe单词不好记啊,分开读oc tothor pe,不明白记的意义,就\
    当记英文单词了。\n2、从后往前逐行反向检查应该是有用的吧,目前还体会不到,也\
    当学英语了。\n3、确实会发现一些错误,因为注释掉了所以没有报错。\n4、朗读代\
    码也当学英语吧,越来越喜欢这个课程了,英语也一并学习了,一箭多雕。")
  • 【笨办法学Python3】习题1 第一个程序

    【笨办法学Python3】习题1 第一个程序

    Windows部分

    Linux部分:

    学习小结:

    1、5-7行说明单引号与双引号好像并没有区别,成对使用即可。

    2、不需要每行后加换行符,自动换行。

    3、巩固练习2书中翻译应该是错误的,不是“让你的脚本只打印其中一行”而意思应该是“用一行打印出来”,就是不要让它自动换行。书中“其中”二字意思明显就不对了,搜索解决方法过程中才发现大概率是我按书中意思理解错误了。

    4、记住前言中所说“ 不要复制粘贴 ”,认真一字一字的打出来,我三个环境打了三遍希望效果更好,分析过程主要还是在虚拟机Windows中进行的,Atom用着确实挺舒服的。

    5、Windows中和Linux中有些许区别,最后一行如果加end=‘ ’,Linux中不会换行,Windows结束后会换行,不过这里最后一行实在没必要加了。

    视频地址:

    Windows:http://ewm.ptpress.com.cn:8085/preview?qrCode=qr2018003608&verified=true

    Linux:http://ewm.ptpress.com.cn:8085/preview?qrCode=qr2018003609&verified=true

    macOS: http://ewm.ptpress.com.cn:8085/preview?qrCode=qr2018003605&verified=true

    print("Hello World!")
    #print("Hello Again")
    print("I like typing this.")
    print("This is fun.")
    print('Yay! Printing.')
    print("I'd much rather you 'not'.")
    print('I "said" do not touch this.\n')
    
    print("巩固练习:")
    # 巩固练习1,让你的脚本再打印一行。
    print("1、第7行.后加一个换行符或者第8行加“print()”即可多打印一个空行。")
    # 巩固练习2,让你的脚本只打印其中某一行。
    print("2、难道用“#”把其他行注释掉?肯定不是。“如果做不出来可以暂时跳过”")
    # 巩固练习3,在一行的起始位置放置一个"#"字符。它的作用是什么,自己研究一下。
    print("3、很显然是“注释”掉此行的作用。")
    
    print("\n学习小结:")
    print("1、5-7行说明单引号与双引号好像并没有区别,成对使用即可。\n2、不需\
    要每行后加换行符,自动换行。\n3、巩固练习2书中翻译应该是错误的,不是其中\
    一行而是用一行打印出来,就是不要让它自动换行。\n")
    
    print("Hello World!", end = ' ')
    print("Hello Again", end = ' ')
    print("I like typing this.", end = ' ')
    print("This is fun.", end = ' ')
    print("Yay! Printing.", end = ' ')
    print("I'd much rather you 'not'.", end = ' ')
    print("I 'said' do not touch this.", end = ' ')
  • 【笨办法学Python3】习题0 准备工作

    【笨办法学Python3】习题0 准备工作

    准备了三个学习环境(Windows+Linux):

    1、宿主机:Windows 10 x64 + python3.8.0(目前最新版);

    2、虚拟机:Windows 10 x64 + python3.6.0(特意下载了与书本中一致的版本,学习过程中可以类比);

    3、虚拟机:CentOS 8 x64 + python3.6.8(系统自带,CentOS7自带还是python2,所以特意安装了CentOS8,还是比较喜欢新)。

    4、本来还想在虚拟机装macOS环境的,可惜没装成功,就算了,这不是重点。

    Windows部分:

    1、Atom官网打开很慢,下载很慢,网页还被重置等问题,还好复制下载链接在迅雷中下载很快解决。

    2、Python安装完成提示“setup was successful”页面有一个提示“ Disable path length limit…… Changes your machine configuration to allow programs including Python to bypass the 260 character “MAX_PATH” limitation ”,解除260字符的限制,一般都说点击一下就好了,不过书中未提及,我就没点,到时候出现这类相关错误了再说呗。

    3、PowerShell比老的cmd好用多了,ls命令就可以直接使用了,不严格区分大小写。

    Linux部分:

    1、系统自带Python,不用安装,也不想麻烦去装Atom(我是来学Python的),自带vim就可以了,直接可以进入学习。

    书中节选:

    “这里再次向你说明,只要是一台能用的计算机就可以了。你需要的只有3样东西:一个文本编辑器,一个命令行终端,还有Python。……其它的事情只会让你更困惑,所以还是坚持按计划进行吧。

    “如果你坚持尝试,坚持录入习题,坚持弄懂习题的话,你最终一定会明白里面的内容的。如果你通读了本书,却还是不懂怎样写代码,你的努力也不会白费。”

    视频地址:

    Windows:http://ewm.ptpress.com.cn:8085/preview?qrCode=qr2018003606&verified=true

    macOS:http://ewm.ptpress.com.cn:8085/preview?qrCode=qr2018003610&verified=true


    这就是所谓的“笨办法”吧,足够简单才更容易上手,所有的学习任务都已经计划好了,不用“操心”其它的,坚决执行就可以了。本来这只是一本凑单的书,大致翻了一下就让我下定决心来学习,其实主要就是为了锻炼自己的自律能力、执行力,改变一下自己以前失败的学习方法。

    没有自律,学什么都难成啊。加油。