Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Sicurezza Informatica [CT0539], Appunti di Sicurezza Dei Sistemi Informativi

Appunti di Sicurezza Informatica [CT0539]

Tipologia: Appunti

2019/2020

In vendita dal 05/11/2024

simoneferrari
simoneferrari 🇮🇹

5

(3)

34 documenti

1 / 112

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Anteprima parziale del testo

Scarica Sicurezza Informatica [CT0539] e più Appunti in PDF di Sicurezza Dei Sistemi Informativi solo su Docsity!

SOMMARIO

  • INTRODUZIONE CORSO
  • LEZIONE 1 - 16/09/20 - ONLINE
    • INTRODUZIONE E SHELL UNIX
    • Unix Shell
    • Comandi di base
    • Wildcards
    • Input da terminale
    • Ridirezione
    • Redirezione su stdout e stderr
    • Pipe
    • The Bandit wargame
      • Livello
      • Livello
      • Livello
      • Livello
      • Livello
  • LEZIONE 2 - 17/09/20 - ONLINE
    • EDITOR DI STREAMING E REGEXPS
    • Stream editor sed
    • Programma sed
      • Eliminazione
      • Sostituzione
    • Espressioni regolari
      • Classi predefiniti
    • Espressioni regolari con sed
    • Esercizi
      • Esercizio 1: pretty printing
      • Esercizio 2: break ROT13
      • Esercizio 3: filename conversion
      • Esercizio 4: data extraction
  • LEZIONE 3 - 23/09/20 - ONLINE
    • INTRODUZIONE A PYTHON
    • Interprete Python
    • Numeri
      • Tipaggio dinamico
    • Variabili
      • Tipaggio dinamico
    • Stringhe
      • Funzioni di base
        • Format string
      • Accedere alle stringhe
    • Liste
      • Liste: assegnazione a sezioni
    • Riferimento vs. copia
      • Esercizio: rovesciare l’ordine delle parole
    • Flusso di controllo
      • If then else
      • For loop
      • While loop
    • Funzioni
    • Programmi e moduli Python
      • Esercizio 2: cifrario Cesare
    • Programmazione funzionale
    • List comprehension
    • Insiemi, tuple, dizionari
  • LEZIONE 4 - 24/09/20 - ONLINE
    • LAB: INTERACTING WITH PROGRAMS
    • Task 1: regexp in python
    • Task 2: Executing processes
    • Task 3: Interacting with processes
  • LEZIONE 5 - 30/09/20 - ONLINE
    • ASSEMBLY X86-64
    • Program exploitation
    • Registri
      • Porzioni dei registri
    • Sintassi Assembly
    • Layout della Memoria
    • Stack e convenzione di chiamata
    • Comandi principali
    • Chiamate a funzione
    • Leggere codice macchina
    • Applicare patch agli eseguibili
      • hexdump e ritorno: xxd
      • Esercizi
  • LEZIONE 6 - 01/10/20 - ONLINE
    • PROGRAM ANALYSIS
    • Analisi dinamica
    • GDB Debugger
    • Breakpoint
    • Esaminare la memoria
      • Link utili
      • Esercizio
  • LEZIONE 7 - 07/10/20 - ONLINE
    • Challenge 1 - Analisi Statica/Dinamica
  • LEZIONE 8 - 08/10/20 - ONLINE
    • BUFFER OVERFLOW
    • Introduzione
      • Breve storia di alcuni famosi overflows
    • Definizione
    • Linguaggi sicuri VS non sicuri
    • Esempio di buffer overflow
    • Funzioni C non sicure
    • Esercizio: ignora il controllo della password
      • Soluzione
    • Modifica del flusso di controllo
      • Esempio
        • L’attacco
        • Disabilitare PIE
        • Trova l'indirizzo della funzione di destinazione
        • Carico utile di attacco
      • La randomizzazione degli indirizzi è la soluzione finale?
    • Off-by-one bug
      • La randomizzazione “preserva” gli offset
      • Sfruttamento off-by-one
    • Esercizi: esecuzione di codice arbitrario
  • LEZIONE 9 - 14/10/20 - ONLINE
    • STACK OVERFLOW
    • Exercise: bypass password check
    • Forza bruta randomizzazione PIE
      • Proviamo l’attacco
    • Più tecniche di attacco
    • Shellcode
    • Return to syscall / libc
    • Replacement Stack frame
    • Return Oriented Programming (ROP)
    • Difendersi
      • Difese in fase di compilazione
        • Canary
      • Difese di runtime
  • LEZIONE 10 - 15/10/20 - ONLINE
    • LAB: Stack protector
    • Task 1: Canary at work
    • Task 2: Find the canary with gdb
    • Task 3: Manually leak the canary
  • LEZIONE 11 - 21/10/20 - ONLINE
    • FORMAT STRINGS
    • Vulnerabilità della stringa di formato
    • Come stampare una stringa?
    • Numero variabile di argomenti
      • Come viene implementato?
    • Argomenti insucienti o troppi
    • Vulnerabilità della stringa di formato
      • Esempio
      • Scaricare la stringa stessa
        • Arrivare al pin
        • Accesso diretto ai parametri
    • Perdita di posizioni arbitrarie
      • Passo
      • Passo
      • Passo
    • Esercizio
      • Passo
      • Passo
      • Passo
    • Prevenzione e attacchi avanzati
  • LEZIONE 12 - 22/10/20 - ONLINE
    • SECURE CODING
    • Standard
    • Strumenti e incompletezza
    • Analisi Sound/Complete
    • Taint analysis
    • Taint propagation
    • Sanificazione
    • Codifica sicura: SEI CERT
    • Valutazione del rischio
      • Severità
      • Verosimiglianza
      • Costo di riparazione
      • Priorità e livelli
    • Regola 06. Arrays (ARR)
    • Regola 07. Caratteri e archi (STR)
      • Il bug è sfruttabile?
      • Correggere il codice
    • Altri esempi
    • Manipolazione delle stringhe
    • Vulnerabilità dovute al system()
  • LEZIONE 13 - 28/10/20 - ONLINE
    • Challenge 2 - Buffer Overflow
  • LEZIONE 14 - 29/10/20 - ONLINE
    • IDENTIFICAZIONE
    • introduzione
    • Autenticazione dell'entità
    • Furto d'identità
    • Trasferibilità
    • Classi di schemi di identificazione
    • Le password
    • Prevenire perdite e leakage
    • Password "crittografate"
      • Funzione hash unidirezionale
      • Verifica delle password con hash
      • Funzioni hash unidirezionali
    • Integrità dei file (non utilizzare mai MD5 e SHA-1)
    • Attacchi oine
    • Attacchi dictionary
      • Salting password
    • Hash "lenti"
      • Aumentare le iterazioni
    • Esempi di salt
    • Criteri per le password
      • Diceware
    • Autenticazione basata su token
      • Schede di memoria
      • Smart card
    • Biometrica
  • LEZIONE 15 - 04/11/20 - ONLINE
    • UNIX ACCESS CONTROL
    • Definizione
    • Controllo di accesso
    • Criteri di controllo degli accessi
    • Soggetti e oggetti
    • Diritti di accesso
    • Matrice di accesso
    • Access control lists vs. capabilities
    • Esempio di ACL
    • Esempio di Capabilities
    • Controllo di accesso Unix (DAC)
      • Esempio: aggiunta di un nuovo utente
      • Esempio: aggiunta di un nuovo gruppo
    • Autorizzazioni Unix
      • Esempio: Permessi
    • Gestione delle autorizzazioni
      • Esempio: gestire i permessi
    • SUID e SGID
      • Esempio: confondere i permessi /bin/su
      • Esempio: SGID
    • ACLs, Capabilities and privilege drop
    • Sticky Bit
  • LEZIONE 16 - 05/11/12 - ONLINE
    • Challenge 3 - identification
  • LEZIONE 17 - 11/11/20 - ONLINE
    • FIREWALLS: NETFILTER
    • Motivazioni
      • Difesa basata su host vs difesa basata su rete
    • Esempio: sicurezza e audit
    • Operazioni tipiche del firewall
      • Drop
      • Accept/Forward
    • Network Address Translation (NAT)
      • Esempio: NAT di origine
      • Esempio: NAT di destinazione
    • Caso di studio: netfilter
      • Catene: elenchi di regole in netfilter
      • Regole
      • Esempio: regole di elenco e criteri predefiniti
    • Configurazione di un firewall
      • Abilitare ssh
      • Privilegio minimo: criterio DROP predefinito
      • Ordinamento delle regole, catene e connessioni
    • Filtro con stato
    • Esempio DNAT
    • Mantenere una configurazione
    • Mantenere una configurazione è dicile
    • Mignis
      • Regole
    • Iptables vs Mignis
  • LEZIONE 18 - 12/11/20 - ONLINE
    • WEB ATTACKS - SERVER SIDE
    • Web (in)security
    • Principi di coding sicuro
    • Server-side Attack
    • (1) Type Juggling e confronto sciolto
    • Esempi di Strict Comparison
    • Esempi di Loose Comparison
    • Attacco di string comparison
    • Esempi di Type juggling
      • Esempi ancora più strani...
    • Esempio: sessione autenticata
      • Bypassare l'autenticazione (1)
    • Esempio: sessione autenticata
      • Bypassare l'autenticazione (2)
    • Esempio 3: utilizzo di strcmp
      • strcmp fallisce "silenziosamente"
    • (2) File inclusion attacks
      • Esempio: caricamento dinamico della pagina
    • (3) Deserialization attacks
    • URL Encoding
    • Deserializzazione e metodi magici
      • Esempio di Deserialization
      • Attacco di Deserialization
      • Simulare l’attacco
    • (4) Attacchi SQL injection
      • Esempi
  • LEZIONE 19 - 18/11/20 - ONLINE
    • WEB ATTACKS AND DEFENCES - SERVER SIDE
    • SQL Injection di base (lezione precedente)
    • UNION e UNION ALL
    • Black Box Attack
      • Concatenazione di colonne e righe
    • Scaricare la struttura del database
    • Perdita di file sensibili ed esecuzione di codice
    • Best practice per la sicurezza (PHP)
        1. Strict comparison
        • Esempio: sessione autenticata
        1. Casting
        • Mettere le cose insieme
        1. Whitelist →
        • Esempio: attacco di inclusione di file
        • Whitelisting dell’input
        1. Verificare l’integrità
        • Esempio di deserializzazione
        • Message Authentication Code (MAC)
        • Utilizzo di HMAC per verificare l'integrità
        • HMAC in PHP
        • Demo
        1. Funzioni sicure
        • Prepared statement
        • Esempio
        • PHP APIs (1)
        • PHP APIs (2)
        • Il problema del SQL injection è risolto?
        1. Sanitization
        • Tipo casting, whitelisting e sanitization
    • Filtraggio ad hoc: una pessima idea!
  • LEZIONE 20 - 18/11/20 - ONLINE
    • LAB: server side web attacks
    • Task 1: Loose comparison
    • Task 2: File inclusion
    • Task 3: SQL injection
    • Task 4: Login bypass
  • LEZIONE 21 - 25/11/20 - ONLINE
    • SIDE CHANNELS (BLIND SQLI)
    • Introduzione
    • Perdite necessarie
    • Esempio: PIN
    • Tipo di canali laterali
      • Errori
    • Time attack
      • Tempo: confronto tra stringhe
      • Funzioni time-safe
    • Blind SQL injection
      • Possibili canali laterali
    • Esempio
    • Esempio
    • Leaking di qualcosa
    • Tables vs. booleans
      • La query è corretta?
      • Emulazione della query originale
      • Errori
    • Controllo del nome della colonna
    • Leaking di dati arbitrari
    • Ricerca binaria
    • Totally blind SQL injection
      • Attacco basato sul tempo (blind injection)
    • Riassumendo
  • LEZIONE 22 - 26/11/20 - ONLINE
    • Challenge 4 - SQL Injection
  • LEZIONE 23 - 02/12/20 - ONLINE
    • CLIENT SIDE WEB SECURITY
    • Web (in)security
    • Sessioni web
      • Token di sessione
      • Quale token?
    • Cookie e cookie policy
    • Esempi
      • Esempio: creazione di cookie
      • Esempio: cancellazione dei cookie
    • Due coockie con lo stesso nome?
    • Flag dei cookie
      • Cookie protetti e contenuti misti
      • Integrità dei cookie
      • Attacco di fissazione della sessione
      • HttpOnly cookies
    • Stateful vs. stateless server
    • Same Origin Policy (SOP)
      • SOP previene i cross-site leakage
      • Origini
    • Obiettivi di SOP
      • Accesso alla rete SOP
        • Esempio: AJAX
      • API di script
      • Cambiare l'origine
      • Archiviazione e cookie
      • SOP per lettura / scrittura di cookie
  • LEZIONE 24 - 03/12/20 - ONLINE
    • CLIENT SIDE WEB ATTACKS
  • Cross-Site Scripting (XSS)
    • XSS bypassa SOP
  • Impatto e tipi di XSS
    • XSS riflesso
      • Prova di concetto XSS
      • Leaking di cookie
      • Simulare l'attacco
      • Un attacco più furtivo
    • XSS archiviato
    • DOM-based XSS
      • Esempio
  • Prevenzione XSS
  • Filtraggio semplice?
  • Mitigazioni XSS
    • Cross-Site Request Forgery (CSRF)
      • Scenario tipico della CSRF
  • Prevenzione CSRF
    • Token anti-CSRF
    • Intestazioni standard: origine e riferimento
    • Intestazioni personalizzate
      • Esempio: AJAX
    • Interazione dell'utente

SICUREZZA [CT0539]

3° ANNO - I SEMESTRE

INTRODUZIONE CORSO

- CFU : 6

  • Prof : Riccardo Focardi
  • Esame : Esame + challenge per punteggio extra.

APPUNTI

LEZIONE 1 - 16/09/20 - ONLINE

INTRODUZIONE E SHELL UNIX

Impareremo ad attaccare e difendere un sistema! Dobbiamo capire quando un bug potrebbe diventare una vulnerabilità!

Vedremo :

  • Background e strumenti
  • Sfruttamento del programma
  • Sistemi e rete di sicurezza
  • Sicurezza WEB (lato server)
  • Sicurezza WEB (lato client)

Unix Shell

La shell Unix consente di automatizzare rapidamente l'interazione con processi e dati. Conoscere la shell aiuta a comprendere l'interazione con i programmi (processi)

La shell Unix è l'interfaccia più semplice per i sistemi operativi ● Esegui programmi ● Reindirizza input / output ● Collega programmi insieme ● Esegui script

Ci concentriamo su bash (Bourne-again shell, pronunciato born-again), successore di Bourne shell sh.

Comandi di base

ls: mostra il contenuto della directory corrente. -l visualizza il formato lungo; -a mostra i file nascosti (punto)

file filename: mostra il tipo di file denominato filename pwd: (print working directory) mostra il percorso della directory di lavoro corrente mkdir name: crea una nuova directory in quella di lavoro corrente cd path: (change directory) sposta la directory di lavoro in path cat file: mostra il contenuto del file cat f1 f2 f3: visualizza la concatenazione di f1 f2 f echo "hello": stampa "hello" grep word file: cerca la parola nel file e stampa le righe che la contengono man: mostra la pagina man del comando. Frecce su e giù per navigare, q esce, / cerca (n hit successivo, N hit precedente) find path expression: cerca i file nel percorso (ricorsivamente) che corrispondono all'espressione specificata sort file: ordina le righe di un file di testo strings file: trova stringhe stampabili in un file (binario)

Ridirezione

Meccanismo fondamentale della shell Unix per reindirizzare l'input e l'output del programma da / a un file. ● Quando l'output viene reindirizzato a un file (simbolo >), qualsiasi output del programma verrà scritto nel file ● Quando l'input viene reindirizzato da un file (simbolo <), il contenuto del file verrà inviato come input al programma

Esempi: ● ls > tmpfile: scrive il contenuto della cartella corrente nel file tmpfile. Controlla con cat tmpfile ● grep shell < tmpfile: reindirizza il contenuto del file al comando grep. Stessa cosa di cercare “shell” dal file “tmpfile” con il comando grep shell tmpfile

Con il simbolo >> possiamo aggiungere l'output a un file esistente.

semplicemente sovrascrive.

date >> tmpfile: aggiunge la data corrente al file tmpfile. date > tmpfile: sovrascrive!

Cosa succede se reindirizziamo l'output di un comando che prende l'input dal terminale? Esempio:

Ciò che abbiamo scritto è stato messo nel file test.txt

Redirezione su stdout e stderr

In Unix ci sono tre flussi di input / output separati: ● stdin (0): standard input, dove il programma riceve l'input ● stdout (1): standard output, output normale del programma ● stderr (2): standard errore, dove il programma stampa l'errore

1> e 2> reindirizzano rispettivamente stdout e stderr.

Esempio : nascondere gli errori

$ cat > test.txt Hello this is a test of two lines (ctrl-D) $

$ ls test1.txt test2.txt $ cat test* cat: test1.txt: Permission denied This is readable $ cat test* 2> /dev/null This is readable $ cat test* 1> /dev/null cat: test1.txt: Permission denied

Pipe

Meccanismo fondamentale per la comunicazione di processo in Unix Simile al reindirizzamento ma funziona tra due programmi Canale tra processi : un processo può scrivere sulla pipe e un altro può leggere da essa

Nella shell Unix, le pipe vengono specificate utilizzando il simbolo | cmd1 | cmd2 | ... | cmdn, esegue tutti i comandi e l'output di ogni comando i-esimo viene fornito come input per il comando successivo i+ L'output dell'ultimo comando viene stampato sul terminale

Esempio: ● ls | grep shell: mostra tutti i nomi di file che contengono la parola shell ● ls | shell grep | sort -r: come prima ma i nomi dei file sono ordinati in ordine alfabetico inverso (opzione -r). Si noti che in questo caso abbiamo tre programmi che cooperano insieme; ● ls | shell grep | grep txt: mostra tutti i nomi di file che contengono sia shell che txt

Vediamo che ls stampa per riga, ma grep analizza riga per riga e se grep in pipe prendesse l'output di ls in riga prenderebbe solo quella riga lì, in realtà ls sa se è in pipe o se sta stampando a terminale, se sta stampando a terminale scrive in riga mentre se è in pipe scrive in colonna

The Bandit wargame

Anare le tue abilità di shell: risolvere i livelli (fino a 9) di Bandit wargame. https://overthewire.org/wargames/bandit/ Livello 0

Livello 1

Non posso usare cat -

$ ls myshell.pdf shell.txt test.txt $ ls | grep shell my shell .pdf shell .txt $ ls | grep shell | sort -r shell .txt my shell .pdf $ ls | grep shell | grep txt shell. txt

$ ssh [email protected] -p 2220

$ cat readme boJ9jbbUNNfktd78OOpsqOltutMc3MY $ exit

$ ssh [email protected] -p 2220 $ boJ9jbbUNNfktd78OOpsqOltutMc3MY

$ pwd /home/bandit $ cat /home/bandit1/- CV1DtqXWVFXTvM2F0k09SHz0YwRINYA oppure potrei scrivere $ cat ./- CV1DtqXWVFXTvM2F0k09SHz0YwRINYA

LEZIONE 2 - 17/09/20 - ONLINE

EDITOR DI STREAMING E REGEXPS

Stream editor sed

sed è uno strumento Unix semplice ma potente per filtrare e trasformare il testo sed viene invocato come sed SCRIPT INPUTFILE ...

Esempio: sostituisci hello con world nel file input.txt

I seguenti comandi sono equivalenti:

Programma sed

Un programma sed è costituito da uno o più comandi sed I comandi sed seguono questa sintassi :

X è un comando sed di una sola lettera ● [addr] indirizzo di riga: numero di riga singola, regexp o intervallo di righe ● [options] per alcuni comandi

Eliminazione Delete : il comando d elimina le righe sed '1d' input.txt: elimina la prima riga sed '1,3d' input.txt: cancella le prime tre righe

Print : il comando p stampa le righe sed '1p' nomefile: stampa la prima riga

NOTA : la riga viene stampata due volte

Esempi:

L'opzione della riga di comando -n dice a sed di non stampare le righe a meno che non siano stampate esplicitamente.

sed 's/hello/world/' input.txt sed -i 's/hello/world/' input.txt

sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt

[addr]X[options]

$ sed '1d' test.txt line 2 line 3 line 4 $ sed '1,3d' test.txt line 4 $ sed '1p' test.txt line 1 line 1 line 2 line 3 line 4

Sostituzione Il comando s sostituisce le stringhe

Per impostazione predefinita, la sostituzione avviene una volta per ogni riga.

L'opzione g rende globale la sostituzione

L'opzione i rende la ricerca senza distinzione tra maiuscole e minuscole e un numero specifica quale occorrenza deve essere sostituita

Altri esempi: È possibile utilizzare un separatore personalizzato con comando di sostituzione

Per quanto riguarda d e p, è possibile indicare quali righe devono essere esaminate :

si applica solo alle linee 6 e 7 Stampa solo le righe che corrispondono alla stringa :

Elimina le righe che corrispondono alla stringa:

Applicare una mappatura:

sostituisce ciascuna occorrenza di a, b, c con A, B, C, rispettivamente.

Espressioni regolari

Le espressioni regolari sono modelli che rappresentano set di stringhe Utile per eseguire ricerche avanzate in cui è necessario trovare stringhe con una struttura particolare I programmi grep e sed supportano entrambi le espressioni regolari

^ è l'inizio della riga Esempio : ls -al | grep '^ d' Corrisponde a tutti i file di directory nella directory corrente ( d è il flag che indica un file di directory ) Se omettiamo il simbolo ^ , grep troverà tutte le righe contenenti una d , non necessariamente nella prima posizione

$ indica la fine della riga

. rappresenta un singolo carattere Esempio: grep ".ino" corrisponderà a nomi come Nino, Pino, Gino, ...

$ sed ' s /hello/hi/' input.txt

$ cat input.txt hello guys hello everyone $ sed 's/hello/hi/' input.txt hi guys hello everyone

$ sed 's/hello/hi/g' input.txt hi guys hi everyone

$ sed 's/HELLO/hi/i2' input.txt hello guys hi everyone

$ sed 's:hello:hi:' input.txt

$ sed '6,7s/hello/hi/' input.txt

$ sed -n '/hello/p' input.txt

$ sed '/hello/d' input.txt

$ sed 'y/abc/ABC/'

Esercizi

I file per gli esercizi sono disponibili in /home/rookie/Shell/ nell'host del testbed.

Esercizio 1: pretty printing Dato un elenco di numeri di telefono nel formato 123456789 usa sed per riscriverli come (123) 456- Qualsiasi cosa nel formato sbagliato dovrebbe essere lasciata invariata.

Soluzione con regexp standard. Tre gruppi di tre cifre ciascuno. Inoltre, abbiniamo l'inizio e la fine della riga in modo che corrispondano solo le righe contenenti esattamente numeri di 9 cifre.

usando le estensioni GNU possiamo usare \ {3 } per ripetere ogni cifra tre volte

Esercizio 2: break ROT Il testo seguente è stato criptato sostituendo ogni lettera con quella di 13 posizioni più avanti nell'alfabeto (modulo 26) aka ROT

Spezzalo con sed!

È suciente ruotare l'alfabeto di 13 posizioni ottenendo nopqrstuvwxyzabcdefghklm e utilizzare per mappare una lettera nell'altra. Si noti che questa è sia crittografia che decrittografia.

Esercizio 3: filename conversion Usa sed per selezionare e convertire tutti i nomi di file con susso .html fornito come output da ls in lettere maiuscole con susso .HTM I file non corrispondenti devono essere omessi

Usiamo due comandi sed separati da; Il primo usa y per mettere in maiuscolo il nome del file Il secondo utilizza un riferimento all'indietro \1 per sostituire il susso HTML con HTM, notare l'opzione p alla fine p è necessario poiché usiamo -n per sopprimere tutto ciò che non corrisponde a .HTML, come richiesto dall'esercizio

usando le estensioni GNU possiamo usare \U per scrivere in maiuscolo direttamente all'interno del comando s:

$ sed 's/^([[:digit:]][[:digit:]][[:digit:]])([[:digit:]][[:digit:]][[:digit:]])([[ :digit:]][[:digit:]][[:digit:]])$/(\1)\2-\3/g' numeri.txt

$ sed 's/^([[:digit:]]{3})([[:digit:]]{3})([[:digit:]]{3})$/(\1)\2-\3/g' numeri.txt

$ sed 'y/nopqrstuvwxyzabcdefghijklm/abcdefghijklmnopqrstuvwxyz /' rot.txt

$ ls | sed -n 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/; s/^(.*).HTML$/\1.HTM/p'

$ ls | sed -n 's/^(.*).html$/\U\1.HTM/ p'

Esercizio 4: data extraction Usa sed per estrarre i nomi utente completi (5 ° campo) da /etc/passwd/

I campi sono separati da : quindi dobbiamo usare [^:] * per abbinare i valori dei campi, cioè, tutto ciò che NON è : Quindi è suciente mettere un gruppo nel quinto campo ed "estrarlo" con
Si noti che i nomi utente completi a volte hanno virgole, prendiamo la parte prima della prima virgola. A questo scopo che usiamo [^ :,]+ (il + non corrisponde a nomi vuoti)

usando le estensioni GNU possiamo ripetere il primo campo quattro volte con {4}. Il riferimento a ritroso diventa \2 come la ripetizione richiede l'utilizzo di un gruppo.

LEZIONE 3 - 23/09/20 - ONLINE

INTRODUZIONE A PYTHON

Standard nel settore della sicurezza IT , molti strumenti sono scritti in Python o supportano plug-in / collegamenti in Python Flessibile : supporta più paradigmi (imperativo, orientato agli oggetti, funzionale) Altamente supportato : enorme libreria Interpretato: prototipazione rapida Estensibile : aggiungi moduli integrati in C Digitazione dinamica : nessun tipo statico ma tipi dinamici forti. Vieta operazioni non ben tipizzate in fase di esecuzione: nessun errore sottile come in PHP o JS Sintassi semplice : facile da leggere, facile da scrivere: nessun punto e virgola, nessuna parentesi graffa... Attenzione: il rientro è importante!

Interprete Python

L'interprete , senza argomenti, si avvia in modalità interattiva ● Utile per semplici esperimenti e per abituarsi a tipi di dati e comandi

Useremo python3 (python eseguirà python 2.7 quindi usa python3)

Numeri

$ sed -n 's/^[^:]:[^:]:[^:]:[^:]:([^:,]+)[^:]:.$/\1/p' /etc/passwd

$ sed -n 's/^([^:]:){4}([^:,]+)[^:]:.*$/\2/p' /etc/passwd

$ python Python 3.6.9 (default, Nov 7 2019, 10:44:02) [GCC 8.3.0] on linux Type "help", "copyright", "credits" or "license" for more information.

print('Hello, World!') Hello, World!

3/4 # float division 0.75 >>> 3//4 # integer division 0 4%3 # modulo 1