• 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
  • 相关阅读:
    elasticsearch配置文件详解
    《禅的故事》--易中天
    《爱你就像爱生命》--王小波
    Adaboost算法及其代码实现
    HOG特征原理及代码实现
    SMO算法--SVM(3)
    非线性支持向量机SVM
    核方法-核技巧-核函数
    线性可分支持向量机与软间隔最大化--SVM(2)
    拉格朗日乘子(Lagrange multify)和KKT条件
  • 原文地址:https://www.cnblogs.com/chenjingyi/p/5794581.html
Copyright © 2020-2023  润新知