Problem bei der Übergabe eines Wertes durch ein C Programm an ein php-Skript

ObScUrItAs

Mitglied
Problem bei der Übergabe eines Wertes durch ein C Programm an ein php-Script

Ich will einen Wert aus einer RegBinary mit einem C-Programm auslesen und mittels $HTTP_GET_VARS an eine PHP-Seite übergeben. In der RegBinary steht das :
ä¤p¥‚ÄÏõÀ5D+]

als Hex sieht das ganze so aus :
15 e4 a4 70 a5 la 82 c4 cf f5 c0 04 35 44 2b 5d

Wenn ich den Wert mit dem C-Programm aus der RegBinary auslese und mit fopen("", wb) in eine Datei schreibe steht genau das:

ä¤p¥‚ÄÏõÀ5D+]

in der Datei. Wenn ich das Zeug an eine PHP-Seite übergebe mit :
Code:
strcat(adresse, "http://bsp.de/index.php?var=");
strcat(adresse, toll);
ShellExecute(NULL, "open", adresse, NULL, NULL, SW_SHOW);
( toll ist hierbei der String, in den ich den Wert aus der Binary reinschreibe )
dann steht die Variable auch in der Adresszeile, aber es ist ein komischer Mix aus den Zeichen und dem Hex-Code und zwar sieht das Ganze dann so aus :

Code:
http://bsp.de//index.php?var=%15%C3%A4%C2%A4p%C2%A5%1A%C2%82%C3%84%C3%8F%C3%B5%C3%80%045D+]

und wenn das PHP-Skript dann mit HTTP_GET_VARS und fopen("datei.txt", wb); die Variable in die Datei schreiben soll und ich die Dartei öffne, steht das drinne :
ä¤p¥‚ÄÏõÀ5D ]

sieht ähnlich aus wie die Urpsprungsvariable aber ein paar Zeichen lässt es einfach weg. Woran liegt das ?
 
Zuletzt bearbeitet:
C-Strings werden durch eine terminierende Null abegeschlossen. D.h er liest im Speicher solange ab deinem Pointer bis irgendwann eine Null da steht.

Häng einfach noch ein strcat(adresse, "\0"); an.

Bin mir aber net ganz sicher obs daran liegt villeicht macht das strcat schon von allein (glaube ich aber nicht). Zur überprüfung gib doch einfach mal adresse aus dann siehst du doch wo der Fehler liegt.
 
Im Großen und Ganzen paßt das ja, daß die einzelnen Zeichen in ihre Hex-Werte umgewandelt werden. Nur mit dem '+' scheint es Probleme zu haben. Wie ich es sehe, hast Du 2 Möglichkeiten:
1. Schon vor dem ShellExecute alle '+' - Zeichen in Deinem String selber in ihr HEX-Äquivalent umwandeln. Das birgt die Gefahr, daß Dir beim nächsten String wieder ein anderes Zeichen unterkommt, das nicht automatisch umgewandelt werden kann (z.B. '-' evtl.).
2. Vor dem 2. strcat ALLE Zeichen in Deinem Variablenstring (toll) in ihr HEX-Äquivalent umwandeln.

Woher Du allerdings die richtigen HEX-Werte bekommst, weiß ich leider auch nicht.

P.S.: Vielleicht geht es auch, wenn Du Deinen Variablenstring in Hochkommata setzt.
 
Zurück