ラベル windows の投稿を表示しています。 すべての投稿を表示
ラベル windows の投稿を表示しています。 すべての投稿を表示

2025年2月11日火曜日

どっちやねん?

windowsのwlanプロファイルのnonBroadcastについて、ドキュメントで矛盾があると思うんだけど?

 SSIDConfig (WLANProfile) 要素 で、テーブル内のnonBroadcastの説明では 

「connectionType が ESS に設定されている場合、この値は TRUE または FALSE のいずれかになります。 この要素が存在しない場合、既定値は TRUE です。」 

って書いてあるんだけど、その下の"nonBroadcast"の説明では 

「connectionType が ESS に設定されている場合、broadcast 以外は "true" または "false" にすることができます。 この要素が存在しない場合、既定値は "false" です。」 

って書いてある…。 

上記内の"この要素が存在しない場合"の、"この要素"はnonBroadcast要素のことだよね?

結局規定値はtrue/falseのどっちなんだ…w 


 

 

たぶん省略時の規定値はfalseだと思うんだけど…。

2024年4月15日月曜日

windows上で、.netでThread.Sleep(1)を実行すると停止誤差がやたらでかいときがある

10ミリ秒を超えてくる場合がある。

原因は単純でタイマーの解像度がおおよそ15.6ミリ秒だから。

 

 powercfg /energy

でタイマー精度を確認するわかる。

javaとかはたぶんVMでやってるからそんなに誤差でないんじゃないかな。知らんけど。

 timeBeginPeriodで最小解像度を変えればいいんだけど、

"バージョン 2004 Windows 10より前のバージョンでは、この関数はグローバル Windows 設定に影響します "

とか書いてあるから、実行するwindowsのバージョンによってはtimeBeginPeriodを使うのはアブないかもね。

 

2024年3月25日月曜日

sambaにwindowsでアクセスできない

解決方法: クライアント側(windows)の再起動で直った。マジで謎。なんでだ…w ラズパイが死にかけたので再セットアップしたのだが、セットアップしたsambaにwindwsからアクセスできない。smb.confはバックップしたやつを使っているので設定はあっているはずだ。pingも通る。 エクスプローラーからip指定(\\xxx.xxx.xxx.xxx)でアクセスすると、ユーザとパスワードを聞かれ、入力しても拒否される。ラズパイ側のsmbdを再起動すると今度はユー/パスワードも聞かれずに拒否された。資格情報マネージャーも直した。でもダメ。なんで?? で、windowsを再起動したらなぜかすんなり繋がってしまった。なんで?まあいっかつながったから。。

2024年2月17日土曜日

System.Security.Cryptography.Aesのkeyとkeysizeプロパティについて

 System.Security.Cryptography.Aesで暗号化するとき、同じキーと値を渡しても結果が変わる件について。

リファレンスよく読めばわかるんだけど、 keyを設定した後keySizeを設定すると、"キーがリセットされ、新しいランダム キーが生成"されてしまうぞ!

要注意だ!

SymmetricAlgorithm.KeySize プロパティ

 

2024年2月11日日曜日

WinRTのBLEの個人的メモ①

 BluetoothLEAdvertisementPublisherとGattServiceProvider のどちらでもアドバタイズができるのだが?

 

たぶん違いはAdvertiseに設定できる内容。なんでこうなのかはよくわからん。

・BluetoothLEAdvertisementPublisherはAdvertiseのDataSectionが設定できる。

・GattServiceProviderはAdvertiseのDataSectionが設定できない。

BluetoothLEAdvertisementPublisherで設定できるDataSectionはDataType=0xFFだけ。ほかは設定しようとするとアクセス違反で例外を吐く。

 

 

DataSectionとmanufacturerData

DataSectionの種類にmanufacturerDataがある感じ。

DataTypeが0xFFのDataSectionがmanufacturerData。BluetoothLEAdvertisementクラスにはDataSectionsとManufacturerDataがそれぞれプロパティであるから別のものと勘違いしていたんだけどDataSectionsがすべて。

0x01 :Flagsプロパティ

0x03 :ServiceUuidsプロパティ

0x08/0x09:LocalNameプロパティ

0xFF:ManufacturerDataプロパティ

になっている。

2023年7月18日火曜日

CNGでECDSAのメモ

    Cryptography API: Next GenerationでECDSAでDH鍵交換し、AESで暗号化する処理の大まかな流れのメモ。
  1. BCryptOpenAlgorithmProviderで鍵交換用プロバイダー(BCRYPT_ECDH_P256_ALGORITHM)を開く。
  2. BCryptGenerateKeyPairでキーペアを作成。
  3. BCryptFinalizeKeyPairでキーペアを作成を完成させる。
  4. BCryptExportKeyで公開鍵をエクスポートする。
  5. 相手に自身の公開鍵を渡す。
  6. 相手から相手の公開鍵を受け取る。 
  7. 受け取った公開鍵をBCryptImportKeyでインポートする。 
  8. BCryptSecretAgreementで、自身の秘密鍵と受け取った公開鍵で共有シークレット を作成する。
  9. BCryptDeriveKeyで、共有シークレットから派生鍵(共通鍵)を作成する。
  10. BCryptOpenAlgorithmProviderで、暗号化用プロバイダー(BCRYPT_AES_ALGORITHM)を開く
  11. BCryptGenerateSymmetricKeyで、共通鍵のためのキーオブジェクトを作成する。
  12. BCryptEncryptでメッセージを暗号化する。
  13. BCryptDecrypt でメッセージを復号化する。
  14. BCryptDestroySecretでシークレットアグリーメントを削除する。
  15. BCryptDestroyKeyでキーを破棄する
  16.  BCryptCloseAlgorithmProvider でプロバイダを閉じる。

 

うーん、めんどくさい。。

ちょっとしたメモ

  • CNGはハンドル(プロバイダハンドルやキーハンドル)でいろいろ操作する 
  • 生のキーデータを取るには BCryptExportKeyを使う。ここでとれるのはBLOB形式で、実際の生データはBCRYPT_ECCKEY_BLOBなどの構造体の後に続く形で格納されてる。共通シークレット取れる。共有シークレットはリトルエンディアンになっているので注意。また秘密鍵BLOBは公開鍵も含んでいる。例えばECDSAの秘密鍵のBLOBは

 BCRYPT_ECCKEY_BLOB
BYTE X[cbKey] 公開鍵のX
BYTE Y[cbKey] 公開鍵のY
BYTE d[cbKey] 秘密鍵

となっている。

公開鍵をのblob は、

BCRYPT_ECCKEY_BLOB
BYTE X[cbKey] 公開鍵のX
BYTE Y[cbKey] 公開鍵のY

となっている。




2023年1月24日火曜日

GUIDを文字列で出力する方法のメモ

デバッグのためにGUIDを標準出力に出したかっただけ。

GUID guid; //何かGUIDを取得する処理 WCHAR strGUID[39]; //要combaseapi.h StringFromGUID2(guid, strGUID, 39); std::wcout << strGUID << std::endl;