OpenLDAP - Object mit Autoit auslesen

    • Offizieller Beitrag

    Hi,

    da mir mal wieder im Eng Forum keiner helfen will/kann, versuche ich es auch hier. :rofl_devil:

    Der Zugriff auf den opneLDAP scheint zu funktionieren. Ich bekomme laut consolenausgabe ein Objekt zurück. Nur jetzt weiß ich nicht wie ich an den Inhalt des Objektes komme. Habe schon ein bißchen rumprobiert, vielleicht kann mir ja jemand helfen.

    Vielleicht gibt es ja auch eine dll, oder ein commandline LDAPSearch-tool.

    Ich verzweifel noch daran :hammer:

    Spoiler anzeigen
    [autoit]

    Global Const $userDN = "xf01145,ou=user,ou=RZ,ou=0000,ou=cust,o=GAX"
    Global Const $user = 'xf01145'
    Global Const $LDAPBaseDN = 'ou=user,ou=RZ,ou=0000,ou=cust,o=GAX'
    Global Const $LDAPPort = "389"
    Global Const $LDAPServer = "glpls01"
    Global Const $LookFor = 'sambaKickoffTime'

    [/autoit] [autoit][/autoit] [autoit]

    $oMyError = ObjEvent('AutoIt.Error', 'MyErrFunc')

    [/autoit] [autoit][/autoit] [autoit]

    $ObjLDAP = ObjGet("LDAP://" & $LDAPServer & ":" & $LDAPPort & "/uid=" & $user & "," & $LDAPBaseDN)

    [/autoit] [autoit][/autoit] [autoit]

    If IsObj($ObjLDAP) Then ConsoleWrite("isObject!" & @CRLF)
    ConsoleWrite('1' & $ObjLDAP.displayname & @CR)
    ConsoleWrite('2' & $ObjLDAP.get ("displayname") & @CR)
    ConsoleWrite('3' & $ObjLDAP.fields (0).value & @CR)

    [/autoit] [autoit][/autoit] [autoit]

    #cs
    For $ObjMembers In $ObjLDAP
    MsgBox(0, "", $ObjLDAP)
    ConsoleWrite('XX' & $ObjMembers.displayname & @CR)
    Next
    #ce

    [/autoit] [autoit][/autoit] [autoit]

    Func MyErrFunc()
    $HexNumber = Hex($oMyError.number, 8)
    MsgBox(0, 'AutoItCOM Test', 'We intercepted a COM Error !' & @CRLF & @CRLF & _
    'err.description is: ' & @TAB & $oMyError.description & @CRLF & _
    'err.windescription:' & @TAB & $oMyError.windescription & @CRLF & _
    'err.number is: ' & @TAB & $HexNumber & @CRLF & _
    'err.lastdllerror is: ' & @TAB & $oMyError.lastdllerror & @CRLF & _
    'err.scriptline is: ' & @TAB & $oMyError.scriptline & @CRLF & _
    'err.source is: ' & @TAB & $oMyError.source & @CRLF & _
    'err.helpfile is: ' & @TAB & $oMyError.helpfile & @CRLF & _
    'err.helpcontext is: ' & @TAB & $oMyError.helpcontext _
    )
    SetError(1) ; to check for after this function returns
    EndFunc ;==>MyErrFunc

    [/autoit]

    Alles kann gepsotet werden, was auch nur annährend zur Lösung führen könnte. ;)

    So long,

    Mega

  • Hier ein Ldapsearch Tool für Win32
    Ldapsearch

    Für die Suche einer Objectclass ändert das Prog den Search Filter

    z.b

    ldapsearch -h 127.0.0.1 -p 389 -b "" objectClass=*

    bekommt man den gesamten LDAP Baum angzeigt

    Am besten mal in die logs gucken was das Script für anfragen stellt an den OpenLdap

    2 Mal editiert, zuletzt von Christeval (25. April 2007 um 16:20)


  • ldapsearch -x uid=xf01145 -h glpls01 -b ou=user,ou=RZ,ou=0000,ou=cust,o=GAX sambaKickoffTime=wert

    damit zeigt er dir alle User die diesen "wert" verwenden

    Einmal editiert, zuletzt von Christeval (25. April 2007 um 16:35)

  • ldapsearch -x uid=xf01145 -h glpls01 -b ou=user,ou=RZ,ou=0000,ou=cust,o=GAX sambaKickoffTime=2147483647 sambaKickoffTime

    so gibt er dir nur das attr "sambaKickoffTime" für alle User aus die diesem Wert entsprechen


    Bsp Mailaddy so erhalte ich zur UID die mailaddresse

    Code
    C:\>ldapsearch -h IP -p PORT -b "" uid=heins mail
    dn: cn=Hugo eins,cn=users,dc=***,dc=***,dc=***,dc=***,dc=***,dc=***,
     dc=***
    mail: heins@emailadresse.de


    auszug aus den slapd logs

    Code
    Apr 25 16:43:19 ldap slapd[3830]: conn=65 op=1 SRCH base="" scope=2 deref=0 filter="(uid=heins)"
    Apr 25 16:43:19 ldap slapd[3830]: conn=65 op=1 SRCH attr=mail

    3 Mal editiert, zuletzt von Christeval (25. April 2007 um 16:44)

    • Offizieller Beitrag

    Hi,

    wenn ich es so mache :

    [autoit]

    ldapsearch -h glpls01 -p 389 -b "" uid=xf01145 ou=user,ou=RZ,ou=0000,ou=cust,o=GAX sambaKickoffTime

    [/autoit]

    dann komme ich zumindest einen Schritt weiter. Allerdings sagt er dann:

    ldap_bind: Protocol error
    ldap_bind: additional info: historical protocol version requested, use LDAPv3 in
    stead

    :weinen: :weinen: :weinen:

    So long,

    Mega

  • lass mal das

    "ou=user,ou=RZ,ou=0000,ou=cust,o=GAX" weg

    oder


    Code
    ldapsearch -h glpls01 -p 389 -b ou=user,ou=RZ,ou=0000,ou=cust,o=GAX uid=xf01145 sambaKickoffTime

    Einmal editiert, zuletzt von Christeval (25. April 2007 um 16:59)

    • Offizieller Beitrag

    Hi,

    gleiches Ergebnis:

    [autoit]

    C:\Downloads> ldapsearch -h glpls01 -p 389 -b "" uid=xf01145 sambaKickoffTime
    ldap_bind: Protocol error
    ldap_bind: additional info: historical protocol version requested, use LDAPv3 in
    stead

    [/autoit]

    Edit: Ich brauche "nur" diesen einen Wert für meinen User. :rolleyes:

    So long,

    Mega

  • sieht so aus als wäre die ldapsearch mit deiner Openldap version nicht kompatibel.. Ich bekomme bei meinem Ldap die Kickofftimew damit ausgelesen

    Code
    C:\>ldapsearch -h 127.0.0.1 -p 389 -b "" uid=heins sambaKickoffTime
    dn: cn=Hugo eins,cn=users,dc=***,dc=***,dc=***,dc=***,dc=***,dc=***,
     dc=de
    sambaKickoffTime: 2147483647
  • Openldap

    Kannst dir ja mal den Openldap für win32 runterladen da ist eine ander ldapsearch dabei, welche auf OpenLDAP 2.0.27 basiert.
    Mehr konnte ich leider auch nicht finden.
    Welche Openldap version nutzt du denn?

    sonst evtl noch mal vbs scripte angucken für den zugriff auf openldap

    Einmal editiert, zuletzt von Christeval (26. April 2007 um 10:55)

    • Offizieller Beitrag

    Hi,

    juhuuuuuuuu. Ich bin mal wieder einen Schritt weiter.

    Habe mir die ldapsearch samt dlls von hier : http://lucas.bergmans.us/hacks/openldap/

    runtergeladen. Diese unterstützt v3 (der Server läßt explizit nur v3 zu) und jetzt konnte ich die Zeit auslesen.

    Freakig ist jetzt noch, dass die Zeit in Sekunden ab dem 01.01.1970 angegeben ist und dies für 40 Tage. Jetzt kann ich anfangen dies umzurechnen: (Brauche es für 30 Tage)

    Zeit in Sek 40 Tage = x
    10 Tage in Sek abziehen = y
    DateAdd 01.01.1970 + y = z
    DateDiff heute mit z = so lange ist mein Passwort noch gültig.

    Und noch checken, ob ich die Ausgabe des commandline ldapsearch mit Autoit abgreifen kann.

    So long,

    Mega

  • timestamp umrechner gibt es im internet wieder sand am meer meistens direkt online als php.

    willst du das in autoit einbauen das er dir das direkt umwandelt?

    • Offizieller Beitrag

    Hi,

    na klar baue ich mir das in Autoit selbst. Das kriege ich wohl noch hin. Schade ist halt, dass ich diese ganzen externen Pgs brauche. Hätte es gern komplett in Autoit gelöst ohne ldapsearch.

    Aber dafür fehlt mir das wissen, wie ich aus dem Objekt die einzelnen Inhalte ansprechen kann, oder die Anfrage gleich so stellen kann, dass nur die gewünschte Antwort zurückgegeben wird.

    So long,

    Mega