ich habe ein großes problem und kapier einfach nicht, wo mein fehler ist. Ich habe eine klasse mysocket geschrieben, die von socket erbt. da ich gleich die verschlüsselung mit einarbeiten wollte, habe ich einfach send überschrieben. leider verwendet python bei testen des programms aber immer noch die alte send funktion von socket. Wisst ihr, wo da python ein problem machen könnte?? Schon einmal Danke im voraus, dass ihr euch damit beschäftigt.
hier der quellcode, ich habe mal die irrelevanten zeilen weggelassen:
Code: Alles auswählen
def crypt_xor(string,key):
len_key=len(key)
new=''
for i in xrange(len(string)):
new+=chr((ord(string[i])) ^ (ord(key[i%len_key])))
return new
class mysocket(socket):
def __init__(self,key_path=None,_sock=None,_key=None):
print "__init__"
socket.__init__(self,_sock=_sock)
if _key:
self.key=_key
else:
try:
f=open(key_path,'rb')
self.key=f.read(16)#16*8 == 128 bit Verschlüsselung
f.close()
except IOError,txt:
raise KeyFileError,txt
if len(self.key)!=16:
raise KeyFileError,"not a valid 128 bit (16 byte) key (too short)"
#print repr(self.key)
#print repr(crypt_xor("Hallo",self.key))
def send(self,string):
print "send"
print "gesendet: ",repr(crypt_xor(string,self.key))
socket.send(self,crypt_xor(string,self.key))
def recv(self,buffer):
print "recv"
if buffer%16!=0:
return None #because it may cause problems with the decryption
return crypt_xor(socket.recv(buffer),self.key)
def accept(self):
print "accept"
sock, addr = self._sock.accept()
return mysocket(_sock=sock,_key=self.key), addr