| パラダイム | イベント駆動プログラミング、手続き型プログラミング |
|---|---|
| デザイン: | ハレド・マルダム・ベイ |
| 開発者 | ハレド・マルダム・ベイ |
| 初登場 | 1995 |
| タイピングの規律 | 動的型付け |
| OS | マイクロソフトウィンドウズ |
| ライセンス | 独自ソフトウェア |
| ファイル名拡張子 | .mrc、.ini |
| Webサイト | ホームページ |
| 主な実装 | |
| 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 C ontrol Extension ) があります。また、IRC ハッカーによって改造された mdx.dll と dcx.dll のバージョンもいくつかあります。
- 自動化された IRC チャネル管理、クイズやその他のゲーム、およびチャッターに必要なその他の機能を提供するボット。
- 入力の手間を省いたり、IRC での作業を簡素化したりするコマンド (ニックネームの所有者として自動的に識別するなど)。
- プロキシCONNECTサーバー (www.mslscript.com) とBounceサーバー (https://en.wikipedia.org/wiki/ZNC) を使用して、一部のmSL スクリプトをより高速なコードと便利な機能に置き換えます。
スクリプトの保存
スクリプトは、通常 .mrcファイル拡張子を持つプレーンテキスト ファイル、またはINI ファイルとして保存されます。ただし、任意の拡張子で保存できます。一度に複数のスクリプト ファイルを読み込むことができますが、場合によっては、1 つのスクリプトが別のスクリプトと競合し、一方または両方が正常に動作しなくなることがあります。スクリプト ファイルが読み込まれる順序によって、スクリプトが正常に機能するかどうかが変わる場合があります。中規模スクリプトが意図したとおりに機能するには、(アン) ローダー スクリプトを使用する必要があります。
言語機能
mIRC スクリプト言語は、言語構造を参照するために独自の命名法を使用します。(ただし、これは初心者にとっては少し混乱を招く可能性がありますが、mSL の機能には影響しません。)
- 組み込み関数はコマンドと呼ばれ、値を返す場合は識別子と呼ばれます。
- カスタム スクリプト関数はエイリアスと呼ばれます。値を返すエイリアスはカスタム識別子と呼ばれます。どちらも、組み込みのコマンドや識別子と同じ方法でコマンド ラインまたはスクリプトの他の部分から呼び出されます (組み込みのコマンドや識別子に取って代わることもできます)。
- ポップアップはスクリプト化されたコンテキスト メニュー項目です。ポップアップは、ユーザーが選択したときに呼び出されます。この用語は元々、右クリックするとポップアップ表示されるメニューを指していました。マニュアルでは今でもこの意味で使用されています。
- リモートはイベント処理スクリプトです。リモートは、処理するイベントが発生したときに呼び出されます。
- すべての変数は動的に型付けされます。
- ハッシュ テーブルは、より大きなデータ ストレージに使用できますが、配列は使用できません。
- mIRC スクリプトはシギルを使用します。識別子 (カスタムまたは組み込み) の前には が付き
$、バイナリ変数の前には が付き&、その他の変数 (ローカルまたはグローバル) の前には が付きます%。コマンドとエイリアスの前には特定の文字は付きません (ただし、ウィンドウのコマンド ラインから入力する場合は、コマンド プレフィックス (通常は/) が前に付く必要があります)。
ファイル処理
- スクリプトはファイルを読み書きできます [
$read(file,[args])|/write]
上記は、ファイルへの単一のアクセスを意図しています。 または を発行するたびに$read、/writeアクセスのためにファイルを開いたり閉じたりするためです。 たとえば、ループ中の複数回のアクセスは、、およびを通じて処理するのが最適です。 これにより、ファイルが 1 回だけ開かれるためです。 場合によっては、 および はさらに効率的な (スクリプト化されていないループ) 方法です。
/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 のパーサーは null トークンをサポートしておらず、言語はリテラル文字列とコードを明確に区別する構文を提供しないため、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日閲覧。
- ^ ab 「mIRC vs AdiIRC 2020年時点の詳細な比較 - Slant」。Parli, Inc. 2020年12月2日時点のオリジナルよりアーカイブ。2020年12月2日閲覧。
- ^ mIRC スクリプト言語 - WikiChip、WikiChip LLC、2020年11月12日時点のオリジナルよりアーカイブ
- Smith, Chris. (2004) 「Hack #20 スクリプトによる IRC の自動化」、IRC Hacks: 100 Industrial-Strength Tips & Tools、Paul Mutton 編、O'Reilly Media, Inc.、pp. 71–74。(スクリプトの機能と使用法の詳細な例)
- Jose Nazario (2004)「インターネットワームに対する防御と検出戦略」Artech House、2004 年、p. 53、55。(1997 年の mIRC スクリプト攻撃について説明しています。)
- Ken Dunham、Jim Melnick (2008) Malicious Bots: An Inside Look into the Cyber-Criminal Underground of the Internet. 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.
- Markus Jakobsson、Zulfikar Ramzan (2008)。Crimeware: 新しい攻撃と防御を理解する。Addison-Wesley Professional。p. 194。
外部リンク
- 公式mIRCウェブサイト
- mIRC ヘルプ ファイルのオンライン バージョン
- WikiChip mIRC ページ — 主に mIRC スクリプト用の、Wiki ベースのユーザー管理ヘルプ リファレンス
