Проблема с WinSock

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
mc-colins
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 04.10.2008 (Сб) 20:12

Проблема с WinSock

Сообщение mc-colins » 05.10.2008 (Вс) 20:09

извиняюсь если что не так но я не смог найти ответ в поиске.
суть такая - я отслеживаю в винсоке запрос браузера на открытие страницы
Код: Выделить всё
GET /index.html HTTP/1.1

и при нахождении - отсылаю ему файлы index.html но в браузере он открывается без картинок.
Код: Выделить всё
If Mid(sData, 1, 3) = "GET" Then
     ...
     HTML = LoadFile("c:\index.html")
     pm1 = "HTTP/1.1 200 OK"
     pm2 = "Content-Length: " & Len(HTML)
     pm3 = "Content-Type: text/html"
     sData = pm1 & vbCrLf & pm2 & vbCrLf & pm3 & vbCrLf & vbCrLf & HTML
     Winsock(Index).SendData sData
End If

я так понимаю что надо передать ему и сами файлы картинок тоже?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Проблема с WinSock

Сообщение tyomitch » 05.10.2008 (Вс) 23:45

Ну так а откуда возьмутся картинки, если ты не передашь?
Изображение

mc-colins
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 04.10.2008 (Сб) 20:12

Re: Проблема с WinSock

Сообщение mc-colins » 06.10.2008 (Пн) 3:59

значит нужно парсить файл index.html на тэги картинок. понятно
второй вопрос - какой нужно передавать Content-Type для PNG и JPEG файлов и в какой последовательности (до index.html или после) ?

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

Re: Проблема с WinSock

Сообщение Antonariy » 06.10.2008 (Пн) 9:36

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

mc-colins
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 04.10.2008 (Сб) 20:12

Re: Проблема с WinSock

Сообщение mc-colins » 06.10.2008 (Пн) 12:44

Antonariy
да это веб-сервер. так как мне отдать файлы картинок ?
удаленный хост спрашивает только вот это:
Код: Выделить всё
GET /favicon.ico HTTP/1.1
User-Agent: Opera/9.52 (Windows NT 5.1; U; ru)
Host: xxx.xxx.xxx.xxx
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Referer: http://xxx.xxx.xxx.xxx/
Connection: Keep-Alive

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Проблема с WinSock

Сообщение tyomitch » 06.10.2008 (Пн) 13:34

Неправда.
Нужно иметь в виду, что браузер вправе открывать до 4 одновременных коннекций на один сервер, т.е. одним экземпляром винсок-контрола не обойтись.
Изображение

mc-colins
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 04.10.2008 (Сб) 20:12

Re: Проблема с WinSock

Сообщение mc-colins » 06.10.2008 (Пн) 15:13

извиняюсь. действительно проглядел запросы на картинки.
но вот, что за файл favicon.ico он просит от меня последним запросом ?
если меня не подводит интуиция, то это иконка для моего сайта или нет ?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Проблема с WinSock

Сообщение Хакер » 06.10.2008 (Пн) 15:21

Не подводит.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

mc-colins
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 04.10.2008 (Сб) 20:12

Re: Проблема с WinSock

Сообщение mc-colins » 06.10.2008 (Пн) 15:55

ок. а какой она должна быть ?
16х16х256 или можно отправлять 32-х битную ?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Проблема с WinSock

Сообщение Хакер » 06.10.2008 (Пн) 16:56

Она не обязана быть.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

mc-colins
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 04.10.2008 (Сб) 20:12

Re: Проблема с WinSock

Сообщение mc-colins » 06.10.2008 (Пн) 17:15

разобрался. отправляю 16х16х32 - работает.
подскажите мне plz как отправить запрос на ввод логина и пароля для доступа к защитным частям сервера ?
чтобы пользователь при запросе защищенной страницы видел что-то вроде этого:
login.JPG
login.JPG (14.58 Кб) Просмотров: 1012

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Проблема с WinSock

Сообщение tyomitch » 06.10.2008 (Пн) 17:21

HTTP/1.0 401 Unauthorized
WWW-Authenticate: Basic realm="Secure Area"
Изображение

mc-colins
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 04.10.2008 (Сб) 20:12

Re: Проблема с WinSock

Сообщение mc-colins » 06.10.2008 (Пн) 17:49

tyomitch
после отправки ответа на запрос страницы, браузер выдает ошибку - "Сервер запросил неподдерживаемый метод проверки имени пользователя."
Код: Выделить всё
HTTP = "HTTP/1.0 401 Unauthorized" & vbCrLf & "WWW-Authenticate: Basic realm=" & Chr$(34) & "Secure area!" & Chr$(34) & vbCrLf
Winsock1(Index).SendData HTTP
Winsock1(Index).Close

а если я не закрываю сокет, то окно ввода пароля не выводится до тех пор, пока я не закрою программу сервера.
как мне быть ?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Проблема с WinSock

Сообщение Хакер » 06.10.2008 (Пн) 17:57

1) Так оно всё-таки выводится или не выводится?
2)
Код: Выделить всё
HTTP = "HTTP/1.0 401 Unauthorized" & vbCrLf & "WWW-Authenticate: Basic realm=" & Chr$(34) & "Secure area!" & Chr$(34) & vbCrLf

Этот код ужасен.
3) На твоем месте я бы написал серверную обертку над WinSock-ом. Такую же, как WinHTTP, но не клиентскую, а серверную, чтобы тоже можно было AddHeader, SetStatus, SendCookie и пр. делать универсальным красивым кодом, а не убогой конкатенацией.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

mc-colins
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 04.10.2008 (Сб) 20:12

Re: Проблема с WinSock

Сообщение mc-colins » 06.10.2008 (Пн) 18:09

оно выводится, но только после закрытия программы в vb.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Проблема с WinSock

Сообщение Хакер » 06.10.2008 (Пн) 18:12

4) И почему у тебя в после заголовков всего лишь один раз CRLF?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

mc-colins
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 04.10.2008 (Сб) 20:12

Re: Проблема с WinSock

Сообщение mc-colins » 06.10.2008 (Пн) 18:45

удалось. получаю введенные логин и пароль но в виде абры-кадабры
Код: Выделить всё
GET /secret.html HTTP/1.1
User-Agent: Opera/9.52 (Windows NT 5.1; U; ru)
Host: xxx.xxx.xxx.xxx
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Authorization: Basic YWRtaW46MTIy
Connection: Keep-Alive, TE
TE: deflate, gzip, chunked, identity, trailers

из всего этого я предполагаю, что логин и пароль лежат в "Authorization: Basic YWRtaW46MTIy"
т.к. только этот код меняется при вводе разных логинов и паролей. как его расшифровать в читабельный текст ?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Проблема с WinSock

Сообщение tyomitch » 06.10.2008 (Пн) 18:47

Безумству храбрых поём мы песню.

Эта кодировка называется base64, расшифровщик в поиске.
Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Проблема с WinSock

Сообщение Хакер » 06.10.2008 (Пн) 18:50

Это хеш пароля. Расшифровать — никак, да и не нужно. Нужно на стороне сервера хранить тоже хеши паролей, а не сами пароли.

Added: Хотя нет, не хеш, а просто пара логин:пароль. Меня сбило с толку то, что в файлах .htpasswd хранится именно base64-представление хеша.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Проблема с WinSock

Сообщение tyomitch » 06.10.2008 (Пн) 18:55

Хакер писал(а):Это хеш пароля. Расшифровать — никак, да и не нужно.

ORLY? ;-)
Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Проблема с WinSock

Сообщение Хакер » 06.10.2008 (Пн) 18:56

tyomitch писал(а):ORLY? ;-)

А я успел пометку вставить :)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

mc-colins
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 04.10.2008 (Сб) 20:12

Re: Проблема с WinSock

Сообщение mc-colins » 06.10.2008 (Пн) 19:14

так, я сбился с толку :shock:
если Base64, это функция возвращающая хэш от сочетания login_name:login_password (в моем случае), то значит
мне достаточно будет перекодировать реальные логин и пароль в этот хэш и проверить его на соответствие с тем,
что прислал браузер ?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Проблема с WinSock

Сообщение Хакер » 06.10.2008 (Пн) 19:16

Это не хеш, base64 — это обратимое кодирование.

Можно и так как ты предлагаешь. Можно сделать base64-декодирование и получить строчку "admin:122" и работать уже с ней.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

mc-colins
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 04.10.2008 (Сб) 20:12

Re: Проблема с WinSock

Сообщение mc-colins » 06.10.2008 (Пн) 19:42

спасибо. оба варианта подошли. хотя я больше склоняюсь к base64-декодированию - люблю ясность :D


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: AhrefsBot и гости: 20

    TopList