#! /usr/bin/perl use IO::Socket::INET; # forming header's .. $request1 = "POST http://www.radikal.ru/action.aspx HTTP/1.1\r\n". "Host: www.radikal.ru\r\n". "User-Agent: Mozilla/5.0\r\n". "Connection: close\r\n". "Referer: http://www.radikal.ru\r\n". "Content-Type: multipart/form-data; boundary=:boundary:\r\n". "Content-Length: :length:\r\n\r\n"; $request2 = "--:boundary:\r\n". "Content-Disposition: form-data; name=\"upload\"\r\n". "\r\nyes\r\n". "--:boundary:\r\n". "Content-Disposition: form-data; name=\"F\"; filename=\":name:\"\r\n". "Content-Type: image/:type:\r\n\r\n"; # file name,type $file = shift or die "use: $0 <image>\n"; $fsize = -s $file; ($fname) = $file =~ /([^\/]+)$/; ($ftype) = $fname =~ /\.([^\.]+)$/; unless($fname && $ftype) { die "[-] invalid filename\n"; } # read file open FID, $file or die "[-] failed to open $file!\n"; sysread(FID, $data, $fsize); close FID; $boundry = '---------------------------2132365407679'; $request2 =~ s/:boundary:/$boundry/; $request2 =~ s/:boundary:/$boundry/; $request2 =~ s/:name:/$fname/; $request2 =~ s/:type:/$ftype/; $request2 .= $data."\r\n--$boundry--\r\n"; $length = length($request2); $request1 =~ s/:boundary:/$boundry/; $request1 =~ s/:length:/$length/; $request1 .= $request2; # create socket *SOCK = IO::Socket::INET->new( PeerAddr => "radikal.ru", PeerPort => 80, Proto => 'tcp', Type => SOCK_STREAM) or die("[-] connection failed!\n"); # read sock answer $buff = ""; print SOCK $request1; while($line = <SOCK>){ $buff .= $line; if ($line=~/<\/html>/) {last;} } close SOCK; # parce $buff =~ /<a href="http:\/\/(.*)" target="_blank">/; print 'Link: http://'.$1."\n";