zoukankan      html  css  js  c++  java
  • 5种Web常见编码、变换算法的自动识别

    #coding=utf-8
     
    #识别字符序列变换算法,当前支持标准的MD5、SHA-1、Base64,及主流的URL编码、HTML编码
     
    import re
    import sys
     
    #MD5判断函数
    def checkMD5(inStr):
        MD5KeyStrs = '0123456789abcdefABCDEF'
        inStr = inStr.strip()    #判断MD5的时候把输入两端的空格切掉
        if (len(inStr) != 16) and (len(inStr) != 32):
            return False
        else:
            for eachChar in inStr:
                if eachChar not in MD5KeyStrs:
                    return False
            return True
         
    #SHA1判断函数
    def checkSHA1(inStr):
        SHA1KeyStrs = '0123456789abcdefABCDEF'
        inStr = inStr.strip()    #判断SHA-1的时候把输入两端的空格切掉
        if len(inStr) != 40:
            return False
        else:
            for eachChar in inStr:
                if eachChar not in SHA1KeyStrs:
                    return False
            return True
         
    #Base64判断函数
    def checkBase64(inStr):
        Base64KeyStrs = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
        inStr = inStr.strip()     #判断Base64的时候把输入两端的空格切掉
        if len(inStr) % 4 != 0:
            return False
        else:
            for eachChar in inStr:
                if eachChar not in Base64KeyStrs:
                    return False
            return True
         
    #URL编码判断函数
    def checkURLCode(inStr):
        reURLCode = '%[0-9a-fA-F][0-9a-fA-F]'   #正则表达式
        reResultList = re.findall(reURLCode,inStr)
        if len(reResultList) == 0:
            return False
        else:
            return True
         
    #HTML编码判断函数
    def checkHTMLCode(inStr):
        htmlEncodeTuple = ('<','>','&',''','"',' ',''','/')
        for each in htmlEncodeTuple:
            if each in inStr:
                return True
        return False
     
    #总的调度函数,负责调用各个算法的判断函数
    def checkInput(inStr):      
        if checkMD5(inStr):
            resStr = 'MD5'
            return resStr
        if checkSHA1(inStr):
            resStr = 'SHA-1'
            return resStr
        if checkBase64(inStr):
            resStr = 'Base64'
            return resStr
        if checkURLCode(inStr):      # 考虑到 URL编码 与 HTML编码可能会同时出现
            resStr = 'URLCode'
            if checkHTMLCode(inStr):
                resStr = 'URLCode + HTMLCode'
                return resStr
            else:
                return resStr
        if checkHTMLCode(inStr):
            resStr = 'HTMLCode'
            return resStr
         
        resStr = 'UnKnown'
        return resStr
         
         
             
    #Python主程序
     
    if __name__ == '__main__':
         
        if len(sys.argv) > 1:           #接受命令行输入
            inputStr = str(sys.argv[1])
            resultStr = checkInput(inputStr)
            print u'你的输入为:'.encode('gb2312') + inputStr
            print u'判断结果为:'.encode('gb2312') + resultStr
             
        else:                         #交互界面
            print '---------------------------------------------------------------------'
            print u'---------       识别密文变换算法 WhatCodeS V1.0            ----------'.encode('gb2312')
            print u'---      当前支持识别MD5、SHA-1、Base64、URL编码、HTML编码      -----'.encode('gb2312')
            print u'--      支持交互操作与命令行操作(命令行不支持直接输入特殊字符)   --'.encode('gb2312')
            print '---------------------------------------------------------------------'
            print
             
            while(True):
                 
                inputStr = raw_input(u'请输入字符序列(输入‘q’退出程序):'.encode('gb2312'))
                if inputStr == 'q':
                    break
                elif inputStr == '':
                    continue
                else:
                    resultStr = checkInput(inputStr)
                    print u'你的输入为:'.encode('gb2312') + inputStr
                    print u'判断结果为:'.encode('gb2312') + resultStr
                    print
  • 相关阅读:
    Hiho----无间道之并查集
    Linux之压缩与解压
    Linux之用户和用户组
    Linux之关机/重启命令及一些符号
    Linux之基本操作命令
    Linux之vi/vim
    解决eclipse中maven报错Failed to read artifact descriptor for xxxx:jar
    CentOS 7下 solr 单机版安装与配置
    CentOS 7下 Tomcat7 安装与配置
    CentOS 7下 JDK 1.7 安装与配置
  • 原文地址:https://www.cnblogs.com/chenjingyi/p/5794581.html
Copyright © 2011-2022 走看看