Python per la Cybersicurezza
Python è il linguaggio più diffuso in ambito cybersicurezza grazie alla sua versatilità, alla ricchezza di librerie specializzate e alla facilità con cui permette di automatizzare test, analisi di rete, sviluppo di exploit e interazione con servizi remoti.
Environment virtuali
Gli environment virtuali sono ambienti isolati che permettono di gestire le dipendenze e le versioni dei pacchetti Python necessari per un determinato progetto, evitando conflitti tra librerie installate globalmente.
Creare e gestire un environment con venv
# Creare un nuovo environment chiamato "env"
python3 -m venv env
# Attivare l'environment (Linux/macOS)
source env/bin/activate
# Attivare l'environment (Windows)
env\Scripts\activate.bat
# Disattivare l'environment
deactivate
Una volta attivato l’environment, tutti i pacchetti installati con pip rimarranno isolati in quell’ambiente.
Creare e gestire un environment con Anaconda
Anaconda offre una distribuzione di Python preconfigurata con molte librerie per data science e cybersicurezza:
# Creare un nuovo environment
conda create --name env
# Attivare l'environment
conda activate env
# Disattivare l'environment
conda deactivate
Installare librerie Python
Installazione globale
# Windows
pip install nome_libreria
# Linux/macOS
pip install nome_libreria
# oppure, con privilegi amministratore:
sudo pip install nome_libreria
# oppure, nella propria home:
pip install --user nome_libreria
Installazione in un environment Anaconda
# Con conda (cerca nel canale ufficiale)
conda install nome_libreria
# Con pip (cerca su PyPI)
pip install nome_libreria
Disinstallare librerie
pip uninstall nome_libreria # globale o in venv
conda remove nome_libreria # in environment Anaconda
Principali librerie Python per la Cybersicurezza
Pyshark — analisi di rete con Wireshark
Permette di analizzare i pacchetti di rete tramite l’interfaccia Python di Wireshark.
pip install pyshark
import pyshark
# Cattura pacchetti in tempo reale sull'interfaccia eth0
cap = pyshark.LiveCapture(interface='eth0')
for pkt in cap.sniff_continuously(packet_count=10):
print(pkt)
Casi d’uso: analisi di traffico, monitoraggio di rete, filtraggio pacchetti per protocollo o campo.
Pwntools — exploit development e CTF
Libreria specializzata per la scrittura di exploit e l’interazione con servizi remoti durante competizioni CTF.
pip install pwntools
from pwn import *
conn = remote('esempio.com', 1337)
conn.recvuntil(b'Input:')
conn.sendline(b'payload')
conn.interactive()
Casi d’uso: CTF, exploit development, interazione con binari, costruzione di payload, debugging con GDB.
Pycryptodome — crittografia
Implementa algoritmi e protocolli crittografici: AES, RSA, SHA, HMAC, Diffie-Hellman e molti altri.
pip install pycryptodome
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
key = get_random_bytes(16)
cipher = AES.new(key, AES.MODE_EAX)
ciphertext, tag = cipher.encrypt_and_digest(b'messaggio segreto')
Casi d’uso: cifratura/decifratura di dati, firme digitali, hashing, scambio di chiavi.
Scapy — manipolazione pacchetti a basso livello
Permette di creare, inviare, ricevere e manipolare pacchetti di rete a basso livello.
pip install scapy
from scapy.all import *
# Invio di un pacchetto ICMP (ping)
pkt = IP(dst="192.168.1.1") / ICMP()
risposta = sr1(pkt, timeout=2)
if risposta:
risposta.show()
Casi d’uso: testing sicurezza di reti, port scanning, sniffing, spoofing, attacchi DoS (in ambiente di laboratorio).
Requests — interazione con API e web
Semplifica l’invio di richieste HTTP e la gestione delle risposte.
pip install requests
import requests
# GET request con autenticazione
r = requests.get('https://api.esempio.com/dati',
headers={'Authorization': 'Bearer TOKEN'})
print(r.status_code, r.json())
# POST request
r = requests.post('https://api.esempio.com/login',
json={'user': 'mario', 'pass': 'secret'})
Casi d’uso: interazione con API web, download di file, autenticazione, web scraping.
BeautifulSoup — web scraping
Facilita l’analisi e l’estrazione di dati da documenti HTML e XML.
pip install bs4
import requests
from bs4 import BeautifulSoup
r = requests.get('https://esempio.com')
soup = BeautifulSoup(r.text, 'html.parser')
# Estrae tutti i link
for link in soup.find_all('a'):
print(link.get('href'))
Casi d’uso: web scraping, estrazione di informazioni, crawling.
Selenium — automazione browser
Automatizza il controllo di browser web (Chrome, Firefox, ecc.).
pip install selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('https://esempio.com/login')
driver.find_element(By.ID, 'username').send_keys('mario')
driver.find_element(By.ID, 'password').send_keys('secret')
driver.find_element(By.ID, 'submit').click()
Casi d’uso: simulazione azioni utente, testing applicazioni web, crawling di siti con JavaScript, automazione form.
Riepilogo librerie
| Libreria | Installazione | Uso principale |
|---|---|---|
pyshark | pip install pyshark | Analisi pacchetti di rete |
pwntools | pip install pwntools | CTF ed exploit development |
pycryptodome | pip install pycryptodome | Crittografia |
scapy | pip install scapy | Manipolazione pacchetti a basso livello |
requests | pip install requests | HTTP, API web |
beautifulsoup4 | pip install bs4 | Web scraping HTML/XML |
selenium | pip install selenium | Automazione browser |
Risorse aggiuntive
- Repository di esempi: GitHub IIS-A-Avogadro-VC/cybersecurity
- Documentazione pwntools: docs.pwntools.com
- Documentazione Scapy: scapy.net
Nota etica: tutti gli strumenti presentati devono essere utilizzati esclusivamente in ambienti autorizzati (laboratori, CTF, sistemi propri). L’accesso non autorizzato a sistemi informatici è illegale.
EC