• 自己晒点儿盐用


    [本文出自天外归云的博客园]

    自用加盐代码如下:

    # coding:utf-8
    import uuid
    from functools import reduce
    
    def salt(num):
        if num<33333:
            num = 3*(num+3)
            num = salt(num)
        return num
    
    def encrypt(_str,password):
        keys = []
        for char in _str:
            if char.isalpha():
                key = ord(char)-96
            else:
                key = salt(ord(char))
            keys.append(str(key))
        return password.join(keys)
    
    def dec_mac(get_mac_address):
        def wrapper(password):
            password = str(password)
            return str(reduce(lambda x, y: x*y,[int(one)*3 for one in encrypt(password,password).join(encrypt(get_mac_address(),password)) if int(one)!=0])).strip("0") 
        return wrapper
    
    @dec_mac
    def get_mac_address():
        mac=uuid.UUID(int = uuid.getnode()).hex[-12:] 
        ret = ":".join([mac[e:e+2] for e in range(0,11,2)])
        return ret.lower()
    
    if __name__ == '__main__':
        key = "kdfhb234kus3"
        salt_mac = get_mac_address(encrypt(key,"3"))
        with open("cipher","w") as cipher:
            cipher.write(salt_mac)

    造盐函数,将盐输出到本地cipher文件。

    查盐函数,读取cipher文件中的盐并校验,如果和造盐函数产出的盐不一样,则返回False:

    def check_salt():
        key1 = "dkfjasdlkfj"
        key2 = "5"
        salt_mac = get_mac_address(encrypt(key1,key2))
        root_path = os.path.dirname(os.path.dirname(__file__))
        cipher_path = os.path.join(root_path,"cipher")
        with open(cipher_path,"r") as cipher:
            content = cipher.read()
            if content != salt_mac:
                return False

    用途:本盐是用来与mac地址绑定的,加盐的目的是对程序进行mac地址绑定,非指定机器不能运行。在客户端生成加盐文件后删除加盐程序,程序在该客户端可以运行,在其他客户端不可以运行。

    关键:加盐器中的key和查盐器中的key要对上才能返回True,所以即使知道加盐的逻辑不知道查盐函数中的key也是不行的。所以要对查盐函数的代码想通过转编译、复杂逻辑等方法进行保护。如果逆向成本高于正向成本,保护基本可以认为是有效的。

  • 相关阅读:
    团队开发冲刺2.3(2015.5.27)
    团队开发冲刺2.2(2015.5.26)
    团队开发冲刺2.1(2015.5.26)
    团队开发冲刺1.6(2015.5.14)
    团队开发冲刺1.5(2015.5.13)
    团队开发冲刺1.4(2015.5.12)
    团队开发冲刺1.3(2015.5.11)
    团队开发冲刺1.2(2015.5.10)
    团队开发冲刺1.1(2015.5.9)
    找1
  • 原文地址:https://www.cnblogs.com/LanTianYou/p/6954107.html
Copyright © 2020-2023  润新知