- PR -

パスワード付きZipファイルを解凍する方法

投稿者投稿内容
tom
会議室デビュー日: 2003/04/10
投稿数: 5
投稿日時: 2003-11-26 14:26
VB.NETでWindowsアプリケーションを開発しています。

パスワード付きZipファイルの解凍を、J#で提供されているライブラリ「vjslib.dll」を
参照し行なう処理を作成しています。
パスワード無しは出来たのですが、パスワード付きZipファイルを解凍が出来ません。
そもそもこのライブラリ「vjslib.dll」はパスワード付きZipをサポートしてないので
しょうか?
どなたか解決策をご存知の方がいましたらご教授下さい。
宜しくお願い致します。

以上
想馬
大ベテラン
会議室デビュー日: 2003/05/29
投稿数: 245
お住まい・勤務地: 神奈川・東京
投稿日時: 2003-11-26 17:31
想馬です。

>パスワード無しは出来たのですが、パスワード付きZipファイルを解凍が出来ません。
zipファイルにかかっているパスワードを自動的に解除し、解凍したいのですか?
tom
会議室デビュー日: 2003/04/10
投稿数: 5
投稿日時: 2003-11-26 17:50
>>パスワード無しは出来たのですが、パスワード付きZipファイルを解凍が出来ません。
>zipファイルにかかっているパスワードを自動的に解除し、解凍したいのですか?

はい。zipに入っているのは画像ファイルなのですが、プログラム上でzipファイルに
かかっているパスワードを解除し、圧縮されている画像をフォームに表示したいのです。
想馬
大ベテラン
会議室デビュー日: 2003/05/29
投稿数: 245
お住まい・勤務地: 神奈川・東京
投稿日時: 2003-11-26 18:12

私はVB .NETもJ#もわかりませんが・・・
普通に考えて、ライブラリ「vjslib.dll」がパスワード付きzipファイルの解凍をサポートしていたとしても、
それは「パスワードを知っている事」が前提だと思うのですが。
セキュリティの点からみても、パスワードを知らないのに自動解除をサポートすることはありえないと思いますよ。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2003-11-26 18:23
こんにちわ。諸農です。

引用:

tomさんの書き込み (2003-11-26 17:50) より:
はい。zipに入っているのは画像ファイルなのですが、プログラム上でzipファイルに
かかっているパスワードを解除し、圧縮されている画像をフォームに表示したいのです。



アプリケーションはパスワードを知っているという前提ですか?
#都度入力でも、固定のパスワードでも。

たとえばvjslib.dllの解凍できるクラスが持っているメソッドですが、
パスワードを指定するようなところはないですか?
#何というクラスか教えていただけるとありがたいです。
#.jarファイルを解凍するクラスかしら?

あとは、UnZip.DLLが使える(今回のソリューションの中でOKであるなら)
のでしたら、System.Runtime.InteropServicesを使って、
DLL関数を直接操作してみてはいかがでしょうか。

http://www.madobe.net/archiver/index.html
こちらの統合アーカイバサイトからUnZipのSDKを
入手することができますので、試してみてはいかがでしょう?
#パスワードはやったこと無いですが、通常の使い方では経験があります。

ではでは(^^)/

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
想馬
大ベテラン
会議室デビュー日: 2003/05/29
投稿数: 245
お住まい・勤務地: 神奈川・東京
投稿日時: 2003-11-26 18:43
想馬です。

>tomさんへ
悪い方に決め付けたような文章になってしまい申し訳ありません。
以後、気をつけます。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2003-11-26 19:12
引用:

http://www.madobe.net/archiver/index.html
こちらの統合アーカイバサイトからUnZipのSDKを
入手することができますので、試してみてはいかがでしょう?


こんなの見つけました。
tom
会議室デビュー日: 2003/04/10
投稿数: 5
投稿日時: 2003-11-26 19:44
想馬さん、Jubeiさん、ご指摘の通り説明不足でした。すいません。

>>普通に考えて、ライブラリ「vjslib.dll」がパスワード付きzipファイル
>>の解凍をサポートしていたとしても、 それは「パスワードを知っている事」
>>が前提だと思うのですが。 セキュリティの点からみても、パスワードを知
>>らないのに自動解除をサポートすることはありえないと思いますよ。
>>アプリケーションはパスワードを知っているという前提ですか?
>悪い方に決め付けたような文章になってしまい申し訳ありません。

いえいえ。私もセキュリティに対しては勉強不足なので、指摘して頂けると助かりますし、
何よりも勉強になるので、これからもよろしくお願いします。

アプリケーションはパスワードを知っているというのが前提です。
パスワードはZipファイル毎に違い、テーブルに暗号化された形で格納されています。

>>たとえばvjslib.dllの解凍できるクラスが持っているメソッドですが、
>>パスワードを指定するようなところはないですか?

現在以下のような形で作成しています。
パスワードを指定するような箇所を調べているのですが、見つからないので困っています。

zis = New java.util.zip.ZipInputStream(New java.io.FileInputStream(zipPath))
zis.getNextEntry()

' バイト配列を確保
ReDim buf(size)
bis = New java.io.BufferedInputStream(zis)

' 展開ファイル読込む
realSize = bis.read(buf, 0, size)

' 解凍ファイルをzipファイルと同じディレクトリに書込む
keyName = zipPath.Substring(0, zipPath.LastIndexOf("\") + 1) & keyName
fos = New java.io.FileOutputStream(keyName)
fos.write(buf, 0, realSize)
zis.closeEntry()


>>あとは、UnZip.DLLが使える(今回のソリューションの中でOKであるなら)
>>のでしたら、System.Runtime.InteropServicesを使って、
>>DLL関数を直接操作してみてはいかがでしょうか。

初めUnZip.dllを使用し解凍処理を作成していたのですが、ライセンスが必要
との事を指摘され(以下URL)違う方法をと調べて、たどり着いたのがこの方法でした。
無念です。いやもう少し諦めずに調べてみます。
想馬さん、Jubeiさん、きくちゃんさん、ありがとうございました。
また何かよい方法がありましたらご教授下さい。宜しくお願い致します。

<UNZIP>http://www.csdinc.co.jp/archiver/lib/unzip32.html

以上

スキルアップ/キャリアアップ(JOB@IT)