0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

StreamRelay.jarに同梱している ZipStream.class と ArchiveStream.jar でアーカイバを操作する

Last updated at Posted at 2018-03-06

java.exe -jar ArchiveStream.jar

ArchiveStream.bat

ZipStream.class と ArchiveStream.jar

今回は、StreamRelay.jar ではなく、同梱している ZipStream.class と ArchiveStream.jar の話

  • ZipStream.class; zipアーカイバを操作できる
  • ArchiveStream.jar; zipアーカイバ以外を操作できる

アーカイバ内部のファイルの一覧

java.exe ZipStream list 『ZIPファイル』
とか
java.exe -jar ArchiveStream.jar 『タイプ』 list 『アーカイバ』

という感じ。

アーカイバ内部のエンティティオブジェクトの名前を出力しているだけ。

ファイル名として不正なファイル「../../etc/passwdとかでも」でも、これは標準出力に出力しているので、エラーになることはないのが、他のアーカイバに比べての利点。

アーカイバ内部のファイルの一覧(ver8.2以降)

ver8.2 以降、-v オプションを指定すると、ファイル名だけではなく、最終更新日時、データサイズ(可能なら圧縮前と圧縮後と圧縮率も)も出力するようにした。

java.exe ZipStream list 『ZIPファイル』 -v
とか
java.exe -jar ArchiveStream.jar 『タイプ』 list 『アーカイバ』 -v

という感じ。

アーカイバ内部のファイルの一覧(ver8.2以降)(7z)

ver8.2で、Apache-Commons Compress を ver1.17, XZ for Java を ver1.8 にしたので、7z は、書き込みのみから、書き込みと一覧表示に対応した。

アーカイブのタイプ

ArchiveStream.jar で対応しているタイプは以下

  • cpio
  • ar
  • tar
  • zip
  • arj
  • 7z
  • lha

アーカイバ内部のファイルの内容を出力

java.exe ZipStream read 『ZIPファイル』 『ファイル名』
とか
java.exe -jar ArchiveStream.jar 『タイプ』 read 『アーカイバ』 『ファイル名』

という感じ

『ファイル名』で指定されたエンティティ名の内容を標準出力に出力する

なので、ファイルにしたければ、↓な感じ

java.exe ZipStream read 『ZIPファイル』 『ファイル名』 > 『保存ファイル名』
とか
java.exe -jar ArchiveStream.jar 『タイプ』 read 『アーカイバ』 『ファイル名』 > 『保存ファイル名』

まぁ、リダイレクトしているだけだけどね。

アーカイバへの保存

java.exe ZipStream write 『ZIPファイル』 『ファイル名』 < 『入力ファイル名』
とか
java.exe -jar ArchiveStream.jar 『タイプ』 write 『アーカイバ』 『ファイル名』 < 『入力ファイル名』

または、

type 『入力ファイル名』 | java.exe ZipStream read 『ZIPファイル』 『ファイル名』
とか
type 『入力ファイル名』 | java.exe -jar ArchiveStream.jar 『タイプ』 read 『アーカイバ』 『ファイル名』

な感じ。

既存のアーカイブファイルに追記はできないので、新規作成にする必要がある。

例えば、

type phpinfo.php | java.exe ZipStream read test.zip ../../../../cgi-bin/bkdoor.php
とかで面白い脆弱性試験ができるかもしれない。

StreamRelay.jar と連携

アーカイブ内部のファイルの内容が、標準入力(write)とか標準出力(read)で取り出せるので、StreamRelay.jar と連携させることができるでしょう。


目次へ戻る

目次というか最初の一歩

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?