Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2002.09.26;
Скачать: [xml.tar.bz2];

Вниз

Смесь бульдога с носорогом.... :)   Найти похожие ветки 

 
Дремучий   (2002-07-16 09:54) [0]

CHAT и ICQ...
Суть такова - доступ к чатам запрещен. Аська не работает!
А хочется пообщаться допустим с каким-то близким человеком...
:))

И что б все было в рамках приличия.
Исходя из этого хочется написать что-то типа клиета "чата-аськи", который бы работал по протоколу HTTP и в передаваемых ссылках выдавал что-то очень приличное - ...delphicomp..., ...vcllib... и т.п.
условия такие - этот клиент должен работать для двух компов, которые работают через прокси.
Вопрос -
1)можно ли обойтись без сервера и без использования сокетов.
2)можно ли в качестве сервера использовать халявный хостинг + соответствующие скрипты. Если да, то на чем должны быть написаны скрипты и в каком направлении копать.
3)какие будут альтернативные решения такой задачи.

Нужен не троян, а завуалированный чат по HTTP.
Заранее благодарен за любую инфу.


 
Digitman   (2002-07-16 10:17) [1]

>>можно ли обойтись без сервера и без использования сокетов
Нельзя.

>>какие будут альтернативные решения такой задачи.
Для начала поясни :
- что значит "аська не работает" ?
- какой прокси ? каковы параметры коннекта аськиного клиента - хост, адрес, порт, протокол ?


 
Дремучий   (2002-07-16 10:35) [2]


> >>можно ли обойтись без сервера и без использования сокетов
> Нельзя.

нужен и сервер и сокеты или
только сервер
только сокеты
?
устроят ли порты HTTP?


> >>какие будут альтернативные решения такой задачи.
> Для начала поясни :
> - что значит "аська не работает" ?
> - какой прокси ? каковы параметры коннекта аськиного клиента
> - хост, адрес, порт, протокол ?

порты аськи закрыты на прокси-сервере
прокси как прокси, а какие бывают?
через этот прокси из локалки можно к инету конектится.

хост, адрес, порт?
чьи?

протокол ?
хочется все сделать через HTTP.

по сути обыкновенный чат, только чтобы
1)не небыло визуального представления в виде веб-страницы, чтобы все работало только через клиента
2)замаскированость посылок Get и Post
3)без лишних сокетов (и по возможности без сервера - хотя это наверное невозможно).




 
Digitman   (2002-07-16 10:51) [3]

Использование спецификации Winsock в любом случае обязательно.

Необходимость реализации сервера зависит только от необходимости реализации собственного, нестандартного логического протокола инф.обмена.

Хост, адрес, порт, протокол - все то, что ты указываешь в меню Preferences | Connections аськиного клиента перед попыткой выйти в онлайн. Не думаю, что админ твой перекрыл доступ ко всем существующим аськиным серверам. Поищи в сети инф-цию об альтернативных ICQ-серверах и параметрах коннекта к ним , возможно, это прокатит и нужда изобретать велосипед отпадет.

Вызовы Get() и Post() замаскировать невозможно, с какими бы параметрами они не вызывались. Но что-то сомневаюсь я , что твой админ перекрыл доступ ко ВСЕМ чат-порталам : чатов всевозможных - пруд пруди, и скрипт каждого тем или иным образом отличается (не смотря на то, что Get() и Post() в любом случае присутствуют - а как иначе-то при HTTP ?)


Что значит - "без лишних сокетов" ? Как минимум одно гнездо клиент должен создать для обмена по тому или иному низкоуровневому протоколу с существующим сервером


 
Дремучий   (2002-07-16 11:07) [4]


> Использование спецификации Winsock в любом случае обязательно.
....
> Что значит - "без лишних сокетов" ? Как минимум одно гнездо
> клиент должен создать для обмена по тому или иному низкоуровневому
> протоколу с существующим сервером

так я и не против, но только хочу использовать "легальный" порт HTTP


> Не думаю, что админ твой перекрыл доступ ко всем существующим
> аськиным серверам. Поищи в сети инф-цию об альтернативных
> ICQ-серверах и параметрах коннекта к ним , возможно, это
> прокатит и нужда изобретать велосипед отпадет.

Возможно и не все порты закрыл, но зато время от времени отслеживает активность всех остальных. Рано или поздно можно попасть под разадачу. :)) Не хочеться подставлять ж...


> Вызовы Get() и Post() замаскировать невозможно, с какими
> бы параметрами они не вызывались.


> Необходимость реализации сервера зависит только от необходимости
> реализации собственного, нестандартного логического протокола
> инф.обмена.


но ведь можно перед передачей клиентом шифровать сообщения,
а при получении расшифровывать.

например дать в get такую ссылку
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1026798864&n=4
еще лучше под torry замаскировать...
получить зашифрованный текст, расшифровать, вывести клиентом на екран. При просмотре ссылки в браузере - выдавать например какую-т0 лабуду или делать переадресацию на какие-то "нормальные" динамические ссылки.

Нужен ли для этого сервер? или можно как-то напрямую?
если сервер объязателен - какие примерно должны быть скрипты?





 
Digitman   (2002-07-16 11:22) [5]

Если ты принимаешь решение о некоей (тем паче - нестандартной)шифрации потоков данных, коими должны обмениваться клиент и сервер, то ни о каком HTTP уже речи быть не может : ты должен реализовать собственный сервер, обходящийся без классического гипертекстового скрипта и понимающий ту шифрованную галиматью, что ему шлет клиент.
Т.е., клиент и сервер должны работать "на одной волне" и понимать друг-друга : если некий сервер предоставляет стандартный сервис на 80-м порту, то никаких "выкрутасов" со стороны клиента он просто не поймет.


 
Дремучий   (2002-07-16 12:26) [6]


> Digitman ©


> Если ты принимаешь решение о некоей (тем паче - нестандартной)шифрации
> потоков данных, коими должны обмениваться клиент и сервер,
> то ни о каком HTTP уже речи быть не может

отчего же ? Я не отказываюсь от get & post, я просто буду передавать и принимать всякую ерунду, а расшифрововать их на месте. Вопрос я так понимаю за сервером...
Сервер, должен принять сообщение от одного клиента, а потом по запросу второго - переслать на его машину, где уже и будет происходить расшифровка.

я не собираюсь шифровать протокол, мне достаточно зашифровать-замаскировать сообщение.



 
Дремучий   (2002-07-16 12:36) [7]


> если некий сервер предоставляет стандартный сервис на 80-м
> порту, то никаких "выкрутасов" со стороны клиента он просто
> не поймет.


напрмер, на запрос клиента возвращается какая-то стандартная(динамическая) веб-страница, у которой в коментариях джава-скрипта - зашифровано мое сообщение - чем не выкрутас?
разве HTTP такого не допустит?
а клиент - выделяет комментарий - делает дешифрацию и отбражает на экране... И все красиво!




 
Digitman   (2002-07-16 12:59) [8]

Ну тады сервер писать-таки придется.
Только вот админу твоему злобному, думаю, по барабану будет это - время от времени, как ты говоришь, он будет-таки контролировать твою активность и , обнаружив регулярное присутствие в Get()/Post() одних и тех же "зашифрованных" ссылок (обратиться к которым для проверки на предмет "это че еще за фигня такая непонятная ?"), просто порвет все твои труды как тузик грелку, заткнув тем самым (без какого-либо "умственного напряжения") очередную "дыру" )


 
Дремучий   (2002-07-16 13:57) [9]


> Только вот админу твоему злобному, думаю, по барабану будет
> это - время от времени, как ты говоришь, он будет-таки
> контролировать твою активность и , обнаружив регулярное
> присутствие в Get()/Post() одних и тех же "зашифрованных"
> ссылок (обратиться к которым для проверки на предмет "это
> че еще за фигня такая непонятная ?"), просто порвет все
> твои труды как тузик грелку, заткнув тем самым (без какого-либо
> "умственного напряжения") очередную "дыру" )


в том то и весь фокус...
сделать не только шифрованные сообщения, а замаскированные...
так например сссылка подозрения не вызовет никакого подозрения...
так как непосредственно связана с програмированием.
http://delphi.mastak.ru/cgi-bin/forum.pl?n=4&look=1&id=1026798864&from=5
1)берем хостинг на мастаках :))
2)оформляем например домен http://delphivcl.mastak.ru/
3)при передачи сообщения выдаем для браузера html-код страницы
DELPHI - VCL!!!
САЙТ ПЕРЕЕЗЖАЕТ НА НОВОЕ МЕСТО ЖИТЕЛЬСТВА!
+ закодированные сообщения чата в тех же коментариях.

то что админ не будет смотреть исходник странички это точно,
a если и посмотрит, так туда(в коментарий) можно всяких крутостей для вида накидать
типа "Borland","Inprise" и т.п.

Таким оброзом остается "один" вопрос
на чем и как написать сервер такого чата?

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



 
Digitman   (2002-07-16 14:47) [10]

В таком случае какая разница - на чем писать ? Да хоть вручную ! Тебе же скрипт нужен, коль скоро хочешь-таки халявным Web-хостингом воспользоваться. На большее и не расчитывай - никто не пустит тебя со своей , например, DLL, открывающей порт, через который будет (с т.з. предоставиттеля услуг хостинга) черт-те что транслироваться/обрабабатываться/исполняться. Но скрипт как таковой (любой, imho, исполняющей системы хостинга) даст тебе очень мало возможностей по реализации каких-то нестандартных задач, с тем же шифрованием, к примеру, связанных. Да и не делает никто такие вещи в текстах скриптов - крайне неэффективно это и неразумно


 
savva   (2002-07-16 15:31) [11]

простите что вмешиваюсь, но у меня погожая задача, и в процессе решения ее я столкнулся с проблемами..
Задача: организовать общение через HTTP-proxy (SOcks закрыт админом из соображений одному ему понятных)
Путь по которому я пошел: для соединения (я так понимаю, открытия сокета) формирую TCP пакет:

const
HTTP_Data =
"Content-Type: application/x-www-form-urlencoded"#10+
"User-Agent: Chat Client By Savva (savva@nm.ru)"#10+
"Host: unknown.net"#10+
"Connection: Keep-Alive: off"#10;

......

if chUseProxy.Checked then begin
{-- Начало прокси ---}
ClientSocket1.Host := edProxyServer.Text;;
ClientSocket1.Port := StrToIntDef( edProxyPort.text,3128);
HTTP_POST := " http://"+edWebServer.Text+":"+edWebPort.text+#10;
{--- Конец прокси ---}
end else begin
{--- Начало соединения напрямую --- }
ClientSocket1.Host := edWebServer.Text;
ClientSocket1.Port := StrToIntDef( edWebPort.text,3000);
HTTP_POST :=#10;
{--- Конец соединения напрямую ---}
end;

потом HTTP_Data и HTTP_POST соединяем и посылаем .. коннект проходит нормально: клиент от сервера получает пригласительное сообщение. НО: тут начинаются проблемы - если напсать сообщение от сревра клиенту - то клиент получает сообщение, если же клиент шлет текст - тишина как в гробу.. Тут наверняка я не знаю каких то тонкостей..

Уважаемый Сергей, вы неоднократно помогали мне в вопросах по MIDAS, не сожете ли в этот раз разъяснить ситуацию?

PS. Причин не использовать аську достаточно для попытки написать свою чат-программу :)))


 
Digitman   (2002-07-16 16:13) [12]

>savva

Честно признаюсь : скрипты и собственно HTTP - не моя епархия, просто никогда не занимался этим вплотную, поскольку просто не было необходимости (иные у меня задачи повседневные). А вот на абстрактном гнездовом транспортном уровне (без привязки к собственно HTTP) - тут еще порассуждать могу.

Так где же код, в котором клиент что-то пытается послать серверу ? Заведи новую ветку ... Желательно ...



 
savva   (2002-07-16 16:49) [13]

На абстрактном гнездовом транспортном уровне скорее всего у меня работает.. потому как локально (в локальной сети) все работает и отсылается.. Код привести не могу - с чужой машины пишу..
Использую стандартные компоненты TclientSocket и TServerSocket.
Отслыка сообщений с помощью метода SendText и со стороны сервера и со стороны клиента. Как я уже говорил, в локальной сети нормально все.
При том способе что я уже частично реализовал происходит следующее (как я себе это представляю):
Клиент формирует пакет->Прокси откидывает часть, указывающую на него и осаток отсылает адресату->Программа-сервер получает от прокси пакет (при этом возникает событие коннекта клиента)
то есть на завершении этой цепочки, по моим скромным умозаключениям, между сервером и клиентом должен быть открытый сокет. В этот самый сокет сервер выполняет SendText успешно, но клиент этого повторить не может...
PS. Ветку новую открою когда вернусь домой из командировки.
PSS. Может в аську потом можно будет постучаться?


 
Digitman   (2002-07-16 16:57) [14]

>savva

Все это понятно и вроде бы вполне логично. Но не ясно, зачем в этой схеме TServerSocket на клиентской стороне ? Для чего он ? Транспортный канал-то уже существует между TClientSocket клиентского процесса и TServerSocket серверного...


 
savva   (2002-07-16 17:03) [15]

> Digitman © (16.07.02 16:57)
да нету у клиента TServerSocket :)) немного неточно я наверное сказал.. "Использую стандартные компоненты TclientSocket у клиента и TServerSocket у сервера."
И транспортный канал существует какой то корявый.. в одну сторону :)). Ладно, пока не буду надоедать, тем более что кода у меня под рукой нет, а без него вопросы плохие получаются...
В пятницу, когда вернусь, с утра открою новую ветку и буду с нетерпением ждать от Вас ответов или разъяснений, Сергей.

Мне пора, удачи!


 
Digitman   (2002-07-16 17:25) [16]

Тебе того ж)


 
Дремучий   (2002-07-16 18:47) [17]

что ж и я могу подождать до пятницы...
интерсно...
задачка то схожая.
:))

2savva
если, что получиться - мыльни.
:)


 
savva   (2002-07-19 11:15) [18]

>Дремучий © (16.07.02 18:47)
Договорились...


 
savva   (2002-07-19 14:34) [19]

>Дремучий
если ты вдруг накопаешь - напиши письмецо - у меня щас отпуск начинается - и я буду в разлуке с инетом :))) и вообще компом :)))


 
John Kayfolom   (2002-07-23 12:20) [20]

Я делал когда то вот так: бесплатный хостинг с доступом по ftp, писал клиента ftp который мою мессагу помещал на сервер в виде файла и загружал файлы с новыми мессагами от других юзеров(имя файла - имя юзера+дата-время создания).



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2002.09.26;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.007 c
1-85449
аксянов
2002-09-16 10:20
2002.09.26
обработчик


1-85597
hort
2002-09-13 22:52
2002.09.26
Можно ли hlp-файл скомпилировать внутрь exe-файла программы?


1-85475
VaS
2002-09-16 13:59
2002.09.26
IDL, size_is()


1-85600
Fog
2002-09-14 13:40
2002.09.26
Key


1-85490
der
2002-09-16 09:24
2002.09.26
просмотр RTF





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский