ICQ клиент

Обсуждение проектов наших жителей.
Вы можете выставить проект на тест или найти помощников для его реализации.

Модератор: BV

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

ICQ клиент

Сообщение SSecurity » 24.06.2005 (Пт) 7:30

Привет, парни и девченки!

Хотю замутить ICQ клиент под Васике:) Шарился в сети там все тот же пример нерабочий, знаю что хотят многие. Предлагаю разработать вместе и онлайн.
Уверяю, что сделать все реально. Все что касается вопросов на тему в Басике нет таких типов - бред сивой кабылы. При опаределенном желании сделать можно все ччто угодно, просто мало кто хочет руки пачкать, всем сразу и готовое подавай.

Есть вариант реализации аси на Делфи через сокет, есть описание протокола, есть разжеванное "ежу понятным языком" описание как написать программу которая коннектится и есть Огромное желание написать всеже ету вещь с нуля без всяких там активиксов и контролов на стандартных компонентах.

Почему бы не начать?

Вот для начала: http://icq2000cc.hobi.ru

Тут все, но только на Делфе, впрочем это не проблема, для нас главное понять суть и научится формировать и читать FLAP, SNAC и TVL пакеты.
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 24.06.2005 (Пт) 7:49

Вообщем читаем и вникаем, все чем ася обменивается это FLAP пакеты. FLAP-пакет состоит из заголовка в 6 байт и данных подробнее можно посмотреть http://icq2000cc.hobi.ru/page1.html

после простого эксперемента можно предстваить его так:
Код: Выделить всё
'## описания каналов связи
Public Enum ChannelID
    chn_Connection = 1
    chn_DataSwap = 2
    chn_Error = 3
    chn_Disconnect = 4
End Enum

'## описания FLAP-пакета
Public Type FLAP
    flp_CmdStart As Byte       '## обычно = 0
    flp_Channel As ChannelID     '## описан ранее
    flp_SeqNumb As Long     '## номер запроса (нужно 2 байта от 0 и до 65 тыс.)
    flp_DataFldLen As Long     '## размер данных (нужно 2 байта от 0 и до 65 тыс.)
    flp_Data As String        '## сами данные 
End Type


Просто добавим Winsock контрол на форму, назавем его Net; 1 кнопку и ТекстБокс.

далее код:
Код: Выделить всё
Dim Buffer As String
Dim SwapSize As String

Private Sub Command1_Click()
    Buffer = ""
    net.Close
    net.Connect "login.icq.com", 5190
End Sub

Private Sub net_DataArrival(ByVal bytesTotal As Long)
    Dim A As String
    net.GetData A
    Text1 = ""
    For i = 1 To Len(A)
      Text1 = Text1 & Format(Hex(Asc(Mid(A, i, 1))), "00") & " "
    Next i
    Caption = Len(A)
    net.Close
End Sub


у меня сервак аськин прислал в ответ вот что:
00 01 1E 3F 00 04 00 00 00 01

красный - это заголовок а 00 00 00 01 - данные:)
в данном случае ответ 00 00 00 01 трактуется как приглашение к авторизации.
Можем разобрать заголовок: 00 01 1E 3F 00 04
00 - это команда
01 - канал соединения
1E 3F - номер запроса
00 04 - количество полезных данных (в данном случае 4 байта)

Пока все просто.
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 24.06.2005 (Пт) 10:24

В топике я не нашёл слова "протокол". Странно...

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 24.06.2005 (Пт) 10:28

Протокол есть... осталось лишь собрать, я думаю классами каждый пакет обозначить. Добавить свойства и методы и вперед:)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 24.06.2005 (Пт) 10:33

Будет интересно посмотреть на результат. Какой протокол всё-таки будет использоваться (или поддержка нескольких)?

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 24.06.2005 (Пт) 10:35

Пока думаю на ТСП/ИП... пока в нем попробую:) ... по мере создания покажу:)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 24.06.2005 (Пт) 10:54

Какой именно из TCP-протоколов? На сайте указаны только v7 и v8, но они уже устаревают.

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 24.06.2005 (Пт) 11:08

Для начала сделаю под 7, а там, в принципе ... если правильно организовать все ... то переделать в 8, 9 и т.д. будет не так сложно.
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 25.06.2005 (Сб) 20:37

Эх получилось весьма интересно, авторизацию я прохожу ... на сервисный сервак подключаюсь, а там ... сервер шлет мне SNAC 1,3 но + ещё 2 байта

вот дамп:
Код: Выделить всё
2A 02 FC 2F 00 24
00 01 00 03 00 00 8F C0 C5 6B

00 01
00 02
00 03
00 04
00 06
00 08
00 09
00 0A
00 0B
00 0C
00 13
00 15

00 22

00 22 - по протоколу не проходят

На что я не могу ему ничем ответить:)))
потому как ответный SNAC 1,17 он не принимает
Код: Выделить всё
2A 02 14 B2 00 28                   
00 01 00 17 00 00 00 00 00 00   

00 01 00 03                   
00 13 00 02                   
00 02 00 01
00 03 00 01
00 15 00 01
00 04 00 01
00 06 00 01
00 09 00 01
00 0A 00 01
00 0B 00 01


и что тут делать?
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 26.06.2005 (Вс) 19:27

вважу номер своей аськи, пароль, ник - но почему-то ася не подключается к серверу..... почему?
ХЎ

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 26.06.2005 (Вс) 19:33

d3drm ииии...????
Я вот дамп обмена 2001 и ICQ сервера получил, теперь расковыриваю:)

Кому нужно, могу поделиться:)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 26.06.2005 (Вс) 20:16

что ииии? :D не работает, плохо =)
ХЎ

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 26.06.2005 (Вс) 20:18

И не будет там ошибка есть он на SNAC 1,3 вообще не отвечает тока пишет что ето типа I'm ICQ client:)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 26.06.2005 (Вс) 20:50

Ура ура ... работает .... удается принять все сервисные SNAC начинаю разбираться с приемом и передачей месаг и контакт листом:)))))))

Всем спасибо:)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 26.06.2005 (Вс) 21:44

Давай-давай! Меня данная идея очень интересует!
ХЎ

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 01.07.2005 (Пт) 8:19

Вообщем-то на данный момент ... другая ася видит как я в сеть вываливаюсь:) и может мне сообщения отправлять, а я соответственно их принимать:)


Код: Выделить всё
Connect to login.icq.com:5190
SERVER SEND: LEN - 10
SERVER SEND: LEN - 301
Autorization complite
<== SNAC 0, 0
<== SNAC 1, 3
> SNAC 1,17
<== SNAC 1, 18
> SNAC 1,6
<== SNAC 1, 13
<== SNAC 1, 7
> SNAC 1,8
> SNAC 13,2
> SNAC 13,5
> SNAC 2,2
> SNAC 3,2
> SNAC 4,4
> SNAC 9,2
<== SNAC 2, 3
<== SNAC 3, 3
<== SNAC 4, 5
<== SNAC 9, 3
> SNAC 13,7
> SNAC 2,4
> SNAC 4,2
> SNAC 1,1E
> SNAC 1,2
End service connection :)
<== SNAC 13, 3
<== SNAC 13, 6
<== SNAC 1, F
<== SNAC B, 2
<== SNAC 3, B

<== SNAC 4, 7 - входящая месага
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 09.07.2005 (Сб) 9:42

а ты можешь исходники выложить того, что есть? очень интересно!
ХЎ

Jenizix
Географ
Географ
Аватара пользователя
 
Сообщения: 545
Зарегистрирован: 20.04.2004 (Вт) 20:52
Откуда: Москва

Сообщение Jenizix » 10.07.2005 (Вс) 0:02

Во! Мне тоже интересно!!! Попробую под С++ переписать...
Ушел в себя, вернусь не скоро...

Если вам нужно сделать прозрачной только форму, а контролы на ней нет, то вам сюда!!!

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 10.07.2005 (Вс) 6:08

Вот с Тулы вернусь сегодня вечером и вылажу исходник того, что есть:)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 10.07.2005 (Вс) 19:35

Вот ICQ камасутра на ВБ:)
У вас нет доступа для просмотра вложений в этом сообщении.
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 11.07.2005 (Пн) 21:42

Каковы вопросы и предложения?
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 12.07.2005 (Вт) 10:56

Такс, парни вот что я отрыл:)

во-первых: исправте в функции CnvLongToStr должно быть так

Код: Выделить всё
Function CnvLongToStr(Numb As Long) As String
    CnvLongToStr = ""
    If Numb = -10 Then Numb = 0
    While Numb >= 255
        CnvLongToStr = Chr(Numb Mod 256) + CnvLongToStr
        Numb = Int(Numb / 256)
    Wend
    CnvLongToStr = Chr(Numb Mod 256) + CnvLongToStr
End Function


во вторых, шлется там XML такого содержания:

То, что отправляется снаком 15,2_07В0_0898

<key>ChannelsURL</key>
<key>BannersURL</key>
<key>DataFilesURL</key>
<key>PartnersURL</key>
<key>ReadersURL</key>
<key>CLBannersURL</key>
<key>DomainsURL</key>
<key>LicenseKeysURL</key>
<key>ShowMOTDOnFirstTime</key>
<key>SMSShortSigTail</key>
<key>SMSMedSigTail</key>
<key>SMSLongSigTail</key>
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

JetFighter
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 04.11.2004 (Чт) 23:10

Сообщение JetFighter » 19.07.2005 (Вт) 22:39

очень интересно :) в свое время пытался написать консольный(!) ICQ-клиент для спец-нужд (бота к примеру написать)... писал на вб.нет

единственное чего не хватает для счастья - обработки контакт-листа... к примеру, если я логинюсь под уином, которым пользовались из "родной" ICQ, контакты загружаются. А если пользовались Мирандой - глюки.. вообще очень странно, контакты на серваке хранятся, это факт... вот такая загадка. :twisted:

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 21.07.2005 (Чт) 13:19

Вообщем, у меня получилось!
Получилось заслать себе месагу:)
В чем была моя ошибка ... наверно в кривизне рук:)
Вообщем суть ошибки следующая, чтобы сервер принял все команды нужно чтобы они шли в порядке очереди ... в обработчике

Код: Выделить всё
Private Sub Work_DataArrival(ByVal bytesTotal As Long)
    ...
    BufferA = ""
    gSEQ = gSEQ + 1   '<<< ТУТ ОШИБКА
End Sub

Вообщем если приходила команда а клиент ничего не отправлял в ответ всеравно очередь увеличивалась. Ошибка бональна но много стоила:(
Как Исправить: Легко. Булевское значение в процедуре обявили [NeedMoreIndex], и в тех метах где в ответ на запрос сервера слали сообщение ... делаем NeedMoreIndex = True а внизу соответсвенное
Код: Выделить всё
IF NeedMoreIndex Then sSEQ = sSEQ + 1
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 21.07.2005 (Чт) 17:58

Вот для интересующихся что у меня получилось.
Вписываете ЮИН и ПАРОЛЬ затем внизу можно слать месаги, тока нужно указать УИН получателя.
Во втором текст боксе вводим текст .... и жмем сенд мессадж. короче потыкаетесь
У вас нет доступа для просмотра вложений в этом сообщении.
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 21.07.2005 (Чт) 21:37

The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

alexanderz
Обычный пользователь
Обычный пользователь
 
Сообщения: 64
Зарегистрирован: 16.01.2005 (Вс) 20:30
Откуда: Россия, Пермь

Сообщение alexanderz » 01.08.2005 (Пн) 13:36

gaidar писал(а):ICQ на VB: http://www.localhost.co.nr/

Вообще-то тот ocx написан на vc6, но это не важно :)
http://forum.vbland.net/ - новый форум о программировании на Visual Basic

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 27.09.2005 (Вт) 8:30

Я вот что подумал: если выложить на этом форуме программу сказать, что это ICQ- клиент и поросить потестить, что бы люди забивали туда свой логин и пароль и пытались послать собщение, то можно узнать много новых номеров асек и паролей к ним, при условии, что это программа на самом деле будет их высылать мне. Вот такая мысль, надеюсь понятна. Будьте осторожны :!: .
З.Ы. SSecurity, не подумай чего..
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 27.09.2005 (Вт) 14:28

Подумал ты прально, :)) я тоже про ето подумал ... ведь можно программно отправить сообщение на свой номер с логином и паролем. И зверю ничего не покзать:)
Вообщем я пришел к выводу что ICQ можно как сервис использовать в личных целях.
Собственно я теперь тока знакомым на тестирование даю - они мане доверяют. А Их обманывать грешно:)

Чего-то мне уведомление тока в сентябре пришло:)))
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

След.

Вернуться в Наши проекты

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

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

    TopList