自己晒点儿盐用

简介: [本文出自天外归云的博客园] 自用加盐代码如下: # coding:utf-8 import uuid from functools import reduce def salt(num): if num

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

自用加盐代码如下:

# 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也是不行的。所以要对查盐函数的代码想通过转编译、复杂逻辑等方法进行保护。如果逆向成本高于正向成本,保护基本可以认为是有效的。

相关文章
|
XML 数据管理 Linux
麒麟系统开发笔记(十二):在国产麒麟系统上编译GDAL库、搭建基础开发环境和基础Demo
麒麟系统上做全球北斗定位终端开发,北斗GPS发过来的是大地坐标,应用需要的是经纬度坐标,所以需要转换,可以使用公式转换,但是之前涉及到了山He智能一个项目使用WG。
|
算法 Linux C++
C++框架设计中实现可扩展性的方法
在软件开发中,可扩展性至关重要,尤其对于C++这样的静态类型语言。本文探讨了在C++框架设计中实现可扩展性的方法:1) 模块化设计降低耦合;2) 使用继承和接口实现功能扩展;3) 通过插件机制动态添加功能;4) 利用模板和泛型提升代码复用;5) 遵循设计原则和最佳实践;6) 应用配置和策略模式以改变运行时行为;7) 使用工厂和抽象工厂模式创建可扩展的对象;8) 实现依赖注入增强灵活性。这些策略有助于构建适应变化、易于维护的C++框架。
1007 2
|
机器学习/深度学习 人工智能 算法
未来智能家居中的人工智能技术应用与挑战
在智能家居迅猛发展的今天,人工智能技术正成为其核心驱动力。本文探讨了人工智能在智能家居中的应用现状及面临的挑战,包括数据安全、用户隐私保护和技术集成等方面。
|
机器学习/深度学习 人工智能 安全
构建未来:AI驱动的自适应网络安全防御系统云端守卫:云计算环境下的网络安全与信息保护策略
【5月更文挑战第27天】 在数字化时代,网络安全威胁持续进化,传统的安全措施逐渐显得力不从心。本文探讨了人工智能(AI)技术如何革新现代网络安全防御系统,提出一个基于AI的自适应网络安全模型。该模型结合实时数据分析、模式识别和自我学习机制,能够动态调整防御策略以应对未知攻击。文章不仅分析了此模型的核心组件,还讨论了实施过程中的挑战与潜在效益。通过引入AI,我们展望一个更加智能且具有弹性的网络安全环境,旨在为未来的网络防护提供一种创新思路。
|
存储 数据挖掘 Linux
服务器数据恢复—机房搬迁导致服务器无法识别raid的数据恢复案例
某单位机房搬迁,将所有服务器和存储搬迁到新机房并重新连接线路,启动所有机器发现其中有一台服务器无法识别RAID,提示未做初始化操作。 发生故障的这台服务器安装LINUX操作系统,配置了NFS+FTP作为单位内部的文件服务器使用。服务器为ProLiant DL380系列服务器,通过hp smart array控制器挂载了一组由14块SCSI硬盘组成的RAID5磁盘阵列。该raid5磁盘阵列采用双循环的校验方式。 北亚企安数据恢复工程师到达现场后对故障服务器进行了初检,经过检测发现raid信息丢失。
服务器数据恢复—机房搬迁导致服务器无法识别raid的数据恢复案例
|
Linux
Linxu开机出现 Generating "/run/initramfs/rdsosreport.txt"解决方案
Linux启动时遇到`Generating &quot;/run/initramfs/rdsosreport.txt&quot;`错误,通常是文件系统问题。解决方案包括:1) 使用`ls /dev/mapper`找到-root卷;2) 运行`xfs_repair /dev/mapper/xxx-root`修复(可能需多次尝试);3) 若失败,风险下`umount`卷并检查无打开文件;4) 再次运行`xfs_repair`;5) 重启系统。注意:卸载可能导致数据丢失。
2910 0
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的反诈科普平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的反诈科普平台附带文章源码部署视频讲解等
142 0
|
数据可视化 机器人 测试技术
自动化测试 RobotFramework安装以及使用教程
自动化测试 RobotFramework安装以及使用教程
|
消息中间件 分布式计算 监控
Spark6:Spark Steaming
Spark6:Spark Steaming
231 0
用队列实现栈(力扣刷题)
用队列实现栈(力扣刷题)

热门文章

最新文章