网安
  • Develop
    • JAVA学习
      • 字节码
      • API开发
      • Web开发
      • 工程结构推荐
      • 创建第一个项目
      • 权限管控
      • 配置文件
      • 日志管理
      • 数据访问
      • 性能监控
      • IoC容器
      • Spring
      • Filter与Listener
      • jsp
      • MVC
      • servlet-1
      • servlet-2
      • servlet-3
      • servlet-4
      • FreeMarker
      • Thymeleaf
      • EL
      • SpEL
      • JSTL
      • 部署
      • JDBC
      • 数据库连接池
      • fastjson
      • jackson
      • XML
      • JSON
      • 序列化
      • Maven
      • 安装与使用
      • 工具
      • 爬虫
    • GO学习
      • GO
        • flag 包
        • goland 远程调试
        • GoReleaser
        • OS 包
        • time 包
        • 格式化输出
    • Lua学习
      • Lua
      • 基础语法
      • LuaJIT
      • 与系统交互
    • Pyhon
      • 基础
      • Django
      • CLI
      • miniforge
      • MockingBird
      • pdb
      • pyc
      • 装的我脑血栓要犯了
      • Python101
      • 反序列化
      • 爬虫
      • Pillow
      • 图像识别
      • flask
    • Speed-Ruby
      • 入门1
      • 入门2 对象
      • 入门3 创建命令
      • Encoding类
      • File类与Dir类
      • IO
      • Proc类
      • Time类与Date类
      • 正则
      • 错误处理与异常
      • 对象、变量和常量
      • 方法
      • 数值
      • 数组
      • 条件判断
      • 循环
      • 运算符
      • Socket编程
      • 字符串
      • 并发与线程
      • 块
      • 类和模块
      • 散列
    • Web
      • HTTP
        • Connection
        • HTTP 报文
        • Vary
      • 笔记
        • 跳转
        • 认证 & 授权
        • 同源策略(SOP)
        • 文件
    • Git 学习笔记
    • JSON
      • JSON 学习笔记
    • HTML
      • Speed-HTML
      • 语法学习
      • HTML字符实体
    • XML
      • XML 学习笔记
    • 计算机基础
      • 操作系统
      • 计算机组成
      • 算法
      • 内存
      • 字符编码
    • gnuplot 学习笔记
    • regex
  • Integrated
    • Linux
      • God-Linux
      • Secure-Linux
      • Power-Linux
      • IO模型
      • Speed-Linux
      • 发行版
      • 工具
      • 启动过程
      • 进程
      • 认证
      • 日志
      • 守护进程
      • 文件
      • 信息
      • VSFTP 配置案例
      • auditd
      • containerd
      • DNS 配置案例
      • Docker
      • Docker-Compose
      • firewalld 实验
      • gpg
      • Iptables
      • httpd
      • LAMP
      • mysql
      • nfs 配置案例
      • openssl
      • PAM
      • samba 配置案例
      • terraform
      • ufw
      • VSFTP 配置案例
    • Network
      • Speed-Net
      • Power-Net
      • SDN 笔记
      • DNS
      • TLS
    • Windows
      • Secure-Win
      • Speed-Win
      • ACL
      • LDAP
      • IPC$(Internet Process Connection)
      • PDB符号文件
      • 工作组
      • WinRM
      • 角色权限
      • 凭据
      • 签名
      • 日志
      • 认证
      • 协议
      • 信息
      • 应用
      • 组策略
      • 域
      • asp站点搭建
      • Exchange 搭建
      • Windows 故障转移集群
      • Windows 基础服务搭建
      • Windows 域搭建
      • 本地抓包
      • PowerShell 笔记
    • 容器
      • Docker
    • 数据库
      • Speed-SQL
      • Power-SQL
      • MSSQL
      • MySQL
      • Postgresql
      • Redis
      • MySQL大小写问题
      • 主键和外键
      • MySQL快速入门
      • 虚拟化
        • ESXi
        • vCenter
  • Plan
    • Mac-Plan
    • Misc-Plan
    • Team-Plan
    • Thinking-Plan
    • VM-Plan
  • Sercurity
    • Power-PenTest
    • BlueTeam
      • 安全建设
      • 分析
      • 加固
      • 取证
      • 应急
      • USB取证
      • 磁盘取证
      • 内存取证
      • ClamAV 部署
      • yara 实验
      • 安防设施搭建使用
      • ZIP明文攻击
      • 流量分析
    • Crypto
      • Crypto
        • 2020 9 G60攻防大赛
        • CTF
        • 2020 9 中能融合杯工控CTF
        • 2020 10 全国工业互联网安全技术技能大赛江苏省选拔赛
        • 2020 10 全国网络与信息安全管理职业技能大赛江苏场
        • 2020 11 I²S峰会暨工业互联网安全大赛
        • 2021 6 第二届I²S峰会暨工业互联网安全大赛
        • 2021-9-第七届工控信息安全攻防竞赛
        • 2021 9 第七届全国职工职业技能大赛某市县选拔赛
        • 2021 9 全国网络与信息安全管理职业技能大赛江苏场
        • 2021-10-G60攻防大赛
    • CTF
      • CTF
      • writeup
        • 2020 9 中能融合杯工控CTF
        • 2020 9 G60攻防大赛
        • 2020 10 全国工业互联网安全技术技能大赛江苏省选拔赛
        • 2020 10 全国网络与信息安全管理职业技能大赛江苏场
        • 2020 11 I²S峰会暨工业互联网安全大赛
        • 2021 6 第二届I²S峰会暨工业互联网安全大赛
        • 2021-9-第七届工控信息安全攻防竞赛
        • 2021 9 第七届全国职工职业技能大赛某市县选拔赛
        • 2021 9 全国网络与信息安全管理职业技能大赛江苏场
        • 2021-10-G60攻防大赛
    • ICS
      • PLC攻击
      • S7comm 相关
      • 工控协议
      • 上位机安全
      • Modbus 仿真环境搭建
      • siemens 仿真搭建实验
      • S7-300 启停实验
    • IOT
      • 无线电安全
        • RFID复制卡
        • RFID基础知识
        • WiFikiller
      • 硬件安全
        • DIY键盘嵌入指纹识别模块实验记录
        • Device-Exploits
        • HID-Digispark
        • HID-KeyboardLogger
        • HID-USBHarpoon
        • HID-USBKeyLogger
      • 固件安全
        • 固件安全
        • Dlink_DWR-932B 路由器固件分析
    • Mobile sec
      • 小程序安全
      • Android安全
    • PWN
      • SLMail溢出案例
      • PWN
    • Red Team
      • OS安全
        • Linux 安全
        • Exploits
        • NTLM中继
        • Windows 安全
        • Responder欺骗
        • Windows-LOL
      • Web_Generic
        • Top 10
          • RCE
          • Fileread
          • SQLi
          • SSRF
          • SSTI
          • Web Generic
          • XSS
          • XXE
      • Web_Tricks
        • JWT 安全
        • HTTP_request_smuggling
        • OOB
        • 绕过访问
      • 靶场
        • Hello-Java-Sec 学习
        • DVWA-WalkThrough
        • pikachu-WalkThrough
        • upload-labs-WalkThrough
        • XVWA-WalkThrough
        • XSS挑战-WalkThrough
      • 实验
        • flask
        • fastjson
        • Log4j
        • nodejs
        • Shiro
        • Spring
        • Weblogic
      • 前端攻防
      • IDOR
    • 安防设备
      • Exploits
      • Bypass 技巧
    • 后渗透
      • 权限提升
      • 后渗透
      • 权限维持
      • 实验
        • C2 实验
        • Exchange
        • 端口转发实验
        • 代理实验
        • 免杀实验
        • 隧道实验
    • 软件服务安全
      • Exploits
      • CS Exploits
      • 实验
        • Docker
        • Kubernetes
        • Mysql
        • Oracle
        • PostgreSQL
        • Redis
        • vCenter
    • 协议安全
      • Exploits
    • 信息收集
      • 端口安全
      • 空间测绘
      • 信息收集
    • 语言安全
      • 语言安全
        • 语言安全
      • GO安全
        • GO安全
        • Go代码审计
      • JAVA安全
        • JAVA安全
        • JAVA代码审计
        • JAVA反序列化
        • SpEL 注入
      • PHP安全
        • PHP安全
        • bypass_disable_function
        • bypass_open_basedir
        • phpinfo
        • PHP代码审计
        • PHP反序列化
        • PHP回调函数
        • 变量覆盖
        • POP
        • 弱类型
        • 伪协议
        • 无字母数字Webshell
      • Python安全
        • pyc反编译
        • Python安全
        • Python 代码审计
        • 沙箱逃逸
      • dotnet安全
      • JS安全
    • 云安全
      • 公有云安全
    • Reverse
      • Reverse
      • FILE
        • ELF
        • BMP
        • JPG
        • PE
        • PNG
        • ZIP
        • 文件头
      • 实验
        • PYAble
          • 2-逆运算
          • 1-基本分析
          • 3-异或
          • 4-Base64
          • 5-Base64换表
          • 6-动态调试
        • Windows
          • condrv.sys 内存损坏漏洞
    • 工具
      • Aircrack
      • BloodHound
      • Burp Suite
      • frp
      • CobaltStrike
      • Ghidra
      • fscan
      • Hashcat
      • IDA
      • merlin
      • Kali
      • Metasploit
      • Mimikatz
      • ModSecurity
      • Nmap
      • nps
      • nuclei
      • pupy
      • RedGuard
      • SET
      • sliver
      • Snort
      • Sqlmap
      • Suricata
      • Sysmon
      • uncover
      • Volatility
      • Wfuzz
      • Wireshark
      • xray
    • 安全资源
      • 靶机
        • VulnHub
          • DC
            • DC2 WalkThrough
            • DC1 WalkThrough
            • DC3 WalkThrough
            • DC4 WalkThrough
            • DC5 WalkThrough
            • DC6 WalkThrough
            • DC9 WalkThrough
            • DC8 WalkThrough
          • It's_October
            • It’s_October1 WalkThrough
          • Kioptrix
            • Kioptrix2 WalkThrough
            • Kioptrix3 WalkThrough
            • Kioptrix4 WalkThrough
            • Kioptrix5 WalkThrough
          • Mission-Pumpkin
            • PumpkinGarden-WalkThrough
            • PumpkinFestival WalkThrough
            • PumpkinRaising WalkThrough
          • Symfonos
            • symfonos1 WalkThrough
            • symfonos2 WalkThrough
            • symfonos3 WalkThrough
            • symfonos5 WalkThrough
        • Wargames
          • Bandit
            • Bandit-WalkThrough
      • 面试问题
        • 面试问题
Powered by GitBook
On this page
  • 安装/配置/报错
  • 安装
  • 打包
  • 常见报错
  • 包/模块管理
  • import 与 from...import
  • pip指定版本安装
  • 虚拟环境 virtualenv
  • 离线安装
  • 自动生成 requirements.txt 文件
  • 版本问题
  • input()
  • 反编译
  • 一些项目
  1. Develop

Pyhon

Previous与系统交互Next基础

推荐工具/资源


安装/配置/报错

安装

yum 安装

yum install epel-release
或
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum -y install python36 python36-devel

wget https://bootstrap.pypa.io/get-pip.py	## 安装pip3
python3 get-pip.py

源代码编译方式安装

安装依赖环境

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

下载Python3

wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz

安装python3

mkdir -p /usr/local/python3
tar zxvf Python-3.6.1.tgz
cd Python-3.6.1
./configure --prefix=/usr/local/python3
make
make install 或者 make && make install

添加到环境变量

ln -s /usr/local/python3/bin/python3 /usr/bin/python3
vim ~/.bash_profile ## 永久修改变量

PATH=$PATH:/usr/local/python3/bin/

source ~/.bash_profile

检查 Python3 及 pip3 是否正常可用

python3 -V
pip3 -V

打包

Pyinstaller

安装 Pyinstaller

pip3 install PyInstaller

使用 Pyinstaller

python3 PyInstaller.py -F test.py
或
python -m PyInstaller -F test.py
## -F 表示生成单个可执行文件
## -w 表示去掉控制台窗口,这在GUI界面时非常有用.不过如果是命令行程序的话那就把这个选项删除吧
## -p 表示你自己自定义需要加载的类路径,一般情况下用不到
## -i 表示可执行文件的图标

文件中使用了第三方库的打包方式

在打包之前务必找到第三方库的包,把包复制到到跟 test.py 同目录下,然后再使用以上2种方式打包,否则会打包失败或者即使打包成功,程序也会闪退.

exe文件生成

如果程序打包过程没有报错,则会生成3个文件夹(有时候是2个),其中名为 dist 的文件夹中会有一个 test.exe 文件,运行一下,如果没有问题就打包成功,可以把这个 exe 文件单独拿出去用,其他的生成的文件夹可以删掉了.

py2exe

py2exe 就是将 python 代码打包成 windows 可执行程序的一个 python 开源项目。

安装

python -m pip install py2exe

基础方式 setup.py

from distutils.core import setup
import py2exe
import sys

sys.argv.append('py2exe')
setup(console=["yourcode.py"])
python setup.py

进阶方法

from distutils.core import setup
import py2exe
import sys

## 允许程序通过双击的形式执行。
sys.argv.append('py2exe')

py2exe_options = {
        ## 选项中 “includes” 是需要包含的文件,这里的”sip”是 PyQt 程序打包时需要添加的,如果不是 PyQt 程序不需要此项。
        "includes": ["sip"],
        ## “dll_excludes”是需要排除的 dll 文件,这里的”MSVCP90.dll”文件,如果不排除的话会报 error: MSVCP90.dll: No such file or directory 错误。
        "dll_excludes": ["MSVCP90.dll",],
        ## “compressed”为 1,则压缩文件
        "compressed": 1,
        ## “optimize”为优化级别,默认为 0。
        "optimize": 2,
        ## “ascii”指不自动包含 encodings 和 codecs。
        "ascii": 0,
        ## bundle_files”是指将程序打包成单文件(此时除了 exe 文件外,还会生成一个 zip 文件。如果不需要 zip 文件,还需要设置 zipfile = None)
        ## 1 表示 pyd 和 dll 文件会被打包到单文件中,且不能从文件系统中加载 python 模块;值为 2 表示 pyd 和 dll 文件会被打包到单文件中,但是可以从文件系统中加载 python 模块。64位的Py2exe不要添加本句。
        "bundle_files": 1,
        }

setup(
        name = 'PyQt Demo',
        version = '1.0',
        ## “myico.ico” 是程序图标,
        ## 将 setup 函数中的 console 改为 windows, 即没有命令行窗口出现,如果使用 console 则表示有命令行窗口出现。
        windows = [{ "script":'wordreplace.py',"icon_resources":[(1,"myico.ico")]}],
        zipfile = None,
        options = {'py2exe': py2exe_options}
      )

#如果 bundle_files 不为 1、2,则 dist 文件夹中还会包括一些 dll 文件和 pyd 文件(Python Dll 文件)。如果 bundle_files 为 2,dist 文件夹会包括一个 python##.dll 文件,如果为 1 则不会。
## 如果没有使用 zipfile=None,还会生成一个 library.zip 文件。

打包后的 exe 不可执行,是由于缺少两个必要的文件,msvcr90.dll 和 Microsoft.VC90.CRT.manifest,其中 msvcr90.dll 的版本为 9.0.21022.8,详细解释见官网,

解决方法:将上述两个文件 copy 进 dist 文件夹,或者见官网的解决方式(在打包前,将这两个文件作为资源,直接复制到 dist 文件夹下)。

打包后的 exe 报错,说缺少文件,这个问题的主要原因是 python 代码 import 文件时,使用了某些模块提供的所谓 lazy import,使得打包时,py2exe 找不到类库真正的路径

解决方法:重新 import 类库文件的真实路径,然后重新打包,问题解决。

当我们想要将一些 dll 打包进 exe 里面,就需要修改 py2exe 的默认配置


常见报错

  • UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 9: illegal multibyte sequence

    • 在 Linux 环境下运行即可

  • UnicodeDecodeError: 'ascii' codec can't decode byte 0xce in position 7: ordinal not in range(128)

    • 路径有中文,修改下即可

  • DLL load failed: %1 不是有效的 Win32 应用程序

    • python 的版本是32位的,重装成64位的即可

  • TabError: inconsistent use of tabs and spaces in indentation

    代码中空格和 tab 混用了

  • Python“Non-ASCII character 'xe5' in file”

    Python 默认是以 ASCII 作为编码方式的,如果在自己的 Python 源码中包含了中文(或者其他非英语系的语言),此时即使你把自己编写的 Python 源文件以 UTF-8 格式保存了,但实际上,这依然是不行的。

    解决办法很简单,只要在文件开头加入下面代码就行了

    ## -*- coding: UTF-8 -*-

    或

    #coding:UTF-8
  • fatal error: Python.h: No such file or directory

    For apt (Ubuntu, Debian...):

    sudo apt-get install python-dev   ## for python2.x installs
    sudo apt-get install python3-dev  ## for python3.x installs

    For yum (CentOS, RHEL...):

    sudo yum install python-devel   ## for python2.x installs
    sudo yum install python3-devel   ## for python3.x installs

    For dnf (Fedora...):

    sudo dnf install python2-devel  ## for python2.x installs
    sudo dnf install python3-devel  ## for python3.x installs

    For zypper (openSUSE...):

    sudo zypper in python-devel   ## for python2.x installs
    sudo zypper in python3-devel  ## for python3.x installs

    For apk (Alpine...):

    ## This is a departure from the normal Alpine naming
    ## scheme, which uses py2- and py3- prefixes
    sudo apk add python2-dev  ## for python2.x installs
    sudo apk add python3-dev  ## for python3.x installs

    For apt-cyg (Cygwin...):

    apt-cyg install python-devel   ## for python2.x installs
    apt-cyg install python3-devel  ## for python3.x installs
  • Python Pip broken wiith sys.stderr.write(f“ERROR: {exc}”)

    由于 python 官方停止了对 python2 的维护,以后大部分和 pip2 有关的操作都会报这个错,我预估一下,这个应该是以后我们遇到最常见的问题之一

    curl https://bootstrap.pypa.io/2.7/get-pip.py --output get-pip.py
    python get-pip.py
  • requests.exceptions.ProxyError

    proxies = { "http": None, "https": None}
    requests.get("http://xxx.com", proxies=proxies)
  • Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed))

    加上 verify=False

    response = requests.get("https://127.0.0.1", verify=False)
  • return Command 'lsb_release -a' returned non-zero exit status 1

    rm /usr/bin/lsb_release
  • /usr/lib/python3/dist-packages/secretstorage/dhcrypto.py:15: CryptographyDeprecationWarning: int_from_bytes is deprecated, use int.from_bytes instead

    pip3 install cryptography==3.3.2
  • ModuleNotFoundError: No module named 'yaml'

    pip install pyyaml
  • Centos7 pip2.7升级失败解决方法

    升级跨度太大导致的问题,所以要解决这个问题只能通过升级至中间版本才可以解决

    wget https://files.pythonhosted.org/packages/0b/f5/be8e741434a4bf4ce5dbc235aa28ed0666178ea8986ddc10d035023744e6/pip-20.2.4.tar.gz
    tar -zxvf pip-20.2.4.tar.gz
    cd pip-20.2.4/
    sudo python setup.py install
    pip install -U pip
    
    python2 -m pip install --upgrade pip

包/模块管理

import 与 from...import

在 python 用 import 或者 from...import 来导入相应的模块.

  • 将整个模块(somemodule)导入,格式为: import somemodule

  • 从某个模块中导入某个函数,格式为: from somemodule import somefunction

  • 从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc

  • 将某个模块中的全部函数导入,格式为: from somemodule import *

import sys
print('================Python import mode==========================');
print ('命令行参数为:')
for i in sys.argv:
    print (i)
print ('\n python 路径为',sys.path)
from sys import argv,path  ##  导入特定的成员

print('================python from import===================================')
print('path:',path) ## 因为已经导入path成员,所以此处引用时不需要加sys.path

pip指定版本安装

检查一遍 pip 和 pip3 分别指向的 Python

pip -V
pip3 -V

在 linux 安装了多版本 python 时(例如 python2.6 和 2.7),pip 安装的包不一定是用户想要的位置,此时可以用 -t 选项来指定位置

pip install -t /usr/local/lib/python2.7/site-packages/ xlrd

或

python2 -m pip install xxxxx

虚拟环境 virtualenv

安装virtualenv

pip install virtualenv

创建环境

创建虚拟环境 virtualenv envtest 或指定版本 virtualenv -p /usr/bin/python3 envtestv3

进入虚拟环境的script路径,并执行 activate 就可以安装模块了

如果你的虚拟环境安装库的时候出问题,比如python3环境,需要安装 pip3

默认情况下,virtualenv会引用系统python环境中 site-­packages 中的库,并将其复制到虚拟python环境的库中.我们可以设置 --no-site-packages 参数取消对系统Python库的引用,以此来创建一个完全纯净的python环境.


离线安装

压缩包

python setup.py install

whl 包

  • https://pypi.org/

pip install xxx.whl

自动生成 requirements.txt 文件

pip install pipreqs
pipreqs .

版本问题

input()

python2中的input()函数:获取当前输入的内容,并将其作为指令来处理

python3中的input()函数:获取当前输入的内容,并将其作为字符串来处理

如果想在python2让input函数实现python3中相同的功能,就需要使用raw_input()函数


反编译

在线工具


一些项目

系统信息

爬虫

  • Scrapy

图像识别

  • 人脸识别

    • face_recognition - 人像识别

  • ocr

    • chineseocr_lite - 超轻量级中文ocr

网络编程

  • Urllib

  • Requests

文本处理

  • ftfy

IO操作

  • File

可视化

  • pyecharts

集成

  • Fabric

终端呈现方式

  • https://github.com/Textualize/rich

语言

正则

- A Python module to bypass Cloudflare's anti-bot page.

- 数据大屏可视化

- 汉字转拼音

- 汉字转拼音,比较旧了,不推荐

- 拼音转汉字, 拼音输入法引擎, pin yin -> 拼音

- 结巴中文分词

- A human-readable regular expression module for Python.

pycharm
vscode
jackzhenguo/python-small-examples
python反编译
giampaolo/psutil
VeNoMouS/cloudscraper
big_screen
tqdm/tqdm
rsalmei/alive-progress
mozillazg/python-pinyin
lxneng/xpinyin
letiantian/Pinyin2Hanzi
fxsjy/jieba
asweigart/humre