[Обзор] Уязвимостей \ Багов вконтакте.ру
Сайт: http://www.vkontakte.ru
Разработчик: Павел Дуров
ВКонтакте.ру - сетевой проект, который поможет Вам узнать больше о людях,
которые Вас окружают,а также найти потерянных друзей и поддерживать с ними связь.
Вы сможете делиться информацией, ограничивая круг лиц, которым она будет доступна.
На данный момент является самым посещаемым ресурсам и имеет более 10 000 пользователей
[Введение]
В этой статье будет рассказано о хитростях, багах, и уязвимостях сервиса вконтакте.ру
[Смотреть закрытые Профили \ Фото \ Видео]
Смотреть информацию закрытого профиля(фотографии, видео, заметки и т.д.) следующим оброзом:
1) Нужно знать ID человека
2) Наведите курсор "Друзья xxx" и строке появится примерно следующиq текст:
http://vkontakte.ru/friend.php?act=add&id=12345678 , где последние цифры как раз и есть ID
Потом нужно вставить этот ID в строки:
Фотографии:
http://vkontakte.ru/photos.php?act=user&id=ID ( В нашем случае 12345678 )
Фотоальбомы:
http://vkontakte.ru/photos.php?id=ID ( В нашем случае 12345678 )
Видеозаписи:
http://vkontakte.ru/video.php?id=ID ( В нашем случае 12345678 )
Заметки:
http://vkontakte.ru/notes.php?id=ID ( В нашем случае 12345678 )
В некоторых местах можно оставлять комментарии
Но этот способ не всегда действует, так как информация может быть защищена настройками приватности
(скрытые фотографии).
Так что рассмотрим еще один способ:
Возьмем возьмем фотографию Дурова с подругой ( http://vkontakte.ru/photos.php?act=show&id=13780_39723&uid=1 ), но как мы видем фотография скрыта,
но мы можем взять ее "preview" ( http://cs01.vkontakte.ru/u13780/5273/m_1c6b8d221d.jpg ). смотрим в свойства рисунка и меняем букву “m” в имени рисунка
на букву “х” без кавычек. теперь мы получаем ссылку и смотрим на фотографию Дурова ( http://cs01.vkontakte.ru/u13780/5273/x_1c6b8d221d.jpg )
[Улучшенный просмотр фотографий]
http://citex.ru/vk/vkalbphoto.js
Данный скрипт создаёт иконку над фотографиями при нажатие на которую открывается сама фотография, а не страница с комментариями!
Для этого нужно дождаться полной загрузки страницы альбома
[Загрузка Музыки \ Видео на компьютер]
1) Рассмотрим вариант с музыкой, ее можно загрузить с помощью программ и скриптов!
Скрипты:

Описание:
Скрипт для GreaseMonkey или браузера Opera
Добавляет около кнопок прослушивания музыки ссылку для скачивания и ссылку для быстрого поиска слов песни.
Для работы нужен Firefox с установленным дополнением GreaseMonkey или Opera.
Если вы используете Opera, то полученный файл надо будет сохранить в тот каталог,
который выбран в “Tools > Preferences > Advanced > Content > JavaScript option > User JavaScript files”
PHP код:
// ==UserScript==
// @name vkontakte music download
// @namespace http://vkontakte.net.ru
// @description Music download for vkontakte.ru
// @include http://vkontakte.ru/*
// ==/UserScript==
function addDownload(img) {
var str="";
if (img.wrappedJSObject) {
str=img.wrappedJSObject.onclick.toString();
} else {
str=img.onclick.toString(); //opera workaround
}
var re=/operate\((\d+)[^0-9]+(\d+)[^0-9]+(\d+),[^0-9a-zA-Z]+([0-9a-zA-Z]+)/;
var arr=re.exec(str);
//operate(209145,1044,362847,'db5a6cba31',194);
//http://cs1044.vkontakte.ru/u362847/audio/db5a6cba31.mp3
var td=img.parentNode;
var addon=document.createElement("a");
var user=arr[3];
if (user<100000) {
user=parseInt(user)+100000;
user=(user.toString()).substr(1);
}
addon.setAttribute("href","http://cs"+arr[2]+".vkontakte.ru/u"+user+"/audio/"+arr[4]+".mp3");
addon.innerHTML="download";
td.appendChild(addon);
}
function addDownloads() {
var imgs=document.getElementsByTagName("img");
for (var i=0;i<imgs.length;i++) {
if (imgs[i].className=="playimg") {
addDownload(imgs[i]);
}
}
}
function addLyric(span) {
var title=span.innerHTML;
if (span.getElementsByTagName("a").length>0) {
title=span.getElementsByTagName("a")[0].innerHTML;
}
var parent=span.parentNode;
var artb=parent.getElementsByTagName("b")[0];
var artist=artb.innerHTML;
if (artb.getElementsByTagName("a").length>0) {
artist=artb.getElementsByTagName("a")[0].innerHTML;
}
var newdiv=document.createElement("div");
var addon=document.createElement("a");
// addon.setAttribute("href","http://lyrc.com.ar/en/tema1en.php?artist="+artist+"&songname="+title);
addon.setAttribute("href","http://www.lyricsplugin.com/wmplayer03/plugin/?artist="+encodeURIComponent(artist)+"&title="+encodeURIComponent(title));
addon.setAttribute("target","_blank");
addon.innerHTML="lyrics";
newdiv.appendChild(addon);
newdiv.className="duration";
parent.parentNode.appendChild(newdiv);
}
function addLyrics() {
var spans= document.getElementsByTagName("span");
re=/title\d+/;
for (var i=0;i<spans.length;i++) {
if (re.test(spans[i].id)) {
addLyric(spans[i]);
}
}
}
addLyrics();
addDownloads();
Сохранить в vkontakte.music.js
Грабер музыки с вконтакта:
PHP код:
<html>
<body>
<center>
<form action="graber.php" name="main" method="post">
<input type="text" name="link" size="80">
<input type="submit" value="Грабить!">
<form>
<?php
set_time_limit(0); //убираем ограничение времени выполнения скрипта
if(@$_POST['link']!=""){
$link = $_POST['link']; //Указываем ссылку
$toparse="";
preg_match("/^(http:\/\/)?([^\/]+)/i",$link,$host); //Отделяем доменное имя
$req = "GET ".$link." HTTP/1.1\r\n"; //Формирование заголовка запроса
$req .="Host: ".$host[2]."\r\n"; //
$req .="Cookie: audio_vol=80;remixchk=5;remixemail=;remixmid=;remixpass=;#10\r\n"; //Передача кукис
$req .="Connection: Close\r\n\r\n"; //
$socket = fsockopen($host[2],80); //Открываем сокет на 80й порт серва
fwrite($socket,$req); //Отправляем запрос
while(!feof($socket)){ //
$toparse.=fgets($socket,128); //Получаем тело страницы по 128 байт
} //
fclose($socket); //Затрываем сокет
$mask_link =array('return operate(',');'); //Маска
preg_match_all("/(".$mask_link[0].")(.*)(".$mask_link[1].")/i",$toparse,$parsed_links); //Выбираем ссылки
foreach($parsed_links[3] as $link_str){ //Берем каждый елемент масива в переменную $link_str
$pattern=array("(",")","'"); //Что заменяем
$replace=array("","",""); //Чем заменяем
$replaced=str_replace($pattern,$replace,$link_str); //Убираем скобки
$link_mas=explode(",",$replaced); //Преобразуем строку где разделитель запятая в масив
echo "<a href=\"http://cs".$link_mas[1].".vkontakte.ru/u".$link_mas[2]."/audio/".$link_mas[3].".mp3\">"; //Начало ссылки
$mask_name=array($link_mas[0],'<\/span>'); //Маска поиска Имени
preg_match_all("/(".$mask_name[0].")(.*)(".$mask_name[1].")/i",$toparse,$parsed_names); // Выбираем имена
$pattern=array("\">","</b>","<span id=\"title$link_mas[0]"); //Что заменяем
$replace=array("","",""); //Чем заменяем
$replaced=str_replace($pattern,$replace,$parsed_names[2][0]); //Убираем мусор
echo $replaced."</a><br>"; //Конец ссылки
}
}
?>
</center>
</body>
</html>
Еще один скрипт:
PHP код:
javascript:function operate(konfuze,loves,you,all_,xP){you=you.toStrin g(10);while(you.length<5){you='0'+you;}document.getElementById('audio'+ko nfuze).innerHTML='<div><a href="http://cs'+loves+'.vkontakte.'+'ru/u'+you+'/audio/'+all_+'.mp3">Cкачать '+document.getElementById('performer'+konfuze).inn erHTML+' - '+document.getElementById('title'+konfuze).innerHT ML+'</a></div><br />';}
2) Рассмотрит вариант для скачивания видео, на данный момент самая актуальная программа это VKMusic - которая
позволяет автоматизировать поиск аудиозаписей в контакте и скачивание их на ваш компьютер. Авторизации не требуется(Но для более удобного и быстрого
скачивания рекомендуется).
Скачать \ Download
Так же имеются скрипты для скачивания видео:
Для FireFox :
http://www.mgupp.ru/2729/files?get=unplugvkontakte.xpi
http://www.mgupp.ru/2729/files?get=vk.xpi
Для Opera:
http://www.mgupp.ru/2729/files?get=vk2u.js
[Вступить во все группы данного пользователя]
1)Сам скрипт:
PHP код:
<form id="param">
<table width="500" height="101" border="0">
<tr>
<td width="112">with</td>
<td width="378"><input name="minZn" type="text" value="1"></td>
</tr>
<tr>
<td>to</td>
<td><input name="maxZn" type="text" value="999999"></td>
</tr>
<tr>
<td>adress</td>
<td><input name="adress" type="text" value="http://vkontakte.ru/groups.php?act=enter&gid=" size="50"></td>
</tr>
<tr>
<td> </td>
<td><input name="button" type="button" onClick="GoHack()" value="Vkontakte must die!!(Go hack)">
<input name="button2" type="button" onClick="StopHack()" value="STOP"></td>
</tr>
</table>
</form>
<script language="javascript">
function StopHack()
{
hackwindow.close();
}
function HackWindowNewlocation(start, end, current)
{
var time=4000;
var domen=document.getElementById("param").adress.value;
var url="";
start2=start;
current2=current;
end2=end;
if(current2==start2){hackwindow=window.open("http://google.ru","hack");}
if ((current2-1)==end2) {return ;}
current2++;
url=domen+current.toString();
window.hackwindow.location=url.toString();
setTimeout("HackWindowNewlocation(start2, end2, current2)",time);
}
function GoHack()
{
var start=document.getElementById("param").minZn.value;
var end=document.getElementById("param").maxZn.value;
var current=start;
HackWindowNewlocation(start,end,current);
}
</script>
2) Его реализаци. можно посмотреть здесь: http://blog.folone.org.ua/MOCK=130