ユーザーの資格情報を認証するMATLABアプリケーションを構築しています。彼のパスワードを読みたいのですが、入力した資格情報をなんとか隠したいのです。
いくつかの制約:
- Linux/macユーザーだけでなくWindowsも考慮に入れる必要があります。
- ユーザーシステム内のプログラム(perl / python / VBS)を保証することはできません。
これが私が試したことです:
ストレートアップガイド
動作しますが、ユーザーがmatlabを-nodesktop
(または-nodisplay
)モードで実行している可能性があるため、オプションではありません。
MATLAB + Java
console.readPassword。これは私の端末をひどく台無しにします。
system()呼び出し
基本的に、私はOSに基づいてbashまたはdosスクリプトを呼び出します。
linux/macに対して次の呼び出しがあります。
[status cred] = system('stty -echo; read cred; stty echo;echo ""; echo "$cred"');
これは、ユーザーの資格情報を取得し、それを「cred」にダンプすることになっています。>>
通常のターミナルで動作することを確認しましたが、MATLABで実行しても何も出力されず、プロンプトを戻すにはCtrl-Cが必要です。
MATLAB Perl
コメントで指摘されているように、WindowsMATLABはPerlをパッケージ化します。次のスニペットを試しました。
use Term::ReadKey;
use Term::ReadLine;
ReadMode('noecho');
$yesnoline = Term::ReadLine->new("foo");
$pass = $yesnoline->readline();
printf "$pass";
ReadMode('restore');
そしてそれをと呼びました[result status] = perl('my_perl.pl')
。Linuxでうまく機能します。Windowsの場合:
res =
GetConsoleModeが失敗しました、LastError = | 6 | ReadKey.pmの264行目。
sta =
9
これまでの私の検索では、Windows用のperlのパッケージバージョンに関連する問題であることが示唆されています。
上記のアプローチで何が起こっているのか考えていますか?