UWSCスクリプトのセキュリティ対策

UWSCスクリプトに色々情報が書かれているので、
セキュリティに懸念があります。
誰でもパスワードが読み取れたり、
実行できたりするので、何か対策はありますか。
また、指定のフォルダからのみ実行できるようにすることは可能ですか。
UWSCスクリプトは便利ですが、
スクリプト自体を持ち出されたり、読み取られたり、
他の人でも実行できてしまうケースがあります。
いくつか対策を考えてみましたので下に記して見ます。
※パスワード、ファイルの持ち出し、その他の各セキュリティポリシーはご自身で検討お願いします
※UWSCのスクランブルについても絶対に解読されない事を保障するものでもありません

スクランブルをかけて、解読を困難にする

まずはスクランブルを実施することで、
中身の解読を困難にしてしまう方法があります。
パスワードを埋め込んでいたりする場合は、
ファイルの中から該当情報を取得することが難しくなります。
スクランブルのかけ方については、
コチラの記事の「スクランブル」をご参照ください。

実行時にパスワードを要求する

INPUT関数IF文を組み合わせて、
実行時にパスワードを要求するようにすることができます。
この方法とスクランブルの組み合わせで、
セキュリティを向上させることができます

IFB INPUT("パスワードを入力してください","",TRUE) <> "1234" THEN
  MSGBOX("パスワードが異なるため処理を終了します")
  EXITEXIT
ENDIF

PRINT "処理を実行しました!"

上のスクリプトは、
パスワードに「1234」を入力しないと、
次の処理が実行されずに終了してしまいます。
このスクリプトにスクランブルをかけることで、
実行時パスワードの取得も困難になります。

指定のディレクトリからのみ実行可とする

DOSCMD関数で、
スクリプトの実行位置ディレクトリを知ることができます。 これが指定のディレクトリと異なる場合は実行しないよう制御することができます。

CURDIR = TRIM(DOSCMD("CD"))

IFB CURDIR <> "C:\uwsc" THEN
  MSGBOX("指定位置と異なります")
  EXITEXIT
ENDIF

 PRINT "処理を実行しました!"

*

上記のスクリプトでは、Cドライブ直下にuwscというフォルダを作成し、
そこにあるスクリプトのみ実行できる仕組みになっています。
別のマシンでも同一のフォルダ構成を作成された場合は、
実行可能となる点は注意です。

別のファイルを読み込むようにする

CALLで、
他のスクリプトを呼び出す文を挿入しておけば、
単体での実行は出来なくなります。

 CALL "../required.uws"
 PRINT "処理を実行しました"

*

フォルダ構成は上記のようになっており、
一つ上の階層にrequired.uwsをおく必要があります。
required.uws自体は中身は空でも問題ありません。

外部Webサイトの情報を利用する

指定のページにアクセスし、
ページ内の情報が一致する場合に
次の処理に進むようにしてみます。
Webページの情報を書き換えて
スクリプトの実行可否を制御することができます。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = FALSE //バックグラウンドでチェックするため、画面表示しなくてもよい
IE.navigate("http://canal22.org/")
REPEAT
 SLEEP(0.1)
UNTIL !IE.busy AND IE.readyState = 4
TITLE = IE.document.title
IE.QUIT
IFB TITLE <> "UWSC コバヤシ式" THEN
  MSGBOX("認証できません。処理を終了します")
  EXITEXIT
ENDIF

上のスクリプトはcanal22.orgへアクセスし、
そのページのタイトルを照合しています。
バックグラウンドでチェックが進めば良いので、
visibleのプロパティはFALSEにしています。

上記全ての方法を組み合わせてみる

さて、何種類か方法を挙げてみましたので、
全てを組み合わせたスクリプトを作ってみます。
処理の順番は・・・
現在位置(ディレクトリ)の確認

外部スクリプトの確認

パスワード入力

外部サイトの確認
となります。
最後に任意でスクランブルをかけ、
解読を困難にすることも可能です。
スクリプトは下記のとおりです。

この投稿の続きを読む »

タグ

2013年3月16日 | コメントは受け付けていません。 |

カテゴリー:Q&A

数分後に自動でシャットダウンしてくれる簡易なスクリプトを書きたい

数分後に自動でシャットダウンしてくれる簡易なスクリプトを書きたい

30分後にシャットダウンする、1時間後にシャットダウンするというスクリプトをUWSCで作ろうとしています。毎回時間をスクリプトに記入して保存するのが煩雑です。

予定時間、条件を元にPCをシャットダウンしてくれるツール、方法はたくさんあります。
もちろんUWSCにもシャットダウンするためのPOFF(P_POWEROFF)という関数があり利用可能です。

場面としては、長時間のファイルダウンロード、動画変換、その他自動処理中など、長時間PCに張り付いていたくない、だけどもある程度時間がたったらシャットダウンしたいという光景が浮かびます

お悩みの方は毎回、スクリプトに時間を記入しているそうなので、
そこはスクリプトが立ち上がるたびに値入力のウィンドウが出るようにしましょう。
また、単純にSLEEP(指定秒数)とした後にPOFF関数を実行するのも問題ありませんが、 それだと後どのくらい経過すればシャットダウンするかが分からず、少し不親切かもしれません。

SCD = INPUT("何分後にシャットダウンしますか?") * 60
SLEEP(SCD)
POFF(P_POWEROFF)

上のようなスクリプトを少し改善して、
何分後にシャットダウンされるのか可視化してあげましょう。
スクリプトは以下のようになります。

//値を整えて、秒数を取得
MNT = INT( TRIM( INPUT("何分後にシャットダウンしますか?") ) ) 
FOR A = MNT TO 1 STEP -1
 FUKIDASI(MNT + "分後にシャットダウン")
 SLEEP(60)
NEXT
POFF(P_POWEROFF)

タグ

2013年3月1日 | コメントは受け付けていません。 |

カテゴリー:Q&A

画像リンクをクリックしたい!

画像リンクのクリックでハマりました。解決方法はありませんか?
ちなみにボタンのクリックはできています。
せっかくイイ感じでスクリプトを生成していても、
画像リンクのクリック部分だけ、対話式にしないといけなくて、
結局自動化できない。。。なんてことありますね。

かくいう私もその1人でした。
しかし、COMコンポーネントの利用で以下のように、
解決します。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.Visible = TRUE
IE.navigate("http://canal22.org/sample0006/")
REPEAT
    SLEEP(0.1)
UNTIL (!IE.Busy) AND (IE.ReadyState = 4)

// 画像一覧を取得
IMG_LST = IE.Document.Images

// 画像一覧の中からalt属性が一致する画像をクリックする
FOR I = 0 TO IMG_LST.length - 1
    IMG_ALT = "2012年9月1日(土)UWSCセミナー勉強会@東京 のお知らせ"

    // 画像一覧からalt属性でヒットする
    IFB IMG_LST.Item(I).Alt = IMG_ALT THEN
        // 次ページに遷移する。
        MSGBOX("ページ遷移します。")
        IMG_LST.Item(I).Click()
    ENDIF
NEXT

解説

ヘルプなどに出ていないので、IMG_ALTIE.Document.Imagesといった部分に面食らったかもしれません。

これはCOM(IE)コンポーネントという機能を利用していて、
UWSCからCOMを利用できるが、COMがUWSCの機能ではないので、
ヘルプなどには、ほとんど載りません。

しかし、UWSC コバヤシ式では、UWSC 上級ページにて、
こういったCOMコンポーネントの利用方法を解説しているので、
よろしければ、ご参照ください。

今回のサンプルはconfrageさんのサイトを参考にさせてもらいました。

参考ページ
http://www.confrage.com/uwsc/ie/imglink/imglink.html

タグ

2012年7月5日 | コメントは受け付けていません。 |

カテゴリー:Q&A

ドラッグ&ドロップに対応させるには

UWSCに、EXCELやCSVファイル等をドラッグ&ドロップし、 処理を実行したいのですが、 調べたところ、「Drop on Script(http://homepage3.nifty.com/yamakox/DropOnScript/index.html)」をインストールすると可能になるというような記述を見つけました。 しかし現在解説ページが削除されているようで、 どのように使用したらよいのかがわかりませんが、 ご存知の方はいらっしゃいますでしょうか。 また、「Drop on Script」をインストールしたPCでのみ可能になるのか、 それともライブラリのように読み込んで使えるのか、 もしくはUWSC Proで実行ファイルにすれば、 「Drop on Script」をインストールしていないPCでも可能になるのか、 どちらでしょうか。 その他、ドラッグ&ドロップに対応させる方法がございましたら、 ご教示いただければと思います。 よろしくお願い致します。

タグ

2012年6月17日 | コメント/トラックバック(5) |

カテゴリー:掲示板

script0011

タグ

2012年6月6日 | コメントは受け付けていません。 |

カテゴリー:ツール

INPUT

INPUT関数

インプットボックスを表示
戻値 = INPUT(表示メッセージ, [デフォルト値, パスワードフラグ, X, Y] ) 

引数
表示メッセージ・・・インプットボックスに表示するメッセージ
デフォルト値・・・デフォルトの値 として表示
パスワードフラグ・・・TRUE にすると文字は全てアスタリスク表示(デフォルト FALSE)
X, Y・・・表示位置(デフォルトは中央) 戻値
入力した値

インプットボックスに入力した値を表示する

インプットボックスを表示し、文字入力を受け付けます。
OKを押した後、入力した文字を表示します。

INSTR = INPUT("表示する文字を入力")
MSGBOX(INSTR)

インプットボックスを利用したパスワード認証ロジック

インプットボックスのパスワードフラグを利用し、
正しいパスワードが入力されるまで、
認証を繰り返させる仕組みを実現します。
ポイントは、
WHILE-WENDを利用した繰り返し、
パスワードフラグのオンです。
スクリプトは下記の通りです。

この投稿の続きを読む »

タグ

2012年3月25日 | コメントは受け付けていません。 |

カテゴリー:関数一覧

入力ボックスの表示

INPUT(メッセージ[,デフォルト値,パスワードフラグ,X,Y])
 

INPUT関数は入力ボックスを表示します。

メッセージ
入力テキストエリアと共に表示するメッセージを指定
変数や関数の戻り値ではなく文字列を使うにはダブルクォーテーションが必要
他の引数
省略可能
デフォルト値
最初から入力エリアに入っている値
入力の際に書き変え可能
パスワードフラグ
TRUEかFALSEで指定し、
TRUEにするとアスタリスク(*)でマスクするようになる
X Y
表示位置の指定で、省略すると中央に表示される

入力ボックスsample
MSG = INPUT("メッセージを入力してください")
PRINT MSG
MSG = INPUT("メッセージを入力してください<#CR>パスワードフラグTRUE",,TRUE)
PRINT MSG

こちらを実行すると、パスワードがかかるのが見てとれます。
対話処理はスクリプトを他人に使ってもらう際に役立ちます。

タグ

2012年3月15日 | コメントは受け付けていません。 |

カテゴリー:逆引き関数

このページの先頭へ