#edit: Da das ganze nur zu Lernzwecken erstellt wurde und nie wirklich eingesetzt wird von mir, habe ich das Exception handling weg gelassen.
Hier mal als Beispiel veranschaulicht, wie der Abgleich erfolgen soll.
Code: Alles auswählen
192.168.13.15/255.255.0.0
11000000.10101000.00001101.00001111 IPv4 in Binärdarstellung
&&&&&&&&.&&&&&&&&.&&&&&&&&.&&&&&&&& Verknüpfung der Binärzahlen mit AND
11111111.11111111.00000000.00000000 Subnetztmaske in Binärdarstellung
11000000.10101000.00000000.00000000 Netz-ID 1
192.168.11.2/255.255.0.0
11000000.10101000.00001011.00000010 IPv4 in Binärdarstellung
&&&&&&&&.&&&&&&&&.&&&&&&&&.&&&&&&&& Verknüpfung der Binärzahlen mit AND
11111111.11111111.00000000.00000000 Subnetztmaske in Binärdarstellung
11000000.10101000.00000000.00000000 Netz-ID 2
11000000.10101000.00000000.00000000 Netz-ID 1
11000000.10101000.00000000.00000000 Netz-ID 2
Passt
Code: Alles auswählen
def convert_int_to_binar(number):
return f"{number:08b}"
def ip_to_binary(ip_adress):
ip_in_binary = []
seperated_ip = ip_adress.split(".")
for byte in seperated_ip:
ip_in_binary.append(convert_int_to_binar(int(byte)))
return "".join(ip_in_binary)
def get_subnetmask_bits(binary_subnetmask):
return binary_subnetmask.count("1")
def knot_ip_bits_and_subnetmask_bits_with_and(ip, subnetmask):
net_id = []
ip_in_binary = ip_to_binary(ip)
subnetmask_in_binary = ip_to_binary(subnetmask)
for index, x in enumerate(ip_in_binary):
if x == "1" and subnetmask_in_binary[index] == x:
net_id.append("1")
else:
net_id.append("0")
return "".join(net_id)
def compare_net_id(first_net_id, second_net_id, subnetmask):
print(first_net_id[:get_subnetmask_bits(ip_to_binary(subnetmask))])
print(second_net_id[:get_subnetmask_bits(ip_to_binary(subnetmask))])
if first_net_id[:get_subnetmask_bits(ip_to_binary(subnetmask))] == second_net_id[:get_subnetmask_bits(ip_to_binary(subnetmask))]:
print("YES")
else:
print("NO")
def main():
ip_first_computer = input("Bitte die IP des ersten Rechners eingeben: ")
subnetmask_first_computer = input("Bitte die Subnetzmaske des ersten Rechners eingeben: ")
ip_second_computer = input("Bitte die IP des zweiten Rechners eingeben: ")
subnetmask_second_computer = input("Bitte die Subnetzmaske des zweiten Rechners eingeben: ")
compare_net_id(knot_ip_bits_and_subnetmask_bits_with_and(ip_first_computer, subnetmask_first_computer),
knot_ip_bits_and_subnetmask_bits_with_and(ip_second_computer,subnetmask_second_computer),
subnetmask_first_computer)
if __name__ == '__main__':
main()