Friday 12 May 2017

Ldapsearch Objectsid Binário Opções



Atributos com opção binária Alguns sistemas de diretório impõem um tratamento especial para determinados atributos, de modo que o atributo de atributo LDAP binário deve ser usado. A razão para isso: Os valores de atributo ou valores de atribuição devem ser BER (Basic Encoding Rules) codificado - caso contrário, os valores são codificados de acordo com a codificação específica LDAP RFC 4517 para a sintaxe de atributos. Para sinalizar este tratamento especial, o servidor LDAP retorna esses atributos somente com a opção binária. As opções LDAP como a opção binária são geralmente descritas na especificação LDAP v3 na RFC 4511. Eles são adicionados aos nomes dos atributos como um sufixo sempre que o servidor LDAP eo cliente se comunicam uns com os outros, por exemplo, como este: A opção binária em particular é Descrito na RFC 4522. Às vezes não é marcado claramente no esquema de diretório quando um atributo requer um tratamento com a opção binária. Nestes casos, você tem a possibilidade de colocar tal atributo na lista de Atributos de Opções Binárias nas opções do aplicativo em Ferramentas - Opções - Configurações LDAP: Portanto, esses atributos podem ser lidos e gravados sem problemas. Normalmente, você não terá que trabalhar duro nesta lista porque a maioria dos atributos que precisa das opções binárias são predefinidos como valores padrão aqui. Você vai perceber quando um atributo precisa ser adicionado a esta lista quando você vê-lo no painel de lista de atributos com a seqüência de caracteres binário no final do nome de atributos: Outro sintoma que alerta você para adicionar esse nome de atributo para os atributos de opção binária Lista: Ocorre um erro de protocolo se você quiser gravar tal atributo sem a opção binária: Atributo para usuários do AD. ObjectSID Quando você conceder permissões de alguém em algum objeto, ele não é o nome do trustee que está incluído no relativo lista de controle de acesso (ACL). É sim o SID que é inserido na lista: Isso se aplica a permissões de objeto para objetos de diretório, bem como para direitos de sistema de arquivos em um servidor membro no domínio. A abordagem assim as permissões são mantidas mesmo se as contas forem renomeadas. Os IDs de Segurança da Microsoft são armazenados como atributos binários (a sintaxe LDAP é octeto) e têm de ser decodificados primeiro para convertê-los num formato familiar e legível, por exemplo: Dies ist die Schreibweise einer Beispiel-SID in der Notation der Security Descriptor Definition Language (SDDL). Tipischerweise setzt sich morrer SID eines Active Directory Benutzers setzt sich immer aus zwei Melhorar os recursos: Dem Domaumlnenanteil (der bei allen SIDs innerhalb einer Domaumlne konstant bleibt) und dem Realitven SID-Anteil (der tão genannten RID). Die RID ist immer der letzte Ziffernblock hinter dem letzten Minuszeichen, in unserem Beispiel também 1137. Todos os detalhes Detalhes técnicos com um SIDs e um SAD com um ID de SAD. Dort koumlnnen Sie sehen, wie man nach Objekten mit einer bestimmten SID sucht, oder welder anderen wichtigen Atributo ebenfalls SID-Werte enthalten. Diestellt: você tem que usar um nome distinto de um objeto de seu próprio ambiente aqui Set obj GetObject (quotLDAP: cnFoeckeler, cnUsers, dccerrotorre, dcdequot) WScript. Echo pureSidData WScript. Echo sDDLSidStr A função HexStrToSID (strSid) converte uma seqüência de caracteres hexadecimal SID em bruto para os dados ReDim (SDDL) de SID string correspondentes (Len ( StrSid) 2 - 1) Para i 0 Para UBound dados (i) CInt (quotampHquot amp Mid (strSid, 2i 1, 2)) Next HexStrToSID quotS-quot amp dados (0) amp quot-quot amp Byte6ToLong (2), dados (3), dados (4), dados (5), dados (6), dados (7)) dados de blocoCount (1) Para i 0 Para blockCount - 1 offset 8 4i HexStrToSID HexStrToSID amp quot-quot Byte4ToLong (dados (offset3), dados (offset2), dados (offset1), dados (deslocamento)) Next End Função funções auxiliares Função OctetToHexStr (varoctet) converte puro binar Y (matriz de bytes) para uma string com valores hexadecimais OctetToHexStr quotquot Para n 1 Para lenb (varoctet) OctetToHexStr OctetToHexStr amp Direita (quot0quot amp hex (ascb (midb (varoctet, n, 1))) Byte4ToLong (ByVal b1, ByVal b2, ByVal b3, ByVal b4) converte 4 bytes para o valor longo de acordo Byte4ToLong b1 Byte4ToLong Byte4ToLong 256 b2 Byte4ToLong Byte4ToLong 256 b3 Byte4ToLong Byte4ToLong 256 b4 End Função Função Byte6ToLong (ByVal b1, ByVal b2, ByVal b3, ByVal b4, ByVal b5, ByVal b6) converte 6 bytes para o valor longo de acordo Byte6ToLong b1 Byte6ToLong Byte6ToLong 256 b2 Byte6ToLong Byte6ToLong 256 b3 Byte6ToLong Byte6ToLong 256 b4 Byte6ToLong Byte6ToLong 256 b5 Byte6ToLong Byte6ToLong 256 b6 End Functionldapgetvalueslen Apenas uma pequena atualização para a nota abaixo de Jhgustafsson em relação ao campo objectGUID. Indo mais longe, às vezes é útil exibir esse GUID como uma seqüência de caracteres e a Microsoft tem um artigo de suporte e um script detalhando como converter objectGUID de Hex para String. Este artigo está aqui: support. microsoftdefault. aspxscidkb3Ben-us3B325649 Abaixo está uma função PHP que faz a mesma coisa que o script Microsofts VB, ele toma entrada de objectGUID em formato binário e retorna formatado como uma string (depois de convertê-lo para Hex como um Passo médio). Isso retornará o valor de objectGUID exato que é exibido para qualquer objeto do Active Directory no ADUC. Exemplo de saída: 3f79048f-42cd-4c77-8426-835cd9f8a3ad função GUIDtoStr (binaryguid) hexagud descompactar (Hhex, binaryguid) hex hexagúdico hex1 substr (hex, -26, 2). Substr (hex, -28, 2). Substr (hex, -30, 2). Substr (hex, -32, 2) hex2 substr (hex, -22, 2). Substr (hex, -24, 2) hex3 substr (hex, -18, 2). Substr (hex, -20, 2) hex4 substr (hex, -16, 4) hex5 substr (hex, -12, 12) guidstr hex1. -. Hex2. -. Hex 3. -. Hex4 -. Hex5 Para elaborar no post rcrows, se você quiser converter o valor objectSID para uma seqüência utilizável (a partir do Active Directory) a função a seguir fará o truque (este foi emprestado de outra seção do manual, apenas pensamento Id adicioná-lo aqui): Retorna a função textual SID bintostrsid (binsid) hexsid bin2hex (binsid) rev hexdec (substr (hexsid, 0, 2)) subconta hexdec (substr (hexsid, 2, 2) Resultado rev-auth para (x0x lt subcount x) subauthx hexdec (este-gtlittleendian (substr (hexsid, 16 (x 8), 8))) resultado. -. Subauthx Batota furando no S-retorno S-. Result Converte um número hexadecimal de little-endian para um, que hexdec pode converter função littleendian (hex) para (x strlen (hex) - 2 x gt 0 x x - 2) resultado. Esta função não está relacionada com a função ldapgetvalueslen, mas continua útil se você quiser converter o valor binário objectGUID em um formato de seqüência de caracteres (convertido a partir de algum vbscript fornecido por Richard Mueller): Esta função será Converter um guia de valor binário em uma seqüência de caracteres válida. Função bintostrguid (objeto) hexguid bin2hex (objeto) hexguidtoguidstr para (k 1 k lt 4 k) hexguidtoguidstr. Substr (hexágono, 8 - 2 k, 2) hexguidtoguidstr. - para (k 1 k lt 2 k) hexguidtoguidstr. Substr (hexágono, 12 - 2 k, 2) hexguidtoguidstr. - para (k 1 k lt 2 k) hexguidtoguidstr. Substr (hexágono, 16 - 2 k, 2) hexguidtoguidstr. -. Substr (hexágono, 16, 4) hexguidtoguidstr. -. Substr (hexguid, 20) Heres um exemplo sobre como usar ambos: estabelecer a conexão e especificar o basedn primeiro. Há muitos exemplos no manual para este srldapsearch (this-gtconn, this-gtbasedn, filter, fields) entradas ldapgetentries (this-gtconn, sr) se (inarray (objectguid, fields)) entries0objectguid0 this-gtbintostrguid (entries0objectguid0) If (inarray (objectsid, fields)) entrada ldapfirstentry (this-gtconn, sr) objectsidbinary ldapgetvalueslen (this-gtconn, entry, objectos) entry0objectsid0 this-gtbintostrsid (objectsidbinary0) Espero que isso ajude alguém Hi Aqui solução para WINDOWS objectsid: LIB. Classe LDAPOBJECTSID função pública toString (SIDBINARY) split strsplit (SIDBINARY, 8) matriz hexArray () foreach (divisão como chave gt byte) hexArraykey strToUpper (substr (0.dechex (bindec (byte))) BLOCKCOUNT hexdec (hexArray1 ) DECGROUPSUB-ID-BLOCKSi1 hexdec (hexArrayoffset3) DECGROUPSUB-ID-BLOCKSi2 hexdec (hexArrayoffset2) DECGROUPSUB-ID-BLOCKS array () para (i0 iltBLOCKCOUNT i) offset 8 (4 i) DECGROUPSUB-ID-BLOCKSi (HexArray2), hexdec (hexArray3), hexdec (hexArray4), hexdec (hexArray5), hexdec (hexArray5), hexdec (hexArray), hexdec (hexArrayoffset1) Hexdec (hexArray6), hexdec (hexArray7)) foreach (DECGROUPSUB-ID-BLOCKS como BLOCK) SID. -.this-gtbyte4ToLong (bloco1, block2, Block3, Block4) retornar SID byte6ToLong função privada (b1, b2, b3, b4, b5, b6) byte6ToLong b1 byte6ToLong byte6ToLong256 b2 b3 byte6ToLong byte6ToLong256 byte6ToLong byte6ToLong256 b4 byte6ToLong byte6ToLong256 b5 byte6ToLong byte6ToLong256 retorno b6 Byte6ToLong função privada byte4ToLong (b1, b2, b3, b4) byte4ToLong b1 byte4ToLong byte4ToLong256 b2 byte4ToLong byte4ToLong256 b3 byte4ToLong byte4ToLong256 b4 retorno byte4ToLong srldapsearch (conn, basedn, filter, fields) entrada ldapfirstentry (conn, sr) objectsidbinary ldapgetvalueslen (conn, Objectsid) Obj novo LDAPOBJECTSID () echo Obj-gttoString (objectsidbinary0)

No comments:

Post a Comment