- Install Avidemux
- Open your video with Avidemux
- In the video section on the left, select MPEG-4 AVC format.
- Click on filters and select reverse.
- Save the video and enjoy!
How to reverse video on Windows / Linux
Wordlist creator script #2
First Google+ (Google Plus) status update bot in PHP
Facebook relationship status hack
PHP random user agent generator
How to reverse video on Windows / Linux
Wordlist creator script #2
It’s time for another wordlist creator script that scrapes websites and makes unique, sorted, utf-8 files… This time I added support for merging existing wordlist files. Rules are listed below, but you can modify them of course.
Rules list:
- Words must be longer than 8 characters
- Only alpha characters are acepted
- Entire wordlist is lowercase
- As I’ve already stated above, wordlist is uniquely sorted
#!/bin/bash --
#
# wordlist creator v1.0b
# usage wordlist.sh [url] [output]
# if output file exists, merge files
#
if [ "$1" -a "$2" ]
then
echo ">> $(date +'%T') - Starting to downlad $1. This can take a long time..."
#download websites recursively to ./temp/ directory, skip non-text files
wget -r -l 2 --random-wait --user-agent='Mozilla/5.0' --quiet -R .jpg,.jpeg,.png,.gif,.bmp,.flv,.js,.avi,.wmv,.mp3,.zip,.css,.pdf,.iso,.tar.gz,.rar,.swf,.PNG,.GIF,.JPG,.JPEG,.BMP -P "./temp/" $1
echo ">> $(date +'%T') - Finished downloading, creating wordlist..."
#rescursively search for words that match out criteria in all files, 8+ chars, alpha
page=`grep '' -R "./temp/" | sed -e :a -e 's/<[^>]*>//g;/</N;//ba' | tr " " "\n" | tr '[:upper:]' '[:lower:]' | sed -e '/[^a-zA-Z]/d' -e '/^.\{9,25\}$/!d' | sort -u`;
echo "`date +"%T"` - Wordlist created!"
echo ">> Fetched lines: $(echo "$page" | wc -l)"
if [ -f "$2" ]; then
echo ">> File $2 already exists, merging files!"
echo "$page" >> "$2";
cat "$2" | sort -u -o "$2";
echo ">> Wordlist merged with $2 and now has $(cat "$2" | wc -l) lines!";
else
echo "$page" > "$2"
echo ">> Wordlist saved to $2!"
fi
#remove temporaray website directory
rm -rf "./temp/"
else
echo ">> Error: Parameter URL required!"
echo ">> Example: $0 https://www.iana.org/domains/example/ ./wordlist.txt"
fi
First Google+ (Google Plus) status update bot in PHP
Finally! Google Plus status updater is here :) It is written in PHP, so it should be cross platform, which is a plus ;) It needs the curl extension to work though. Well, the bot can log into your Google account and update your Google Plus status, but I’m sure you can extend it to other Google products. All this is done without Google API, OAuth, tokens or any other annoying products. Post your comments, improvements and feature request below.
Download: gplus-bot
<?php
/**
* Google+ (plus.google.com) PHP Curl bot
* @since Sep 29 2011
* @version 15.12.2011
* @link http://360percents.com/
* @author Luka Pušić <luka@pusic.si>
*/
/**
* REQUIRED PARAMETERS
*/
$status = 'testzzz';
$email = 'your@email.com';
$pass = 'yourpassw0rd';
/**
* OPTIONAL PARAMETERS
* sleeptime is an optional timeout parameter which makes us look less suspicious to Google
* Enter pageid if you want to post to a page.
*/
$pageid = false;
$cookies = 'cookie.txt';
$sleeptime = 0;
$uagent = 'Mozilla/4.0 (compatible; MSIE 5.0; S60/3.0 NokiaN73-1/2.0(2.0617.0.0.7) Profile/MIDP-2.0 Configuration/CLDC-1.1)';
$pc_uagent = 'Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1';
$debug = FALSE;
function tidy($str) {
return rtrim($str, "&");
}
/**
* Handle cookie file
*/
@unlink($cookies); //delete previous cookie file if exists
touch($cookies); //create a cookie file
/**
* MAIN BLOCK
* login_data() just collects login form info
* login($postdata) logs you in and you can do pretty much anything you want from here on
*/
login(login_data());
sleep($sleeptime);
if ($pageid) {
update_page_status();
} else {
update_profile_status();
} //update status with $GLOBAL['status'];
sleep($sleeptime);
logout(); //optional - log out
/**
* 1. GET: http://plus.google.com/
* Parse the webpage and collect form data
* @return array (string postdata, string postaction)
*/
function login_data() {
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEJAR, $GLOBALS['cookies']);
curl_setopt($ch, CURLOPT_USERAGENT, $GLOBALS['uagent']);
curl_setopt($ch, CURLOPT_URL, "https://plus.google.com/");
curl_setopt($ch, CURLOPT_COOKIEFILE, $GLOBALS['cookies']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$buf = utf8_decode(html_entity_decode(curl_exec($ch)));
$buf = str_replace( '&', '&', $buf ); // just in case any correctly encoded
$buf = str_replace( '&', '&', $buf ); // now encode them all again
curl_close($ch);
echo "\n[+] Sending GET request to: https://plus.google.com/\n\n";
$toreturn = '';
$doc = new DOMDocument;
$doc->loadxml($buf);
$inputs = $doc->getElementsByTagName('input');
foreach ($inputs as $input) {
switch ($input->getAttribute('name')) {
case 'Email':
$toreturn .= 'Email=' . urlencode($GLOBALS['email']) . '&';
break;
case 'Passwd':
$toreturn .= 'Passwd=' . urlencode($GLOBALS['pass']) . '&';
break;
default:
$toreturn .= $input->getAttribute('name') . '=' . urlencode($input->getAttribute('value')) . '&';
}
}
return array(tidy($toreturn), $doc->getElementsByTagName('form')->item(0)->getAttribute('action'));
}
/**
* 2. POST login: https://accounts.google.com/ServiceLoginAuth
*/
function login($postdata) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEJAR, $GLOBALS['cookies']);
curl_setopt($ch, CURLOPT_COOKIEFILE, $GLOBALS['cookies']);
curl_setopt($ch, CURLOPT_USERAGENT, $GLOBALS['uagent']);
curl_setopt($ch, CURLOPT_URL, $postdata[1]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata[0]);
$buf = curl_exec($ch); #this is not the g+ home page, because the b**** doesn't redirect properly
curl_close($ch);
if ($GLOBALS['debug']) {
echo $buf;
}
echo "\n[+] Sending POST request to: " . $postdata[1] . "\n\n";
}
/**
* 3. GET status update form:
* Parse the webpage and collect form data
*/
function update_profile_status() {
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEJAR, $GLOBALS['cookies']);
curl_setopt($ch, CURLOPT_COOKIEFILE, $GLOBALS['cookies']);
curl_setopt($ch, CURLOPT_USERAGENT, $GLOBALS['uagent']);
curl_setopt($ch, CURLOPT_URL, 'https://m.google.com/app/plus/?v=compose&group=m1c&hideloc=1');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$buf = utf8_decode(html_entity_decode(str_replace('&', '', curl_exec($ch))));
$header = curl_getinfo($ch);
curl_close($ch);
if ($GLOBALS['debug']) {
echo $buf;
}
$params = '';
$doc = new DOMDocument;
$doc->loadxml($buf);
$inputs = $doc->getElementsByTagName('input');
foreach ($inputs as $input) {
if (($input->getAttribute('name') != 'editcircles')) {
$params .= $input->getAttribute('name') . '=' . urlencode($input->getAttribute('value')) . '&';
}
}
$params .= 'newcontent=' . urlencode($GLOBALS['status']);
//$baseurl = $doc->getElementsByTagName('base')->item(0)->getAttribute('href');
$baseurl = 'https://m.google.com' . parse_url($header['url'], PHP_URL_PATH);
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEJAR, $GLOBALS['cookies']);
curl_setopt($ch, CURLOPT_COOKIEFILE, $GLOBALS['cookies']);
curl_setopt($ch, CURLOPT_USERAGENT, $GLOBALS['uagent']);
//delete group=b0& in the line below, to post just to your circles, not to public
curl_setopt($ch, CURLOPT_URL, $baseurl . '?v=compose&group=m1c&group=b0&hideloc=1&a=post');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_REFERER, $baseurl . '?v=compose&group=m1c&group=b0&hideloc=1');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
$buf = curl_exec($ch);
$header = curl_getinfo($ch);
curl_close($ch);
if ($GLOBALS['debug']) {
echo $buf;
}
echo "\n[+] POST Updating status on: " . $baseurl . "\n\n";
}
/**
* Not implemented yet!
* just ignore this function for now
*/
function update_page_status() {
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEJAR, $GLOBALS['cookies']);
curl_setopt($ch, CURLOPT_COOKIEFILE, $GLOBALS['cookies']);
curl_setopt($ch, CURLOPT_USERAGENT, $GLOBALS['pc_uagent']);
curl_setopt($ch, CURLOPT_URL, 'https://plus.google.com/u/0/b/' . $GLOBALS['pageid'] . '/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$buf = utf8_decode(html_entity_decode(str_replace('&', '', curl_exec($ch))));
curl_close($ch);
if ($GLOBALS['debug']) {
echo $buf;
}
}
/**
* 3. GET logout:
* Just logout to look more human like and reset cookie :)
*/
function logout() {
echo "\n[+] GET Logging out: \n\n";
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEJAR, $GLOBALS['cookies']);
curl_setopt($ch, CURLOPT_COOKIEFILE, $GLOBALS['cookies']);
curl_setopt($ch, CURLOPT_USERAGENT, $GLOBALS['uagent']);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, 'https://www.google.com/m/logout');
$buf = curl_exec($ch);
curl_close($ch);
if ($GLOBALS['debug']) {
echo $buf;
}
}
?>
Facebook relationship status hack
How to do it?
- Make sure you have Firefox extension Live HTTP Headers (or similar) installed.
- Open up Facebook, go to Profile and click “Edit profile” -> “Friends and Family”.
- Open Tools -> Live HTTP Headers and press “Save Changes” button on Facebook.
- Open Live HTTP Headers window again. Scroll to the top and find the packet with POST data (like on the image below), click on it and press replay.
- Find “status=” parameter in POST data and change it to a number higher than 13.
- Press replay again and enjoy your new relationship status.
- A blank space will appear in your info page and a heart on top of your profile.



PHP random user agent generator
This script will generate a random (fake) user agent, which will look as real as possible. It currently generates random user agents for multiple browsers and operating systems.
Browsers: Opera, Internet Explorer, Firefox, Chrome and Safari.
OS: Linux, Windows, Mac (+iPod)
Download: random-uagent
<?php
/**
* Random user agent creator
* @since Sep 4, 2011
* @version 1.0
* @link http://360percents.com/
* @author Luka Pušić <pusic93@gmail.com>
*/
/**
* Possible processors on Linux
*/
$linux_proc = array(
'i686',
'x86_64'
);
/**
* Mac processors (i also added U;)
*/
$mac_proc = array(
'Intel',
'PPC',
'U; Intel',
'U; PPC'
);
/**
* Add as many languages as you like.
*/
$lang = array(
'en-US',
'sl-SI'
);
function firefox() {
global $linux_proc, $mac_proc, $lang;
$ver = array(
'Gecko/' . date('Ymd', rand(strtotime('2011-1-1'), mktime())) . ' Firefox/' . rand(5, 7) . '.0',
'Gecko/' . date('Ymd', rand(strtotime('2011-1-1'), mktime())) . ' Firefox/' . rand(5, 7) . '.0.1',
'Gecko/' . date('Ymd', rand(strtotime('2010-1-1'), mktime())) . ' Firefox/3.6.' . rand(1, 20),
'Gecko/' . date('Ymd', rand(strtotime('2010-1-1'), mktime())) . ' Firefox/3.8'
);
$platforms = array(
'(Windows NT ' . rand(5, 6) . '.' . rand(0, 1) . '; ' . $lang[array_rand($lang, 1)] . '; rv:1.9.' . rand(0, 2) . '.20) ' . $ver[array_rand($ver, 1)],
'(X11; Linux ' . $linux_proc[array_rand($linux_proc, 1)] . '; rv:' . rand(5, 7) . '.0) ' . $ver[array_rand($ver, 1)],
'(Macintosh; ' . $mac_proc[array_rand($mac_proc, 1)] . ' Mac OS X 10_' . rand(5, 7) . '_' . rand(0, 9) . ' rv:' . rand(2, 6) . '.0) ' . $ver[array_rand($ver, 1)]
);
return $platforms[array_rand($platforms, 1)];
}
function safari() {
global $linux_proc, $mac_proc, $lang;
$saf = rand(531, 535) . '.' . rand(1, 50) . '.' . rand(1, 7);
if (rand(0, 1) == 0) {
$ver = rand(4, 5) . '.' . rand(0, 1);
} else {
$ver = rand(4, 5) . '.0.' . rand(1, 5);
}
$platforms = array(
'(Windows; U; Windows NT ' . rand(5, 6) . '.' . rand(0, 1) . ") AppleWebKit/$saf (KHTML, like Gecko) Version/$ver Safari/$saf",
'(Macintosh; U; ' . $mac_proc[array_rand($mac_proc, 1)] . ' Mac OS X 10_' . rand(5, 7) . '_' . rand(0, 9) . ' rv:' . rand(2, 6) . '.0; ' . $lang[array_rand($lang, 1)] . ") AppleWebKit/$saf (KHTML, like Gecko) Version/$ver Safari/$saf",
'(iPod; U; CPU iPhone OS ' . rand(3, 4) . '_' . rand(0, 3) . ' like Mac OS X; ' . $lang[array_rand($lang, 1)] . ") AppleWebKit/$saf (KHTML, like Gecko) Version/" . rand(3, 4) . ".0.5 Mobile/8B" . rand(111, 119) . " Safari/6$saf",
);
return $platforms[array_rand($platforms, 1)];
}
function iexplorer() {
$ie_extra = array(
'',
'; .NET CLR 1.1.' . rand(4320, 4325) . '',
'; WOW64'
);
$platforms = array(
'(compatible; MSIE ' . rand(5, 9) . '.0; Windows NT ' . rand(5, 6) . '.' . rand(0, 1) . '; Trident/' . rand(3, 5) . '.' . rand(0, 1) . ')'
);
return $platforms[array_rand($platforms, 1)];
}
function opera() {
global $linux_proc, $lang;
$op_extra = array(
'',
'; .NET CLR 1.1.' . rand(4320, 4325) . '',
'; WOW64'
);
$platforms = array(
'(X11; Linux ' . $linux_proc[array_rand($linux_proc, 1)] . '; U; ' . $lang[array_rand($lang, 1)] . ') Presto/2.9.' . rand(160, 190) . ' Version/' . rand(10, 12) . '.00',
'(Windows NT ' . rand(5, 6) . '.' . rand(0, 1) . '; U; ' . $lang[array_rand($lang, 1)] . ') Presto/2.9.' . rand(160, 190) . ' Version/' . rand(10, 12) . '.00'
);
return $platforms[array_rand($platforms, 1)];
}
function chrome() {
global $linux_proc, $mac_proc;
$saf = rand(531, 536) . rand(0, 2);
$platforms = array(
'(X11; Linux ' . $linux_proc[array_rand($linux_proc, 1)] . ") AppleWebKit/$saf (KHTML, like Gecko) Chrome/" . rand(13, 15) . '.0.' . rand(800, 899) . ".0 Safari/$saf",
'(Windows NT ' . rand(5, 6) . '.' . rand(0, 1) . ") AppleWebKit/$saf (KHTML, like Gecko) Chrome/" . rand(13, 15) . '.0.' . rand(800, 899) . ".0 Safari/$saf",
'(Macintosh; U; ' . $mac_proc[array_rand($mac_proc, 1)] . ' Mac OS X 10_' . rand(5, 7) . '_' . rand(0, 9) . ") AppleWebKit/$saf (KHTML, like Gecko) Chrome/" . rand(13, 15) . '.0.' . rand(800, 899) . ".0 Safari/$saf"
);
return $platforms[array_rand($platforms, 1)];
}
/**
* Main function which will choose random browser
* @return string user agent
*/
function random_uagent() {
$x = rand(1, 5);
switch ($x) {
case 1:
echo "Mozilla/5.0 " . firefox() . "\n";
break;
case 2:
echo "Mozilla/5.0 " . safari() . "\n";
break;
case 3:
echo "Mozilla/" . rand(4, 5) . ".0 " . iexplorer() . "\n";
break;
case 4:
echo "Opera/" . rand(8, 9) . '.' . rand(10, 99) . ' ' . opera() . "\n";
break;
case 5:
echo 'Mozilla/5.0' . chrome() . "\n";
break;
}
}
random_uagent();
?>
Linux command to read MBR
MBR (Master Boot Record) is the first 512 bytes of data on a bootable storage device such as a hard disk.
The command to read the MBR in hex is:
sudo dd if=/dev/sda ibs=512 count=1 | hexdump -C
-
Command explanation:
- “sudo” is used to gain super user privileges,
- “dd” is a program to convert/read/write/copy a file
- “if=/dev/sda” is our hard disk that contains the MBR
- “ibs=512″ is the number of bytes to read at a time
- “count=1″ is the number of “sectors” to read (count=2 would read 1024 bytes)
- “hexdump -C” will display the MBR in HEX with a nice character table on the right
The command to save the MBR in a file called “mbr”:
dd if=/dev/sda of=mbr bs=512 count=1
You can even get more info about the MBR with “file” command:
file mbr









