1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Keller-Elite LOGIN-API v3 für .NET

Discussion in 'Tools Allgemein' started by Skyfail, Jan 26, 2014.

Thread Status:
Not open for further replies.
  1. Skyfail

    Skyfail Administrator Staff Member Administrator

    Joined:
    Mar 21, 2013
    Messages:
    854
    Likes Received:
    0
    OFFIZIELLE KELLER-ELITE.COM LOGIN-API

    Mit dieser API könnt ihr euer .NET Programm (Visual Basic ab 2008, C#, etc.) mit einem Keller-Elite Login ausstatten und dadurch euer Programm nur für Keller-Elite User bereitstellen. Außerdem kann so eine einfache Zugangsbeschränkung eingerichtet werden (z.B. bestimmte Teile des Programms nur für Premium Benutzer).

    How to:
    • Anhang downloaden und in das bin Verzeichnis deiner Anwendung packen (Das Verzeichnis, in dem die exe gelagert ist)
    • KE-API.dll in deinem Projekt als Verweis einbinden
    • [tt]Imports KE_API.KEapi[/tt] über [tt]Public Class FormX[/tt] hinzufügen
    • In [tt]Form_Load[/tt] (oder ähnliches) [tt]token = "DEIN TOKEN"[/tt] hinzufügen
    Den Token erhaltet ihr von hoschi111 / »Dr@ke« .


    Funktionen:

    [tt]userCheck(name As String, pwd As String)[/tt]
    Diese Funktion muss vor der Verwendung der API aufgerufen werden. Die Parameter beinhalten den Benutzernamen, sowie das Passwort des Benutzers.

    Rückgabewerte:
    • [tt]System.Exception: No Network connection found[/tt] Tritt auf, wenn keine Internetverbindung vorhanden ist
    • [tt]System.Exception: Could not Ping Keller-Elite.com[/tt] Wenn der Ping zu Keller-Elite.com fehlschlägt
    • [tt]System.Exception: Failed to establish a secure Connection[/tt] Das SSL-Zertifikat des KE-Servers wurde verfälscht
    • [tt]System.Exception: Streaming Error[/tt] Die Informationen konnten nicht abgefragt werden
    • [tt]System.Exception: Incorrect Login[/tt] Die Login-Daten des Benutzers sind falsch
    • [tt]System.Exception: Incorrect Token[/tt] Der angegebene Token wurde vom Server zurückgewiesen
    • [tt]System.Exception: No HTTPS[/tt] Die Verbindung zum Server war unverschlüsselt
    • [tt]System.Exception: Formatting Error[/tt] Ein unbekannter Fehler trat beim setzen der Variablen auf
    • [tt]System.Exception: Request took too long[/tt] Der Request hat länger als 20 Sekunden gebraucht
    • [tt]System.Exception: Checksum wrong[/tt] Die erhaltene Prüfsumme ist falsch
    • [tt]System.Exception: Checksum Error[/tt] Die Prüfsumme konnte nicht berechnet werden
    • [tt]Boolean: True[/tt] Alles in Ordnung
    Variablen:

    Diese Variablen werden durch die Funktion [tt]userCheck [/tt]gesetzt.

    [tt]userInfo.username As String[/tt]
    Der Benutzername

    [tt]userInfo.userID As String[/tt]
    Beinhaltet die ID des Benutzers

    [tt]userInfo.posts As String[/tt]
    Der Postcount des Benutzers (zum umwandeln in Integer: [tt]CInt(userInfo.posts)[/tt])

    [tt]userInfo.registrationDate As DateTime[/tt]
    Dies zeigt an, wann der Benutzer sich registriert hat

    [tt]userInfo.lastActivityTime As DateTime[/tt]
    Hier seht ihr, wann der Benutzer zuletzt im Board aktiv war

    [tt]userInfo.queryTime As DateTime[/tt]
    Zeigt euch, wann der Request stattgefunden hat

    [tt]userInfo.elapsedTime As Integer[/tt]
    Zeigt die Sekunden an, die die Überprüfung gedauert hat

    [tt]userInfo.isPremium As Boolean[/tt]
    [tt]True[/tt], falls der Benutzer den Premium (Admin, Super-Moderatoren, Moderatoren, Special) Rang hat.


    Zusätliches:

    Um sicherzustellen, dass die API nicht manipuliert wurde, solltet ihr folgende Funktion verwenden:

    Code:
    ​
        Public Shared Function CheckAPI() As Boolean
            Dim CryptoProvider As New System.Security.Cryptography.MD5CryptoServiceProvider
            Dim CorrectHash1 As String = "D68B7F5EF02EFEEC1C53577184F4D534"
            Dim CorrectHash2 As String = "5D6FA3C1455C7099721A6CBA70A38DF4"
    
            If My.Computer.FileSystem.FileExists("KE-API.dll") = False OrElse My.Computer.FileSystem.FileExists("KELib1.dll") = False Then
                Return False
            End If
    
            Dim FileContents1 As Byte() = My.Computer.FileSystem.ReadAllBytes("KE-API.dll")
            Dim FileContents2 As Byte() = My.Computer.FileSystem.ReadAllBytes("KELib1.dll")
    
            Dim FileHash1 As Byte()
            Dim FileHash2 As Byte()
    
            Dim StrHash1 As String = String.Empty
            Dim StrHash2 As String = String.Empty
    
            CryptoProvider.ComputeHash(FileContents1)
            FileHash1 = CryptoProvider.Hash
    
            CryptoProvider.ComputeHash(FileContents2)
            FileHash2 = CryptoProvider.Hash
            CryptoProvider.Dispose()
    
            Dim str As String = String.Empty
    
            For i As Integer = 0 To FileHash1.Length - 1
                str = Hex(FileHash1(i))
                If Len(str) = 1 Then
                    str = "0" & str
                End If
                StrHash1 &= str
            Next
    
            str = String.Empty
    
            For i As Integer = 0 To FileHash2.Length - 1
                str = Hex(FileHash2(i))
                If Len(str) = 1 Then
                    str = "0" & str
                End If
                StrHash2 &= str
            Next
    
            If StrHash1 = CorrectHash1 AndAlso StrHash2 = CorrectHash2 Then
                Return True
            End If
    
            Return False
    
        End Function
    

    Auf eine Obfuscation und Protection eures Programmes solltet ihr natürlich dennoch nicht verzichten!


    Updates:
    • 27.01.2014:
      • Native DLL virtuallisiert
      • Code zur Überprüfung der DLLs hinzugefügt
     
  2. Cre3per

    Cre3per Member

    Joined:
    Oct 22, 2012
    Messages:
    764
    Likes Received:
    2
    Was ist mit C++?
     
  3. Jolly Roger

    Jolly Roger New Member

    Joined:
    Nov 14, 2013
    Messages:
    6
    Likes Received:
    0
    Das Passwort in Plaintext an die API übergeben ist in meinen Augen keine gute Idee. Dadurch steht das Passwort in Plaintext in den Serverlogs.
    Würde in der API noch eine Funktion hashPassword(String plainPW) anbieten, die einen Hashwert von Passwort zurückgibt (sha512 oder so) und dann die userCheck Funktion so aufrufen:
    Code:
    userCheck( username, hashPW(pass) )
    Evtl sogar noch den Usernamen hashen, dass der auch nicht in den Logs steht.
     
  4. Dr@ke

    Dr@ke New Member

    Joined:
    Jul 10, 2012
    Messages:
    743
    Likes Received:
    2
    Geht leider nicht anders, da in der Datenbank mehrere verschiedene Hash-Algorhitmen verwendet werden.
    Also es geht schon, aber dann müsste die API erst den Server fragen welcher bei dem Passwort verwendet wird und dann den entsprechenden Hash dorthin schicken.

    Ist nicht möglich, da man sonst alle User durchgehen müsste, um zu gucken zu wem der Username-Hash gehört ;)
     
  5. Skyfail

    Skyfail Administrator Staff Member Administrator

    Joined:
    Mar 21, 2013
    Messages:
    854
    Likes Received:
    0
    Loggt Apache die Requests?
     
  6. Jolly Roger

    Jolly Roger New Member

    Joined:
    Nov 14, 2013
    Messages:
    6
    Likes Received:
    0
    Geh ich mal davon aus.

    Eine weitere Idee wäre noch ein extra API Passwort für jeden User. Dass kann man gehasht übertragen und selbst wenn mal ein Tool, das die API benutzt die Userdaten davor noch an einen anderen Server schickt, kann man sich mit dem API Passwort nicht in den Forum Account einloggen und kann keinen Schaden anrichten
     
  7. Skyfail

    Skyfail Administrator Staff Member Administrator

    Joined:
    Mar 21, 2013
    Messages:
    854
    Likes Received:
    0
    Wenn ein Tool aus unvertrauter Quelle bei uns veröffentlicht wird, werden wir das schon soweit überprüfen ;)
     
  8. VBTyp

    VBTyp New Member

    Joined:
    Apr 16, 2013
    Messages:
    453
    Likes Received:
    1
    Die Schwachstelle ist die .Net DLL und die wurde nur minimal abgesichert => Cracked in unter 2min
     
  9. Skyfail

    Skyfail Administrator Staff Member Administrator

    Joined:
    Mar 21, 2013
    Messages:
    854
    Likes Received:
    0
    Update: Siehe erster Post
     
  10. Znote

    Znote Guest

    Der Webserver loggt immer außer man stellt es manuell aus
     
  11. Dr@ke

    Dr@ke New Member

    Joined:
    Jul 10, 2012
    Messages:
    743
    Likes Received:
    2
    Ja, aber sonst würde er nur (mehr oder weniger) unnütze Passwort-Hashs loggen ;)
     
  12. AimBRoT

    AimBRoT Member

    Joined:
    Aug 1, 2012
    Messages:
    604
    Likes Received:
    0
    Sowas wie G-Mail könnte der Lieeeebe Drake doch evtl machen ( Anwendungsspezifische Passwörter) :)
     
  13. Dr@ke

    Dr@ke New Member

    Joined:
    Jul 10, 2012
    Messages:
    743
    Likes Received:
    2
    Wenn du mir erklärst was das ist... ^^
     
  14. AimBRoT

    AimBRoT Member

    Joined:
    Aug 1, 2012
    Messages:
    604
    Likes Received:
    0
    Duu kannst bei Google n Passwort nur für bestimmte anwendungen machen.. Mit denen kannst dich nur via dein programm einloggen und nicht direkt auf der gmail seite
     
  15. TheLittleMagnus

    TheLittleMagnus New Member

    Joined:
    Sep 9, 2013
    Messages:
    12
    Likes Received:
    0
    Source code?

    Ich gebe keiner API mein pw solange ich den source code nicht kenne oder der hersteller halbwegs bekannt ist!
     
  16. Dr@ke

    Dr@ke New Member

    Joined:
    Jul 10, 2012
    Messages:
    743
    Likes Received:
    2
    @TheLittleMagnus

    Du solltest dir im Klaren sein, dass du nach deinem Argumentationsprinzip überhaupt nicht auf unserer Seite surfen dürftest...
    Beim Einloggen in deinen Forenaccount, gibst du dein Passwort genauso an uns weiter wie bei der API.

    Das Forum muss dein Passwort natürlich auch noch online speichern (verschlüsselt natürlich), die API greift lediglich darauf zu.
    Man kann also sagen, dass unsere API noch sicherer ist, als der Forenlogin selbst.

    Die meisten Foren bieten noch nicht einmal Aufrufe über HTTPS an (hier wird man sogar zu einer sicheren Verbindung gezwungen...).
    Soweit ich weiß, übertragen diese Foren dein Passwort im Klartext durchs Internet. Jeder der dein Passwort dieser Foren haben wollte, könnte es sich also holen.

    Hersteller der API sind übrigens wir - Keller-Elite. Solltest du uns nicht trauen, dürftest du unsere Hacks genauso wenig benutzen.
    Ich denke unsere (problemlose) Vergangenheit spricht für sich.

    Desweiteren ist die API sicher. Der Programmverlauf ist genaustens durchdacht und gegen alle möglichen Angriffsvektoren abgesichert. Es wird eine AES-256-SSL-verschlüsselte Verbindung verwendet, das Zertifikat wird natürlich in der .NET-API gegengeprüft.
    Dein Passwort landet also nicht in falschen Händen...

    Du musst allerdings auch verstehen, dass wir den Quellcode unserer API nicht herausgeben können, da wir sonst Gefahr laufen, dass die API geknackt wird. Das ist ein ernsthafteres Sicherheitsproblem, als dein Passwort (verschlüsselt) an uns weiterzugeben.
     
  17. TheLittleMagnus

    TheLittleMagnus New Member

    Joined:
    Sep 9, 2013
    Messages:
    12
    Likes Received:
    0
    @Dr@ke
    Dieses forum verwendet die forensoftware "Burning Board" die man sich kaufen kann und dann den source code lesen kann
    falls sie unsicher wäre wäre sie kaum so populär

    passwörter werden gehasht nicht verschlüsselt

    das forum mag zwar eine 265 bit verschlüsselung verwenden das hilft aber auch nichts wenn andere inhalte unverschlüsselt von externen seiten geladen werden
    (solange es nur bilder sind ist es okay auch wenn die dann auch schon meine daten haben...)

    ich verwende eure hacks nicht soetwas habe ich nicht nötig!

    wollen wir einen wettkampf veranstalten ob ich es abfangen kann oder nicht?

    ich dachte die api wäre so durchdacht? wovor habt ihr dann angst?
    außerdem würde ja eure (nach der aussage von lowfry und lukas müller) tolle community wo jeder eine aufgabe hat lücken sicher schnell finden und fixen wenn es die API auf github etc. gäbe ;)
     
  18. Skyfail

    Skyfail Administrator Staff Member Administrator

    Joined:
    Mar 21, 2013
    Messages:
    854
    Likes Received:
    0
    Hashen ist auch eine Art der Kryptographie.

    >
    Wir könnten den Quellcode so abändern, dass jedes Passwort im Klartext mitgeschrieben wird.

    Wir schreiben dir nicht vor sie zu verwenden. Unsere Seite umfasst hauptsächlich Cheats, dadurch haben wir den Schluss gezogen, dass du auch mal einen unserer Cheats verwendet hast.

    Den Quellcode offenzulegen sollte dennoch vermieden werden um die Sicherheit zu gewährleisten.

    Kann man das als Beleidigung sehen? Wenn ja hast du gerade 5000 Leute beleidigt. Ob es 1337er ist in C# Wrapper für eine Serversoftware, welche hauptsächlich unter Linux eingesetzt wird, zu schreiben ist fraglich.
     
  19. TheLittleMagnus

    TheLittleMagnus New Member

    Joined:
    Sep 9, 2013
    Messages:
    12
    Likes Received:
    0
    @Skyfail

    dessen bin ich mir bewusst

    das ist schön für euch allerdings würde das natürlich eure user zahlen schnell stark dezimieren ;)

    du weißt genau dass ich mich damals registriert habe weil du mir den member rang auf deinem TS entzogen hast als er der KE TS wurde und du zu mir gesagt hast ich müsse mich bei KE anmelden um ihn wieder zu bekommen

    nun dann ist die aussage von damals wohl doch gelogen gewesen wenn ihr euch doch nicht so sehr auf eure community verlassen wollt? würde ich schließlich auch nicht bei einem hack/cheat forum ;)

    das war eine aussage von lowfry unter einem meiner facebook posts die ich leider wegen fremdwerbung inzwischen gelöscht habe...
     
  20. Dr@ke

    Dr@ke New Member

    Joined:
    Jul 10, 2012
    Messages:
    743
    Likes Received:
    2
    Es mag sein, dass WBB bekannt ist und man auch den Quellcode (einer/deiner) Version betrachten kann, das hat allerdings nichts damit zu tun, dass der Server und die WBB-Installation von uns betrieben wird.
    Wir könnten mit WBB machen, was uns lieb ist. Wir haben nunmal die volle Kontrolle über die Installation.

    WBB4 verwendet bcrypt und das ist, wenn man es (sehr) genau nimmt, eine Verschlüsselung.

    Mich stört es auch, dass externe Inhalte eingebunden werden, das lässt sich allerdings in einem Forum nicht ändern. Sollte dich das stören, kann ich RequestPolicy (Firefox-Addon) empfehlen. Bin sehr zufrieden damit.
    Man muss allerdings dazu sagen, dass die externen Sachen zwar deine IP verraten, aber keinesfalls dein Passwort.

    Ob du einen Wettkampf daraus machen kannst, musst du mit hoschi klären. Ich wäre sowieso für ein BugBounty-Programm.

    Ich bin mit "security through obscurity" zwar auch nicht zufrieden, allerdings halte ich es dennoch besser, die API unter Verschluss zu halten.
     
Thread Status:
Not open for further replies.