Scan porte in python. Semplice gratuito e potentissimo.

Scan di un indirizzo IP in Python.

parte prima

Sono arrivate parecchie richieste per continuare il filone Python. Questa volta propongo un piccolo software che permette di effettuare uno scan delle porte di un IP. Il software è abbastanza semplice e scarno, e nel corso dei prossimi appuntamenti, lo arricchiremo sempre più.

AiutoPortScan.py

Riporto il software sia in “chiaro” che in modalità download.

Io vi consiglio di scaricare il file.

 

  1. #! /usr/bin/python3
  2. #:::::::::::::: scan porte in python :::::::::::::
  3. #:::www.aiutocomputerhelp.it::::::::::::::::::::::::::
  4. #::: Scan porte di un determinato ip ::::::::::2020:::
  5. #:::::::::::::::::::::::::::::::::::::::::::::::::::::
  6. from socket import *
  7. import os
  8. if os.name == ‘nt’:
  9. os.system(‘cls’)
  10. else:
  11. os.system(‘clear’)
  12. #:::::::::::::::::::::::::::::::
  13. #:::::::::::::INPUT:::::::::::::
  14. #:::::::::::::::::::::::::::::::
  15. targetserver = input(‘Inserisci Indirizzo IP : ‘)
  16. targetIP = gethostbyname(targetserver)
  17. InizioPorta = input(“Nr. porta inizio :”)
  18. SinoAllaPorta = input(“Sino alla porta Nr : “)
  19. #:::::::::Inizia Scan Su Porte:::::::::
  20. NRPorta= int(SinoAllaPorta) + 1
  21. Inizio = int(InizioPorta)
  22. print (“Iniziamo lo scan delle porte”, targetIP)
    for i in range(Inizio, NRPorta ):
  23.     s = socket(AF_INET, SOCK_STREAM)
  24.     print (“Test della porta: “, i)
  25.     Test = s.connect_ex((targetIP, i))
  26.     if(Test == 0) :
  27.         print (“>>>>>>>>>>>>>>>>>>>> Porta %d: Risulta aperta” % (i,))
  28.     s.close()
  29. print (” “)
  30. #
  31. print (“Scansione terminata.”)
  32. #
  33. print (” “)
  34. #
  35. print (” “)
  36. print (“AiutoPortScan.py by www.aiutocomputerhelp.it “)

Ho utilizzato un bel python3 3.6.9 che era sul mio Ubuntu. Ho installato IDLE 3.6 e ho iniziato.

<script>

<script>

I Socket – python scan porte

I socket possono essere configurati per agire come server e ascoltare i messaggi in arrivo, o connettersi ad altre applicazioni come client. Dopo che entrambe le estremità di un socket TCP/IP sono collegate, la comunicazione è bidirezionale.

Il modo principale di usare il modulo socket è attraverso la funzione socket() che restituisce un oggetto socket con metodi per implementare varie chiamate di sistema. Python sockets supporta una serie di famiglie di indirizzi sotto il protocollo del livello di rete, principalmente:
AF_INET – questo è il più comune, e usa IPv4 per l’indirizzamento di rete. La maggior parte della rete internet è attualmente realizzata utilizzando IPv4.
AF_INET6 – questa è la prossima generazione del protocollo internet che utilizza l’IPv6 e fornisce una serie di funzioni non disponibili sotto IPv4.
AF_UNIX – infine, questa è la famiglia di indirizzi per Unix Domain Sockets (UDS), un protocollo di comunicazione interprocesso disponibile su sistemi conformi a POSIX. Questa implementazione permette il passaggio di dati tra processi su un sistema operativo senza passare attraverso la rete.

Tipi di Socket

A seconda del protocollo del livello di trasporto utilizzato, i socket possono essere:

  • SOCK_DGRAM per il trasporto di datagrammi orientati ai messaggi. Questi socket sono solitamente associati al User Datagram Protocol (UDP) che fornisce una consegna inaffidabile dei singoli messaggi. I socket dei “datagrammi” sono comunemente usati quando l’ordine dei messaggi non è importante, come quando si inviano gli stessi dati a più client.
  • SOCK_STREAM per il trasporto orientato allo stream spesso associato al Transmission Control Protocol (TCP). Il TCP fornisce una consegna affidabile e ordinata di byte tra due host, con gestione e controllo degli errori, rendendolo utile per implementare applicazioni che prevedono il trasferimento di grandi quantità di dati.

Testiamolo

scan porte in python
python scan porte – esempi python

Poniamo come indirizzo ip 8.8.8.8 , il classico dns di Google. Come server dns che si rispetti deve poter dialogare sulla porta 53.

Diamo un range di porte abbastanza ristretto ma sufficiente a contenere la porta 53.

Beh, tutto funziona.

Diamogli una veste grafica …..