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

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]}`
BERID=`printf '%08X' ${ADDR[7]}`

#echo ${BESA0}-${BESA1}-${BESA2}-${BESA3}-${BESA4}-${BESA5}-${BERID}

LESA0="\x${BESA0}\x${COUNT}"
LESA1="\x${BESA1:0:2}\x${BESA1:2:2}\x${BESA1:4:2}\x${BESA1:6:2}\x${BESA1:8:2}\x$
{BESA1:10:2}"
LESA2="\x${BESA2:6:2}\x${BESA2:4:2}\x${BESA2:2:2}\x${BESA2:0:2}"
LESA3="\x${BESA3:6:2}\x${BESA3:4:2}\x${BESA3:2:2}\x${BESA3:0:2}"
LESA4="\x${BESA4:6:2}\x${BESA4:4:2}\x${BESA4:2:2}\x${BESA4:0:2}"
LESA5="\x${BESA5:6:2}\x${BESA5:4:2}\x${BESA5:2:2}\x${BESA5:0:2}"
LERID="\x${BERID:6:2}\x${BERID:4:2}\x${BERID:2:2}\x${BERID:0:2}"

#echo ${LESA0}-${LESA1}-${LESA2}-${LESA3}-${LESA4}-${LESA5}-${LERID}

printf '%b' "${LESA0}${LESA1}${LESA2}${LESA3}${LESA4}${LESA5}${LERID}" | base64

コメント

このブログの人気の投稿

LS220DのHDD交換

 BuffaloのNASであるLS220Dの赤色LEDが点滅していました。。。 HDD故障だそうです。 元から入っていたのは、東芝の1TB(TOSHIBA DT01ACA1)でした。 手元にWDの2TB(WD20EARS)、4TB(WD40EZRX)、6TB(WD60EZAZ)、SeaGateの4TB(ST4000DM000)、8TB(ST8000AS0002)が あったので、後日容量アップができるのでは、と思い入れてみました。 RAID再構築をクリックしてみたら・・・  WD   2TB:「指定したメソッドに対するパラメータが不正です。」   4TB:「指定したメソッドに対するパラメータが不正です。」   6TB:リビルド成功  SeaGate   4TB:「指定したメソッドに対するパラメータが不正です。」   8TB:「指定したメソッドに対するパラメータが不正です。」 という散々な結果でした。 何がダメなんだろう?と思い返してみると、WDの6TBだけは未使用の ものでした。 ほかのHDDは入れる前にパーティション情報をWindows上で消したけど、 もしかしてMBR領域(というかHDDの先頭セクタ0)になにか情報があると ダメなのかも。 ということで、Linux機にWD 4TB(/dev/sdb)をつないで、  sudo dd if=/dev/zero of=/dev/sdb bs=512 count=1  sudo sgdisk -Z /dev/sdb を実行してからLS220に入れました。 「破損」という表示になってしまいしたが、RAID再構築を押すと 再構築が始まった、、、、ぽい。

Windows Server 2016 にOracle11gをインストール

.Net3.5が要るらしい。 orz 一回目のインストールの際に「.Net3.5が必要」ってダイアログが山ほど出てきた。 .Net3.5が必要な場合のエラーダイアログはどうして「ダウンロードしてインストールせよ」なんだろう? 参考にした  http://otndnld.oracle.co.jp/easy/oracle11gr1/windows/pdf/SelfStudy_01_win.pdf だと、LISTNERの追加設定(?)が必要そうに書いてあるけど、やってみたら「すでに作成済み」ってなる。 それを信じて進めてみたらどうにもうまくいかない。。。 OracleDBをGUIで操作しよう、っていうのが間違いのようか気がする (逆にSQLserverをCLIでやるのは狂気の沙汰だと思う)。 一旦、アンインストールすることにして、スタートメニューにある「Universal Installer」 を実行してアンインストールしようとしたら「batファイルを実行せよ」というダイアログが。 ググりかたが悪かったのか、 「アンインストールはUniversal Installerからしかないぜ。その他の方法はどーなっても知らないぜHAHAHA」(意訳) と書いてるOracleさんしか見つからない。 どっちを信じたらとも思ったが、目の前のほうが正しいだろうという考えに従いそのバッチ を実行しました。(Universal Installerさんは何度やっても消そうともしてくれないし) バッチ実行後、しばらく放置したら終わったらしい。 Oracleさんがインストールされていたっぽいディレクトリもだいたい消えていた。 消えたよね?ってことで一度再起動してから、Oracle11gのインストールを再び実行。 エラーは出ずに無事終了。 (.Net3.5がインストール済みだったからかな??)  sqlplus / as sysdba は問題ない。でも、別PC(Linux機)からの接続はNG。  lsnrctl status コマンドの実行結果から、やはりlocalhost以外からの接続はLISTENしてない模様。 listener.oraをちょっと修正して、LISTNERサービスを再起動。  lsnrctl status を再度実行すると、IPアドレスの分も表示されたので、外部からも接続できるだろう...

VirtualBoxのUSBメモリからの起動

検索すると、USBメモリからの起動はできないような感じだけど、 UEFIブートだとできた。 手順 1.設定→システム→UEFIを有効化 2.設定→USB でUSBメモリを仮想から使えるようにする3.F12を押しつつ仮想を起動  ※ブートメニューが出てくるまで挫けずがんばる4.ブートメニューの「Boot Manager」に入って、USBメモリを選択 UEFIじゃないのは無理なのかも。