Centos安裝python3與scapy模塊的問題及解決方法

一、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就能共存瞭。

img

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內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: