Kirjoittaja Aihe: [Ratkaistu] Bash script: Kuinka muuntaa OctetString ?  (Luettu 2437 kertaa)

tjka

  • Käyttäjä
  • Viestejä: 144
    • Profiili
Hei !

Kuinka Linuxin bash scriptissä muunnetaan OctetString muodossa oleva muuttuja ASCII (?) muotoon??
Kyseessä on AD:n objectSID, joka haettu ldapsearch komennolla.

Nyt muuttujassa...
: AQUAAAAAAAUVAAAAUjxqxzpj5QeZPGgJaG8AAA==
mutta se pitäisi saada muotoon...
S-1-5-21-3345628242-132473658-157826201-28520

###Microsoft Security IDs are stored as binary attributes (LDAP syntax is octet string) and have to be decoded first to get them converted in a familiar, readable form... ###


-tjka-
« Viimeksi muokattu: 22.09.15 - klo:10.49 kirjoittanut tjka »

nm

  • Käyttäjä
  • Viestejä: 16232
    • Profiili
Vs: Bash script: Kuinka muuntaa OctetString ?
« Vastaus #1 : 21.09.15 - klo:19.17 »
Tässä pikainen toteutus, lähteenä http://www.selfadsi.org/deep-inside/microsoft-sid-attributes.htm

Koodia: [Valitse]
#!/bin/bash
#
# base64sid_to_sddl - Convert Base64-encoded SID to SDDL format
#
# Reference: http://www.selfadsi.org/deep-inside/microsoft-sid-attributes.htm
#

bytestoint_be() {
    local value=0
    while (( "$#" )); do
        let value=value*256+$1
        shift
    done
    echo "$value"
}

bytestoint_le() {
    local value=0
    multiplier=1
    while (( "$#" )); do
        let value=value+multiplier*$1
        let multiplier=multiplier*256
        shift
    done
    echo "$value"
}

function base64sid_to_sddl() {
    local -a data=($(echo -n "$1" | base64 -d -i | hexdump -v -e '1/1 " %u"'))

    local revision=${data[0]}
    local identifierauthority=$(bytestoint_be ${data[@]:2:6})
    local subidcount=${data[1]}
    local -a subids
    local offset=8
    local sid="S-$revision-$identifierauthority"
    for ((i=0; i<subidcount; i++)); do
        sid="$sid-$(bytestoint_le ${data[@]:offset:4})"
        let offset=offset+4
    done
    echo "$sid"
}


if [ $# -lt 1 ]; then
    >&2 echo "usage: $0 <Base64-encoded SID>"
    exit 0
fi

echo $(base64sid_to_sddl "$1")
« Viimeksi muokattu: 21.09.15 - klo:19.20 kirjoittanut nm »

tjka

  • Käyttäjä
  • Viestejä: 144
    • Profiili
Vs: Bash script: Kuinka muuntaa OctetString ?
« Vastaus #2 : 22.09.15 - klo:10.48 »
Pienen pähkäilyn jälkeen ohjelmointitaidotonkin :-[ sai homman toimimaan... :D
Kiitän ja kumarran.

-tjka-