これは、C# & .Net Framework 4.0 で作成しました


はじめに
Traper : sPortRedirecotr.exe
HTTP 通信を編集可能とするツール

Repeater : sWebMachineGun.exe
いろいろな Web リクエスト・メッセージを送信するツール

Editer : sEasyEditerNET.exe
Base64やURLエンコードなどを実施する簡易的なテキスト/バイナリ・エディタ

sCommonGUI.NET.dll
GUI の共通コンポーネント






リンク先



動作環境
Microsoft .NET Framework4.0


インストール方法

まず、ランタイム(.NET Framework4.0)をセットアップします。

sWebTool.lzh をダウンロードします。

ダウンロードしたファイルを解凍しします。
(LHAは、吉崎栄泰氏が、著作権を所有)




削除方法
  1. インストールに使用したファイルを削除して、.NET Framework4.0 ランタイムを削除
  2. レジストリ「HKCU\Software\sanaki\HttpClientGUI」以下と「HKCU\Software\sanaki\sEasyEditerNET」を削除



Repeater(sWebMachineGun.exe)
基本ベクトル
基本ベクトルの画面
リクエストの順番を示すベクトル(ページ・ベクトル)と、繰り返すベクトル(カウント・ベクトル)と、変数ごとのベクトル(ターン・ベクトル)の3次元空間で考える必要がある


処理の流れ
基本ベクトルの画面
変数ごとの配列(ターン・リスト)を作り、パターンごとの配列(カウンタ・リスト/パターン・リスト)を作り、それらから一つずつとりながら、リクエスト・セッション(ページ・リスト)を繰り返す


基本設定
基本設定の画面
順番どおり送信するHTTPリクエストを「Request」タブで設定する。この一連の流れを「セッション」と呼称しており、それぞれのリクエストを「1ページ目」とか「2ページ目」とか単位に「ページ」を使用しています


1)単純繰り返しの場合(1次元)
単純繰り返しの画面
「繰り返し回数」で指定した回数分、「セッション」を実施する。それぞれ「1カウント目」「2カウント目」とか単位として「カウント」を使用しています


2a)ファジングの場合(2次元)
ファジングの画面
HTTPリクエスト中の「%s%」という箇所を指定された文字列に置換しながら(カウント数は置換対象文字配列数)、「セッション」を実施する。
特定の箇所に連続的に試行したい場合に最適なモード


2b)ファジングの場合2(2次元)
ファジングの組み込みパターン
置換パターンの組み込みパターン。ファイルをDrag&Drop してもよい。


3)変数リスティング場合(3次元)
変数リスティングの画面
対象ページ番号のHTTPリクエスト・メッセージ中の「クエリ文字列」「クッキー情報」「ポストデータ」に対して、置換パターンをそれぞれ実施する
  • 「何もしない」:何もしない。正常系の取得
  • 「変数追加」:置換文字列を名前として新しい変数を追加する
  • 「数値計算を行う」:値が数値化可能な場合、「+1した値」&「-1」という値に置換する


「UrlEncode」チェックボックス
URLEncode-CheckBox
  1. 置換文字列は、既にURLエンコード済(テキストで表現できないデータなど)
  2. 置換文字列で置換する際にURLエンコードを実施する(1.のURLエンコード済は除く)
  3. 変数の文字列は、URLエンコード済である(URLエンコード済が一般的な状態だと思う) 置換文字列に変数名を埋め込んだり、変数名の後方置換時の「[」や「]」の処理に影響


一般設定
一般設定1
CSRFなどのトークンを直前のレスポンスから抽出して、次のリクエストに反映(埋め込み)させる
抽出元として「HTTPヘッダ」「Hiddenタグ」。埋め込み先として「HTTPヘッダ」と「クエリ文字列/ポスト」
変数名のサブ名として、「XPath/JPath」を指定する事で、XML/JSON内部の値を抽出したり埋め込み先とする事が可能
「文字コード」は既定の文字コードを指定する
「DetectCharSet」は、レスポンスの文字コードを自動認識させる
「AllowAutoRedirect」は、リダイレクトレスポンス時に、自動的にリダイレクトするのかどうか
「CheckSSLCert」は、SSL証明書検証をさせる
「ReUseResponse」は、直前のセッションの最後のレスポンスをセッションの最初のリクエストの処理に反映させるかどうか
「Import/Export」は、XML形式のファイルとして設定を出力/入力する


判定1
カウントを終了可能な判定条件
「真」になり、かつ「DoBreak」がチェックの場合、その「セッション」を最後に繰り返し処理を終了させる


判定2
正規表現判定画面
いわゆる正規表現で判定します


結果画面
結果画面
説明なし


ファイルアップロード(バイナリデータ)の指定の仕方
ファイアップロード(設定)
ファイルを登録しておきます
ファイアップロード(リクエスト)
リクエスト中の「%file[番号]%」の部分が、置き換えられます
netcat
こんな感じです



IronRuby/IronPython
IronRuby/IronPython ともに、ライブラリを同梱していませんので、 それぞれ本家からダウンロードして個別にインストールする必要があります。

IronPython は、GAC を汚してくれるので、インストールだけで済みますが、IronRuby は GAC を汚さないので、以下のファイルを GAC または、STreamRelay.NET.exe のカレントにコピーしてください。
(スクリプト言語などは、アプリケーションというよりもインフラとして捉えれるのであれば、GAC を汚してもいいと思うけどな)



免責など
当然ですが、悪用厳禁です。

修正BSDライセンスで配布します。


Version 1.6.0.0DownLoad(sWebTool.lzh as 2,298,394byte)

履歴



mail to active@window.goukaku.com