LoginSignup
0
0

More than 5 years have passed since last update.

符号化コマンドとしての StreamRelay.NET.exe

Last updated at Posted at 2017-06-05

Base64 とか Base32 などは、フィルタストリームとして実装しているので、netstream スキームの Proxy オブジェクトとして、多段Proxy のように設定する事が可能

符号化コマンドとしての StreamRelay.NET.exe

C:\>type a.txt
HelloWorld
C:\>StreamRelay.NET.exe -LocalPort 0 -RemotePort 0 -LocalInputFile a.txt -RemoteOutputFile a.txt.out -RemoteProxy netstream:///?Base64encode
C:\>type a.txt.out
SGVsbG9Xb3JsZA==
C:\>StreamRelay.NET.exe -LocalPort 0 -RemotePort 0 -LocalInputFile a.txt.out -LocalProxy netstream:///?Base64decode
HelloWorld

符号化のオプションというか、様々なアルゴリズムの一覧

StreamRelay.NET.exe -ListFilter

符号化のオプションというか、様々なアルゴリズムの一覧(Base16系)

  • Hexdecode/Hexencode

いわゆる ヘキサ表示 とか 16進数表示

  • Urldecode(="CharSet")/Urlencode → URLエンコード(「%」+16進数表示)
  • Quoteddecode(="CharSet")/Quotedencode → QuotePrintable(「=」+16進数表示)

符号化のオプションというか、様々なアルゴリズムの一覧(Base64系)

  • Base64decode/Base64encode は63番目→「+」、64番目→「/」、パディング→「=」
  • Base64decodeFileSafe/Base64encodeFileSafe は63番目→「+」、64番目→「-」、パディング→「=」
  • Base64decodeUrlSafe/Base64encodeUrlSafe は63番目→「-」、64番目→「_」、パディング→「=」
  • Base64decodeXmlName/Base64encodeXmlName は63番目→「.」、64番目→「-」、パディング→「=」
  • Base64decodeXmlId/Base64encodeXmlId は63番目→「_」、64番目→「:」、パディング→「=」
  • Base64decodeRegularExpression/Base64decodeRegularExpression は63番目→「!」、64番目→「-」、パディング→「=」
  • Base64decodeProgramid1/Base64encodeProgramid1 は63番目→「_」、64番目→「-」、パディング→「=」
  • Base64decodeProgramid2/Base64encodeProgramid2 は63番目→「.」、64番目→「_」、パディング→「=」
  • BinHexdecode/BinHexencode は Base64 のような置換
  • BinHexdecorate/BinHexencorate は BinHex の装飾処理
  • XXdecoding/XXencoding は Base64 のような置換
  • Radix64decode/Radix64encode は Base64 のような置換
  • uudecoding/uuencoding は Base64 のような置換
  • yenc/ydec は Base64 のような置換
  • Pack6decode/Pack6encode もたしか Base64 のような置換だった気がする
  • defish/enfish は Base64 のようなおさかな符号化
  • defish="CharSet"/enfish="CharSet" は65種類(65番目はパディング)を並べる
  • Base64decodeCustom="Seed(size=65)"[CharSet]/Base64encodeCustom="Seed(size=65)"[CharSet] も65種類(65番目はパディング)を並べる(文字コードも指定できる)

具体的なシードなどは Base64 WikipediayEnc WikipediaXxencoding WikipediaUuencoding Wikipedia

符号化のオプションというか、様々なアルゴリズムの一覧(Base32系)

Plugin.sEncoding.dll に実装した。

  • Base32Encode/Base32Decode → 普通の Base32
  • Base32EncodeRfc4648/Base32DecodeRfc4648 → RFC4648方式
  • Base32EncodeHex/Base32DecodeHex → Base32Hex方式
  • Base32EncodeCrockford/Base32DecodeCrockford → Crockford方式
  • Base32EncodeCustom/Base32DecodeCustom → Base64と同じように、自由にシードを設定する事がてきるよ

具体的なシードなどは Base32 Wikipedia

符号化のオプションというか、様々なアルゴリズムの一覧(Base85系)

  • Base85decodeRfc1924/Base85encodeRfc1924 → RFC1924形式
  • Base85decodeZ85/Base85encodeZ85 → Z85形式
  • Base85decodeZmodem/Base85encodeZmodem → Zmodem形式
  • Base85decodebtoa/Base85decodebtoa → btoa形式
  • Base85decodebtoa42/Base85decodebtoa42 → btoa ver4.2 形式
  • Base85decodeAdobe/Base85decodeAdobe → Adobe 形式
  • Base85decodecustom="Seed(size=85)"[CharSet],"CompressionChars"/Base85encodecustom="Seed(size=85)"[CharSet],"CompressionChars" → 85種類の文字と文字コードと圧縮文字を自由に指定

具体的なシードなどは Ascii32 Wikipedia

符号化のオプションというか、様々なアルゴリズムの一覧(Base36系)

  • Base36decode32/Base36encode32 → 32bit単位で Base36 する
  • Base36decode64/Base36encode64 → 64bit単位で Base36 する
  • Geohash36decode32/Geohash36decode32 → 32bit単位で Geohash 方式で Base36 する
  • Geohash36decode64/Geohash36decode64 → 64bit単位で Geohash 方式で Base36 する
  • Base36decode32custom="Seed(size=36)"[CharSet]/Base36encode32custom="Seed(size=36)"[CharSet] → 32bit単位で指定した36文字の Base36 を実施する
  • Base36decode64custom="Seed(size=36)"[CharSet]/Base36encode64custom="Seed(size=36)"[CharSet] → 64bit単位で指定した36文字の Base36 を実施する

具体的なシードなどは Base36 Wikipedia

符号化のオプションというか、様々なアルゴリズムの一覧(Base94系)

シードは一つのタイプなので、一つだけ

  • Base94decode/Base94encode

符号化のオプションというか、様々なアルゴリズムの一覧(Base122系)

シードは一つのタイプなので、一つだけ

  • Base122decode/Base122encode

符号化のオプションというか、様々なアルゴリズムの一覧(Base65535系)

2バイトを UTF16(サロゲートペア含) とみなして文字列化する。
シードは一つのタイプなので、一つだけ

  • Base65536decode/Base65536encode

完全バッファリングタイプの符号化

オプションで「bBase・・・・」というのは、完全バッファリングするタイプとなっている。
例えば「bBase91decode」は、ストリームを全部読みきって(Closeするまで、StreamRelay.NET.exe上のメモリにバッファリングする)から、全体のバイト配列を91進数と256進数の変換処理を実施する。
そのために、BigInteger構造体などを利用している

符号化のオプションというか、様々なアルゴリズムの一覧(Base58系)

完全バッファリングの方式のみだけど、以下のタイプがある

  • bBase58decodeFlickr/bBase58encodeFlickr → Flickr方式のシードを使う
  • bBase58decodeBitCoin/bBase58encodeBitCoin → BitCoin方式のシードを使う
  • bBase58decoderipple/bBase58encoderipple → Ripple方式のシードを使う

具体的なシードなどは Base58 Wikipedia

符号化のオプションというか、様々なアルゴリズムの一覧(Base2系)

  • KensiroDecoding/KensiroEncoding → ケンシロウ進数
  • KensiroDecoding3/KensiroEncoding3 → ケンシロウ進数3(圧縮)
  • PipiruDecoding/PipiruEncoding → ドクロちゃん進数
  • Base2Decode/Base2Encode → ふつうの2進数

Kensiro[En|De]codingでは、オプションとして[基数文字(文字コード)]
という指定もできる。
例えば、

  • KensiroEncoding=ぬふUTF-8

だと「ぬ→0」「ふ→1」で文字コード「UTF-8」という事になる。
つまり、

KensiroEncoding

KensiroEncoding=たあShift-JIS

KensiroEncoding=たあ

は同じ設定。

また

PipiruDecoding

KensiroEncoding=るぴShift-JIS

KensiroEncoding=るぴ
も同じ設定

符号化のオプションというか、様々なアルゴリズムの一覧(Base8系)

3Byte(24Bit)を一つのブロックとして、8進数に変換する。

  • Base8decode[=[Seed][CharSet]]
  • Base8encode[=[Seed][CharSet]]

で、3Byte(24Bit)単位で、符号化を実施する。
2Byteのカケラは18文字。
1Byteのカケラは9文字。
を返す。

Base8encode=01234567

Base8encode=01234567UTF-8

Base8encode

は同じ設定

符号化のオプションというか、様々なアルゴリズムの一覧(BaseNN系)

以下のオプションは、文字コードとシードを自由に設定できる

  • bBaseNNdecode=["CharSet",]"Seed"
  • bBaseNNencode=["CharSet",]"Seed"

Charset に文字コード、Seed に与えた文字数を基数となる符号化を実施する

符号化のオプションというか、様々なアルゴリズムの一覧(ビット演算系)

  • inputNot/outputNot → NOT演算(ビット反転)
  • inputRot256="num"/outputRot256="num" → ROT演算(何ビット加算/減算するか)(シーザー暗号っぽく)
  • inputXor="file"/outputXor="file" → 指定したファイルと XOR 演算する
  • inputOr="file"/outputOr="file" → 指定したファイルと OR 演算
  • inputAnd="file"/outputAnd="file" → 指定したファイルと AND 演算
  • inputXorHex="HexValue"/outputXorHex="HexValue" → 指定した16進表記のバイト配列と XOR 演算
  • inputOrHex="HexValue"/outputOrHex="HexValue" → 指定した16進表記のバイト配列と OR 演算
  • inputAndHex="HexValue"/outputAndHex="HexValue" → 指定した16進表記のバイト配列と AND 演算

符号化のオプションというか、様々なアルゴリズムの一覧(改行コード変換系)

  • inputLf/outputLf → 「CrLf」→「Lf」
  • inputCrLf/outputCrLf → 「CrLf」→「Lf」

符号化のオプションというか、様々なアルゴリズムの一覧(改行コード追加系)

  • AddCrLf="num"/AddLf="num" → 指定したバイト数ごとに改行コードを挿入する。一行何文字とかに整形するのに使えるかも

符号化のオプションというか、様々なアルゴリズムの一覧(LanManHashEncode)

7Byteずつ LanManHash にして出力する
よって、エンコーダーはあるが、デコーダーはない

符号化のオプションというか、様々なアルゴリズムの一覧(HTTP Chunk)

HTTP の Keep-Alieve 時のチャンクエンコーディングっぽく符号化する

  • HttpChunkdecode
  • HttpChunkencode=("num")|("min"-"max")[%2c"RandomizeOption"]

乱数アルゴリズムを指定して、ランダムな塊にしてしまう

符号化のオプションというか、様々なアルゴリズムの一覧(X-CGI-Form-Encoded)

HTTP の POST の「値」にデータを埋め込む

  • WebFormdecode
  • WebFormencode=[(Name|Value)%3d("num")|("min"-"max")[%2c"RandomizeOption"]%26[Cha rRandom%3d"RandomizeOption"]%26[CharList%3d"string(1moreURLEncode)"]%26[NameEnco ding%3d"charSet"]

"名前" の文字コードや、"名前" として使う文字配列や長さ、データの塊の長さなどを乱数アルゴリズムを指定して、ランダムにすることができる

符号化のオプションというか、様々なアルゴリズムの一覧(Shino Encode)

データを ShinoEncode する
0-15(4Bit)を単語の文字数に割り当てた符号化方式
実際には、x だけ下駄を履かせる(0文字の単語ってないからね)

  • Shinodecode(=<>)
  • Shinoencode(=%26[VocabDicFile%3d<>]%26[VocabRandom%3d"Rando mizeOption"%26[NoiseRandom%3d"NoReplaceRatio%2cRandomizeOption"%26[CaseRandom%3d "nor/Case/CASE"%2cRandomizeOption"%26[SymbolRandom%3d"RandomizeOption"%26[Symbol DicFile%3d<>

詳細は別に章を設けた方がいいかな。

符号化のオプションというか、様々なアルゴリズムの一覧(Stroke Encode)

0-15(4Bit)を漢字の画数に割り当てた符号化方式
しかし、実際には、辞書依存なんだな。

  • Strokedecode(=[CharSet%3d"CharSetName"
  • Strokeencode(=%26[VocabDicFile%3d<>]%26[VocabRandom%3d"Rand omizeOption"%26[NoiseRandom%3d"NoReplaceRatio%2cRandomizeOption"%26[CharSet%3d"C harSetName"

目次へ戻る

目次というか最初の一歩

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0