Esiste un modo per acquisire la richiesta HTTPS con Python?

1

Ho creato un semplice script python per catturare la richiesta HTTP. Ho catturato richieste HTTP con il mio script python.

Ma non riesco a catturare le richieste HTTPS. Voglio solo acquisire informazioni sugli URL.

Ho usato scapy per sniffare. Ad esempio:

from scapy.all import IP, sniff
from scapy.layers import http

def tcp_ayikla(paket):
    if not paket.haslayer(http.HTTPRequest):
        return

    http_katmani = paket.getlayer(http.HTTPRequest)

    ip_katmani = paket.getlayer(IP)
    print '\n{0[src]} IP adresinden {1[Method]} {1[Host]}{1[Path]} sitesine ziyaret'.format(ip_katmani.fields, http_katmani.fields)

sniff(filter='tcp', prn=tcp_ayikla)

Quindi, ho delle domande sullo sniffing.

1-) Perché non riesco a ottenere le richieste HTTPS?

Se utilizzo netstat come questo:

netstat -ap | grep http

Posso vedere le richieste HTTPS

2-) Esiste un modo in altri linguaggi di programmazione?

Perché sto cercando di registrare le richieste HTTP.

Che cosa ho fatto?

  • Ho provato a parsing di output netstat con python. Non voglio questo. Perché non è puro Python.
  • Ho provato con lo scapy. Non sono riuscito a recuperare le richieste HTTPS.
  • Ho provato a leggere le informazioni sull'URL di SQLite. Io non voglio Questo. Perché non si tratta di rete.

Che cosa dovrei fare?

Devo rinunciare?

    
posta Ali 21.07.2017 - 23:35
fonte

1 risposta

4

Il protocollo HTTPS è crittografato sopra il livello dell'applicazione HTTP. Questa è la richiesta GET (URL completo) è crittografata nell'intestazione HTTP e un'applicazione che intercetta il traffico di rete non sarà in grado di decodificare il traffico.

Detto questo, è possibile registrare gli indirizzi IP (in particolare quelli collegati ai server sulla porta 443 - HTTPS) poiché il livello IP non è crittografato con HTTPS.

Questo è ciò che fa il tuo comando netstat. Cerca connessioni TCP sulla scheda di rete e annota quali sono collegate alla porta 443 (protocollo noto per https) e osserva l'indirizzo IP dei server HTTPS a cui ti stai connettendo.

Devo notare che se si acquisisce il traffico di rete crittografato, è possibile decifrare tale traffico acquisito se si salva la chiave SSL dal browser. Vedi qui per le istruzioni su come decifrare il traffico di rete intercettato da SSL con wireshark quando registri le tue chiavi SSL; dovresti essere in grado di fare qualcosa di simile con Scapy.

    
risposta data 22.07.2017 - 00:05
fonte

Leggi altre domande sui tag