From 6cd233f72843c6077cadfbb960038a2b8c233aa2 Mon Sep 17 00:00:00 2001 From: Wilfried OLLIVIER Date: Tue, 18 Nov 2014 23:52:27 +0100 Subject: [PATCH] =?UTF-8?q?add=20solution=20for=20nbcontest,=20progra,=20n?= =?UTF-8?q?=C2=B03?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- newbiecontest/prog/equation/a | 0 newbiecontest/prog/equation/equation.pl | 150 ++++++++++++++++++++++ newbiecontest/prog/equation/moz_cookies=a | 0 3 files changed, 150 insertions(+) create mode 100644 newbiecontest/prog/equation/a create mode 100755 newbiecontest/prog/equation/equation.pl create mode 100644 newbiecontest/prog/equation/moz_cookies=a diff --git a/newbiecontest/prog/equation/a b/newbiecontest/prog/equation/a new file mode 100644 index 0000000..e69de29 diff --git a/newbiecontest/prog/equation/equation.pl b/newbiecontest/prog/equation/equation.pl new file mode 100755 index 0000000..ca6f152 --- /dev/null +++ b/newbiecontest/prog/equation/equation.pl @@ -0,0 +1,150 @@ +#!/usr/bin/env perl + +# uses ######################################################################### +use diagnostics; +use warnings; +use strict; +# Modules +# database +use DBI; +# http +use LWP::UserAgent; +use HTTP::Cookies; + +# subs ######################################################################### +# extract cookie from SQLite db +sub extract_cookie +{ + # shift db_path + my $db_path = shift; + + # variables usefull for database connection and handler + my $dbh; + my $sth; + my $rv; + my @row; + + # string containing the query + my $query; + + # connect to the db + $dbh = DBI->connect("dbi:SQLite:dbname=$db_path","","") or die $DBI::errstr; + + # prepare the query + $query = "SELECT name, value FROM moz_cookies WHERE host LIKE\ + '%newbiecontest.org%' AND name LIKE '%SMFCookie%'"; + $sth = $dbh->prepare($query); + + # execute + $rv = $sth->execute() or die $DBI::errstr; + + # fetch the only row found + @row = $sth->fetchrow_array(); + + # close the database + $sth->finish(); + $dbh->disconnect(); + + return $row[0], $row[1]; + +} + +# Send http request +sub send_request +{ + + # shift args + my ($cookie_name, $cookie_val, $url) = @_; + + # create variables + my $ua = LWP::UserAgent->new; + my $cookies = HTTP::Cookies->new(); + + # create the cookie + $cookies->set_cookie(0, $cookie_name, $cookie_val, '/', 'newbiecontest.org', 80, 0, 0,\ + 0, 0); + + # add the cookie to the jar + $ua->cookie_jar($cookies); + + # send request + my $response = $ua->get($url); + + return $response->decoded_content; + +} + +# solve equation +sub solve_equation +{ + # shift equation + my $equation = shift; + + my $result; + + # funny time + print("\t Regex time boy !\n"); + + print("\t\t " . $equation . "\n"); + + # regex + $equation =~ m/racine\((\d+)\)\*(\d+)²\+(\d+)/; + + print("\t\t a = " . $1 . " b = " . $2 . " c = " . $3 . "\n"); + + print("\t Regex time is done ! Well done\n"); + + return int(sqrt($1) * ($2 * $2) + $3); + +} + +# send answer +sub send_answer +{ + my ($cookie_name, $cookie_val, $url, $result) = @_; + + # create variables + my $ua = LWP::UserAgent->new; + my $cookies = HTTP::Cookies->new(); + + # modify the url + $url = $url . "?solution=" . $result; + + # create the cookie + $cookies->set_cookie(0, $cookie_name, $cookie_val, '/', 'newbiecontest.org', 80, 0, 0,\ + 0, 0); + + # add the cookie to the jar + $ua->cookie_jar($cookies); + + # send request + my $response = $ua->get($url); + + print $response->decoded_content; +} + +# main ######################################################################### +# check argument number +if (@ARGV != 3) { + + print("Get. The. Fuck. Out\n"); + print("[i] Usage : ./equation.pl cookie.db url_in url_out\n"); + + exit; +} + +my $cookie_name; +my $cookie_val; +my $equation; +my $result; + +($cookie_name, $cookie_val) = extract_cookie($ARGV[0]); + +$equation = send_request($cookie_name, $cookie_val, $ARGV[1]); + +$result = solve_equation($equation); + +send_answer($cookie_name, $cookie_val, $ARGV[2], $result); + +print("Done.\n"); + diff --git a/newbiecontest/prog/equation/moz_cookies=a b/newbiecontest/prog/equation/moz_cookies=a new file mode 100644 index 0000000..e69de29