2つのストリームを結びデータを双方向でやりとりするプログラム「StreamRelay.NET.exe」と「StreamRelay.jar」を作ったので、その使い方の紹介。
簡単なアーキテクチャから。
プログラムの引数で、二つのストリームのソース(実体)を指定することで、そのストリーム間でデータのやり取りが行われる。
例えば、片方のストリームのソースをコンソール(標準)にして、もう片方のストリームをねっワーク(TCP)にすれば、netcat の代替となる。
ストリームの名称
便宜上、ネットワークサーバになれる側のストリームを「ローカル(Local)」と呼称し、なれない側のストリームを「リモート(Remote)」と呼称している
この呼称が、オプション指定に頻繁に出てくることになる。
例えば、local側をコンソール、remote側をネットワーク(TCP)とすれば、netcatのクライアント・モードと同等になる。
ダウンロードとインストール
- Java版 StreamRelay.jar
- .NET Framework版 StreamRelay.NET.exe
基本的には、
1.上記よりダウンロード
2.信用できる場合はZoneID をはずす(.NET Framework 版で ZoneID付DLLが読み込まれないため)
3.解凍
4.実行するだけ (引数がない場合 usage が表示される)
オプション指定
必須なのは、「LocalPort」と「RemotePort」
- 0より大きい場合(<65536)、ネットワーク(TCPとかUDPとか)
- 0 の場合、コンソール(標準入出力)
- -1 の場合、外部プログラム
- -2 の場合、名前付きパイプ(現状 StreamRelay.NET.exe のみ)
- -4 の場合、シリアルポート(現状 StreamRelay.NET.exe のみ)
オプション指定(Request と Response)
オプションとして「Request」とか「Response」とかは、
- 「Request」 : 「ローカル」と呼称するストリームから「リモート」と呼称するストリームへの流れ
- 「Response」 : 「リモート」と呼称するストリームから「ローカル」と呼称するストリームへの流れ
をそれぞれ意味している
設定ファイルからオプションを読み込む
通常、オプションはコマンドライン引数からになるが、そのエスケープ処理が面倒というのもあって、設定ファイルから読み出すことも可能
一つのオプションを一行に書けばよい。
Java版
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -ConfigFile "FileName"
または
StreamRelay.bat -ConfigFile "FileName"
設定ファイルの記述方法は「Sample\sample_conf.txt」を参照のこと
.NET Framework版
StreamRelay.NET.exe -ConfigFile "FileName"
設定ファイルの記述方法は「Sample\config.txt」を参照のこと
レジストリからオプションを読み込む
.NET Framework 版は、レジストリからオプションを読み込む事も可能
StreamRelay.NET.exe -Registry "SubKeyName"
既定のレジストリキーは「HTLM\SOFTWARE\UrlRewriteProxy<SubKey>」
レジストリキーへの設定方法は、「sample\config.reg」を参照のこと
ストリームの奪い合い(コンソールについて)
「ローカル」も「リモート」も入力ソースの実体としてコンソール(キーボードから入力(標準入力))となった場合、「ローカル」側の入力源となり、「リモート側」は入力源なしとなる仕様としている
よって、
java.exe -jar StreamRelay.jar -localport 0 -remoteport 0 < a.txt
StreamRelay.NET.exe -localport 0 -remoteport 0 < a.txt
の場合、
「ローカル」のストリーム(コンソール(標準入力))からa.txtが読まれて、「リモート」のストリーム(コンソール(標準出力))へ書き込まれる。
という事になる
StreamRelay.jar
- netcat の代替としての StreamRelay.jar
- URLRewiteツールとしての StreamRelay.NET.exe
- スクリプト実行サーバ(NodeJSの代替)として StreamRelay.jar
- cat/TYPE の代替としての StreamRelay.NET.jar
- Proxy 経由で転送する StreamRelay.jar
- ゲートウェイとしての StreamRelay.jar
- 圧縮コマンドの代替としての StreamRelay.jar
- アーカイバコマンドの代替としての StreamRelay.jar のサポートプログラム
- ポートフォワーダとしての StreamRelay.jar
- StreamRelay.jarのログ出力機能
- stone/stunnel の代替としての StreamRelay.jar (SSLクライアント編)
- sslscan の代替としての StreamRelay.jar
- ncatのブローカーモードの代替としての StreamRelay.jar
- nkf の代替としての StreamRelay.jar (文字コード変換)
- script コマンドの代替としての StreamRelay.jar
- サウンドレコーダーの代替としての StreamRelay.jar
- md5sum コマンドの代替としての StreamRelay.jar (ハッシュ/チェックサム/HMAC計算)
- 符号化コマンドとしての StreamRelay.jar
- ファイル暗号化コマンドとしての StreamRelay.jar
- StreamRelay.jar で入力ダイアログで暗号鍵を与える
- zebedee のような vpn の代替としての StreamRelay.jar
- 環境表示プログラムとしてのStreamRelay.jar
- WebSocketCat(wscat) の代替としての StreamRelay.jar
- StreamRelay.jarのGUIについて
- StreamRelay.jarに同梱している ZipStream.class と ArchiveStream.jar でアーカイバを操作する
- curl のような wget のようなウェブクライアントの代替としてのStreamRelay.jar
StreamRelay.NET.exe
- netcat の代替としての StreamRelay.NET.exe
- スクリプト実行サーバ(NodeJSの代替)として StreamRelay.NET.exe
- cat/TYPE の代替としての StreamRelay.NET.exe
- cat/TYPE の代替としての StreamRelay.NET.exe (NTFS代替ストリーム)
- Proxy 経由で転送する StreamRelay.NET.exe
- HTTP Proxy としての StreamRelay.NET.exe
- telnet コマンドの代替としての StreamRelay.NET.exe
- ゲートウェイとしての StreamRelay.NET.exe
- Windows認証させる StreamRelay.NET.exe
- 圧縮コマンドの代替としての StreamRelay.NET.exe
- アーカイバコマンドの代替としての StreamRelay.NET.exe のサポートプログラム
- 符号化コマンドとしての StreamRelay.NET.exe
- BinHex符号化コマンドとしての StreamRelay.NET.exe
- ポートフォワーダとしての StreamRelay.NET.exe
- StreamRelay.NET.exeのログ出力機能
- stone/stunnel の代替としての StreamRelay.NET.exe (SSLクライアント編)
- stone/stunnel の代替としての StreamRelay.NET.exe (SSLサーバ編)
- STARTTLS ゲートウェイとしての StreamRelay.NET.exe
- SMTP認証を代替するStreamRelay.NET.exe
- ncatのブローカーモードの代替としての StreamRelay.NET.exe
- nkf の代替としての StreamRelay.NET.exe (文字コード変換)
- script コマンドの代替としての StreamRelay.NET.exe
- ターミナルの代替としての StreamRelay.NET.exe
- サウンドレコーダーの代替としての StreamRelay.NET.exe
- サウンドレコーダー/サウンドプレーヤーの代替としての StreamRelay.NET.exe(NAudio)
- 音声合成としての StreamRelay.NET.exe
- 音声認識としての StreamRelay.NET.exe
- md5sum コマンドの代替としての StreamRelay.NET.exe (ハッシュ/チェックサム/HMAC計算)
- ファイル暗号化コマンドとしての StreamRelay.NET.exe
- StreamRelay.NET.exe で入力ダイアログで暗号鍵を与える
- zebedee のような vpn の代替としての StreamRelay.NET.exe
- WindowsNTサービスとしてのStreamRelay.NET.exe
- DPAIの試用ツールとしてのStreamRelay.NET.exe
- 乱数アルゴリズムの試用ツールとしてのStreamRelay.NET.exe
- 完全消去の代替としての StreamRelay.NET.exe
- bash仮想ネットワークファイルのお相手としての StreamRelay.NET.exe
- httptunnel の代替としての StreamRelay.NET.exe
- WebSocketCat(wscat) の代替としての StreamRelay.NET.exe
- curl のような wget のようなウェブクライアントの代替としてのStreamRelay.NET.exe
- ソースルーティング試験ツールとしてのStreamRelay.NET.exe
- トンネルプロトコル(ICMPTunnel)ツールとしてのStreamRelay.NET.exe
- grep/sed コマンドの代替としての StreamRelay.NET.exe
- SSRF on HostHeader Poisoning を確認するツールを作った
StreamRelay.NET.exeのプラグイン作成方法
- 文字コードプラグインの実装方法
- インターフェイス IPluginBase について
- ランダムプラグインの実装方法
- パスワード攪拌関数プラグインの実装方法
- Hash/Mac プラグインの実装方法
- ロギングプラグインの実装方法
- 一覧プラグインの実装方法
- フィルタストリームをプラグインとして実装する方法
- スクリプトプラグインの実装方法
- 入出力ストリームをStreamRelay.NET.exe のプラグインとして実装する方法について説明する
- 暗号プラグインの実装方法