Centos安装python3与scapy模块的问题及解决方法
作者:wespten
一、CentOS安装Python3
centos7自带版本是python2.7
如果要用的3.0以上的版本需要手动安装,下载地址:https://www.python.org/ftp/python/
1、先查看系统python的位置在哪儿
whereis python
python2.7默认安装是在 /usr/bin目录中,切换到/usr/bin/
cd /usr/bin/ ll python*
从下面的图中我们可以看到,python指向的是python2,python2指向的是python2.7,因此我们可以装个python3,然后删除python链接,将python3指向python3,然后python2指向python2.7,那么两个版本的python就能共存了。
2、下载python3的包之前,要先安装相关的依赖包,用于下载编译python3:
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
运行了以上命令以后,就安装了编译python3所用到的相关依赖
3、默认的centos7是没有安装pip,先添加epel扩展源
yum -y install epel-release
4、安装pip
pip install wget
5、用pip装wget
pip install wget
6、用wget下载python3的源码包,或者自己先下载好,上传到服务器再安装,如果网络快可以直接安装
wget https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tar.xz
7、编译python3源码包,解压
xz -d Python-3.9.6.tar.xz tar -xf Python-3.9.6.tar
8、进入解压后的目录,依次执行下面命令进行手动编译
cd Python-3.9.6 ./configure prefix=/usr/local/python3 make && make install
注意:
安装过程中报错:
ModuleNotFoundError: No module named '_ctypes'
make: *** [install] Error 1
问题原因:
python3中有个内置模块叫ctypes,它是python3的外部函数库模块,提供了兼容C语言的数据类型,并通过它调用Linux系统下的共享库(Shared library),此模块需要使用centos7系统中外部函数库(Foreign function library)的开发链接库(头文件和链接库)。
由于在centos7系统中没有安装外部函数库(libffi)的开发链接库软件包,所以在安装pip的时候就报了"ModuleNotFoundError: No module named ‘_ctypes’"的错误。
解决方法:
yum install -y libffi-devel # 如果没有yum源,可下载包上传 https://vault.centos.org/
然后重新./configure ... make ... make install
9、安装依赖zlib、zlib-deve
yum install zlib zlib yum install zlib zlib-devel
10、最后没提示出错,就代表正确安装了,在/usr/local/目录下就会有python3目录
11、添加软链接,将原来的链接备份
mv /usr/bin/python /usr/bin/python.bak
12、添加python3的软链接
ln -s /usr/local/python3/bin/python3.9 /usr/bin/python3
13、测试是否安装成功了
python3 -V
14、更改yum配置,因为其要用到python2才能执行,否则会导致yum不能正常使用
vi /usr/bin/yum
15、把第一行的#! /usr/bin/python 修改为如下
#! /usr/bin/python2
16、还有一个地方也需要修改
vi /usr/libexec/urlgrabber-ext-down
17、把第一行的#! /usr/bin/python 修改如下
#! /usr/bin/python2
18、启动python2
python2
19、启动python3
python3
二、安装scapy模块
Scapy是一个强大的基于Python的交互式包操作程序和库。 它能够伪造或解码大量协议的数据包,在有线上发送它们,捕获它们,使用pcapfile存储或读取数据包,匹配请求和答复,等等。 它被设计为通过使用可用的默认值来允许快速的数据包原型化。 它可以轻松地处理大多数经典任务,如扫描、跟踪、探测、单元测试、攻击或网络发现(它可以替换hping,85%nmap, arpspoof, arp-sk, arping, tcpdump, wireshark, p0f等等)。它还能很好地执行大多数其他工具无法处理的许多其他特定任务,如发送无效帧、注入您自己的802.11帧、组合技术(VLAN跳变+ARP缓存中毒、WEP保护信道上的VoIP解码等)。
1、yum安装相关依赖程序
yum -y install tcpdump graphviz ImageMagick
2、到GitHub上下载安装包,进行编译安装
#https://github.com/secdev/scapy cd scapy-master/ python3 setup.py install
3、创建软链接
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip ln -s /usr/local/python3/bin/scapy /usr/bin/scapy
4、scapy生成动态路由轨迹图代码示例
#!/usr/bin/python3 #-*-coding:UTF-8-*- import os,sys,time,subprocess import logging,warnings warnings.filterwarnings("ignore",category=DeprecationWarning) #屏蔽scapy无用警告信息 logging.getLogger("scapy.runtime").setLevel(logging.ERROR) #屏蔽模块IPV6多余警告 from scapy.all import traceroute domains = input('请输入IP地址或域名地址:') target = domains.split(' ') dport = [80] #扫描的端口列表 if len(target) >=1 and target[0] !='': res,unans = traceroute(target,dport=dport,retry=2) #启动路由跟踪 res.graph(target="> test.svg") #生成svg矢量图形 time.sleep(1) subprocess.Popen("/usr/bin/convert test.svg test.png", shell=True) #svg转png格式 else: print('IP/domain number of errors,exit')
到此这篇关于Centos安装python3与scapy模块的文章就介绍到这了,更多相关Centos安装python3内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!