IPs Classfull

Publicado por Rafael Iguatemy (última atualização em 11/05/2012)

[ Hits: 6.073 ]

Homepage: http://rafaeliguatemy.com.br

Download ipsv1.py




Este script recupera um ip digitado e sua másacara em notação "/x" e retorna seu endereço de rede,  broadcast, total de hosts disponíveis, classe e tipo .
Futuramente será postado a versão classless.  

  



Esconder código-fonte

#!/usr/bin/python
#-*-coding:iso-8859-1 -*-


########################################################################
########################################################################
###  Script: IPs.py                                                                                                                                ###
###  Versão: 1.0     Data:08/05/2010                                                                                                     ###
###  Autor: Rafael Iguatemy dos Santos - rafael.dsantos@bol.com.br                                                        ###
###------------------------------------------------------------------------------------------------------------------------###
### Este script recupera um ip digitado e sua másacara em notação "/x" e retorna seu endereço de rede,    ###
### broadcast, total de hosts disponíveis, classe e tipo                                                                             ###                       ########################################################################
########################################################################


def verifica_ip(ip):
   '''Verifica se o ip e valido e separa os octetos
   '''
   oct1,oct2,oct3,oct4 = "","","",""
   ips = []
   for i in range(len(ip)):
      if ip[i] != '.':
         oct1 += ip[i]
      else:
         ipr1 = ip[i+1:]
         break
   for j in range(len(ipr1)):
      if ipr1[j] != '.':
         oct2 += ipr1[j]
      else:
         ipr2 = ipr1[j+1:]
         break
   for w in range(len(ipr2)):
      if ipr2[w] != '.':
         oct3 += ipr2[w]
      else:
         oct4 = ipr2[w+1:]
         break
   if int(oct1) == 0 or int(oct1)>255 or int(oct2)>255 or int(oct3)>255 or int(oct1)>255 or len(ip)>15 or ip.count('.')!=3:
      print "ip incorreto"
   else:
      ips.append(oct1)
      ips.append(oct2)
      ips.append(oct3)
      ips.append(oct4)
      return ips
      
def mascara(ip, mascara):
   '''Esta função verifica a classe, tipo(Privado ou Público), endereço de rede, broadcast, mascara e quantidade de hosts disponíveis
   '''
   # Esta Variavel recupera a lista dos octetos
   gera_ip = verifica_ip(ip)
   # Este bloco verifica a classe IP
   if int(gera_ip[0]) < 128:      
      classe = 'Classe A'
   elif  int(gera_ip[0]) < 192:
      classe = 'Classe B'
   elif int(gera_ip[0]) < 224:
      classe = 'Classe C'
   elif int(gera_ip[0]) < 240:
      classe = 'Multicast'
   elif int(gera_ip[0]) < 256:
      classe = 'Reservados'
   else:
      classe = 'Inexistente'
      
   # Bloco informa se o IP é Público ou privado
   if (int(gera_ip[0]) == 10 and int(gera_ip[1]) in range(255)) or (int(gera_ip[0])==172 and int(gera_ip[1]) in range(16,32)) or (int(gera_ip[0])==192 and int(gera_ip[1]) == 68):
      tipo = ' Ip : Privado'
   else:
      tipo = ' IP : Publico'
      
   #bloco Informa endereço de rede, brosdcast e máscara
   if mascara == '8':
      endred = gera_ip[0]+".0.0.0"
      endbrd = gera_ip[0]+".255.255.255"
      print tipo
      print classe
      print 'Endereco de Rede : %s' % (endred)
      print 'Endereco de Broadcast : %s' % (endbrd)
      print 'Máscara : 255.0.0.0'
      print 'Total de Hosts disponíveis : %d ' % ((2**(32 - int(mascara)))-2)
   elif mascara == '16':
      print tipo
      print classe
      endred = gera_ip[0]+"."+gera_ip[1]+".0.0"
      endbrd = gera_ip[0]+"."+gera_ip[1]+".255.255"
      print 'Endereco de Rede : %s' % (endred)
      print 'Endereco de Broadcast : %s' % (endbrd)
      print 'Máscara : 255.255.0.0'
      print 'Total de Hosts disponíveis : %d ' % ((2**(32 - int(mascara)))-2)
   elif mascara == '24':
      endred = gera_ip[0]+"."+gera_ip[1]+"."+gera_ip[2]+".0"
      endbrd = gera_ip[0]+"."+gera_ip[1]+"."+gera_ip[2]+".255"
      print tipo
      print classe
      print 'Endereco de Rede : %s' % (endred)
      print 'Endereco de Broadcast : %s' % (endbrd)
      print 'Máscara : 255.255.255.0'
      print 'Total de Hosts disponíveis : %d ' % ((2**(32 - int(mascara)))-2)
   else :
      print 'Esta versão os ips são classfull!!'
      
#bloco principal   
ip = raw_input("Entre com o ip: ")
masc = raw_input("Entre com a máscara de rede (Notação /x : Somente o numero {8,16,24}) :")
mascara(ip,masc)

Scripts recomendados

Ping threading python

Verifica conexão - Ping

Envio de comandos por ssh sem troca de chaves a múltiplos servidores

Sockets em Python

Trocar IP em Python3


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts