Files
crypto-tools/theXORitself.py
T

59 lines
1.4 KiB
Python

#!/bin/python
import sys, getopt, os
def main(argv):
try:
opts, args = getopt.getopt(argv,"hc1:c2:c3:",["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 ("-c1","--comp1"):
comp1 = str(arg)
elif opt in ("-c2","--comp2"):
comp2 = str(arg)
elif opt in ("-c3","--comp3"):
comp3 = str(arg)
if len(comp1) != len(comp2) or str(len(comp1)) != str(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")
sys.exit(2)
>>> a = "a133efb38766"
>>> b = "a0a1a2a3a5a7"
>>> a.encode().hex()
'613133336566623338373636'
>>> bytes1 =
>>> bytes2 = bytes.fromhex( b.encode("utf-8").hex())
>>> xored = bytes( b1 ^ b2 for b1,b2 in zip(bytes1,bytes2))
>>> xored.hex()
'000152020454030059025701'
>>> for c,d in zip(bytes1,bytes2):
... e.append( ( c ^ d ) )
...
>>> e
bytearray(b'\x00\x01R\x02\x04T\x03\x00Y\x02W\x01')
>>> e.hex()
'000152020454030059025701'
if __name__ == "__main__":
main(sys.argv[1:])