| Autor |
Beitrag |
moddin
      
Beiträge: 75
WinXP Pro
Delphi 7 Enterprise ;-)
|
Verfasst: Mo 19.02.07 17:46
hiho alle zusammen wollte in mein ultrakrasses netzwerkprogramm eine transparente verschlüsselung einbauen hierzu eignet sich die RC4 Verschlüsselung hervorragend ich hab jetzt die verschlüsselung so eingebaut aber das funktioniert nicht hat jemand ahung was da falsch ist? Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| function mysend(s: dword; var Buf; len, flags: Integer): Integer; stdcall; begin RC4Code(globalrc4,buf,buf,len); result := nextSend(s,buf,len,flags); end;
function mysendto(s: dword; var Buf; len, flags: Integer; var addrto: dword; tolen: Integer): Integer; stdcall; begin RC4Code(globalrc4,buf,buf,len); result := nextSendTo(s,buf,len,flags,addrto,tolen); end; | Moderiert von raziel: Quote- durch Delphi-Tags ersetzt
_________________ Willst du Körper an Körper pressen? Atem spüren? Gerüche wahrnehmen? Verschiedene Stellungen probieren? Rein und raus? Von hinten nach vorne? Ja? Dann nimm den Bus!
|
|
jakobwenzel
      
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Mo 19.02.07 18:36
Muss das nicht noch entschlüsselt werden?
(Oder haste das nur weggelassen?)
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
moddin 
      
Beiträge: 75
WinXP Pro
Delphi 7 Enterprise ;-)
|
Verfasst: Di 20.02.07 00:13
kk
hier das ganze nochmal vereinfacht/edler
also die kommunikation funktioniert
aber
die verschlüsselung funktioniert, aber die daten werden nicht wieder entschlüsselt
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38:
| procedure Encrypt(var Source;len:integer); var p:pointer; globalrc4:trc4context; begin GetMem(p,len); RC4Init(GlobalRC4,'Test'); Rc4Code(globalrc4,Source,p^,len); RC4Done(GlobalRc4); Move(p^,Source,len); Freemem(p,len); end;
function myrecvfrom(s: dword; var Buf; len, flags: Integer; var from: dword; var fromlen: Integer): Integer; stdcall; begin Encrypt(Buf,len); result := nextrecvfrom(s,buf,len,flags,from,fromlen); end;
function myrecv(s: dword; var Buf; len, flags: Integer): Integer; stdcall; begin Encrypt(Buf,len); result := nextrecv(s,buf,len,flags); end;
function mysend(s: dword; var Buf; len, flags: Integer): Integer; stdcall; begin Encrypt(Buf,len); result := nextSend(s,buf,len,flags); end;
function mysendto(s: dword; var Buf; len, flags: Integer; var addrto: dword; tolen: Integer): Integer; stdcall; begin Encrypt(Buf,len); result := nextSendTo(s,buf,len,flags,addrto,tolen); end; |
_________________ Willst du Körper an Körper pressen? Atem spüren? Gerüche wahrnehmen? Verschiedene Stellungen probieren? Rein und raus? Von hinten nach vorne? Ja? Dann nimm den Bus!
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 20.02.07 00:21
Moin!
Ist RC4 nicht positions-kontextsensitiv?  Kannst du denn sicherstellen, dass deine Hooks die Daten immer in exakt der gleichen Reihenfolge durch den RC4-Filter laufen lassen? Nur dann kannst du die Daten nämlich wieder korrekt entschlüsseln.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
HelgeLange
      
Beiträge: 735
Erhaltene Danke: 6
Windows 7
Delphi7 - Delphi XE
|
Verfasst: Di 20.02.07 01:13
| Zitat: | | Willst du Körper an Körper pressen? Atem spüren? Gerüche wahrnehmen? Verschiedene Stellungen probieren? Rein und raus? Von hinten nach vorne? Ja? Dann nimm den Bus! |
LOL, das hört sich nach der Metro in Caracas an, Klimaanlage funktioniert nur, wenns draussen auch kalt ist und wer es nicht schafft, bauch und Hintern gleichzeitig einzuziehen, hat eh keine Chance mitgenommen zu werden 
_________________ "Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
|
|
moddin 
      
Beiträge: 75
WinXP Pro
Delphi 7 Enterprise ;-)
|
Verfasst: Di 20.02.07 19:07
Narses hat folgendes geschrieben: | Moin!
Ist RC4 nicht positions-kontextsensitiv? Kannst du denn sicherstellen, dass deine Hooks die Daten immer in exakt der gleichen Reihenfolge durch den RC4-Filter laufen lassen? Nur dann kannst du die Daten nämlich wieder korrekt entschlüsseln.
cu
Narses |
daran hab ich auch schon gedacht und ein paar tests gemacht (alle hooks werden aufgerufen)
also mit rc4 kann auch einzelne teile eines strings/daten entschlüsseln
zb in 2 teile teilen und beide einzeln entschlüsseln
zudem, wenn man den text auf serverseite ganz billig
Delphi-Quelltext 1: 2: 3: 4: 5:
| begin s := Socket.ReceiveText; Encrypt(pchar(s)^,length(s)); Edit2.Text := s; end; |
(ohne hook-entschlüsseln) richtig entschlüsseln
[DEBUG]
affenhausF / /// edit1.text
+-,So? //send hook
+-,So? //yreive hiook
affenhaut //edit2.text
[/DEBUG] lol affenhaus wird zu affenhaus - not bad imho - man beachte das alle strings nur in HTML gleich aussehene
_________________ Willst du Körper an Körper pressen? Atem spüren? Gerüche wahrnehmen? Verschiedene Stellungen probieren? Rein und raus? Von hinten nach vorne? Ja? Dann nimm den Bus!
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 20.02.07 19:44
Moin!
moddin hat folgendes geschrieben: | | daran hab ich auch schon gedacht und ein paar tests gemacht (alle hooks werden aufgerufen) |
Es geht nicht darum, ob sie aufgerufen werden, sondern wann und mit welchem RC4-Kontext!
Lass doch mal RC4 weg und mach nur ein xor $AA oder sowas, und dann schau mal, ob das klappt. Wenn es damit klappt, dann liegt es an einem Fehler in der Anwendung von RC4!
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
moddin 
      
Beiträge: 75
WinXP Pro
Delphi 7 Enterprise ;-)
|
Verfasst: Mi 21.02.07 00:39
nope es liegt anscheinend nicht an RC4 oder ich bin zu dumm das richtig
zu implementiern  (was natürlich nicht sein KANN ^^ )
egal
ich verwende jetzt diese simple routine
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure Encrypt(var Source;len:integer); type tarray = array[0..0] of byte; pArray=^TArray; var p:pointer; x:integer; begin GetMem(p,len); Move(Source,p^,len); Form1.Memo.Lines.Add(pchar(p)); FreeMem(p,len); for x := 0 to len-1 do begin pArray(@Source)^[x] := pArray(@Source)^[x] XOR 5; end; GetMem(p,len); Move(Source,p^,len); Form1.Memo.Lines.Add(pchar(p)); FreeMem(p,len); end; |
das ergebniss ist immer noch dasselbe -
affenhaus // MySend - davor
dcc`kmdpv // MySend - danach
dcc`kmdp // MyReceive - davor
affenhau // MyReceive - danach
_________________ Willst du Körper an Körper pressen? Atem spüren? Gerüche wahrnehmen? Verschiedene Stellungen probieren? Rein und raus? Von hinten nach vorne? Ja? Dann nimm den Bus!
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Sa 24.02.07 14:57
Moin!
moddin hat folgendes geschrieben: | das ergebniss ist immer noch dasselbe
Quelltext 1: 2: 3: 4:
| affenhaus // MySend - davor dcc`kmdpv // MySend - danach dcc`kmdp // MyReceive - davor affenhau // MyReceive - danach | |
Scheint, als hättest du beim Senden oder Empfangen ein Bereichsproblem...
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
|