C(?)-Code übersetzen

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

 

Mr Hopp

Betreff: C(?)-Code übersetzen

BeitragSo, Dez 30, 2007 22:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!

Ich sitze heute schon den ganzen Tag an diesem Code hier

Code: [AUSKLAPPEN]
   #define AIM_MD5_STRING "AOL Instant Messenger (SM)"

   /* calculate md5-hash to send to server */
   md5_init(&state);
   md5_append(&state, (const md5_byte_t *)authkey, strlen(authkey));
   md5_append(&state, (const md5_byte_t *)passwd, strlen(passwd));
   md5_append(&state, (const md5_byte_t *)AIM_MD5_STRING, strlen(AIM_MD5_STRING));
   md5_finish(&state, (md5_byte_t *)auth_hash);
 
   /* Now we ready send to server auth_hash array (16 bytes long) */


Das depremierende ist, dass ich mir nochnichtmal sicher bin, ob es überhaupt C ist. Ist das vielleicht nur ein Pseudocode? Die sämmtlichen & stören den Compiler usw.

Hat irgendjemand eine Ahnung, wie man diesen Code in Blitz übersetzen kann?
Zitat:
Wie poste ich falsch?

Nachdem ich Google, die FAQ's und die Boardsuche erfolgreich ignoriert habe, erstelle ich zwei bis fünf neue Themen, in den falschen Unterforen, mit kreativen Titeln und undeutlichem Text, unter dem sich jeder etwas anderes vorstellen kann.
 

ChristianK

BeitragSo, Dez 30, 2007 22:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, das ist C. Smile
Das "&" Zeichen bedeutet, dass ein Zeiger auf "state" an die Funktion weitergegeben wird. Ein Compiler sollte das eigentlich wissen. Confused Vielleicht fehlt aber auch einfach nur ein Header ...

Allein wegen der Zeiger kannst du's jedenfalls schon nicht in BlitzBasic übersetzen. Höchstens BlitzMax.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT
 

Mr Hopp

BeitragSo, Dez 30, 2007 22:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich arbeite ja mit BMax... (sry vergessen zu erwähnen Laughing ). Ähm ja ich habe null Ahnung von C und habe deswegen den Code einfach mal in crypt.c gespeichert und per Import in die BMX-Datei geholt. Also ich habe auch diese MinGW-Erweiterung oder so... C-Codes funktionieren ja in den Modulen auch

Edit: Also ich habe keinen einzigsten Header beachtet Laughing
Zitat:
Wie poste ich falsch?

Nachdem ich Google, die FAQ's und die Boardsuche erfolgreich ignoriert habe, erstelle ich zwei bis fünf neue Themen, in den falschen Unterforen, mit kreativen Titeln und undeutlichem Text, unter dem sich jeder etwas anderes vorstellen kann.

Lunatix

BeitragMo, Dez 31, 2007 0:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Versuche einfach mal, mit einer md5 funktion aus dem Forum folgendes zu senden:

Code: [AUSKLAPPEN]
Local  AIM_MD5_STRING "AOL Instant Messenger (SM)"
Local md5hash:string

md5Hash = md5(authkey+passwd+AIM_MD5_STRING)
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...
 

Mr Hopp

BeitragMo, Dez 31, 2007 0:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe ich schon versucht.. leider falsch. Da wäre ja auch die nächste Frage: In welchem Format sollen die Variablen sein? Zeichenkette, ASCII-Codes, Hex-Werte, oder evtl alle einzeln hashen und dann nochmal zusammen hashen?!?! Ich hab schon verdammt viel probiert Sad

Edit:

Konkretes Beispiel:
Code: [AUSKLAPPEN]
Key: 2617940500
Passwort: password

Hash: 89 c4 b6 fc 4a 6f 2f 17 b6 5f 0a 60 b6 58 c1 3c
Zitat:
Wie poste ich falsch?

Nachdem ich Google, die FAQ's und die Boardsuche erfolgreich ignoriert habe, erstelle ich zwei bis fünf neue Themen, in den falschen Unterforen, mit kreativen Titeln und undeutlichem Text, unter dem sich jeder etwas anderes vorstellen kann.
 

ChristianK

BeitragMo, Dez 31, 2007 0:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Speichern kannst du's entweder als String oder als Byte-Array. Hier wird wohl ein Array erwartet ( siehe letzte Zeile im Code oben Wink ).
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT
 

Mr Hopp

BeitragMo, Dez 31, 2007 0:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Byte-Array heißt die ASCII-Codes der einzelnen Buchstaben aneinander gereiht??
Zitat:
Wie poste ich falsch?

Nachdem ich Google, die FAQ's und die Boardsuche erfolgreich ignoriert habe, erstelle ich zwei bis fünf neue Themen, in den falschen Unterforen, mit kreativen Titeln und undeutlichem Text, unter dem sich jeder etwas anderes vorstellen kann.

Lunatix

BeitragMo, Dez 31, 2007 1:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Byte Array:

Code: [AUSKLAPPEN]

Local array:byte[16]
For local i:int = 0 until 16
  array[i] = _string[i]
next
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...
 

Mr Hopp

BeitragMo, Dez 31, 2007 1:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Expression of type 'Int' cannot be indexed

Sad
Zitat:
Wie poste ich falsch?

Nachdem ich Google, die FAQ's und die Boardsuche erfolgreich ignoriert habe, erstelle ich zwei bis fünf neue Themen, in den falschen Unterforen, mit kreativen Titeln und undeutlichem Text, unter dem sich jeder etwas anderes vorstellen kann.

mahe

BeitragMo, Dez 31, 2007 1:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal muss es in der for-Schleife "to" anstatt "until" heißen. Dann gibt es nur die Felder 0 bis 15. Ein sechzehntes gibt es nicht.
Und das Array "_string" wird in diesem Codeausschnitt nicht deklariert. Das muss dann eben Dein String sein.

Code: [AUSKLAPPEN]
Local array:Byte[16]
For Local i:Int = 0 To 15
  array[i] = 5
Next

Das funktioniert auch ohne Nachdenken und Extra-Code!
ʇɹǝıdɯnɹɹoʞ ɹnʇɐuƃıs - ǝpoɥʇǝɯ-ɹoɹɹıɯ ɹǝp uı ,ɹoɹɹǝ,
 

klepto2

BeitragMo, Dez 31, 2007 9:48
Antworten mit Zitat
Benutzer-Profile anzeigen
@mahe
sry aber genau das bewirkt until in BMax.
(to = 0 bis 16, until = 0 bis 15)


@topic
Der Fehler mit dem int kommt eher das _string noch nicht initialisiert wurde.

Code: [AUSKLAPPEN]

_string:String = "1234567890123456"
Local array:byte[_string.length]
For local i:int = 0 until _string.length
  array[i] = _string[i]
next
Matrix Screensaver
Console Modul für BlitzMax
KLPacker Modul für BlitzMax

HomePage : http://www.brsoftware.de.vu
 

Mr Hopp

BeitragMo, Dez 31, 2007 14:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Jaa dass da deklaration gefehlt hat, hab ich ja auch gemerkt Very Happy Aber ich hab den Sinn nicht ganz geblickt... Oder doch! Evtl schon Shocked

Code: [AUSKLAPPEN]
array[i] = _string[i]

bewirkt das, dass, wegen der Deklaration auf :Byte, das jewalige Zeichen automatisch umgeformt wird?? (Ich test's gleich mal aus xD )

Edit: Jaa, bewirkt es Idea Aber ASCII-Codes hatte ich doch schon erwähnt Laughing Nuja dann experimentiere ich ein bisschen mit diesen Werten rum...
Zitat:
Wie poste ich falsch?

Nachdem ich Google, die FAQ's und die Boardsuche erfolgreich ignoriert habe, erstelle ich zwei bis fünf neue Themen, in den falschen Unterforen, mit kreativen Titeln und undeutlichem Text, unter dem sich jeder etwas anderes vorstellen kann.

mahe

BeitragMo, Dez 31, 2007 15:42
Antworten mit Zitat
Benutzer-Profile anzeigen
klepto2 hat Folgendes geschrieben:
@mahe
sry aber genau das bewirkt until in BMax.
(to = 0 bis 16, until = 0 bis 15)

Ich bitte vielmals um Entschuldigung.
Das habe ich bisher noch nie gesehen!
(habs jetzt extra nochmal ausprobiert um sicher zu gehen Wink )
ʇɹǝıdɯnɹɹoʞ ɹnʇɐuƃıs - ǝpoɥʇǝɯ-ɹoɹɹıɯ ɹǝp uı ,ɹoɹɹǝ,
 

Mr Hopp

BeitragMo, Dez 31, 2007 15:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun habe ich immernochnicht die Lösung gefunden, aber einen Hinweis, was richtig sein könnte. Dieser Code hier
Code: [AUSKLAPPEN]
     Dim authkey_hash As Byte() =  {50, 54, 49, 50, 54, 48, 55, 57, 55}
     Const AIM_MD5_STRING As String = "AOL Instant Messenger (SM)"
     Dim data As Byte() = ASCIIEncoding.ASCII.GetBytes(textBox1.Text)
     Dim md5 As MD5 = New MD5CryptoServiceProvider
     Dim pass_hash As Byte() = md5.ComputeHash(data)
     Dim AIM_MD5_HASH As Byte() = ASCIIEncoding.ASCII.GetBytes(AIM_MD5_STRING)
     Dim auth_hash(pass_hash.Length + authkey_hash.Length + AIM_MD5_HASH.Length) As Byte
     Array.Copy(authkey_hash, 0, auth_hash, 0, authkey_hash.Length)
     Array.Copy(pass_hash, 0, auth_hash, authkey_hash.Length - 1, pass_hash.Length)
     Array.Copy(AIM_MD5_HASH, 0, auth_hash, (authkey_hash.Length - 1) + (pass_hash.Length - 1), AIM_MD5_HASH.Length)
     md5 = New MD5CryptoServiceProvider
     Dim send_hash As Byte() = md5.ComputeHash(auth_hash)
     textBox2.Text = ASCIIEncoding.ASCII.GetString(send_hash)

Ist in VB.NET programmiert und spuckt angeblich die richtigen Daten aus.... ich kann das leider nicht prüfen, da ich keinen passenden Compiler habe. Man kann jedoch folgende Schlüsse daraus ziehen:

- Alle Komponente müssen als ByteArrays vorliegen
- das Passwort muss vorher schon gehasht werden
Zitat:
Wie poste ich falsch?

Nachdem ich Google, die FAQ's und die Boardsuche erfolgreich ignoriert habe, erstelle ich zwei bis fünf neue Themen, in den falschen Unterforen, mit kreativen Titeln und undeutlichem Text, unter dem sich jeder etwas anderes vorstellen kann.

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group