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! :lol:

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 :mrgreen:):

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. :wink:

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. :freak:
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);