P
P
Petrusha Ukropov2014-01-27 18:14:03
CodeIgniter
Petrusha Ukropov, 2014-01-27 18:14:03

How to decrypt encrypted scripts?

I found a small engine https://github.com/alsemany/phpmyvideo that parses YouTube videos for the specified tags and outputs them as a feed. The problem is that everything is base64 encoded, example https://github.com/alsemany/phpmyvideo/blob/master...
It would be possible to manually decrypt everything, but this is a lot of trouble due to the large number of encrypted files.
How can you speed up the process?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
M
mat0thew, 2014-05-14
@artishok

phpmyvideo/application/libraries/getvids.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class getvids
{


 public function get($url)
    {


// make sure curl is installed
if (function_exists('curl_init')) {
   // initialize a new curl resource
   $ch = curl_init();

   // set the url to fetch
   curl_setopt($ch, CURLOPT_URL,$url);

   // don't give me the headers just the content
   curl_setopt($ch, CURLOPT_HEADER, 0);

   // return the value instead of printing the response to browser
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

   // use a user agent to mimic a browser
   curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7');

$resultdata  = curl_exec($ch);

   // remember to always close the session and free all resources
   curl_close($ch);
} else {
   // curl library is not installed so we better use something else
} 

$rssstring = $resultdata;

 preg_match_all("#<openSearch:totalResults>(.*?)</openSearch:totalResults>#s",$rssstring,$resultcount);

$resultcount = $resultcount[1][0];

preg_match_all("#<item(.*?)</item>#s",$rssstring,$items);
$n=count($items[0]);

for($i=0;$i<$n;$i++){
$rsstemp= $items[0][$i];

preg_match_all("#<media:title(.*?)>(.*?)</media:title>#s",$rsstemp,$titles);
if (isset($titles))
{
$title = $titles[2][0];
}
else
{
$title = 'No title for this video';
}

preg_match_all("#<yt:videoid>(.*?)</yt:videoid>#s",$rsstemp,$vidid);

$vidid = $vidid[1][0];

preg_match_all("#<author>(.*?)</author>#s",$rsstemp,$author);
$author = $author[1][0];

      


preg_match_all("#<yt:uploaded>(.*?)</yt:uploaded>#s",$rsstemp,$published);
$published= $published[1][0];



preg_match_all("#<yt:rating numDislikes='(.*?)' numLikes='(.*?)'/>#s",$rsstemp,$likesrat);
if (isset($likesrat[2][0]))
{
$likes = $likesrat[2][0];
$dislikes = $likesrat[1][0];
}
else
{
$likes = 0;
$dislikes =0;
}

preg_match_all("#<yt:statistics favoriteCount='(.*?)' viewCount='(.*?)'/>#s",$rsstemp,$fave);
if (isset($fave[1][0]))
{
$views = $fave[2][0];
$favecount = $fave[1][0];
}
else
{
$views = '0';
$favecount = '0';

}

preg_match_all("#<media:keywords>(.*?)</media:keywords>#s",$rsstemp,$keys);

if (empty($keys [1][0])) $keys [1][0] = "no, key, words, found, for, this , video";
$keys = $keys [1][0];

$keys = explode (', ',$keys);
  
foreach ($keys as $num => $key)
{

$keys[$num] = array('keyword'=>$key);

}


$thumb = "http://i2.ytimg.com/vi/".$vidid."/default.jpg";


$data[$i] = array( 
          'vidid' => $vidid ,
          'author' => $author ,					
          'vidtitle' => $title , 
          'vidthumb' => $thumb , 
          'vidpublished' => $published , 
          'views' => $views , 
          'favecount' => $favecount , 
          'uploadscount' => $resultcount, 
          'keys'=>$keys , 
          'likes' => $likes ,
          'dislikes' => $dislikes,
          'videofetched' => $n
          ) ;

}

 if (empty($data)) { $data[] = 
 array( 
          'vidid' => '' , 
          'vidtitle' => '' , 
          'vidthumb' => '' , 
          'vidpublished' => '' , 
          'views' => '', 
          'favecount' => '' , 
          'uploadscount' => '', 
          'keys'=>'' , 
          'likes' => ''  ,
          'dislikes' => '' ,
          
          ) ;
 ; }
return $data;

}


 public function getinfo($id)
    {


// make sure curl is installed
if (function_exists('curl_init')) {
   // initialize a new curl resource
   $ch = curl_init();

   // set the url to fetch
   curl_setopt($ch, CURLOPT_URL,'http://gdata.youtube.com/feeds/api/users/'.$id.'?v=2&alt=rss');

   // don't give me the headers just the content
   curl_setopt($ch, CURLOPT_HEADER, 0);

   // return the value instead of printing the response to browser
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

   // use a user agent to mimic a browser
   curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7');

$resultdata  = curl_exec($ch);

   // remember to always close the session and free all resources
   curl_close($ch);
} else {
   // curl library is not installed so we better use something else
} 

$rssstring = $resultdata;

 preg_match_all("#<author>(.*?)</author>#s",$rssstring,$author);
$data['title'] = $author[0][0];



preg_match_all("#<yt:aboutMe>(.*?)</yt:aboutMe>#s",$rssstring,$aboutme);
if (isset($aboutme[0][0]))
{
$data['aboutme'] = $aboutme[0][0];
}
else
{
$data['aboutme'] = 'nothing';
}

preg_match_all("#<yt:firstName>(.*?)</yt:firstName>#s",$rssstring,$firstname);
if (isset($firstname[1][0]))
{
$data['firstname'] = $firstname[1][0];
}
else
{
$data['firstname'] = $data['title'];
}

preg_match_all("#<yt:statistics lastWebAccess='(.*?)' subscriberCount='(.*?)' videoWatchCount='(.*?)' viewCount='(.*?)' totalUploadViews='(.*?)'/>#s",$rssstring,$info);

$data['lastaccess'] = $info[1][0];
$data['subscriberCount'] = $info[2][0];
$data['videoWatchCount'] = $info[3][0];
$data['viewCount'] = $info[4][0];
$data['totalUploadViews'] = $info[5][0];

preg_match_all("#<media:thumbnail url='(.*?)'/>#s",$rssstring,$thumb);
$data['thumb'] = $thumb[1][0];






preg_match_all("#<yt:location>(.*?)</yt:location>#s",$rssstring,$location);
$data['location'] = $location[1][0];

  
return $data;

}

}


?>

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question