基本的には二つの "ストリーム" のデータ交換を行う つまり、「ネットワーク|コンソール|外部コマンド」⇔「ネットワーク|コンソール|外部コマンド」で通信する サウンドも javax.sound.sampled.AudioInputStream ということで、ストリームなので、対応 UDP/RMI/Corba/(サウンドの出力) はストリームを継承するクラスを実装すること対応 |
基本的には二つのストリームは対等だけど、 ネットワークストリームに関して、「サーバ」と「クライアント」と対等ではなくなるので、 片方(サーバとして動作する側)を「Local」。 もう片方(クライアントとして動作する側)を「Remote」と呼称している |
オプション指定は、 片方のストーム(ネットワークでサーバとなる方)を「LocalXXXX」、もう片方(ネットワークでクライアントとなる方)を「RemoteXXXX」 「クライアント」→「サーバ」への流れに対して「RequestXXXX」 「サーバ」→「クライアント」への流れに対して「ResponseXXXX」 (とりあえず命名されているStream の)"Local" の入力側ということで「-LocalInoutXXXX」というオプション指定が可能なものもある。 (とりあえず命名されているStream の)"Local" の出力側ということで「-LocalOuoutXXXX」というオプション指定が可能なものもある。 (とりあえず命名されているStream の)"Remote" の入力側ということで「-RemoteInoutXXXX」というオプション指定が可能なものもある。 (とりあえず命名されているStream の)"Remote" の出力側ということで「-RemoteOuoutXXXX」というオプション指定が可能なものもある。 |
フィルタ機能として、Base64エンコード/デコードや、文字コード変換や、SOCKS Proxy 機能、ハッシュ計算、暗号化処理などを用意 |
プロパティ/メソッド名 | 意味 |
---|---|
(String)InputStr | 文字コード指定の場合、ストリームデータを文字列に置換した状態でこれに格納されてる。 また、これに格納しておくことで、ストリームへ出力される |
(byte[])InputByteArray | 文字コードを指定していない場合、ストリームデータをバイト列としてこれに格納されている。 また、これに格納しておくことで、ストリームへ出力される |
(String)BufferStr (byte[])BufferByteArray | 一時格納用、次の呼び出しでも保持される。TCPの接続とストリームの方向ごとに独立で保持される |
(Object)myTag | なんとなく、Object 型の変数を用意してみた。バッファとして使えると思う |
(Boolean)IsSend | このスクリプト呼び出し後に InputByteArray/InputStr のデータを転送したい場合 true をセットする(既定はtrue) |
(String)InputStrReverse (byte[])InputByteArrayReverse | 返信したい場合、こちらに格納する。文字コードを指定した場合は String 型の変数へ、そうでない場合は、byte配列型の変数へ格納すること |
(Boolean)IsSendReverse | このスクリプト呼び出し後に InputByteArrayReverse/InputStrReverse のデータを返信したい場合 true をセットする(既定はfalse) |
(Boolean)IsClose | このスクリプト呼び出し後に、コネクションを切断したい場合 true をセットする(既定はfalse) |
(Boolean)IsRequest | このスクリプトが「リクエスト」のストリームで呼び出された場合 true。「レスポンス」のストリームで呼び出された場合 false |
(Boolean)IsInput | このスクリプトが入力側で呼び出された場合 true。出力側で呼び出された場合 false |
(int)count | 呼び出された回数。(「count=0」は接続直後なので、データ(InputByteArray/InputStr)は空のはず) |
(String)InputCallerAddress | 入力側の相手のアドレス、またはプログラム、ファイル、標準入力 |
(int)InputCallerPort | 入力側の相手のポート番号 |
(String)InputMyselfAddress | 入力側の自分自身のアドレス、またはプログラム、ファイル、標準入力 |
(int)InputMyselfPort | 入力側の自分自身のポート番号 |
(String)OutputCallerAddress | 出力側の相手のアドレス、またはプログラム、ファイル、標準入力 |
(int)OutputCallerPort | 出力側の相手のポート番号 |
(String)OutputMyselfAddress | 出力側の自分自身のアドレス、またはプログラム、ファイル、標準入力 |
(int)OutputMyselfPort | 出力側の自分自身のポート番号 |
動作確認の状態(2016/10/14 にダウンロード(scripting.tgz/jsr223-engines.zip)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
WARNING: "IOP00410201: (COMM_FAILURE) Connection failure: socketType: IIOP_CLEAR_TEXT; hostname: 0.0.0.0; port: 1050" org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code: 201 completed: No |
java.lang.ClassNotFoundException: RmiObj_Stub |
java.net.ConnectException: Connection refused: connect |
netcat のクライアント・モード |
---|
nc.exe -nvv 192.0.2.1 90 |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 0 -RemoteHost 192.0.2.1 -RemotePort 90 -Verbose |
netcat のポート開閉確認 |
---|
nc.exe -nvv -z 192.0.2.1 90 |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 0 -RemoteHost 192.0.2.1 -RemotePort 90 -Verbose -ZeroIO |
netcat のサーバ・モード |
---|
nc.exe -nvv -L -p 90 |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 90 -RemotePort 0 -Verbose |
ncat のようなブローカーモード |
---|
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 90 -RemotePort 0 -Broker |
ncat のようなブローカーモードでログを記録 |
---|
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 90 -RemotePort 0 -Broker -LoggingFile chatolog.txt |
netcat のリモートシェル・サーバ・モード |
---|
nc.exe -nvv -L -p 90 -e cmd.exe |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 90 -RemoteProgram cmd.exe -RemotePort -1 -Verbose |
netcat のリバース・リモートシェル・サーバ・モード |
---|
nc.exe -nvv 192.0.2.1 90 -e cmd.exe |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalProgram cmd.exe -LocalPort -1 -RemoteHost 192.0.2.1 -RemotePort 90 -Verbose |
OpenSSL のクライアント・モード |
---|
openssl.exe s_client -host 192.0.2.1 -port 443 |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 0 -RemoteHost 192.0.2.1 -RemotePort 443 -Verbose -RemoteSSL |
OpenSSL のクライアント・モード(SNI 必須なサーバへ接続する) |
---|
openssl.exe s_client -host sslserver.example.com -port 443 |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 0 -RemoteHost sslserver.example.com -RemotePort 443 -Verbose -RemoteSSL |
SNI 必須な SSL/TLS サーバへはホスト名で接続すること |
winrelay と同等 |
---|
winrelay.exe -lp 90 -dip 192.0.2.1 -dp 80 |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 90 -RemoteHost 192.0.2.1 -RemotePort 80 |
winrelay と同等、さらに通信ログを画面に出力 |
---|
winrelay.exe -lp 90 -dip 192.0.2.1 -dp 80 |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 90 -RemoteHost 192.0.2.1 -RemotePort 80 -Logging |
winrelay と同等、さらに通信ログを16進数で画面に出力 |
---|
winrelay.exe -lp 90 -dip 192.0.2.1 -dp 80 |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 90 -RemoteHost 192.0.2.1 -RemotePort 80 -Logging -LoggingHex |
winrelay と同等、さらに通信ログのバイナリを UTF8 として変換しつつ画面に出力 |
---|
winrelay.exe -lp 90 -dip 192.0.2.1 -dp 80 |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 90 -RemoteHost 192.0.2.1 -RemotePort 80 -Logging -LoggingCharset UTF-8 |
sTunnel と同等 |
---|
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 80 -RemoteHost 192.0.2.1 -RemotePort 443 -RemoteSSL |
wsTunnel っぽく |
---|
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -RemoteSSL -GUI |
ZeBeDee のような VPN |
---|
localhost -(平文)- localhost:90 -(暗号化)- 192.0.2.1:10990 -(平文)- サーバ(192.0.2.2)(80/tcp) |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 90 -RemoteHost 192.0.2.1 -RemotePort 10990 -RemoteCipherAlgorithm RC4 -RemoteCipherDH |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 10990 -RemoteHost 192.0.2.2 -RemotePort 80 -LocalCipherAlgorithm RC4 -LocalCipherDH |
ZeBeDee のような VPN2(AES というブロック暗号をストリーム暗号のように使うモード) |
---|
localhost -(平文)- localhost:90 -(暗号化)- 192.0.2.1:10990 -(平文)- サーバ(192.0.2.2)(80/tcp) |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 90 -RemotePort 10990 -RemoteHost 192.0.2.1 -RemoteCipherAlgorithm AES/OFB8/NoPadding -RemoteCipherPassword abcdefgh -RemoteAlgorithmParameters <<サーバ側で出力されたAlgorithmParameterを指定する>> |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 10990 -RemotePort 80 -RemoteHost 192.0.2.2 -LocalCipherAlgorithm AES/OFB8/NoPadding -LocalCipherPassword abcdefgh -CalculateAlgorithmParameters |
ZeBeDee のような VPN3(AES というブロック暗号をストリーム暗号のように使うモード{OFBよりこちらの方が推奨されるらしい}) |
---|
localhost -(平文)- localhost:90 -(暗号化)- 192.0.2.1:10990 -(平文)- サーバ(192.0.2.2)(80/tcp) |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 90 -RemotePort 10990 -RemoteHost 192.0.2.1 -RemoteCipherAlgorithm AES/CTR/NoPadding -RemoteCipherPassword abcdefgh -RemoteAlgorithmParameters <<サーバ側で出力されたAlgorithmParameterを指定する>> |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 10990 -RemotePort 80 -RemoteHost 192.0.2.2 -LocalCipherAlgorithm AES/CTR/NoPadding -LocalCipherPassword abcdefgh -CalculateAlgorithmParameters |
ZeBeDee のような VPN4(AES というブロック暗号をストリーム暗号のように使うモード{OFBよりこちらの方が推奨されるらしい})(さらに ZLIB のバッファリング無圧縮を実施する) |
---|
localhost -(平文)- localhost:90 -(暗号化)- 192.0.2.1:10990 -(平文)- サーバ(192.0.2.2)(80/tcp) |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 90 -RemotePort 10990 -RemoteHost 192.0.2.1 -RemoteZLIBCommpress=SyncFlush -RemoteCipherAlgorithm AES/CTR/NoPadding -RemoteCipherPassword abcdefgh -RemoteAlgorithmParameters <<サーバ側で出力されたAlgorithmParameterを指定する>> |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 10990 -RemotePort 80 -RemoteHost 192.0.2.2 -LocalZLIBCommpress=SyncFlush -LocalCipherAlgorithm AES/CTR/NoPadding -LocalCipherPassword abcdefgh -CalculateAlgorithmParameters |
ファイル転送 |
---|
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 0 -LocalInputFile abc.txt -RemoteHost 192.0.2.1 -RemotePort 90 -Verbose |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 90 -RemotePort 0 -RemoteOutputFile abc.txt -Verbose |
netcat のクライアント・モードで、ファイルから入力 |
---|
c:\> type abc.txt HEAD / HTTP/1.0 c:\> nc.exe -nvv 192.0.2.1 90 < abc.txt |
c:\> type abc.txt HEAD / HTTP/1.0 c:\> java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 0 -LocalInputFile abc.txt -AllowHalfOpen -RemoteHost 192.0.2.1 -RemotePort 90 -Verbose |
netcat のサーバ・モードで、疑似 Web サーバ |
---|
c:\> type index.htm HTTP/1.0 200 OK Content-Type: text/html Content-Length: 5 Hello c:\> nc.exe -nvv -L -p 80 192.0.2.1 < index.htm |
c:\> type index.htm HTTP/1.0 200 OK Content-Type: text/html Content-Length: 5 Hello c:\> java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 80 -RemotePort 0 -RemoteInputFile index.htm -NonBroadCast -Verbose |
HTTP Proxy(Connect) Server(192.0.2.3:8080) を経由して、192.0.2.4:80 へ接続する(自分は 91/tcp で待機) |
---|
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 91 -RemoteHost 192.0.2.4 -RemotePort 80 -Verbose -proxy connect://192.0.2.3:8080 |
SOCKSv4a(192.0.2.3:90) で接続して、さらに HTTP Proxy(Connect) Server(192.0.2.5:8080) を経由して、192.0.2.4:80 へ接続する(自分は 91/tcp で待機) |
---|
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 91 -RemoteHost 192.0.2.4 -RemotePort 80 -Verbose -proxy socks4a://192.0.2.3:90 -proxy connect://192.0.2.5:8080 |
HTTP Proxy(Connect) Server(192.0.2.1:8080) を経由して、192.0.2.2:443(SSL Server) へ接続する(自分は 91/tcp で待機) |
---|
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -localport 91 -remoteport 443 -remotehost 192.0.2.2 -Proxy connect://192.0.2.1:8080 -verbose -RemoteSSLAfterProxyConnection |
Web Get の代替 |
---|
wget.exe http://www.example.com/ |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 0 -LocalInputUrlFile http://www.example.com/ -RemotePort 0 |
文字コードの変換 |
---|
nkf.exe -S -e input.txt > output.txt |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 0 -LocalInputFile input.txt -LocalCharset Shift_JIS -RemotePort 0 -RemoteCharset EUC-JP -RemoteOutputFile output.txt |
ファイルコピー |
---|
copy a.txt b.txt |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 0 -LocalInputFile a.txt -RemotePort 0 -RemoteOutputFile b.txt |
二つのファイルコピー |
---|
copy a.txt b.txt && copy x.txt y.txt |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 0 -LocalInputFile a.txt -LocalOutputFile y.txt -RemotePort 0 -RemoteOutputFile b.txt -RemoteInputFile x.txt -AllowHalfOpen |
スクリプト・コマンドっぽく |
---|
script outputLog.txt |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 0 -RemotePort -1 -RemoteProgram cmd.exe -LoggingFile outputLog.txt |
ファイルの圧縮(java.util.zip.GZIPOutputStream は GZIP コマンドと互換性があるようだ) |
---|
gzip.exe a.txt |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 0 -LocalInputFile a.txt -RemotePort 0 -RemoteRequestGZIPCommpress -RemoteOutputFile a.txt.gz |
ファイルの解凍(java.util.zip.GZIPInputStream は GZIP コマンドと互換性があるようだ) |
---|
gzip.exe -d a.txt.gz |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 0 -LocalInputFile a.txt.gz -RemotePort 0 -LocalRequestGZIPCommpress -RemoteOutputFile a.txt |
ハッシュ値の計算 |
---|
md5sum.exe a.txt |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 0 -LocalInputFile a.txt.gz -RemotePort 0 -LocalRequestHashAlgorithm MD5 |
NodeJS っぽく (動かすスクリプトは ECHO サーバ) |
---|
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -localport 90 -remoteport 0 -ScriptFile echo.js -verbose -debugmode |
ファイルを圧縮しつつ、圧縮前と圧縮後のチェックサムとハッシュ値を表示 |
---|
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 0 -LocalInputFile a.txt -RemotePort 0 -RemoteRequestGZIPCommpress -RemoteOutputFile a.txt.gz -LocalRequestHashAlgorithm MD5 -RemoteRequestHashAlgorithm MD5 -LocalRequestCRC32 -RemoteRequestCRC32 |
ファイルを圧縮しつつ、圧縮前と圧縮後のハッシュと HMAC とチェックサムとカウント値を全て表示 |
---|
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 0 -LocalInputFile a.txt -RemotePort 0 -RemoteRequestGZIPCommpress -RemoteOutputFile a.txt.gz -LocalRequestAllHMACAlgorithm <<Key>> -RemoteRequestAllHMACAlgorithm <<Key>> |
ファイルを圧縮しつつ、圧縮前と圧縮後のハッシュとチェックサムとカウント値を全て表示 |
---|
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 0 -LocalInputFile a.txt -RemotePort 0 -RemoteRequestGZIPCommpress -RemoteOutputFile a.txt.gz -LocalRequestAllHashAlgorithm -RemoteRequestAllHashAlgorithm |
ファイルのハッシュ値を全て表示 |
---|
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 0 -RemotePort 0 -LocalInputFile a.txt -RemoteOutputFile nul -RemoteRequestAllHashAlgorithm |
FOR /F "usebackq skip=2" %I in (`java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -ListHash`) do @java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort0 -RemotePort 0 -LocalInputFile a.txt -RemoteOutputFile nul -RemoteRequestHashAlgorithm %I |
ストリームにスクリプトを割り当てる |
---|
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 90 -RemoteHost 192.0.2.1 -RemotePort 80 -ScriptFile script.js |
サウンド・レコーダー |
---|
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 0 -LocalInputMic -RemotePort 0 -RemoteOutputFile AudioSaveFile.pcm -Verbose |
サウンド・レコーダーで保存したデータファイルを au 形式に変換 |
---|
java.exe SoundFormatChange AudioSaveFile.pcm AudioSaveFile.au |
音声チャット(片方がイヤホンなどでハウリング対策をする必要があるでしょう) |
---|
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -Verbose -LocalPort 99 -RemotePort 0 -RemoteInputMic -RemoteOutputSpeaker |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -Verbose -LocalPort 0 -RemotePort 99 -RemoteHost 192.0.2.1 -LocalInputMic -LocalOutputSpeaker |
電話会議 |
---|
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -Verbose -LocalPort 99 -RemotePort 0 -RemoteInputMic -RemoteOutputSpeaker -Broker |
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -Verbose -LocalPort 0 -RemotePort 99 -RemoteHost 192.0.2.1 -LocalInputMic -LocalOutputSpeaker |
SSL のプロトコル/暗号方式の確認 |
---|
sslscan 192.0.2.1:443 |
for /F "usebackq skip=2" %i in (`java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -ListSSLProtocol`) do @for /F "usebackq skip=2" %j in (`java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -ListSSLCipherSuite`) do @java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -localport 0 -zeroio -remoteport 443 -remotehost 192.0.2.1 -remotessl -UseSSLProtocols %i -UseSSLCipherSuites %j -verbosessl 2> nul |
SSHのcipherをscanしたい時、wireshark起動するのは非効率なので、sslscanみたいなのを探してみたらあった! c:\> nmap.exe --script ssh2-enum-algos -sV -p <port> <host> link https://nmap.org/nsedoc/scripts/ssh2-enum-algos.html |
SSL のプロトコルを制限して接続する |
---|
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 0 -RemotePort 443 -RemoteSSL -VerboseSSL -RemoteHost 192.0.2.1 -RistrictSSLCipherSuites .*RC4.* |
wget, curl っぽく |
---|
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 0 -RemotePort 0 -RemoteSSL -VerboseSSL -LocalInputUrlFile http://www.example.com/index.html |
WavDAV クライアントっぽく(a.txt をアップロードする) |
---|
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 0 -RemotePort 0 -RemoteSSL -VerboseSSL -LocalInputFile a.txt -RemoteOutputUrlFile http://www.example.com/index.html#header=Translate:f |
C:\>StreamRelay.bat StreamRelay for JAVA ver 8.4 create by active@window.goukaku.com java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar [options] if port=0 stdio/stdout if port=-1 <<RemoteProgram|LocalProgram>> load Program options ------------------------------------------------ -LocalPort <<num>> : Bind Port if 0 is stdin/out if -1 is program -LocalHost <<Hostname>> : Bind Host -RemotePort <<num>> : Redirect Port if 0 is stdin/out if -1 is program -RemoteHost <<Hostname>> : Redirect Host ------------------------------------------------ -[Local|Remote]SourceHost <<Hostname>> : Source Host -[Local|Remote]SourcePort <<num>> : Source Port ------------------------------------------------ -[Local|Remote]UDP : Local/Remote Protocol is UDP -[Local|Remote]RMI : Local/Remote Protocol is RMI SET CLASSPATH=%CLASSPATH%;. START /min rmiregistry.exe or START /min rmiregistry.exe <<port>> (default RMIPort is 1099 -[Local|Remote]CORBA : Local/Remote Protocol is CORBA START /min orbd.exe -ORBInitialPort <<port>> (default ORBInitialPort is 1050 -[Local|Remote]ObjectName <<String>> : RMI/CORBA RemoteID (default StreamRelay) -[Local|Remote]Heartbeat : RMI/CORBA Heartbeat is trues ------------------------------------------------ -[Local|Remote]Program <<Program>> : Bind Program -[Local|Remote]Environment <<name=value>> : Environment for Bind Program -[Local|Remote]TempDir <<path>> : Temporary Directory for Bind Program ------------------------------------------------ -[Local|Remote]InputFile <<FileName>> : if Port=0 stdin redirect to file -[Local|Remote]OutputFile <<FileName>> : if Port=0 stdout redirect to file -[Local|Remote]InputMic : if Port=0 stdin redirect to microphone -[Local|Remote]OutputSpeaker : if Port=0 stdout redirect to speaker -[Local|Remote]InputUrlFile <<url>> : if Port=0 stdin redirect to http[s]://user:pass@host:port/path?query#options&options... -[Local|Remote]OutputUrlFile <<url>> checkcert header=name:value post=<<postedFile(HTTPMethod=POST{default})>> (Download Only,Upload is RequestBody is StreamData) ProxyHost=<<host>> ProxyPort=<<port>> ProxySocks : ProxyType is SOCKS ProxyHttp : ProxyType is HTTP UseSSL2 : >SSL2 UseSSL3 : >SSL3.0 UseTLS10 : >TLS1.0 UseTLS11 : >TLS1.1 UseTLS12 : >TLS1.2 UseWeakAlgorithm DisableTlsSni CheckCert : defaul NoCheck AutoRedirect TempMem (Upload Only, useMemoryBuffuring) TempFile (Upload Only, useTemporaryFileBuffuring) Method=[POST|GET|HEAD|OPTIONS|PUT|DELETE|TRACE] Downlaod Default is GET Uplaod Default is PUT ------------------------------------------------ -RemoteSSL : Redirect is SSL Server -RemoteSSLAfterProxyConnection : Redirect is SSL Server (After Proxy Connection)(-Proxy option) -RemoteSSLMode [SSL|TLS] : SSL mode OR TLS mode (default TLS mode) -RemoteSSLName <<FQDN>> : Set Check SSL RemoteCommonName -DisableSNI : Disable TLS SNI Java7 -UseWeakAlgorithm : Use Weak Algorithm ristricted Java7 -UseAllSSLProtocols : Use All SSL Protocol -UseSSLProtocol <<protocol>> : Use SSL Protocol -RistrictSSLProtocol <<protocol>> : Ristrict SSL Protocol -ListSSLProtocol : Listing SSL Protocol -UseAllSSLCipherSuites : Use All SSL Cipher Suite -UseSSLCipherSuites <<name>> : Use SSL Cipher Suite -RistrictSSLCipherSuite <<name>> : Ristrict SSL Cipher Suite -ListSSLCipherSuite : Listing SSL CipherSuite Algorithm -RemoteProxy : HTTP ProxyMode (recommend "-RemoteSSL") ------------------------------------------------ ------------------------------------------------ -Proxy [uri] : setting Proxy Server "Socks4://[<username>@]<host>:<port>" "Socks4a://[<username>@]<host>:<port>" "Socks5://[<username>[:<password>]@]<host>:<port>" "CONNECT://[<username>[:<password>]@]<host>:<port>" "SSH://[<username>[:<password>]@]<host>:<port>[/[SecretKeyFilePath]]" "JavaStream://[<OptionName>[=<OptionValue>]][,]...." DH : use DH Key Exchange ECDH : use ECDH Key Exchange Cipher=<name> CipherKeyword=<password> CipherKeywordFromGUI CipherKeywordHashName=<name> [Request|Response][BZIP|XZ|Pack200|LZ4]Compress Request[Deflate|ZLIB]Compress[=<lv>[;SyncFlush]] Response[Deflate|ZLIB]Compress [Request|Response]GZIPCompress[=SyncFlush] [Request|Response][Adler32|CRC32|CRC64|XXHash32|XXHash64] [Request|Response]HashAlgorithm=<name> [Request|Response]HMacAlgorithm=<name>;<key> [Request|Response]HMacAlgorithmHex=<name>;<hex key> [BZIP|XZ|Pack200|Lz4]Compress = Request[BZIP|XZ|Pack200|Lz4]Compress, Response[BZIP|XZ|Pack200|Lz4]Compress [Deflate|ZLIB]Compress[=<lv>[,SyncFlush]] = Request[Deflate|ZLIB]Compress[=<lv>[;SyncFlush]], Response[Deflate|ZLIB]Compress GZIPCompress[=SyncFlush] = RequestGZIPCompress[=SyncFlush], ResponseGZIPCompress "WebSocket://[<username>[:<password>]@][<host>[:<port>]][<URI>][?<OptionName>[=<OptionValue>]][,]...." host=<hostname> uri=<URI> (defaule:/) method=<value> (defaule:GET) Sec-WebSocket-Key=<base64encoded> Sec-WebSocket-Key-Auto Sec-WebSocket-Protocol=<chat/superchat> Sec-WebSocket-Extensions=<string> Origin=<value> "HTTP2://[<username>[:<password>]@][<host>[:<port>]][<URI>][?<OptionName>[=<OptionValue>]][,]...." host=<hostname> uri=<URI> (defaule:/) method=<value> (defaule:GET) HTTP2mode=<value(h2|h2c)> (defaule:h2c) Data Cipher Option -[Local|Remote]CipherAlgorithm <<name>> : Chipher Algorithm -ListCipher : Listing Cipher Algorithm -[Local|Remote]CipherPassword <<name>> : Chipher Key -[Local|Remote]CipherPasswordFromGUI : Chipher Key From InputDialog -[Local|Remote]CipherPasswordHashAlgorithm <<name>> : Hash Algorithm for Chipher Key (ex.SHA-384,SHA-224,SHA-256,MD2,SHA,SHA-512,MD5,MD4) -[Local|Remote]AlgorithmParameters <<HexData>> : used Cipher's class init() func -CalculateAlgorithmParameters : calculation AlgorithmParameters -[Local|Remote]CipherDH : DH Key Exchange -[Local|Remote]CipherECDH : ECDH Key Exchange -[Local|Remote][Request|Response]HashAlgorithm <<name>> -[Local|Remote][Input|Output]HashAlgorithm <<name>> : Stream Hash calc -ListHash : Listing Hash Algorithm -ListHMAC : Listing HMAC Algorithm -[Local|Remote][Request|Response]HMACAlgorithm <<name>> <<key>> -[Local|Remote][Input|Output]HMACAlgorithm <<name>> <<key>> -[Local|Remote][Request|Response]HMACAlgorithmHex <<name>> <<hex key>> -[Local|Remote][Input|Output]HMACAlgorithmHex <<name>> <<hex key>> : Stream HMAC calc (ex.PBEWITHHMACSHA512,PBEWITHHMACSHA224,PBEWITHHMACSHA256,HMACSHA384,PBEWITHHMACSHA384,HMACSHA256,HMACPBESHA1,HMACSHA224,HMACMD5,PBEWITHHMACSHA1,SSLMACSHA1,HMACSHA512,SSLMACMD5,HMACSHA1) -[Local|Remote][Request|Response][Adler32|CRC32|CRC64|XXHash32|XXHash64] -[Local|Remote][Input|Output][Adler32|CRC32|CRC64|XXHash32|XXHash64] : Stream Checksum calc -[Local|Remote][Request|Response]Count : Stream Counting Bytes -[Local|Remote][Input|Output]Count : Stream Counting Bytes ------------------------------------------------ -[Local|Remote][Request|Response]AllHashAlgorithm -[Local|Remote][Input|Output]AllHashAlgorithm : Stream All Hash/CheckSum/Counting -[Local|Remote][Request|Response]AllHMACAlgorithm <<key>> -[Local|Remote][Input|Output]AllHMACAlgorithm <<key>> -[Local|Remote][Request|Response]AllHMACAlgorithmHex <<hex key>> -[Local|Remote][Input|Output]AllHMACAlgorithmHex <<hex key>> : Stream All Hash/CheckSum/Counting/Hmac ------------------------------------------------ Data En/De-Coding Option -[Local|Remote][Request|Response][Base64|Base32|WebSocket[=[text|bin|mask[=<Hex>]]]] Data Compression Option -[Local|Remote][Request|Response][BZIP|Xz|Pack200|LZ4]Commpress -LocalRequest[deflate|ZLIB]Commpress] -LocalResponse[deflate|ZLIB]Commpress[=<lv>[;SyncFlush]] -RemoteRequest[deflate|ZLIB]Commpress[=<lv>[;SyncFlush]] -RemoteResponse[deflate|ZLIB]Commpress -LocalRequestGZIPCommpress -LocalResponseGZIPCommpress[=SyncFlush] -RemoteRequestGZIPCommpress[=SyncFlush] -RemoteResponseGZIPCommpress -[Local|Remote][BZIP|Xz|Pack200|LZ4]Commpress -[Local|Remote][deflate|ZLIB]Commpress[=<lv>[;SyncFlush]] -[Local|Remote]GZIPCommpress[=SyncFlush] ------------------------------------------------ -DebugMode : Debug mode -Verbose/-VerboseMode : Verbose mode -Verbosessl : SSL Verbose mode -Logging : DATA output to stdout -LoggingHex : DATA(Hex) output to stdout -LoggingFile <<FileName>> : DATA output to <<File>> -LoggingCharset <<CharName>> : DATA output by CharsetName -LoggingFileCharset <<CharName>> : LoggingFile CharsetName ------------------------------------------------ -AllowHalfOpen : HalfOpen Allowed -ZeroIO : Zero I/O only 0<LocalPort & 0=RemoteHost & NoRemoteInputFile ------------------------------------------------ -NonBroadcast : Legacy mode ... (^_^;) -Broker : like chat ------------------------------------------------ -ThreadInterval <<num>> : ThreadInterval Time (ms) (default 500(ms) -ConnectionLimit <<num>> : Limit Connection (default 0 is no limit) -BufferSize <<num>> : InputStream Buffer Size (byte) (default 1024 (byte)or(char counts) -ConnectedDelayTime <<(num)|(min-max)(,<<Randomize Option>>)>> -[Local|Remote]FragmentSize <<(num)|(min-max)(,<<Randomize Option>>)>> -[Local|Remote]FragmentInterval <<(num)|(min-max)(,<<Randomize Option>>)>> Randomize Option: SecureRandom : Use java.security.SecureRandom mtRandom : Use Mersenne Twister Random -CRLF : Lf=>CrLf -CRLFrequest : Lf=>CrLf (only Request Message) -CRLFresponse : Lf=>CrLf (only Response Message) -LF : CrLf=>Lf -LFrequest : CrLf=>Lf (only Request Message) -LFresponse : CrLf=>Lf (only Response Message) -[Local|Remote]Charset <<CharName>> : CharsetName -[Local|Remote][Request|Response]Charset <<CharName>> : CharsetName -ListCharset : Display Charsets ------------------------------------------------ -ScriptFile <<FileName>> : ScriptFile -ScriptCharset <<CharName>> : ScriptFile CharsetName -ScriptLanguage <<name>> : ScriptLanguage -ListScriptLanguage : Display ScriptLanguages (default JavaScript) ------------------------------------------------ -ConfigFile <<FileName>> : Configuration from File -GUI : GUI mode -ListSetting : Display VM Configuration ------------------------------------------------ ex. java.exe StreamRelay -LocalPort 80 -RemoteHost www.example.com -RemotePort 443 -RemoteSSL -> like stunnel client mode java.exe StreamRelay -LocalPort 0 -RemoteHost www.example.com -RemotePort 80 -> like netcat client mode java.exe StreamRelay -LocalPort 0 -RemoteHost www.example.com -RemotePort 80 -RemoteSSL -> like openssl client mode java.exe StreamRelay -LocalPort 90 -RemoteProgram cmd.exe -RemotePort -1 -> like telnet server mode This uses Apache Commons Compress ver1.17 http://commons.apache.org/proper/commons-compress/ This uses Apache Commons Cpdec ver1.11 http://commons.apache.org/proper/commons-codec/ This uses bzip2 library from Apache Ant http://www.kohsuke.org/bzip2/ This uses Base64Coder - an open-source Base64 encoder/decoder in Java http://www.source-code.biz/base64coder/java/ This uses XZ for Java ver1.8 http://tukaani.org/xz/java.html This uses lz4-java ver1.4.1 https://github.com/lz4/lz4-java This uses OpenJDK's MD4 http://hg.openjdk.java.net/jdk6/jdk6/jdk/file/2d585507a41b/src/share/classes/sun/security/provider/MD4.java This uses Rabbit.java https://gist.github.com/xSAVIKx/6783c424ee618ee8127e This uses jsch ver1.50 customized http://www.jcraft.com/jsch/ This uses Mersenne Twister http://homepage2.nifty.com/mathpara/programing/MersenneTwister.htm |
java.exe SoundFormatChange 《InputFile(PCM)》 《OutputFile(au)》 |
java.exe ZipStream list 《ZipFile》 [-v] java.exe ZipStream read 《ZipFile》 《File》 java.exe ZipStream write 《ZipFile》 《File》 |
java.exe ZipStream read 《ZipFile》 《File》 > 《File》 |
type 《File》 | java.exe ZipStream write 《ZipFile》 《File》 java.exe ZipStream write 《ZipFile》 《File》 < 《File》 |
ArchiveStream.bat 《cpio|tar|ar|zip|arj|7z|lha》 list 《ArcFile》 [-v] ArchiveStream.bat 《cpio|tar|ar|zip|arj|7z|lha》 read 《ArcFile》 《File》 ArchiveStream.bat 《cpio|tar|ar|zip|arj|7z|lha》 write 《ArcFile》 《File》 |
ArchiveStream.bat 《cpio|tar|ar|zip|arj|7z|lha》 read 《ArcFile》 《File》 > 《File》 |
type 《File》 | ArchiveStream.bat 《cpio|tar|ar|zip|arj|7z|lha》 write 《ArcFile》 《File》 ArchiveStream.bat 《cpio|tar|ar|zip|arj|7z|lha》 write 《ArcFile》 《File》 < 《File》 |