BigBastis Blog

VB.NET: ICQ Benutzerinformationen auslesen

Introduction

user

Sebastian Gross

Sebastian Gross arbeitet in Bielefeld als Softwareentwickler für .NET und Java im Bereich Web.Als Fan der .NET-Plattform lässt er sich kein Userguppen Treffen und Community Event im Raum OWL entgehen.Dabei hat er eine besondere Vorliebe für das ASP.NET MVC Framework und für das Test Driven Development (TDD) entwickelt.


LATEST POSTS

Handling too long scrollspy menus 10th June, 2015

Java: Create ZIP archive 23rd March, 2015

.NET

VB.NET: ICQ Benutzerinformationen auslesen

Posted on .

In Deutschland ist der Instant Messaging Client ICQ seht weit verbreitet. So könnte man doch ab und zu eine Funktion gebrauchen mit der man prüfen kann, ob ein Benutzer grade am PC ist.

Leider schränkt ICQ uns hier sehr ein und bietet keinerlei Schnittstelleninformationen. So müssen die Entwickler berühmter Clients wie QIP, Miranda oder Trillian die Funktionsweise des Protokolls selbst erarbeiten durch Reverse Engeneering!

Ich bin vor ein paar Tagen aber auf ein interessantes Skript gestolpert, dass die ICQ Webseite wohl intern dazu benutzt den Status der User im Forum und auf der eigenen Homepage darzustellen. Und natürlich können wir diesen auch anzapfen!

Das Skript befindet sich unter dieser Adresse: http://www.icq.com/js/pcc.php?Uin=[ICQNUMMER]

Ruft man diesen Link mit einer gültigen ICQ Nummer am Ende auf so erhält man ein großes Wirwar an Informationen die aber leider nicht geordnet dargestellt werden!

Auch wenn es nicht alle Informationen sind, die ICQ über einen speichert, so kann man mit den Daten trotzdem schon was anfangen!

icqcheckBild 1: Das ICQ Tool – und ja: Diese ICQ Nummer gibts wirklich

So kann man neben Status und Namen auch das Bild des Benutzers abfragen. Aber nur das Bild, das der User im Forum verwendet (glaube ich).

Desweiteren kann man nicht von allen Benutzern den Status abfragen. Ich vermute, das liegt daran dass diese Benutzer erst eine Autorisierung verlangen bevor sie den Status preisgeben.

Der Programmierteil beschränkt sich hierbei auf das Filtern der Informationen die man durch den Aufruf des oberen Links bekommt:

    Private Function getICQInfos(ByVal uid As String) As String()
        Dim Infos() As String
        Dim retVal(8) As String
        Dim web As WebClient = New WebClient

        Infos = web.DownloadString("http://www.icq.com/js/pcc.php?Uin=" & uid).Split(vbNewLine)

        'Zeile  - Inhalt
        '3      - fullname
        '6      - userinfo
        '9      - onlinestatus
        '10     - email
        '11     - handynummer
        '13     - homepage
        '14     - icq uin
        '16     - userphoto
        '17     - hausnummer
        '18     - useronlineicon
        '19     - nickname

        'Vor und Nachnamen laden
        retVal(0) = Infos(3).Substring(Infos(3).IndexOf("""") + 1, _
                    Infos(3).Length - 3 - Infos(3).IndexOf(""""))
        'Benutzerbeschreibung7)
        retVal(1) = Infos(6).Substring(Infos(6).IndexOf("""") + 1, _
                    Infos(6).Length - 3 - Infos(6).IndexOf(""""))
        'Online Status als Zahl
        retVal(2) = Infos(9).Substring(Infos(9).IndexOf("""") + 1, 1)
        'E-Mailadresse
        retVal(3) = Infos(10).Substring(Infos(10).IndexOf("""") + 1, _
                    Infos(10).Length - 3 - Infos(10).IndexOf(""""))
        'Homepage
        retVal(4) = Infos(13).Substring(Infos(13).IndexOf("""") + 1, _
                    Infos(13).Length - 3 - Infos(13).IndexOf(""""))
        'Benutzerfoto URL 'jaja ich weis coole formel
        retVal(5) = Infos(16).Substring(Infos(16).IndexOf(""") + 6, _
                    (Infos(16).Length - (Infos(16).IndexOf(""") + 6)) _
                    - (Infos(16).Length - (Infos(16).IndexOf("" "))))
        'User Online Icon URL
        retVal(6) = Infos(18).Substring(Infos(18).IndexOf("""") + 1, _
                    Infos(18).Length - 4 - Infos(18).IndexOf(""""))
        'Nickname
        retVal(7) = Infos(19).Substring(Infos(19).IndexOf("""") + 1, _
                    Infos(19).Length - 3 - Infos(19).IndexOf(""""))

        web.Dispose()

        Return retVal
    End Function

Ich habe hier in dem Beispiel nicht alle Informationen gefiltert, aber für die Demo hier wirds wohl reichen!

Habt ihr auch schon mit solchen ICQ Skripts herumexperimentiert? Schreibt ein Kommentar mit euren Tools.

Das Demoprojekt gibts hier: Download

profile

Sebastian Gross

http://www.bigbasti.com

Sebastian Gross arbeitet in Bielefeld als Softwareentwickler für .NET und Java im Bereich Web.Als Fan der .NET-Plattform lässt er sich kein Userguppen Treffen und Community Event im Raum OWL entgehen.Dabei hat er eine besondere Vorliebe für das ASP.NET MVC Framework und für das Test Driven Development (TDD) entwickelt.

There are no comments.

Kommentar verfassen

View Comments (0) ...
Navigation