Oggi provo a parlarvi delle socket semplificando molto le cose 😉
Le socket sono gli endpoint di un canale di comunicazione bidirezionale. Consentono la comunicazione in rete ma anche tra differenti processi della stessa macchina.
Le socket di rete possono essere di tipo Server o Client. Le socket di tipo server si mettono in ascolto su una specifica porta aspettando che un’altra socket di tipo Client ci si connetta.
In questa pillola vediamo una server socket ed utilizzerò come linguaggio Python
import socket
serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serv.bind(('127.0.0.1', 8080))
serv.listen(5)
while True:
conn, addr = serv.accept()
while True:
data = conn.recv(4096)
print data
conn.send("Sono il server")
conn.close()
print 'client disconnesso
In questo programma dopo aver definito la porta di ascolto (la 8080) creeremo una socket con la chiamata socket.socket(), e subito dopo utilizzando bind() collegheremo la socket all’host locale ed alla porta definita.
Una volta eseguite queste azioni diciamo alla socket di mettersi in ascolto per ricevere connessioni utilizzando la chiamata listen()
Il numero 5 come argomento della listen indica il numero delle connessioni che potranno mettersi in coda.
Fatto questo si attende dentro il ciclo while che arrivi una connessione.
La chiamata accept consente di accettare una connessione entrante. Dopo questa chiamata il server rimane in ascolto sulla porta. Alla ricezione della connessione viene inizializzata la variabile conn che conterra i valori identificativi della connessione entrante.
Ricevuta una connessione, con la chiamata conn.recv, la variabile data conterrà il valore ricevuto. Qui avrei dovuto fare un controllo su data per capire se è vuota o meno, ma ve lo risparmio.
Ricevuto il valore con la conn.send il server invia la stringa “Sono il server” al client.
Infine si chiude la connessione.
Le socket sono importanti nelle attività di penetration testing, in quanto consentono al pentester di creare connessioni e testare in modo efficiente i server da analizzare. Naturalmente questo si fa con socket di tipo client che vedremo nella prossima pillola.
Faccio una foto e te la condivido appena posso, spesso chiudiamo una call oppure una chiacchierata con questa frase, ma oltre a mandare l'immagine all'amico o al collega quale altre indicazioni diamo?
La specifica per il formato dei file immagine utilizzato dalla fotocamere digitali è Exif (Exchangeable image file format).
Le informazioni aggiuntive dette metadati vengono salvate insieme allo scatto della nostra fotocamera, per visualizzare queste informazioni possiamo usare diversi software uno tra tutti appunto EXIF utility da linea di comando o interfaccia grafica, oltre a leggere permette anche la modifica dei metadati.
Ma quali sono le informazioni che possiamo vedere:
- informazioni relative alla marca, al modello della fotocamera,
- alla data, all’ ora in cui è stato fatto lo scatto,
- alle impostazioni della fotocamera al momento dello scatto (sensibilità ISO, bilanciamento del bianco, lunghezza focale, zoom, flash),
- in alcune delle più recenti fotocamere anche le coordinate geografiche.
Un forenser può risalire a queste informazioni e usando i giusti strumenti le rende valide in una indagine.