Précédent   Forum des professionnels en informatique > Autres langages > Général Visual Basic 6 et VBScript > VBScript
VBScript Le forum d'entraide sur VBScript. Avant de poster -> La FAQ VBScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/01/2012, 00h42   #1
Membre à l'essai
 
Inscription : août 2010
Messages : 116
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 116
Points : 22
Points : 22
Par défaut [VBS] Problème d'encodage POST

Bonjour,
J'ai crée un script qui envoie des fichiers encodé en base64 de PC vers un serveur en ligne via HTTP, mais quand je décode le Ficheir reçus en PHP (Base64_decode) , le fichier est corrempu !!

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Function upload(f,n)
 
Set objStream = CreateObject("ADODB.Stream")
objStream.Type = 1
objStream.Open()
objStream.LoadFromFile(f)
 
Set objXML = CreateObject("MSXml2.DOMDocument")
Set objDocElem = objXML.createElement("Base64Data")
objDocElem.dataType = "bin.base64"
objDocElem.nodeTypedValue = objStream.Read()
'--------------------Send file ------------------------------------------
Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
xmlHttp.open "POST", URL, false
xmlhttp.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1"
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlhttp.send "name="+ n + "&" + "data=" + objDocElem.text
 
Set objXML = Nothing
Set objDocElem = Nothing
Set objStream = Nothing
End Function
Je suis sûre que l'erreur viens de cette ligne:
Code :
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
J'ai utilisé POST vue que GET est limité en lenght !

Au niveau de PHP j'ai utilisé ce code:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
 
if (isset($_POST['name']) && isset($_POST['data']))
{
 
$today = date("m.d.y.H.i.s");
$data = $_POST['data'];
 
 $w_file=@fopen("./doc/".$_POST['name'].".".$today.".txt","w");
 if($w_file) {
	@fputs($w_file,urldecode(base64_decode($data)));
	@fclose($w_file);
 }
}
 
?>
NB: la fonction BASE64 de VBS marche nickel vue que je l'est testé apart, suivis de décodage par de PHP en local ...

Merci de m'aider.
Stalk3R est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2012, 18h51   #2
Membre confirmé
 
Inscription : octobre 2011
Messages : 188
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 188
Points : 287
Points : 287
Citation:
... mais quand je décode le Ficheir reçus en PHP (Base64_decode) , le fichier est corrempu !!
Base64 contient, en général, certains caractères qui ne sont pas uri secure que on doit faire encodage pour les transmettre via http. Ils sont les caractères +, / et =.

Voici ce qu'il faut faire comme vbs n'a pas la fonction comme il y en a dans jscript: encodeURIComponent.
Code :
1
2
3
4
5
6
7
8
 
'xmlhttp.send "name="+ n + "&" + "data=" + objDocElem.text
'dim sdata
sdata=objDocElem.text
sdata=replace(sdata,"+","%2b")
sdata=replace(sdata,"/","%2f")
sdata=replace(sdata,"=","%3d")
xmlhttp.send "name="+ n + "&" + "data=" + sdata
tsuji est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2012, 20h03   #3
Membre à l'essai
 
Inscription : août 2010
Messages : 116
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 116
Points : 22
Points : 22
Merci beaucoup pour la réponse, mais j'ai remarqué que le + est changé en ESPACE :S

Malgré le fait qu'il y a urldecode

Une solution ?
Stalk3R est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2012, 20h15   #4
Membre confirmé
 
Inscription : octobre 2011
Messages : 188
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 188
Points : 287
Points : 287
Citation:
...mais j'ai remarqué que le + est changé en ESPACE :S
Je n'ai pas compris... il n'y contient aucunement l'espace dans base64, ce n'est pas possible.
Ou bien vous voulez dire sans encodage que j'ai mis; alors c'est normal, et c'est pour ça qu'il faut faire l'encodage que j'ai posté.
tsuji est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2012, 20h21   #5
Membre à l'essai
 
Inscription : août 2010
Messages : 116
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 116
Points : 22
Points : 22
voila, j'ai fait une comparaison des deux fichiers (celui que j'ai encoder en base64 sur mon pc, et celui qui est uploadé par le fichier VBS)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
***** 1.txt
bv45cz5nDTCNcZhSz0/eQPdQtV0I25Ns4xD4aR730LKzL06WW2vQIGT7uvIWIOxDu4SGoLyt
xw62fT7wIjZV5bfx/21zKv4MPW9+8c7x8Wy6WLw5zxuc0GTTCS8ALzzolepw4kqH0OMG7vrg
o8EepKozLSfl0aGnNo3CrfzE/NN3Vfbes3ObcAtWr8VjY0+Hd3iLp8dF2rlyDr6UxbrpIrRs
oVN9PpZnrfBtswmzJjT44TKyYYCWP/x/tSzc/oPIzMLzMxmGXwW2rBm9b381lFuTPZ0eY42s
mdpoY/SufXyMR8jRk0MGYJGrzmSXdhLtqx+lu42MoQesIwKnqZdGMoRzzbKRLHB83haeoUv/
5GDxU/L+fwAAAP//AwBQSwECLQAUAAYACAAAACEA3fyVN2YBAAAgBQAAEwAAAAAAAAAAAAAA
AAAAAAAAW0NvbnRlbnRfVHlwZXNdLnhtbFBLAQItABQABgAIAAAAIQAekRq38wAAAE4CAAAL
AAAAAAAAAAAAAAAAAJ8DAABfcmVscy8ucmVsc1BLAQItABQABgAIAAAAIQDWZLNR+gAAADED
AAAcAAAAAAAAAAAAAAAAAMMGAAB3b3JkL19yZWxzL2RvY3VtZW50LnhtbC5yZWxzUEsBAi0A
***** 2.TXT
bv45cz5nDTCNcZhSz0/eQPdQtV0I25Ns4xD4aR730LKzL06WW2vQIGT7uvIWIOxDu4SGoLyt
xw62fT7wIjZV5bfx/21zKv4MPW9 8c7x8Wy6WLw5zxuc0GTTCS8ALzzolepw4kqH0OMG7vrg
o8EepKozLSfl0aGnNo3CrfzE/NN3Vfbes3ObcAtWr8VjY0 Hd3iLp8dF2rlyDr6UxbrpIrRs
oVN9PpZnrfBtswmzJjT44TKyYYCWP/x/tSzc/oPIzMLzMxmGXwW2rBm9b381lFuTPZ0eY42s
mdpoY/SufXyMR8jRk0MGYJGrzmSXdhLtqx lu42MoQesIwKnqZdGMoRzzbKRLHB83haeoUv/
5GDxU/L fwAAAP//AwBQSwECLQAUAAYACAAAACEA3fyVN2YBAAAgBQAAEwAAAAAAAAAAAAAA
AAAAAAAAW0NvbnRlbnRfVHlwZXNdLnhtbFBLAQItABQABgAIAAAAIQAekRq38wAAAE4CAAAL
AAAAAAAAAAAAAAAAAJ8DAABfcmVscy8ucmVsc1BLAQItABQABgAIAAAAIQDWZLNR gAAADED
AAAcAAAAAAAAAAAAAAAAAMMGAAB3b3JkL19yZWxzL2RvY3VtZW50LnhtbC5yZWxzUEsBAi0A
*****
Ce qui donne que la deffirence c'est l'espace et le +
Stalk3R est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2012, 20h27   #6
Membre confirmé
 
Inscription : octobre 2011
Messages : 188
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 188
Points : 287
Points : 287
Réferez la deuxième phrase dans ma réponse desus.
tsuji est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2012, 20h34   #7
Membre à l'essai
 
Inscription : août 2010
Messages : 116
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 116
Points : 22
Points : 22
Oui je l'es fait;
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
'---------------------UPLOAD -------------------------------------------- 
Function upload(f,n)
 
Set objStream = CreateObject("ADODB.Stream")
objStream.Type = 1
objStream.Open()
objStream.LoadFromFile(f)
 
Set objXML = CreateObject("MSXml2.DOMDocument")
Set objDocElem = objXML.createElement("Base64Data")
objDocElem.dataType = "bin.base64"
objDocElem.nodeTypedValue = objStream.Read()
'--------------------Send file ------------------------------------------
Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
xmlHttp.open "POST", URL, false
xmlhttp.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1"
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
'xmlhttp.send "name="+ n + "&" + "data=" + objDocElem.text
dim sdata
sdata=objDocElem.text
sdata=replace(sdata,"+","%2b")
sdata=replace(sdata,"/","%2f")
sdata=replace(sdata,"=","%3d")
xmlhttp.send "name=" + NomMachine + "-" + n + "&" + "data=" + sdata
Stalk3R est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 14h00   #8
Membre confirmé
 
Inscription : octobre 2011
Messages : 188
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 188
Points : 287
Points : 287
Citation:
@fputs($w_file,urldecode(base64_decode($data)));
Je me demande quoi qu'il signifie?! J'espère vous faites la même. C'est plutôt l'inverse dans l'ordre des fonctions de décodage?
tsuji est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h07.


 
 
 
 
Partenaires

Hébergement Web