python保护代码
⑴ 10个极简python代码,拿走即用
Hello,大家好,我是程序汪小成~
虽然python是一个易入门的语言,但是很多人依然还是会问到底怎么样学 Python 才最快,答案当然是实战各种小项目, 只有自己去想与写,才记得住规则 。本文写的是 10 个极简任务,初学者可以尝试着自己实现;本文同样也是 10段代码,Python 开发者也可以看看是不是有没想到的用法。
以下方法可以检查给定列表是不是存在重复元素,它会使用 set() 函数来移除所有重复元素。
给定具体的大小,定义一个函数以按照这个大小切割列表。
这个方法可以将布尔型的值去掉,例如(False,None,0,“”),它使用 filter() 函数。
我们常用 For 循环来遍历某个列表,同样我们也能枚举列表的索引与值。
如下代码段可以将打包好的成对列表解开成两组不同的元组。
该方法将通过递归的方式将列表的嵌套展开为单个列表。
该方法将返回第一个列表的元素,且不在第二个列表内。如果同时要反馈第二个列表独有的元素,还需要加一句 set_b.difference(set_a)。
如下代码块可以用来计算执行特定代码所花费的时间。
该算法会打乱列表元素的顺序,它主要会通过 Fisher-Yates 算法对新列表进行排序:
不需要额外的操作就能交换两个变量的值。
以上,是我简单列举的十个python极简代码,拿走即用,希望对你有所帮助!
⑵ Python代码如何使用
使用Python自带的IDLE 在开始-->程序-->Python2.5(视你安装的版本而不同)中找到IDLE(Python GUI)。
点击后弹出如下窗体:
1,在>>>提示符后输入代码,回车,就可以执行此代码。
IDLE支持语法高亮,支持自动缩进,支持方法提示,不过提示的很慢。
2. 在命令行窗口上运行 这种方法的前提是:你在系统的PATH变量中配置了Python的安装路径。
右键我的电脑-->属性-->高级-->环境变量,在系统变量列表中找到Path项,点击编辑按钮,在其中追加“C:\Python25;”(路径及版本视你安装而定),保存退出。
开始-->运行-->输入cmd,回车,开启一个CMD窗口。
在DOS提示符>后,输入python,回车,进入Python环境。
它的运行和IDLE基本一致,但是没有了语法高亮、自动缩进、方法提示,唯一的好处就是运行速度比IDLE快了些(如果你告诉我可以加参数运行python,那你就不算新手了,也不用看这篇文章了),所以用处不大。
退出此python环境使用Ctrl + Z,然后回车。
3. 以脚本方式运行 以上两种运行方式虽然简便,但是不适合大量代码的开发,只适合查看单句或少量几句代码的运行结果,或者验证某函数的调用方法,而这恰恰是我们平时调试、验证程序的常用方式。如果是正式的开发,则应该使用独立脚本的方式运行。
打开你的文本编辑器(我是用EmEditor,当然你使用记事本、写字板也都可以),输入python代码,保存成*.py文件,然后双击运行它就可以执行了,当然前提也是必须配置系统PATH变量。
l 在其所在目录下开启一个CMD窗口,输入python *.py运行。
l 在代码的最后增加如下语句:
raw_input()
然后你再双击运行,结果就会停留在那里,直到你敲击回车键才消失。
Linux下运行Python程序,一般说来有以下两种形式,其实和Windows下基本一样。
⑶ vscode怎么编译python
运行python代码
运行python代码的常见方式有三种:
运行python命令,进入python工作环境,输入表达式后回车即可
创建保护python代码的文件,使用命令 python filename [参数]执行
在Linux下首行注释#!/usr/bin/env python3,然后将源文件加上执行属性即可直接执行
使用跨平台工具Visual Studio Code 作为IDE
下载并安装VS Code,最近(2016-7-15)VS Code更新比较快,几天一个新版本,我现在用的是1.3.0版
安装python插件:打开VsCode,Ctrl + p后输入ext install python,稍等片刻会发现一个关于python插件的列表,选择一个并安装,我安装的是VSC官网上介绍的那个,它的介绍语是这么写的:"*Linting, Debugging (multi-threaded, remote), Intellisense, code formatting, snippets, and more",安装完这个插件后就有智能提示了,当然,因为python是动态语言,某些时候VSC无法识别一个变量的类型,因为只有运行时才能确定它的类型,就算神仙也没法智能提示。
配置python的版本,如果环境变量里有多个版本的python,可以通过如下配置指定一个:依次点击File->Preference->User Settings会打开两个文件,左边的叫做Default.Settings,右边的叫做Setting.json,将左侧的"python.pythonPath": "python"拷贝到右侧并修改为"python.pythonPath": "/usr/bin/python3"或任何你想修改的python目录即可。其它的设置也是这样,左侧的是默认的,右侧的如果设置了和左侧相同的内容则覆盖左侧的。
设置运行配置:打开或新建一个python源文件,按下快捷键Ctrl+Shift+B运行,VSC会提示No task runner configured.,点击逗Configure Task Runner地,选择逗Others地,输入以下内容并保存:
{
"version": "0.1.0",
"command": "/usr/bin/python3",
"isShellCommand": true,
"args": ["${file}"],
"showOutput": "always"
⑷ python写的程序怎样加密
对Python加密时可能会有两种形式,一种是对Python转成的exe进行保护,另一种是直接对.py或者.pyc文件进行保护,下面将列举两种形式的保护流程。
1、对python转exe加壳
下载最新版VirboxProtector加壳工具,使用加壳工具直接对demo.exe进行加壳操作
2、对.py/.pyc加密
第一步,使用加壳工具对python安装目录下的python.exe进行加壳,将python.exe拖入到加壳工具VirboxProtector中,配置后直接点击加壳。
第二步,对.py/.pyc进行加密,使用DSProtector对.py/.pyc进行保护。
安全技术:
l虚拟机外壳:精锐5的外壳保护工具,创新性的引入了预分析和自动优化引擎,有效的解决了虚拟化保护代码时的安全性和性能平衡问题。
l碎片代码执行:利用自身成熟的外壳中的代码提取技术,抽取大量、大段代码,加密混淆后在安全环境中执行,最大程度上减少加密锁底层技术和功能的依赖,同时大量大段地移植又保证了更高的安全性。
lVirbox加密编译引擎:集编译、混淆等安全功能于一身,由于在编译阶段介入,可优化空间是普遍虚拟化技术无法比拟的,对代码、变量的混淆程度也有了根本的提升。
l反黑引擎:内置R0级核心态反黑引擎,基于黑客行为特征 的(反黑数据库)反制手段。精准打击调试、注入、内存修改等黑客行为,由被动挨打到主动防护。
加密效果:
加密之前
以pyinstall 的打包方式为例,使用pyinstxtractor.py文件对log_322.exe进行反编译,执行后会生成log_322.exe_extracted文件夹,文件夹内会生成pyc文件。
成功之后会在同目录下生成一个文件夹
⑸ 如何配置vscode的python编译环境
运行python代码
运行python代码见式三种:
运行python命令进入python工作环境输入表达式车即
创建保护python代码文件使用命令
python
filename
[参数]执行
Linux首行注释#!/usr/bin/env
python3源文件加执行属性即直接执行
使用跨平台工具Visual
Studio
Code
作IDE
载并安装VS
Code近(2016-7-15)VS
Code更新比较快几新版本我现用1.3.0版
安装python插件:打VsCodeCtrl
+
p输入ext
install
python,稍等片刻发现关于python插件列表选择并安装我安装VSC官网介绍介绍语写:"*Linting,
Debugging
(multi-threaded,
remote),
Intellisense,
code
formatting,
snippets,
and
more"安装完插件智能提示python态语言某些候VSC识别变量类型运行才能确定类型算神仙没智能提示
配置python版本环境变量版本python通配置指定:依点击File->Preference->User
Settings打两文件左边叫做Default.Settings右边叫做Setting.json左侧"python.pythonPath":
"python"拷贝右侧并修改"python.pythonPath":
"/usr/bin/python3"或任何想修改python目录即其设置左侧默认右侧设置左侧相同内容则覆盖左侧
设置运行配置:打或新建python源文件按快捷键Ctrl+Shift+B运行VSC提示No
task
runner
configured.点击逗Configure
Task
Runner选择逗Others输入内容并保存:
{
"version":
"0.1.0",
"command":
"/usr/bin/python3",
"isShellCommand":
true,
"args":
["${file}"],
"showOutput":
"always"
⑹ 使用python语言如何保密源代码以防止逆向工程
大家都很忙,谁有时间看你的的烂代码!
如果真的怕泄露,别用python.
我以前做过这类事情,而且当时更严格,需要打包部署到客户的服务只在有效期内有效,超过有效期必须更新证书才行。
Python代码用任何方法都没法保证保密性,这个时候你可以考虑用一个工具“nuitka”,这个工具会把你的python源代码映射为c++然后编译为二进制,因此对方是无论如何得不到你的源代码的。
代价就是nuitka这个工具并不完美,有一些限制并不能100%完美的转换所有python代码。
1.用Cython编译python成 Windows的pyd文件或Linux的so文件,二进制文件相对安全性较高。
2.用源码混淆器把代码搞的又臭又长。。。混淆完了再用Cython编译为二进制。。。这样静态反编译逆向难度也不小。
3.同其他语言程序一样,可以对调试状态进行检测,当处于调试状态时退出程序或进入混乱代码耗费逆向工程人员心神。
4.分享一个跨平台反调试手段,检测函数运行时间,加断点会导致函数运行时间变长,也可感知正在被调试。
Python是提倡开源的,既然选择Python还是拥抱开源才好~ 都开源还担心逆向工程嘛
没有不能逆的软件。
只要汇编语言过关,逆向工程都是可以实现的,不要有其它想法。
你唯一可以做的,就是不让别人用python读取源代码而已。那样实现起来比较简单。
python 适合开发服务器程序,或者自己科研使用的程序,如果是 作为用户程序,安装到 pc 或手机上,还是 其它 c++ 或java 比较合适
1)可以把需要保护的部分用c语言实现,从而编译成so等文件,这样逆向的成本会比较高,可以防止直接打开python文件看到代码逻辑。
2)so文件通过ida等工具也是可以反汇编的,可以通过对c语言进行代码混淆,花指令等操作,提高通过ida等反汇编工具的分析难度。
3)不存在绝对无法逆向的技术手段,因此只能是看具体需求,选择具体的防逆向的技术手段。
有工具类似py2exe转成可执行程序,隐藏全部源代码,虽然bytecode还是可以反编译,但是难度大多了
1. 最稳的就是你改cpython加载代码的过程,改zip包读取最稳。
2. 借助一些加密工具在编译pyc之前进行一定的混淆,可以防君子,自我安慰一下。
商用一般都是用第一种办法,小打小闹用第二种。
可以考虑使用pymod工具,使用pymod pack 将模块加密打包,发布的时候一个模块就一个文件。
先睹为快,看看一个项目发布的时候,只有几个文件,
main.py 项目程序入口
setting.py 项目配置
apps 项目模块
plusins 项目插件目录
创建项目 pymod create demo1
cd demo1
创建模块 pymod add mod1
启动pycharm 开始编写功能模块
一个模块默认由三个文件组成
__init__.py 、 handlers.py 、param_schemas.py
业务逻辑主要在handlers.py中编写
__init__.py
from pymod.blueprint import Blueprint api = Blueprint("/mod1") from .handlers import *
param_schemas.py
schema_sfz = { "type": "object", "required": ["sfz", "nl"], "properties": { "sfz": { "type": "string", "minLength": 18, "maxLength": 18, "description": "身份证明号码" }, "nl": { "type": "integer", "minimum": 0, "maximum": 150, "description": "年龄" } } }
handlers.py
from . import api from pymod.ext import RequestHandler, params_validate,TrueResponse,FalseResponse from .param_schemas import schema_sfz from pymod.plugins import sfz_check @api.add_route('/hello') class Hello(RequestHandler): def get(self): self.write('Hello World') @params_validate(schema_sfz) def post(self): sfz = self.get_json_arg("sfz") nl =self.get_json_arg("nl") # self.write(TrueResponse(sfz=sfz, nl=nl)) if sfz_check.check_sfzmhm(sfz): self.write(TrueResponse(hint="身份证明号码验证通过")) else: self.write(FalseResponse(hint="身份证明号码验证失败"))
三、项目部署
程序调试 修改setting.py
# 开发模式下 运行的模块名称必须填写
moles = ["mod1"] moles_config ={ "mod1": { "deny_ip": "", "allow_ip": "*" } }
启动程序 python main.py
调试没有问题,进入发布模式
在项目目录下
pymod pack mod1
在target目录下生成mod1.mod文件,将其复制到apps目录中
修改setting.py
# 开发模式下 运行的模块名称必须填写
moles = []
再次运行 python main.py 测试
一切OK,系统就可以发布了。
说不能保密的,是没有研究过python的机制的。我做个一个项目,所有源代码自定义加密,运行时解密。