Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.26;
Скачать: CL | DM;

Вниз

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

 
Дремучий ©   (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;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.011 c
6-85641
Александр_
2002-07-22 17:06
2002.09.26
И снова Proxy


14-85683
zxas
2002-09-01 20:39
2002.09.26
Документация по ADO


4-85755
Aydar
2002-08-11 02:53
2002.09.26
Always on Top


1-85457
BillyJeans
2002-09-16 10:44
2002.09.26
как блокировать повторный запуск?


4-85745
Meow
2002-06-11 12:36
2002.09.26
Количество страниц, распечатанных принтером