Windows の P2P ファイル共有ソフトとして色々と有名な Winny。そのキャッシュファイルを、Perl を使ってゴニョゴニョしようという試みです。現在のところ、キャッシュファイル内のファイル情報の取得と、暗号化されたファイル内容を展開できるところまで進んでいます。
残すは肝心の通信部分ですが、そこが実現できれば Pure Perl な Winny クライアントが作れたりしませんかね? Winny のソースコードは公開されていませんが、大体の概念については、Winny 作者本人が書籍化されているのでなんとかなるかも?
#!/usr/bin/perl
use File::Winny::Cache;
# キャッシュファイルを読込む
my $cache = File::Winny::Cache->new ({
file => '%9a394b3b63618cc3a924f0ef410373f7',
});
# キャッシュファイルの情報を解析し表示する
use Data::Dumper;
print Dumper ($cache->info);
# 完全キャッシュだった場合には変換を試みる
$cache->convert_to ($cache->{name}) if $cache->is_complete;