
すべてのユーティリティにわたってグローバルに動作する、Portswigger の Burp 用 Match & Replace ルール。
Global Match & Replace (GMR) は、Burp Suite を拡張し、グローバルまたは選択した複数のツール (Repeater、Intruder、Proxy など) に適用できるマッチ/リプレースルールを提供します。リクエストとレスポンスごとの差分を表示するため、何が変更されたかを正確に確認できます。
この拡張機能は Burp Montoya API を使用しています。
burp-global-match-replace-*.jar をダウンロードします。./gradlew clean jar
JAR は build/libs/ に生成されます。
注: このプロジェクトは Burp との互換性のために Java 21 バイトコードをターゲットにしています。ビルドを実行するには Java 21+ を使用してください (JAVA_HOME を適切に設定)。
各ルールには以下のプロパティがあります:
. は改行に マッチしません。. は改行に マッチします (DOTALL)。^ と $ は常に行単位で機能します (MULTILINE 有効)。Simple ルールは、オプションのワイルドカードを使ってリテラルテキストにマッチします:
* → 任意の数の文字? → ちょうど 1 文字デフォルトでは (multiline がオフ)、ワイルドカードは改行をまたぎ ません。multiline がオンの場合、* と ? は改行をまたぐことができます。
リテラルの * や ? にマッチさせるには、バックスラッシュでエスケープします:
\\* → リテラルの *\\? → リテラルの ?\\\\ → リテラルのバックスラッシュ例 (1 行): ユーザーエージェントを変更します。
Match: User-Agent: *
Replace: User-Agent: Mozilla/5.0 (...) Chrome/123
正規表現ルールは標準の Java 正規表現です。エンジンは常に MULTILINE を使用し、Multiline が有効な場合にのみ DOTALL を使用します。つまり:
^ と $ はデフォルトで 行の境界 にマッチします. は multiline が有効でない限り改行にマッチ しません例 (1 行): ヘッダーを削除します。
Match: ^X-Test:.*$\r?\n
Replace:
注: 末尾の $\r?\n はヘッダー行 と その改行を削除します。$ だけを使用すると改行が残ります。
例 (複数行): HTML コメントを削除します。
Match: <!--.*?-->
Replace:
Multiline: ON
スイートタブでは、ルールの完全な管理とテストができます:
列:
テスト出力では以下がハイライトされます:
ルールがリクエストまたはレスポンスを変更すると、リクエスト/レスポンスエディタ内に “GMR Diff” タブが表示されます (Proxy、Repeater、Intruder などのツールで)。
変更されたリクエスト/レスポンスは黄色でハイライトされ、ノートは “Global Match & Replace” に設定されます。
GMR Diff タブは、ルールが実際にメッセージを変更した場合に のみ 表示されます。変更が適用されなかった場合、タブは表示されません。たとえば、リクエストのみ、またはレスポンスのみに GMR Diff が表示される場合など、混乱することがあります。
< と >) で変更箇所を順に移動できます拡張機能の設定ページには以下が含まれます:
$1 や後方参照を解釈しません。$1、$2 などをサポートします。GPL v3