python中混淆函数 python 混入( 二 )


主要参考sklearn
python是否有绘制混淆矩阵的函数 , 怎么来实现# -*- coding: UTF-8 -*-
"""绘制混淆矩阵图"""
import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix
def confusion_matrix_plot_matplotlib(y_truth, y_predict, cmap=plt.cm.Blues):
"""Matplotlib绘制混淆矩阵图
parameters
----------
y_truth: 真实python中混淆函数的ypython中混淆函数的值, 1d array
y_predict: 预测python中混淆函数的y的值, 1d array
cmap: 画混淆矩阵图的配色风格, 使用cm.Bluespython中混淆函数 , 更多风格请参考
"""
cm = confusion_matrix(y_truth, y_predict)
plt.matshow(cm, cmap=cmap)# 混淆矩阵图
plt.colorbar()# 颜色标签
for x in range(len(cm)):# 数据标签
for y in range(len(cm)):
plt.annotate(cm[x, y], xy=(x, y), horizontalalignment='center', verticalalignment='center')
plt.ylabel('True label')# 坐标轴标签
plt.xlabel('Predicted label')# 坐标轴标签
plt.show()# 显示作图结果
if __name__ == '__main__':
y_truth = [1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0]
y_predict = [1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0]
confusion_matrix_plot_matplotlib(y_truth, y_predict)
有没有好的 python 混淆器 推荐一个代码混淆,其实很简单 。原理就是查找、替换而已 。市面上有很多混淆工具,最好是在混淆工具的基础上,自己再写一下,二次混淆 。算法也不难 。如果需要全局混淆,以及自动混淆,那么就复杂一些了 , 需要再加上词法分析和语法分析 。
如何使用:
1,首先得安装Python 。
2,把这个下面这个 confuse.py 文件,复制目标文件夹 。
3 , 更改 raw_name_list 列表里的字符串 。改成你想混淆的变量名或者类名方法名 。
4 , 运行python confuse.py 即可混淆该文件夹下的.cs文件 。
这段代码其实还是很简单的,只是为大家说明一下混淆思想 。如果想更方便的使用,需要再加入一些词法分析、语法分析的算法 。
代码如下:
#! /usr/bin/env python
#coding=utf-8
import hashlib
import random
import os
###############################
# Describe : 混淆Unity脚本文件
# DP Author By:常成功
# Create Date:2014-11-25
# Modify Date:2014-11-25
###############################
#想混淆的变量/方法名
raw_name_list = ["function_1", "function_2", "var_1", "var_2",]
#混淆后的变量/方法名
new_name_list = []
#随机可选的字母表
alphabet = ["a", "b", "c", "d", "e", "f", "g",
"h", "i", "j", "k", "l", "m", "n", "o", "p", "q",
"r", "s", "t", "u", "v", "w", "x", "y", "z",
]
#生成新的变量名
def create_new_name() :
m = hashlib.md5()
#生成随机变量名
for raw_name in raw_name_list:
m.update(raw_name)
#生成一个16位的字串
temp_name = m.hexdigest()[0:16]
#合法名称校验
#强制以字母作为变量/方法名的开头
if temp_name[0].isdigit():
initial = random.choice(alphabet)
temp_name = initial + temp_name
temp_name = temp_name[0:16]
#不能重名
while(1):
if temp_name in new_name_list :
initial = random.choice(alphabet)
temp_name = initial + temp_name
temp_name = temp_name[0:16]
else:
new_name_list.append(temp_name)
break
#混淆文件
def confuse_file(path_filename):
file_content = ""
#读文件内容
f = file(path_filename)
# if no mode is specified, 'r'ead mode is assumed by default
while True:
line = f.readline()
if len(line) == 0: # Zero length indicates EOF
break

推荐阅读