как скачать файл средствами VBScript?

Программирование на Active Server Pages и VBScript.
vadimaaa
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 27.02.2006 (Пн) 15:10

как скачать файл средствами VBScript?

Сообщение vadimaaa » 27.02.2006 (Пн) 15:18

у меня тако вопрос! мне надо стедствами VBScript скачать файл в нужную мне дирректорию с нужной программой. или сразуже не скачивая файла его открыть??? вот пример как это сделать на просто VB6
Код: Выделить всё
Private Declare Function URLDownloadToFile Lib "urlmon" _
    Alias "URLDownloadToFileA" (ByVal pCaller As Long, _
    ByVal szURL As String, ByVal szFileName As String, _
    ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

Private Sub Form_Load()
    URLDownloadToFile 0, _
        "ХТТП путь к файлу", _
        "куда сохранить на жестком", 0, 0
End Sub


может его както надо перевезти на VBScript? потомучто я нишарю в нем ничего но надо именно он
ПОМОГИТЕ КТО ЗНАЕТ

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2019
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 09.03.2006 (Чт) 17:25

Доброго времени суток брат :)

Сегодня с утра увидел твой пост. Давно я в ASP не заглядывал.

А теперь по теме

Код: Выделить всё
Function Download(URL,Folder)

   Dim XMLHTTP, ADOStream, FileName

   URL = Replace(URL,"\","/")
   FileName = right(URL,len(URL)-instrrev(URL,"/"))

   if len(FileName)=0 Then
      msgbox "Имя файла не указано"
      Exit Function
   End if

   Set XMLHTTP = CREATEOBJECT("Microsoft.XMLHTTP")
   XMLHTTP.open "GET", URL, "False"

   XMLHTTP.send
   If XMLHTTP.statustext = "OK" Then
      Set ADOStream = CreateObject("ADODB.Stream")
      ADOStream.type = 1
      ADOStream.Open
      ADOStream.Write XMLHTTP.responseBody

      if len(Folder) > 0 Then FileName = Folder & "\" & FileName
      ADOStream.SaveToFile FileName, 2
      ADOStream.Close
      Set ADOStream = Nothing
      Download = 1
   'Else ' состояние загрузки
      'Download = 0 'XMLHTTP.statustext
   End if
   Set XMLHTTP = Nothing
End Function

quit
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 01.06.2008 (Вс) 21:34

Сообщение quit » 01.06.2008 (Вс) 23:37

не пойму , зачем в се так усложнять ...
делается все это просто ..
Код: Выделить всё
Set AA = Create0bject("Scripting.FileSystem0bject")
With Create0bject("MSXML2.XMLH0TTP")
  .open "GET", "http://narod.ru/d.exe", False
  .send
  Set А2 = AA.CreateTextFile("C:\temp.txt")
  AА.WriteLine .responseText
End With

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2019
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 03.06.2008 (Вт) 11:53

За тем, что метод, который Вы предлагаете (записывать тело файла через FSO) сработает для текстовых файлов, а для EXE-ников / картинок и т.п файл запишется с потерей данных и работать не будет.

quit
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 01.06.2008 (Вс) 21:34

Сообщение quit » 04.06.2008 (Ср) 22:48

да но если вы будете делать как вы говорите , то не один антивирус вам это не позволит !!!!

кстати у меня вопрос , кто пользовался методом ExecWB
а именно меня интересует сохранение файла "сохранить файл как"
Код: Выделить всё
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate "http://mossur.ru/ddd.txt"
While objIE.Busy
objIE.Visible = True
    Wscript.Sleep 200
Wend
objIE.Visible = 1
objIE.ExecWB 4, 2


фишка в том , что ОН В ПЕРВЫЙ РАЗ выдает даже окошко сохранения (рис 1) но в последующие разы выдает ошибку (рис 2)
рис 1
Изображение
рис 2
Изображение

в чем может быть загвоздка .. ?
и верно ли это вообще objIE.ExecWB 4, 2
и если верно , то как можно в этом окне (рис 1) изменить место куда сохранять !!

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 05.06.2008 (Чт) 9:38

да но если вы будете делать как вы говорите , то не один антивирус вам это не позволит !!!!
Это с какой стати? Скачивание файла из интернета и запись на диск в разрешенное для текущего пользователя место - операция сама по себе вполне законная. А ADODB.Stream и FSO в данном случае абсолютно равноправны - скачивание будет НЕ из броузера.
Лучший способ понять что-то самому — объяснить это другому.

quit
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 01.06.2008 (Вс) 21:34

Сообщение quit » 05.06.2008 (Чт) 13:16

хех представте себе avp реагирует на наличие строки урла с расширением "exe"
Изображение
а вот ещё и отчет с virustotal.com (они не такие обнадеживающие ) :
Антивирус Версия Обновление Результат
AhnLab-V3 2008.5.30.1 2008.06.05 -
AntiVir 7.8.0.26 2008.06.05 -
Authentium 5.1.0.4 2008.06.04 -
Avast 4.8.1195.0 2008.06.05 -
AVG 7.5.0.516 2008.06.04 -
BitDefender 7.2 2008.06.05 Dropped:Generic.XPL.ADODB.8194BD25
CAT-QuickHeal 9.50 2008.06.04 -
ClamAV 0.92.1 2008.06.04 -
DrWeb 4.44.0.09170 2008.06.05 Trojan.DownLoader.588
eSafe 7.0.15.0 2008.06.04 -
eTrust-Vet 31.6.5850 2008.06.05 -
Ewido 4.0 2008.06.04 -
F-Prot 4.4.4.56 2008.06.04 -
F-Secure 6.70.13260.0 2008.06.05 Trojan-Downloader.JS.gen
Fortinet 3.14.0.0 2008.06.05 -
GData 2.0.7306.1023 2008.06.05 -
Ikarus T3.1.1.26.0 2008.06.05 -
Kaspersky 7.0.0.125 2008.06.05 Trojan-Downloader.JS.gen
McAfee 5310 2008.06.04 -
Microsoft 1.3604 2008.06.05 -
NOD32v2 3160 2008.06.05 -
Norman 5.80.02 2008.06.04 -
Panda 9.0.0.4 2008.06.05 -
Prevx1 V2 2008.06.05 -
Rising 20.47.30.00 2008.06.05 -
Sophos 4.30.0 2008.06.05 -
Sunbelt 3.0.1145.1 2008.06.05 -
Symantec 10 2008.06.05 -
TheHacker 6.2.92.335 2008.06.05 -
VBA32 3.12.6.7 2008.06.05 -
VirusBuster 4.3.26:9 2008.06.04 -
Webwasher-Gateway 6.6.2 2008.06.05 VBScript.Vulnerable.gen!High (suspicious)

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 05.06.2008 (Чт) 14:08

Во-первых, совершенно не обязательно хранить файл как exe, расширение можно поменять. Во-вторых, весь этот зоопарк реагирует на использование ADODB. В-третьих, пока не ясно, реагировал ли avp на попытку доступа к файлу или выполнение скрипта. Если на попытку доступа, строку "ADODB.Stream" можно попробовать скрыть за Chr или чем посложнее.
Лучший способ понять что-то самому — объяснить это другому.

quit
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 01.06.2008 (Вс) 21:34

Сообщение quit » 05.06.2008 (Чт) 14:13

ты не понял меня ..
первая гифка - это где скачиваемый файл с расширением exe ..
потом я его поменял на txt , мой авп перестал орать ..
но на проверку вирустотал , другие авп сказали что это трой..
логи выше приведены..
на что реагирует авп , честно не знаю .. как скрыть это тоже пока не додумал ...
шифровать пробовал - тоже орет .. по этому и спрашиваю у вас совета с этим скриптом ..
Код: Выделить всё
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate "http://mossur.ru/ddd.txt"
While objIE.Busy
objIE.Visible = True
    Wscript.Sleep 200
Wend
objIE.Visible = 1
objIE.ExecWB 4, 2

выше посмотри мой пост там написана проблема возникающая у меня с ним ..

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 05.06.2008 (Чт) 14:26

Код: Выделить всё
objIE.ExecWB 4, 2

Первый параметр - OLECMDID_SAVEAS. Второй - OLECMDEXECOPT_DONTPROMPTUSER. Третий должен быть по идее - путь, куда сохранять.
Но все равно это бессмысленно. IE будет сохранять содержимое как текст, см. ситуацию с fso.
Лучший способ понять что-то самому — объяснить это другому.

quit
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 01.06.2008 (Вс) 21:34

Сообщение quit » 05.06.2008 (Чт) 14:32

хм ...
я руководствовался вот этому примеру ..
Метод ExecWB

Выполняет команду и возвращает статус выполнения. Доступен в InternetExplorer и WebBrowser.

Параметры:

1. CmdID - идентификатор команды.
2. CmdExecOpt - опции команды.
3. PvaIn - необязательный, Variant, входные аргументы команды.
4. PvaOut - необязательный, Variant, выходные аргументы команды.

Некоторые возможные значения параметра "CmdID" (подробнее - см. в MSDN описание "OLECMDID enumeration"):

1 Меню "Файл" - "Открыть...".
4 Меню "Файл" - "Сохранить как...".
6 Меню "Файл" - "Печать...".
7 Меню "Файл" - "Предварительный просмотр...".
8 Меню "Файл" - "Параметры страницы...".

Возможные значения параметра "CmdExecOpt":

0 Команда исполняется так, как принято по умолчанию.
1 Перед выполнением выводится окно диалога или дополнительных настроек.
2 Не запрашивать ввод пользователя (не задается никаких вопросов).
3 Выводится справка по запрошенному действию, но сама команда не выполняется.

Пример:

Код: Выделить всё
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate "about:blank"
While objIE.Busy
    Wscript.Sleep 200
Wend
objIE.Visible = 1
objIE.ExecWB 6, 1 'выдача диалога печати
'objIE.ExecWB 6, 2 'немедленная печать



по его примеру и составил параметры
4 Меню "Файл" - "Сохранить как...".
0 Команда исполняется так, как принято по умолчанию.

от сюда имеем objIE.ExecWB 4, 0

но как мне нажать на кнопку "сохранить " Я идиот! Убейте меня, кто-нибудь!

Изображение


|обновление кода|

попробовал добавить код

Код: Выделить всё
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.Navigate "http://mossur.ru/vvv.txt"
While objIE.Busy
    Wscript.Sleep 100
Wend
objIE.ExecWB 4,1 
SendKeys "{tab}"
SendKeys "{Enter}"

выдает ошибку ...
Изображение

блин народ подскажите плиззззз!!!


сейчас немного переделал код ..
получил вот это ..
Код: Выделить всё
Set objIE = WScript.CreateObject("InternetExplorer.Application")

objIE.Visible = True
objIE.Navigate "http://mossur.ru/vvv.txt" , navNoReadFromCache
While objIE.Busy: Wend

objIE.Document.ExecCommand "SaveAs", true, "c:\test.txt"

смог указать директорию и имя файла для сохранения..
НО ВСЕ РАВНО НЕ МОГУ НАЖАТЬ НА КНОПКУ "СОХРАНИТЬ"

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2019
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 06.06.2008 (Пт) 18:17

:shock: :shock: :shock:

Мысль в слух - "Хм... Наверное фраза 'забивать микроскопом' гвозди появилась не просто так." :roll:

Код: Выделить всё


if Download("http://imgl.yandex.net/i/www/080606-logo0.png", "C:\1.png",Status,StatusText) Then
    Select Case Status
    Case 200
        MsgBox "Файл успешно скачан.",vbInformation
    Case Else
        MsgBox Status & " " & StatusText,vbCritical
    End Select
Else
    MsgBox Err.Description,vbCritical,"При скачивании файла произошла ошибка. " & Err.Description
End if

Function Download(URL,FilePath,Status,StatusText)
    Dim XMLHTTP, Stream
    On Error Resume Next

    Set XMLHTTP = CREATEOBJECT("Microsoft." & "XMLHTTP")
    XMLHTTP.open "GET", URL, False
    XMLHTTP.send
   
    If XMLHTTP.status = 200 Then
        Set Stream = CreateObject("ADODB." & "Stream")
        With Stream
            .type = 1
            .Open
            .Write XMLHTTP.responseBody
            .SaveToFile FilePath, 2
            .Close
        End With
    End if
    Status = XMLHTTP.Status
    StatusText = XMLHTTP.StatusText
    Download = Not CBool(Err.number)
End Function


Если антивирусник ругается, можно найти множество способов это обойти ) К примеру вот такой. Приблизительно то что предложил Antonariy.

quit
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 01.06.2008 (Вс) 21:34

Сообщение quit » 07.06.2008 (Сб) 17:05

lags servera
Последний раз редактировалось quit 07.06.2008 (Сб) 17:10, всего редактировалось 1 раз.

quit
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 01.06.2008 (Вс) 21:34

Сообщение quit » 07.06.2008 (Сб) 17:06

lags servera
Последний раз редактировалось quit 07.06.2008 (Сб) 17:10, всего редактировалось 1 раз.

quit
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 01.06.2008 (Вс) 21:34

Сообщение quit » 07.06.2008 (Сб) 17:09

ALX_2002 писал(а)::shock: :shock: :shock:

Мысль в слух - "Хм... Наверное фраза 'забивать микроскопом' гвозди появилась не просто так." :roll:

Если антивирусник ругается, можно найти множество способов это обойти ) К примеру вот такой. Приблизительно то что предложил Antonariy.


о боже ты мой...
твой код который ты привел - тоже самое что и выше =)))))
ни чем не отличается .. даже если ты что то там поменял , все равно принцип тот же самый работы .. через Set Stream = CreateObject("ADODB." & "Stream") на что в общем и реагируют авп !!! шифровать я тоже пробовал !!! бред! ничего нового ...
лучше бы по моему вопросу ответ дали.. как нажать кнопку "сохранить " по средством скрита... ( это и есть мой способ обхода антивирусника ... )

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2019
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 07.06.2008 (Сб) 20:44

А ты проверил антивирусником перед тем как критиковать ? Я вот например проверил. Мой AVP 6 с последними базами асболютно адекватно воспринимает этот файл. Если же твой ругается есть ещё множество способов это исправить и без всякого шифрования. А вот твой метод сохранения через IE мне кажется очень неэффективным. По мне так это равноценно промышленным трактором вспахивать грядку на огороде 8)

quit
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 01.06.2008 (Вс) 21:34

Сообщение quit » 08.06.2008 (Вс) 14:50

ALX_2002 писал(а):. По мне так это равноценно промышленным трактором вспахивать грядку на огороде 8)


хехехе это верно =))) я и не спорю ..
а по поводу "проверил" - выше есть пост где ясно видно какие авп и на каких базах проверялись.?
но все же , не мог бы ты написать, как тогда ты шифровал ..
тем более vbs можно переделать в exe и vbe

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 08.06.2008 (Вс) 16:04

Если можно сделать exe, зачем скриптами голову морочишь?
Лучший способ понять что-то самому — объяснить это другому.

quit
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 01.06.2008 (Вс) 21:34

Сообщение quit » 08.06.2008 (Вс) 19:55

=) это было не мое решение .. тем более я тут написал что могу не на скриптовом, а то что VBScript можно сделать в exe ....

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2019
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 09.06.2008 (Пн) 9:34

ехехе это верно =))) я и не спорю ..
а по поводу "проверил" - выше есть пост где ясно видно какие авп и на каких базах проверялись.?
но все же , не мог бы ты написать, как тогда ты шифровал ..
тем более vbs можно переделать в exe и vbe


Напоминаю - код ниже изменён. Обрати внимание на строки:

Код: Выделить всё

Set XMLHTTP = CREATEOBJECT("Microsoft." & "XMLHTTP")


и

Код: Выделить всё

Set Stream = CreateObject("ADODB." & "Stream")


Если антивирусник тупо смотрит на строковую последовательность, то такой вариант легко его обходит и никакого кодирования не нужно. В ином случае можно использовать другие объекты. К примеру тот же FSO, но записывать файл более сложным способом.
[/u]

quit
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 01.06.2008 (Вс) 21:34

Сообщение quit » 09.06.2008 (Пн) 10:32

хехе прикол в том что вариант с
Set Stream = CreateObject("ADODB." & "Stream")

прокатил на всех основных авп - каспере , докторе вебе , ноде..
и всего 1 пропалил это .. но стоило сделать из скрипта exe , как сразу все авп стали молчать .... =) приятно .. спс ребята , реально помогли =)


Вернуться в ASP и VBScript

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList