Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def valid_subnet_masks():
- '''Generates a list of tuples containing the CIDR notation, dotted-decimal notation, and binary string representation of
- subnet masks /1 - /32
- :return: All possible ipv4 subnet masks in each of there major formats CIDR, dotted-decimal, and binary
- '''
- valid_masks = []
- # Create list of 32 binary strings of cidr notations from 1 - 32
- cidrs = [[x, '1' * x + '0' * (32 - x)] for x in range(1, 33)]
- for cidr, binary_string in enumerate(cidrs, start=1):
- binary_string = binary_string[1]
- # slice binary string into four 8 bit chunks
- octet_1 = binary_string[:8]
- octet_2 = binary_string[8:16]
- octet_3 = binary_string[16:24]
- octet_4 = binary_string[24:32]
- # convert each 8 bit string into an integer and add that to our list of subnets in its corresponding index
- valid_masks.append((cidr,
- '{}.{}.{}.{}'.format(int(octet_1, 2), int(octet_2, 2), int(octet_3, 2), int(octet_4, 2)),
- binary_string))
- return valid_masks
- if __name__ == '__main__':
- for x in valid_subnet_masks():
- print(x)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement