50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
#!/bin/python
|
|
|
|
import sys, getopt, os
|
|
|
|
def main(argv):
|
|
comp1 = ''
|
|
comp2 = ''
|
|
comp3 = ''
|
|
|
|
try:
|
|
opts, args = getopt.getopt(argv,"h:1:2:3:",["comp1=","comp2=","comp3="])
|
|
except getopt.GetoptError:
|
|
print ('test.py -i <inputfile> -a <address> -p <port>')
|
|
sys.exit(2)
|
|
for opt, arg in opts:
|
|
if opt == '-h':
|
|
print ('test.py -i <inputfile> -a <address> -p <port>')
|
|
sys.exit()
|
|
elif opt in ("-1","--comp1"):
|
|
comp1 = str(arg)
|
|
elif opt in ("-2","--comp2"):
|
|
comp2 = str(arg)
|
|
elif opt in ("-3","--comp3"):
|
|
comp3 = str(arg)
|
|
|
|
if (len(comp1) <> len(comp2)) or (len(comp1) <> len(comp3)):
|
|
print("All components should be of the same length")
|
|
sys.exit(2)
|
|
|
|
if len(comp1) not in (16, 32, 64, 128, 256):
|
|
print("All components should be of byte length")
|
|
print(len(comp1))
|
|
print(len(comp2))
|
|
print(len(comp3))
|
|
sys.exit(2)
|
|
|
|
bytes1 = bytes.fromhex( comp1.encode("utf-8").hex())
|
|
bytes2 = bytes.fromhex( comp2.encode("utf-8").hex())
|
|
bytes3 = bytes.fromhex( comp3.encode("utf-8").hex())
|
|
e = bytearray()
|
|
for c,d,f in zip(bytes1,bytes2,bytes3):
|
|
e.append( ( c ^ d ^ f ) )
|
|
print(e.hex())
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main(sys.argv[1:])
|
|
|
|
|