ip_classifier.py for ipv32

Written simple program to find the class for an ip address of 32bit version

#!/usr/bin/python

import sys, getopt


def __help():
 sys.stderr.write('\n Usage: \n ip_classifier.py -h  \n ip_classifier.py --help \n ip_classifier.py -i 128.12.14.23 \n ip_classifier.py --ipv4=128.12.14.23 \n ')
 sys.exit()


def __input_validator(check):
 if len(check) <> 0:
  check = list(check)
  c = 0; n = 0
  for v in check:
   if v in ['.','1','2','3','4','5','6','7','8','9','0']:
    n += 1
    test = True
    if v is '.':
     c += 1
   else:
    test = False
    break
 if test and c < 4 and n > 6:
  return check
 else:
  sys.stderr.write('**** Enter correct ip address **** \n')
  __help()

def __validator(ip):
 if ip in range(0,256):
  return True 
 else:
  sys.stderr.write('**** Enter correct ip address **** \n')
  __help()


def __class_finder(ip, class_ip, bin_ip):
 i=''
 dict = {'0' : 'A', '10' : 'B',  '110' : 'C', '1110' : 'D', '1111' :'E', 'A' : 1, 'B' : 2, 'C' : 3, 'D' : 0, 'E' : 0}
  
 if class_ip[:1] in dict:
  i = class_ip[:1]
 if class_ip[:2] in dict:
  i = class_ip[:2]
 if class_ip[:3] in dict:
  i = class_ip[:3]
 if class_ip in dict:
  i = class_ip
 
 i = dict.get(i)
 sub =  dict.get(i)
 subnet ='' 
 
 for v in range(1,5):
  if v <= sub:
   subnet += '255.'
  else:
   subnet +='0.'
 subnet = subnet[:len(subnet)-1]
 print ip + ' is Class '+ i +'\n The subnet is '+subnet
 print ' The network bits are', bin_ip[:sub*8]
 print ' The host bits are', bin_ip[sub*8:]
 sys.exit()


def __ip_classifier(ip):
 # Empty List
 ip_value = list()
 
 # Intialize the list
 ip_value = []*4
 
 t=''
 for i in ip:
  if i <> '.':
   t += i.strip()
  else:
   try:
    if __validator(int(t)):
     ip_value.append( int(t))
    t =''
   except (RuntimeError, TypeError, NameError) as e:
    pass
 if __validator(int(t)):
  ip_value.append( int(t))
 
 # converting ipv32 into binary value
 bin_ip =''
 for v in ip_value:
  bin_ip += str(bin(v))[2:].zfill(8)
 sys.stdout.write('Binary value of' + ip +' is '+ bin_ip+'\n')
 
 __class_finder(ip, bin_ip[:4], bin_ip)


def main(argv):
 try:
  opts, args = getopt.getopt(argv,"h:i:",['--help',"ipv4="])
 except getopt.GetoptError:
  __help()
 
 if len(opts) == 0:
  __help()
  
 for opt, arg in opts:
  if opt in ['-h', '--help']:
   __help()
  elif opt in ("-i", "--ipv4"):
   ip = arg
   if __input_validator(ip):
    __ip_classifier(ip)

if __name__ == "__main__":
 main(sys.argv[1:])


Comments

Popular posts from this blog

Python Speech recognition for Mac OS X

Baby Step Giant Step Algorithm Python Code

InCTF 2014 - Crypto 200