#!/usr/bin/perl -T use strict; use warnings; use CGI; use JavaScript; use LWP::Simple; use HTML::TokeParser::Simple; if (CGI::param('go')) { print CGI::header('text/plain'); my $javascript = fetch_js(CGI::param('url')); parse_js($javascript); } else { print_form(); } sub parse_js { my $javascript = shift; my $runtime = JavaScript::Runtime->new(); my $context = $runtime->create_context(); $context->bind_function(name => 'write', func => sub{ print @_}); return $context->eval($javascript); } sub fetch_js { my $html = LWP::Simple::get(shift); my $parser = HTML::TokeParser::Simple->new(\$html); my ($token,$js); while ($token = $parser->get_token) { if ($token->is_start_tag('script')) { $js = $parser->get_token->as_is; last; } } $js =~ s/document\.write/write/g; return $js; } sub print_form { my $q = CGI->new; print $q->header(), $q->start_html('See the source of cleverSource encrypted page'), $q->start_form, $q->textfield('url','http://cleverscripts.com/index.php?a=cleversource'), $q->submit('go'), $q->end_form, $q->end_html, ; }