Python代码混淆工具有哪些官网(代码混淆器是病毒吗)

http://www.itjxue.com  2023-03-07 02:36  来源:未知  点击次数: 

python有哪些开发工具

想要学会python,不仅要学习相关的基础知识和教程,对python各种工具的熟悉使用才能让你在工作中迅速成长!有很多优秀的开发者前辈,为我们提供了好用的python工具,来帮我们更方便的实现开发想法,下面就给大家分享5个好用的python开发工具!

工具一:Anaconda

这个工具就是用来解决Python 开发过程中遇到各种包管理和版本的问题,为了解决很多 Windows 平台的安装包无法正常使用,必须要有Anoconda,它包含了一个包管理工具、一个Python管理环境和常用数据科学包,是数据分析的标配!

工具二:Skulpt

这个工具是用 Javascript 实现在线 Python 执行环境,实现了在浏览器中轻松运行 Python 代码。搭配使用CodeMirror 编辑器就类似于一个基本的在线Python编辑运行环境。

工具三:Python Tutor

这款工具是由 Philip Guo 开发的免费教育工具,适用于python小白,能够帮助小白解决一些编程学习中的基础障碍,还能帮助小白理解每一行源代码在程序执行时在计算机中的过程。

大部分被教师或学生使用,但也适用于python小白,可以直接在 Web 浏览器中编写 Python 代码,可以把不知道如何在内存中如何运行的代码,拷贝到Tutor里进行可视化执行,有助于小白对基础的扎实掌握。

工具四:IPython

这款工具是for Humans 的 Python 交互式解释器,功能非常强大,能够支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多实用功能和函数,同时它也是科学计算和交互可视化的最佳平台。

它还具有以下特性:

·更强的交互 shell(基于 Qt 的终端);

·一个基于浏览器的记事本,支持代码,纯文本,数学公式,内置图表和其他富媒体;

·支持交互数据可视化和图形界面工具;

·灵活,可嵌入解释器加载到任意一个自有工程里;

·简单易用,用于并行计算的高性能工具。

工具五:Jupyter Notebook

看名字就知道Notebook,这款工具就像一个草稿本,能储存文本注释、数学方程、代码和可视化内容等,然后以 Web 的方式呈现。有数据分析、机器学习需求同学的必备工具。

python学习网,大量的免费python视频教程,欢迎在线学习!

有哪些值得推荐的 Python 开发工具

推荐5个非常适合Python小白的开发工具:

1、Python Tutor

Python Tutor是由Philip

Guo开发的一个免费教育工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。通过这个工具,开发者可以直接在Web浏览器中编写Python代码,并逐步可视化地运行程序。如果你不知道代码在内存中是如何运行的,不妨把它拷贝到Tutor里可视化执行一遍,加深理解。

2、IPython

IPython是一个for Humans的Python交互式shell,用了它之后你就不想再用自带的Python

shell了,IPython支持变量自动补全,自动缩进,支持bash

shell命令,内置了许多实用功能和函数,同时它也是科学计算和交互可视化的最佳平台。

3、Jupyter Notebook

Jupyter

Notebook就像一个草稿本,能将文本注释、数学方程、代码和可视化内容全部组合到一个易于共享的文档中,以Web页面的方式展示。它是数据分析、机器学习的必备工具。

4、Anaconda

Python虽好,可总是会遇到各种包管理和Python版本问题,特别是Windows平台很多包无法正常安装,为了解决这些问题,Anaconda出现了,Anaconda包含了一个包管理工具和一个Python管理环境,同时附带了一大批常用数据科学包,也是数据分析的标配。

5、Skulpt

Skulpt是一个用JavaScript实现的在线Python执行环境,它可以让你轻松在浏览器中运行Python代码。使用Skulpt结合CodeMirror编辑器即可实现一个基本的在线Python编辑和运行环境。

Python程序代码混淆、编译、打包、运行(桌面程序防破解向)

像Python这种解释性的语言,要想私有化部署的同时又保护好源码,就像是对于鱼和熊掌的追求。

虽然做不到尽善尽美,但是对代码进行混淆,增加一点破解的难度,或许能规避一些泄露的风险。

本次演示环境:linux

确保要发布的包根目录("demo")中有__main__.py文件,这个是程序执行入口。

编译

批量改名.pyc文件

移动.pyc文件

清理.py文件

清理__pycache__文件夹

打包成zip

运行时只要将zip文件作为参数即可

最终整合脚本

调用方式

对于在变量和函数名上的混淆有点小儿科,而对于跨文件的类名的混淆又太容易实现。

所以对于混淆程度的取舍,要视工程的规模而定。

2.1 混淆工具pyminifier

在原来的工具 pyminifier上修复了几个bug。

安装:

python3 安装

或者clone下来,自行安装

使用例子

2.2 源码变更

不同的配置对于源码的要求不同,以下是笔者踩过的坑。

其他混淆想法

结合混淆、编译和打包,尝试出以下发布脚本。

主要的思路 :创建一个工作目录tmp,然后在此目录下混淆、编译python代码,完成后把内容打包成pyc文件,再将pyc文件和其他配置文件移动到dist,发布dist即可。

混淆的目的是最大程度保护源码,在发布到客户端后不被轻易破解。

python工具有哪些

第一款:最强终端 Upterm

它是一个全平台的终端,可以说是终端里的IDE,有着强大的自动补全功能,之前的名字叫作:BlackWindow。有人跟他说这个名字不利于社区推广,改名叫Upterm之后现在已经17000+Star了。

第二款:交互式解释器 PtPython

一个交互式的Python解释器,支持语法高亮、提示,甚至是VIM和emacs的键入模式。

第三款:包管理必备 Anaconda

强烈推荐:Anaconda。它能帮你安装许多麻烦的东西,包括:Python环境、pip包管理工具、常用的库、配置好环境路径等等。这些小事情小白自己一个个去做的话,容易遇到各种问题,也容易造成挫败感。如果你想用Python搞数据方面的事情,安装它就可以了,它甚至开发了一套JIT的解释器Numba。所以Anaconda有了JIT之后,对线上科学计算效率要求比较高的东西也可以搞定了。

第四款:编辑器 Sublime3

如果你是小白的话,推荐从PyCharm开始上手,但是有时候写一些轻量的小脚本,就会想到轻量级一点的工具。Sublime3很多地方都有了极大的提升,并且用起来比原来还要简单,配合安装Anaconda或CodeIntel插件,可以让Sublime3拥有近乎IDE的体验。

第五款:前端在线编辑器 CodeSandbox

虽然这个不算是真正意义上的Python开发工具,但如果后端工程师想要写前端的话,这个在线编辑器太方便了,节省了后端工程师的生命。不用安装npm的几千个包了,它已经在云端完成了,才让你直接就可以上手写代码、看效果。对于React、Vue这些主流前端框架都支持。

第六款:Python Tutor

Python

Tutor是一个免费教育工具,可帮助学生攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。通过这个工具,教师或学生可以直接在web浏览器中编写Python代码,并逐步可视化地运行程序。

第七款:IPython

如何进行交互式编程?没错,就是通过IPython。IPython相对于Python自带的shell要好用的多,并且能够支持代码缩进、TAB键补全代码等功能。如果进行交互式编程,这是不可缺少的工具。

第八款:Jupyter Notebook

Jupyter

Notebook就像一个草稿本,能将文本注释、数学方程、代码和可视化内容全部组合到一个易于共享的文档中,以Web页面的方式展示,它是数据分析、机器学习的必备工具。

第九款:Pycharm

Pycharm是程序员常常使用的开发工具,简单、易用,并且能够设置不同的主题模式,根据自己的喜好来设置代码风格。

第十款:Python Tutor

这个工具可能对初学者比较有用,而对于中高级程序员则用处较少。这个工具的特色是能够清楚的理解每一行代码是如何在计算机中执行的,中高级程序员一般通过分步调试可以实现类似的功能。这个工具对于最初接触Python、最初来学习编程的同学还是非常有用的,初学者可以体验一下。

有没有好的 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

#混淆

name_index = 0

for raw_name in raw_name_list:

the_new_name = new_name_list[name_index]

line = line.replace(raw_name, the_new_name)

name_index += 1

file_content += line

f.close()

#重写文件

f = file(path_filename, 'w')

f.write(file_content)

f.close()

#遍历当前目录下的所有.cs文件 ?

def confuse_all():

#获取当前目录

dir = os.getcwd()

for root, dirs, filename in os.walk(dir):

for file in filename:

path_filename = os.path.join(root, file)

if path_filename.endswith('.cs'):

confuse_file(path_filename)

print "Confuse File: ", path_filename

if __name__=="__main__":

create_new_name()

confuse_all()

#打印一下混淆的情况.

#如果用文本保存起来, 那么以后可以反混淆, 还原文件

print "Start Confuse ...."

for j in range(0, len(raw_name_list)) :

print raw_name_list[j] , " -- " , new_name_list[j]

print "Confuse Complete !"

(责任编辑:IT教学网)

更多

推荐网络赚钱文章