| mIRC スクリプト言語 | |
|---|---|
| パラダイム | イベント駆動プログラミング、手続き型プログラミング |
| デザイン: | ハレド・マルダム・ベイ |
| 開発者 | ハレド・マルダム・ベイ |
| 初登場 | 1995 |
| タイピングの規律 | 動的型付け |
| OS | マイクロソフトウィンドウズ |
| ライセンス | 独自のソフトウェア |
| ファイル名拡張子 | .mrc、.ini |
| Webサイト | www.mirc.com |
| 主要な実装 | |
| mIRC アディIRC [ 1 ] [ 2 ] [ 3 ] | |

mIRCスクリプト言語(非公式には「mSL」と略されることが多い[ 3 ] [ 4 ])は、Windows用のIRCクライアントであるmIRCとAdiircに組み込まれているスクリプト言語ですが、 Linux用のWiNEでも動作します。
主な用途
[編集]- さまざまな種類の攻撃 (フラッディング、スパム、乗っ取りなど) に対するライト チャネルと個人の保護。
- ポップアップ メニューのすべてではなく、ユーザー互換性を高めるために、mIRC でダイアログ ウィンドウを作成できます。
- 一般的なmIRCダイアログ拡張機能には、MDX(m IRC D ialog Extension)とDCX(D ialog Control Extension)があります。また、IRCハッカーによって改造されたmdx.dllとdcx.dllのバージョンもいくつか存在します。
- 自動化された IRC チャネル管理、クイズやその他のゲーム、およびチャッターに必要なその他の機能を提供するボット。
- 入力の手間を省いたり、IRC での作業を簡素化したりするコマンド (ニックネームの所有者として自動的に識別するなど)。
- プロキシCONNECTサーバー (www.mslscript.com) とバウンスサーバー ( https://en.wikipedia.org/wiki/ZNC ) を使用して、一部のmSL スクリプトをより高速なコードと便利な機能に置き換えます。
スクリプトの保存
[編集]スクリプトは、通常 .mrc拡張子のプレーンテキストファイル、またはINI ファイルとして保存されます。ただし、任意の拡張子で保存できます。複数のスクリプトファイルを一度に読み込むことができますが、場合によっては、あるスクリプトが他のスクリプトと競合し、一方または両方のスクリプトが正常に動作しなくなることがあります。スクリプトファイルの読み込み順序によって、スクリプトが正常に動作するかどうかが左右されることがあります。中規模スクリプトを意図したとおりに動作させるには、ローダースクリプト(またはアンローダースクリプト)を使用する必要があります。
言語機能
[編集]mIRCスクリプト言語は、言語構成要素を参照するために独自の命名法を使用しています。(ただし、これは初心者にとっては少し混乱を招く可能性がありますが、mSLの機能には影響しません。)
- 組み込み関数はコマンドと呼ばれ、値を返す場合は識別子と呼ばれます。
- カスタムスクリプト関数はエイリアスと呼ばれます。値を返すエイリアスはカスタム識別子と呼ばれます。どちらも、組み込みコマンドや識別子と同じ方法でコマンドラインまたはスクリプトの他の部分から呼び出されます(組み込みコマンドや識別子を置き換えることもできます)。
- ポップアップとは、スクリプト化されたコンテキストメニュー項目です。ポップアップは、ユーザーが選択したときに呼び出されます。この用語は元々、右クリック時にポップアップ表示されるメニューを指していました。マニュアルでは今でもこの意味で使用されています。
- リモートはイベント処理スクリプトです。リモートは、処理対象のイベントが発生したときに呼び出されます。
- すべての変数は動的に型付けされます。
- ハッシュ テーブルは大規模なデータ ストレージに使用できますが、配列は使用できません。
- mIRC スクリプトではシギルが使用されます。識別子 (カスタムまたは組み込み) の前には が付き
$、バイナリ変数の前には が付き&、その他の変数 (ローカルまたはグローバル) の前には が付きます%。コマンドとエイリアスの前には特定の文字は付きません (ただし、ウィンドウのコマンド ラインから入力する場合は、通常は であるコマンド プレフィックスが前に付く必要があります/)。
ファイル処理
[編集]- スクリプトはファイルを読み書きすることができます [
$read(file,[args])|/write]
上記はファイルへの単一アクセスを想定しています。なぜなら、$readまたはを発行するたびに/write、ファイルを開いて閉じる必要があるからです。例えばループ中の複数アクセスは、 、 、 を通して処理するのが最適です/fopen。/fwriteこれらの方法/fcloseではファイルが一度しか開かれないからです。場合によっては/filter、 と の方が/savebuf(スクリプト化されていないループでは)さらに効率的な方法となります。
- スクリプトはファイルのコピーや削除も行えます。[
/copy|/remove]
バイナリ変数
[編集]- 無制限(mIRC 6.1より前は8192バイト)の生データを含む
- コマンドと識別子を介してグローバルにアクセス可能
- スクリプトが制御を mIRC に戻すと自動的に設定解除されます (スクリプトの別の部分に戻ることはありません)
- 接頭辞
&(例&Variable) /breadおよび以外ではアクセスできない/bwriteため、これらの変数をスクリプトの他の部分に渡すことはできません。
ハッシュテーブル
[編集]- 無制限のバイナリデータ、または最大4,150バイト(mIRC 6.32より前は950バイト)のプレーンテキストを含めることができます。この制限は、mIRCのスクリプトパーサー独自の行長制限によって課せられます(バイナリ変数を代入する場合を除く)。
- コマンドと識別子を介してグローバルにアクセス可能
- mIRC を終了するとメモリにのみ保存されるため、自動的に設定解除されます。
- 後で使用するために保存できます
- 接頭辞なし
- ハッシュテーブルはハードディスクではなくメモリに保存されるため、ファイルからアクセスするよりも高速です。
- サイズはコンピュータのメモリ制限によってのみ制限されます。
- 任意のバケットサイズを使用できます
グローバル変数
[編集]- 名前を含めて最大 4,150 バイト(mIRC 6.32 より前は 950 バイト)のデータを含めることができます(ただし、mIRC のスクリプト パーサーの行の長さの制限により、/set または /var を使用して明示的に割り当てることができるのは最大 4,146 バイトです。この数値は変数名が長くなるにつれて減少します)。
- NUL (ASCII 0) または末尾のスペースを保存できません
- 世界中でアクセス可能
- スイッチが使用されない限り、自動的に設定解除されない(mIRC 初期化ファイルに自動的に保存される)
- 接頭辞
%(例%Variable) setコマンドまたはvar -g表記%Variable = value法を使用して作成
ローカル変数
[編集]- 変数名を含め、最大 4,150 バイト(mIRC 6.32 より前は 950 バイト)のデータを含めることができます(ただし、mIRC のスクリプト パーサーの行の長さの制限により、/set コマンドまたは /var コマンドを使用して明示的に割り当てることができるのは最大 4,146 バイトです。この数値は変数名が長くなるにつれて減少します)。
- NUL(ASCII 0)または末尾のスペースを保存できます
- トリガーされたエイリアスまたはイベントが終了すると破棄されます
- 接頭辞
%(例%Variable) - コマンドを使用して作成されます
var。varは の内部エイリアスに過ぎませset -lんが、var1 行で複数のローカル変数を宣言する手段を提供します (例var %a = 1, %b, %c = 2)
制限事項
[編集]- スクリプト パーサーは、1 行あたり最大 8,292 文字 (mIRC 6.32 より前は 950 文字) をサポートします (改行やインデントは含みません)。
- 文字列は構文的に囲まれていないため、リテラル文字列として意図された文字が言語の構文の一部として扱われ、コードに曖昧さが生じます。
- コードの各行は、スペースで区切られたトークンの集合に分解されます。mIRCのパーサーはヌルトークンをサポートしておらず、言語にはリテラル文字列とコードを明確に区別する構文がないため、mIRCバージョン6.2より前では、コマンドやエイリアスに連続する複数のスペースを渡すことができませんでした。しかし、スペースを保持できるreturnexコマンドの導入により、この問題は修正されました。
コード例
[編集]以下のコードはリモートスクリプト形式です。エイリアスファイルに配置する場合、コマンド名の前に「 」を付けないでくださいalias。テストコメントには、一般的な/* comment */およびが含まれます;comment。
以下はHello Worldエイリアスの例です。
;リモートスクリプトでエイリアス「hello」を定義します;注意: これをエイリアス スクリプトに配置する場合は、 'alias' 部分を削除する必要があります (結果: hello {) ;使用法: /helloエイリアス hello { ;アクティブウィンドウに「Hello World!」を表示します(/echo)(-a) echo - a Hello World !}特定のテキストに自動的に応答するリモートスクリプト
;リモートスクリプトに配置;ユーザーがチャンネルに「Hello!」と入力すると、次のように返信します: 「Hello, [nickname]!」on *: TEXT :こんにちは!: # : { msg $chan こんにちは、 $nick $ + ! };ユーザーがプライベートメッセージに「Hello!」と入力すると、次のように返信します: Hello, [nickname]!on *: TEXT :こんにちは!:?: { msg $nick こんにちは、 $nick $ + ! };特定のチャンネルに参加したユーザーに自動的に発言権を与えるスクリプトです(ボットまたはユーザーには HOP が必要です)オン *: JOIN : # ?: { mode $chan + v $nick };不適切な単語のスクリプトon *:テキスト: die *: # : { . mode $chan + b $nick | kick $chan $nick 二度と言わない で} 参照
[編集]参考文献
[編集]- ^ 「機能 - AdiIRC - AdiIRC サポート/バグ/機能リクエスト」 Per Amundsen. 2020年12月2日時点のオリジナルよりアーカイブ。 2020年12月2日閲覧。
- ^ 「スクリプティング - AdiIRC - AdiIRC サポート/バグ/機能リクエスト」 Per Amundsen. 2020年12月2日時点のオリジナルよりアーカイブ。 2020年12月2日閲覧。
- ^ a b 「mIRCとAdiIRCの2020年時点の詳細な比較 - Slant」。Parli, Inc. 2020年12月2日時点のオリジナルよりアーカイブ。2020年12月2日閲覧。
- ^ mIRC Scripting Language - WikiChip、WikiChip LLC、2020年11月12日時点のオリジナルよりアーカイブ
- クリス・スミス (2004). 「Hack #20 スクリプトによるIRCの自動化」『IRC Hacks: 100 Industrial-Strength Tips & Tools』 ポール・マトン編 O'Reilly Media, Inc. pp. 71–74. (スクリプトの機能と使用法の詳細な例)
- Jose Nazario (2004) 『インターネットワームに対する防御と検出戦略』 Artech House, 2004. p. 53, 55. (1997年のmIRCスクリプト攻撃について論じている。)
- ケン・ダンハム、ジム・メルニック (2008) 『悪意あるボット:インターネットのサイバー犯罪の闇を探る』 CRC Press. p. 7-31. (mIRCスクリプトベースのマルウェアボットの詳細な分析/リバースエンジニアリング)
- Peter Szor (2005). 『コンピュータウイルスの調査と防御の技術』 . Pearson Education. 第3章7.7節.
- David Harley, Robert S. Vibert (2007). AVIEN 企業向けマルウェア防御ガイド. Elsevier. p. 147. (スクリプト攻撃での使用)
- エシャレナナ E. アドミ (2008)。サイバーカフェ向けのセキュリティとソフトウェア。イデアグループ株式会社(IGI)。 p. 173.
- マルクス・ヤコブソン、ズルフィカール・ラムザン(2008年)『クライムウェア:新たな攻撃と防御策を理解する』アディソン・ウェズリー・プロフェッショナル、194ページ
外部リンク
[編集]- mIRC公式ウェブサイト
- mIRCヘルプファイルのオンライン版
- WikiChip mIRC ページ — 主に mIRC スクリプト用の、Wiki ベースのユーザー管理ヘルプリファレンス