Example #1
0
def search_address(ip_address):
	ip_address              =check_type(StringType, ip_address)
	address_class           =classify_address(ip_address)
	re_spaces               =re.compile("\s+")
	binary_target_address   =""

	for octet in ip_address.split("."):
		octet                  =int(octet)
		binary_octet           =format(octet, "b").zfill(8)
		binary_target_address +=binary_octet

	with open(class_list_paths[address_class], "r") as file:
		for line in file:
			line_as_array           =re_spaces.split(line.rstrip())[1].split("/")
			network_address         =line_as_array[0]
			subnetmask              =int(line_as_array[1])
			re_subnetmask           =re.compile("^\d{%(subnetmask)d}" % locals())
			binary_network_address  =""

			for octet in network_address.split("."):
				octet                   =int(octet)
				binary_octet            =format(octet, "b").zfill(8)
				binary_network_address +=binary_octet

			extracted_network_address =re_subnetmask.match(binary_network_address).group()
			extracted_target_address  =re_subnetmask.match(binary_target_address).group()

			if int(extracted_network_address) ^ int(extracted_target_address) == 0:
				# found
				print line,
				return 0
Example #2
0
def classify_address(ip_address):
	ip_address  =check_type(StringType, ip_address)
	first_octet =int( ip_address.split(".")[0] )
	
	if 1 <= first_octet <= 126:
		return 0
	elif 128 <= first_octet <= 191:
		return 1
	elif 192 <= first_octet <= 223:
		return 2