スキップしてメイン コンテンツに移動

投稿

8月, 2024の投稿を表示しています

objectsidのエンコード

BASE64からSIDに変換できたので、逆にBASE64にするにはどうすれば?ということで作ってみました。 単純に - で区切って、16進数変換して、リトルエンディアン並びにして、バイナリにしてbase64を行うだけ、と。 2バイト目の「0x05」がどこからきているのやら?と思っていたのですが、 https://learn.microsoft.com/ja-jp/windows/win32/api/winnt/ns-winnt-sid と https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-2000-server/cc962011(v=technet.10) に、Subauthority Count(後続のデータ個数ですね)だと書いてありました。 3~8バイト目はIdentifierAuthorityで、 https://learn.microsoft.com/ja-jp/windows/win32/api/winnt/ns-winnt-sid_identifier_authority 配列で6バイト・・。末尾にデータがあるほかにパターンがあるのだろうけど、、。 よくわからないから、ビッグエンディアンの6バイト値だとしておこう(適当すぎる)。 #/bin/bash SID=S-1-5-21-312109860-4223824132-3422679046-1103 IFS='-' read -ra ADDR <<< "${SID}" COUNT=`printf '%02X' $((${#ADDR[@]}-3))` BESA0=`printf '%02X' ${ADDR[1]}` BESA1=`printf '%012X' ${ADDR[2]}` BESA2=`printf '%08X' ${ADDR[3]}` BESA3=`printf '%08X' ${ADDR[4]}` BESA4=`printf '%08X' ${ADDR[5]}` BESA5=`printf '%08X' ${ADDR[6]}` BE