Seite 1 von 2
C++ Code in PureBasic wandeln
Verfasst: 15.02.2010 21:09
von Marc-21
Hi bin gerade dabei ein programm zuschreiben was sich mit einen server verbindet.
Man erhält vom server einen Code der verändert werden muß und diesen zurück schicken
an den Server. Ein anders programm was dieses kann wird es über C++ geregelt verstehe es aber nicht 100%
was da passiert.
Code: Alles auswählen
static const char *cccamstr="CCcam";
void Xor(unsigned char *data, int length)
{
if(length>=16)
for(int index=0; index<8; index++) {
data[8]=index*data[0];
if(index<=5) data[0]^=cccamstr[index];
data++;
}
}
würde das gerne in Purebasic um wandeln .
Danke für eure hilfe
Re: Verständins Frage
Verfasst: 15.02.2010 21:26
von Tur0k
Wenn du schon mit C++ arbeitest, solltest du wissen was for, if...else.. usw. ist.
Dann versteht du auch den Code ohne Probleme.
Re: C++ Code in PureBasic wandeln
Verfasst: 15.02.2010 21:39
von Marc-21
Das mit if und else keine problem
Code: Alles auswählen
{
if(length>=16) Wenn die länge 16 ist weiter
for(int index=0; index<8; index++) hier wird eine schleife gemacht und bist 7 gezählt
{
data[8]=index*data[0]; Keine ahnung was hier passiert
if(index<=5) wenn Index kleiner gleich 5 ist geht es weiter
data[0]^=cccamstr[index]; ^= steht für Xor aber passiert hier genau das in den Klammer steht das für die länge?
data++; hier wird hinzugefügt aber wohin
}
}
Re: C++ Code in PureBasic wandeln
Verfasst: 16.02.2010 00:14
von Tur0k
data++;
ist wie data + 1
data[8]=index*data[0];
data[8] ist gleich = index mal data[0]
data ist ein Array
also multiplizieren.
Ich bin auch ein Anfänger in C++. Falls etwas nicht stimmt, bitte korrigieren!
Edit: Unten ist eh die Lösung.
Re: C++ Code in PureBasic wandeln
Verfasst: 16.02.2010 00:14
von Marvin
Weil ich gerade nicht viel zu tun habe und nett bin (bei mir ist eher das Problem, dass ich PB weniger kann

):
Code: Alles auswählen
EnableExplicit
Global cccamstr.s="CCcam"
Procedure _Xor(*dat, length)
If length >= 16
For index = 0 To 7
PokeB(*dat + 8, (index * (PeekB(*dat) & $FF)) & $FF)
If index <= 5
PokeB(*dat, ((PeekB(*dat) & $FF) ! (PeekB(@cccamstr + index) & $FF)) & $FF)
EndIf
*dat + 1
Next
EndIf
EndProcedure
Ungetestet.
EDIT: Ich hab die Prozedur mal _Xor statt Xor genannt, weil der Compiler bei "Xor" meckern könnte.
Re: C++ Code in PureBasic wandeln
Verfasst: 16.02.2010 14:27
von Marc-21
Hi Danke für eure mühe
verstehe es noch nicht ganz wenn ich den code benutzte kommen nur eine länge von 8.
Wird also nicht die ganze code verändert.
dieser Code kommt vom server der verändert werden muß.
Ich weiß auch die lösung aber keine ahnug wie man das schaft.
FB6F4D20F9485A81204FCDC514067466
Dieser Code wied mit dem Code den ich gepostet habe verändert
So läuft es bei den anderen program ab.
Xor(buffer,len);
unsigned char buff2[64];
SHA1(buffer,len,buff2);
decr.Init(buff2,20);
decr.Decrypt(buffer,buffer,16);
encr.Init(buffer,16);
encr.Encrypt(buff2,buff2,20);
das geht wieder zurück mit einen anderen Programm raus gefunden
EA7FB11563F31E6193CA64DA02E4502C23ECADC5
Re: C++ Code in PureBasic wandeln
Verfasst: 16.02.2010 14:35
von Tur0k
So viel "Code" im Text.
Was möchtest du genau?
Re: C++ Code in PureBasic wandeln
Verfasst: 16.02.2010 14:44
von Marc-21
Ist das richtig das der Code den ich geschrieben habe im ersten Post nur eine länge von 8 rausgibt das ist erstmal die frage?
Re: C++ Code in PureBasic wandeln
Verfasst: 16.02.2010 18:41
von Marvin
Der Code, den du im ersten Post gepostet hast, macht gar nix, weil die Funktion nirgends aufgerufen wird...
Re: C++ Code in PureBasic wandeln
Verfasst: 16.02.2010 19:20
von Marc-21
Okay wenn er so auf gerufen wird
Xor(buffer,len);