Einen kleinen Mini-ICQ Client schreiben...

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Einen kleinen Mini-ICQ Client schreiben...

Beitrag von AND51 »

Hallo!

Ich habe mich hier bereits im Forum umgesehen, wie ich evtl. einen ICQ Clienten schreiben könnte. Dabei bin ich auf das OSCAR Protokoll gestoßen (http://forums.purebasic.com/german/view ... +protokoll). Ich habe zwar schon einen ICQ Bot, den ich auch so halbwegs nach meinen Wünschen konfiguriert habe, aber aus bestimmten Gründen bin ich damit nicht zufrieden. Außerdem ist es sowieso toller, einen "eigenen ICQ Clienten" zu haben.
Das OSCAR Protokoll kann hier eingesehen werden: http://iserverd.khstu.ru/oscar/.

Jedenfalls ist mir das OSCAR Protokoll zu kompliziert. Allein schon dieser Befehl: CLI_IDENT. Ich weiß weder wozu der gut ist, noch, warum man so viele Date übermitteln muss, wie auf der Seite http://iserverd.khstu.ru/oscar/cli_ident.html ganz unten angegeben. Jedenfalls macht mein bisheriger Bot genau das gleiche, das sieht man, wenn man sich den Bot hier http://www.digitalcheese.com/downloads/AI_Bot_Hal.zip herunterläd. Stellt man ihn bei "Debug Mode" auf 3, dann erscheinen in dem Konsolenfenster dieselben Hyroglyphen, wie die bei der "CLI_IDENT" Seite ganz unten.

Meine frage ist eigentlich nur, ob mir jemand weiterhelfen kann. Weiterhelfen insofern, als das jemand vielleicht so ein Projekt mal angefangen, aber eingestellt hat und mr so weiterhelfen kann. Codeschnipsel wären auch nicht schlecht. Oder andere Internetseiten, wo's auch einfacher geht. Oder ganz einfach eine fertige Lib ;-) . Naja, es reicht aber auch schon, wenn mir einer das so erklären könnte dass ich das OSCAR Protokoll halbwegs verstehe und selbst loslegen kann. Zum "Dank" sozusagen will ich das, was dabei "rauskommt" auch veröffentlichen als Open-Source (hoffe, die Bezeichnung ist für ein offenes, durch Dritte erweiterbares Projekt richtig).

Dankeschön, AND51

P.S.: Wem's leichter fällt, mir zu helfen, wen er einen Bot/Client schon in Delphi geschrieben hat, der schaue sich http://sourceforge.net/project/showfile ... _id=135444 an; das ist ein kleiner, richtiger ICQ Client. Dort findet ihr die lauffähige EXE sowie den Delphi Code (hhabe ich mir schon angeschaut). Remember, ich benüge mich ja schon mit einem automatisch, quasi auf bestimmte Befehle antwortenden Bot!

Edit / Added: Bin grad auf den Sourcecode von Miranda gestoßen: http://www.miranda-im.org/release/download.php Darf ich den benutzen? Bzw. weiß einer, wie ich das nutze? Sind lauter *.c Dateien im Surce zip archiv verz. : \protocols\icqoscarj !!
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Is ja witzig... ich bin auch seit dieser Woche am OSCAR-Protokoll.
Wusste nicht mal, dass es hier mal nen Thread darüber gab. Da hätte ich mir die anfängliche Suche ja sparen können...

Naja, nix desto trotz hast du eigentlich alle Infos, die du brauchst. Kompliziert ist das Protokoll auch nicht, ich würde eher sagen es ist überladen.
Viele der Anfragen/Antworten scheinen mir irgendwie quatsch zu sein und ich kann mir beim besten Willen nicht vorstellen, dass der Server diese tatsächlich auswertet. Aber dennoch muss man diesen Mist mitbearbeiten.

Ich hab nicht schlecht gestaunt, was da für nen Wust an Anfragen/Antworten bei einem simplen Login abgehen.

Im übrigen wird das bei mir in ne dll gewurstet, damit mein TomaHawK dann irgendwann auch das ICQ-Laufen beherrscht.

Die dll wird dann irgendwann mit ner Anleitung angeboten werden, damit auch andere in den Genuss kommen. (So gesehen wird TomaHawK nur noch ein simples Beispiel werden).

So is mal die (inoffizielle) Planung. Wie es später dann wird, wissen die Götter, und wann das dann ist, steht auch in den Sternen, da ich RL-bedingt nur tröpfleweise da rumcode.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Hi!
Danke für deine Antwort. Verstehe ich das richtig, dass du (fast) dasselbe wie ich vorhast und später dein "ICQ Ergebnis" veröffentlichen willst?
So dass ich das auch nutzen könnte?

Naja. Ich finde das trotzdem kompliziert. Schau die mal die CLI_IDENT Seite gnz unten an. Das muss man senden um <wofür?>. Das sieht mir reichlich kompliziert aus, oder kannst du mir das etwas erklären?
Wäre ja auch schon etwas.

Bzgl. OSCAR & uns: Geteiltes leid ist halbes Leid... :wink: :roll:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

AND51 hat geschrieben:Hi!
Verstehe ich das richtig, dass du (fast) dasselbe wie ich vorhast und später dein "ICQ Ergebnis" veröffentlichen willst?
So dass ich das auch nutzen könnte?
Exakt!
Aber wie ich bereits sagte: Es kann ne ganze Werile dauern, da ich:
1.) Nen irren Job habe
2.) Irre Kumpelz habe, die immer und überall mit mir saufen wollen *g*
3.) Ne liebeshungrige Freundin daheim habe...

Wenn du warten kannst gut, wenn nicht, musst du dich alleine durchbeissen.

Was dieses CLI_IDENT betrifft:
Also was is denn da speziell unklar ?
Du schickst deine UIN, ein per Pipifax-Algo "codiertes" Passwort.
Den ganzen anderen Mist, wie Client ID, Major Version, Minor Version ... kannst du ruhigen Gewissens von ICQ abkupfern (oder auch Miranda, die haben das so wie es aussieht genauso gemacht.)

Im Prinzip gehts darum, dass der Server sieht, ob du eventuell mit einem älteren Client und somit älteren Version des Protokolls daherkommst und er dann entsprechend darauf reagieren kann.

Da du ja jetzt im Moment mit deinem Client anfängst, benutzt du natürlich auch die letzte Version des Protokolls und kannst daher vom neuesten ICQ- bzw. Miranda-Client abkupfern.

Das was danach mit den ganzen SNAC's abgeht ist dann aber wirklich der Irrsinn ;)
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Hallo!
Also, ich hacke nur auf dieses "CLI_IDENT" rum, weil auf der Seite als beispiel dieselben kryptischen Sachen unten stehen, wie in meinem bishereigen Bot. Ich habe bisher noch ***gar nicht*** damit angefangen, ich sammel nur Infos.
Wenn du warten kannst gut, wenn nicht, musst du dich alleine durchbeissen.
Ja, es kommt drauf an, wie lange. Ich will dich da keinem Druck aussetzen doer so, aber wie weit bist du denn schon, und so?

ich hatte gedacht, ich arbeite so, dass das fertige Produkt ganz einfach zu bedienen ist: Ich stelle mir das (mein oder dein) Endprodukt so vor:

Code: Alles auswählen

InitICQ()
ICQ_Login("username", "Passwort")
ICQ_SendMessage("meine nachricht", 235391151) ; ICQ Nummer (meine)
Debug ICQ_ReceiveMessage()
ICQ_SetStaus(1) ; 1=Online, 2=Away... usw...
Sowas halt... ist zwar ne Menge arbeit, aber ich begnüge mich ja -wie ich sagte- mit einem "Bot", der auf eingehende Nachrichten antwortet.

Ich meine, mal gehört zu haben, dass die *.c Dateien des Source Codes von Miranda (Link siehe oben) irgendwie sich mit PureBasic verarbeiten lassen. Ich weiß nicht mehr genau... Ob die sich vllt. sogar in eine UserLib konvertieren lassen? Oder ich meine, man könnte das irgendwie in PB nutzen... Naja.

HeXOR, wenn es noch allzulange dauert, dann versuch ich es schon mal allein, aber dann wäre es nett, wenn du mir ein kleines bisschen helfen könntest. funktionsübersicht, welche Daten wie senden... etc, etc...

THX, AND51 :allright:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

AND51 hat geschrieben:Hallo!
ich hatte gedacht, ich arbeite so, dass das fertige Produkt ganz einfach zu bedienen ist: Ich stelle mir das (mein oder dein) Endprodukt so vor:

Code: Alles auswählen

InitICQ()
ICQ_Login("username", "Passwort")
ICQ_SendMessage("meine nachricht", 235391151) ; ICQ Nummer (meine)
Debug ICQ_ReceiveMessage()
ICQ_SetStaus(1) ; 1=Online, 2=Away... usw...
Sowas halt... ist zwar ne Menge arbeit, aber ich begnüge mich ja -wie ich sagte- mit einem "Bot", der auf eingehende Nachrichten antwortet.
Jo, so ähnlich wirds dann wohl auch werden...
AND51 hat geschrieben:HeXOR, wenn es noch allzulange dauert, dann versuch ich es schon mal allein, aber dann wäre es nett, wenn du mir ein kleines bisschen helfen könntest. funktionsübersicht, welche Daten wie senden... etc, etc...
Ehrlich gesagt wäre es mir sogar lieber, wenn du darauf nicht warten würdest.
Es ist im Prinzip bis jetzt nichts als Spielerei.
Je nachdem ob ich irgendwann gegen ne Wand renne, mir das ganze zu umständlich wird oder UnrealTournament2007 plötzlich in meinem Briefkasten liegt, würde das ganze in erheblichem Masse zurückgeworfen werden.
Oder evtl. sogar ganz entsorgt.

Das ist das schöne am Just4Fun-coden... Keine Meute von hungrigen Kunden, deren heissen Atem du die ganze Zeit im Genick hast...

Was das "bisschen helfen" betrifft... ich bin nicht wirklich ein guter Teamspieler, ausser du hältst vielleicht gerade die gegnerische Flag in Händen... ;)
Benutzeravatar
Lukas-P
Beiträge: 262
Registriert: 07.10.2004 12:03

Beitrag von Lukas-P »

hmm ich hab keine idee wie ich sowas anfangen sollte zu coden!

kannst du mal irgendein beispiel davon hier posten??

währe nett :allright:
Nik
Beiträge: 132
Registriert: 04.02.2005 19:57

Beitrag von Nik »

Da ich ja selber an nem Instant messenger arbeite der ja auch in purebasic geschrieben ist und auch schon ziemlich gut funktioniert. Bin ich natürlich auch an dem ICQ Zeug interessiert wobei für mich da vorallem das was bei Jabebr Transports heißt interessieren würde. Mal schaun wies weitergeht.
www.KoMaNi.de
Eine kleine Gruppe von Hobby Programmierern, die gerade einen Instant Messenger natürlich in PureBasic schreiben.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

HeX0R hat geschrieben:Ehrlich gesagt wäre es mir sogar lieber, wenn du darauf nicht warten würdest.
Es ist im Prinzip bis jetzt nichts als Spielerei.
Je nachdem ob ich irgendwann gegen ne Wand renne, mir das ganze zu umständlich wird oder UnrealTournament2007 plötzlich in meinem Briefkasten liegt, [...])
Haha :lol: Cool! 8) Bei dem rest, den du egschrieben hast, kann ich dir nur zustimmen.
Aber sag mir mal, wie etabliere ich eine Verbidnung zum Server login.icq.com:5180 ? Was sind die ANfangsdaten, die ich senden muss, und welche kommen zurück (Wenn ich mir erstmal nur einloggen will...) So wie ich das versteh, msuss ich die Daten doppelt senden: In DWord Werten und als String ??!?!?!?!?!?!?!?!?!?!???
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Du connectest einfach auf den Server, dann bekommst du ein Hello zurück:

Code: Alles auswählen

2A 01 5C 15 00 04 00 00 00 01
Daraufhin sendest du dieses CLI_IDENT-Geraffel (ohne Cookie zurück) und bekommst ein DISCONNECT-Signal mit neuen Serverdaten und einem "Cookie" zurück.

Das Cookie speicherst du und connectest neu zu den angegebenen Serverdaten.

Du erhältst wieder ein Hello (s.o.)
Diesmal sendest du ein Hello + das gespeicherte Cookie zurück.

Ab jetzt geht der SNAC-Irrsinn los...
Antworten