Как да свалим всичките си мнения от Download.BG
Автор |
|
phrozencrewВто, 14.12.10, 21:09 |
Здрасти хора, Гледам, че някои потребители имат притеснения относно мненията си във форума, като бат stoqncho например. И реших да напиша кратко ръководство за това как да свалим (в смисъл на download) мненията си, така че да не се изгубят, ако някой хаЦкер хакне сайта . Най-лесния начин да се направи подобна игра е да се използва bash-шела на някой Linux. Въпреки, че dreven, insecteater, electric_cc, armenxxx1 и останалите зарибени по програмирането пичове и мацки биха могли да предложат и доста по-лесен вариант и за Winblowz. Мен си ме кефи bash и отворения код, за това ще използвам в случая Ubuntu. Ще си помогна малко с една друга моя тема за bash програмиране, както и лека помощ от Live HTTP Headers за Firefox. Тази техника може да се използва за сваляне на каквото и да е от който и да е форум, но в случая ще се възползвам от великодушието на DBG. PS: Ще напиша тутора във втория си пост, за да мога да го редактирам при нужда. | | phrozencrewВто, 14.12.10, 21:10 |
Да започваме. Необходимо ни е да разберем механизма на подаването на данни при логването. За това първо преди да се логнем в DBG нека стартираме LiveHTTP Headers добавката на браузера и да сложим отметка на "request", като в браузера сме заредили страницата за логин. Това ви е добре познато от предишният ми урок за сваляне на видео и други неща. След като сме готови и сме на страницата за логване си пише потребителското име и паролата в полетата и натискаме бутона за "Вход". През това време LiveHTTP Headers улавя нашите POST заявки към сървара на DBG. Нас ни интересува реда с POST-заявката за логване с потребителско име и парола:
Това в случая е първи лог на LiveHTTP Headers. Е гати лесното :)! Реда с пост заявката представлява следното: cls=Users&mtd=Login&ref=&nick=phrozencrew&password=parolkata&action=%D0%92%D1%85%D0%BE%D0%B4 Нас ни интересува слдния пасаж: nick=potrebitelw&password=parolkata Интересува ни и на коя страница се подава тази пост заявка. И това си го пише най-отгоре: http://www.download.bg/index.php?cls=users&mtd=login Сега вече въоръжени с необходимата информация само трябва да си изберем един от хилядите инструменти на великия Linux и вече можем да притежаваме цялата информация на премиум логнатия потребител от сайта. Е гати, това ли беше. Ами да! Това беше! От тук нататък е тъпотия за третокласници.
Аз ще използвам инструмента wget, за който бях писал в 2-3 теми (макар, че с cURL може да се съкрати и улесни още), а също и един елементарен for-loop цикъл, така че всеки да схване идеята. Да автоматизираме нашата цел, която си поставихме в заглавието на темата. Ние сме логнат премиум потребител и можем да видим всички мнения, които сме поствали във форума. И не само това. Можем да видим всички мнения на всеки друг потребител. Чудесно е това, нали! Аз ще прегледам мненията на нашия притеснен съфорумник stoqncho. Пич, надявам се да ме извиниш, че те ползвам за пример! Но пък може и да ти е полезно. Та значи мненията на стоянчо към днешният момент се разпростират на 68 страници. Значи имаме отговор колко да се разпростира for-цикъла - от страница 1 до страница 68. Нека видим за какво говоря:
Виждаме и че адреса със страниците с мнения на stoqncho е следния, примерно за страница 2-а: http://www.download.bg/index.php?cls=users&mtd=ownpostings&id=229067&h=b7476a7d6100ca10ee3464b11704fe9d&p=2 Забелязваме, че при смяната на всяка страница се променя числото накрая. Това ужасно много ни улеснява! Така, да видим скрипта как би изглеждал и после ще вкарам малко обяснения: nick='ника_ви'
pass='паролата_ви'
stranici=68
url='http://www.download.bg/index.php'
wget -O - --save-cookies=cookies.txt --keep-session-cookies --post-data "cls=Users&mtd=Login&ref=&nick=$nick&password=$pass&action=%D0%92%D1%85%D0%BE%D0%B4" ${url}
for ((i=1; i<=$stranici; i++)) do
wget -O $i.html --keep-session-cookies --load-cookies=cookies.txt "http://www.download.bg/index.php?cls=users&mtd=ownpostings&id=229067&h=b7476a7d6100ca10ee3464b11704fe9d&p=$i"
sleep 2
done |
Първото използване на wget е за да ви логне във сайта, като запази сесията от логването в обикновен текстови файл. --save-cookies=cookies.txt --keep-session-cookies По късно при for-цикъла зареждаме запаметената сесия от текстовия файл, за да удостоверим сървар на DBG, че сме едни много логнати пичове: --keep-session-cookies --load-cookies=cookies.txt Добавяме и един sleep (пауза) от 2 секунди, за да не ни помисли сървара за атакуващи. Прилагам целия скрипт, за да няма грешки от копи-пейста: download_all_posts.sh.txt Трябва да се изтрие "nomera.txt". За да стартирате скрипта, преди това трябва да го направите изпълним. Това се прави с командата chmod +x download_all_posts.sh, а стартирането на скрипта от конзолата се извършва, ако сте в текущата директория ./download_all_posts.sh:
За да персонализирате скрипта за собствените си мнения или нечии чужди просто променете първите три реда с вашите данни: nick='ника_ви'
pass='паролата_ви'
stranici=68 |
И за да не изглежда много сухо ето всички мнения, към момента, на нашия уважаван съфорумец stoqncho, свалени по горе описания метод: mnenia_stoqncho.zip За свалянето на прикачените файлове и картинки мисля, че ще се справите и сами. Но ако има интерес ще напиша просто скриптче и за това. | | anonymousВто, 14.12.10, 21:40 |
Браво Нед!!! ето и още едно решение с твоята тема... преди време моя "приятел" Древния пусна тема за автоматично логване в д.бг но до колкото знам не се намери добро решение... но вече го има с твоята тема http://www.download.bg/index.php?cls=Users&mtd=Login&ref=&nick=НИК&password=ПАРОЛА&action=%D0%92%D1%85%D0%BE%D0%B4 редактиран от anonymous на 14.12.10 21:42 | | kookkiВто, 14.12.10, 22:08 | RE: Как да свалим всичките си мнения от Download.BG
Браво ! Направо ми вкара муха в главата, как да го направя с С++. Ще падне творчество. След като си взех изпитите, мога пак да подхвана това хоби С-то. ” Въпреки, че dreven, insecteater, electric_cc, armenxxx1 и останалите зарибени по програмирането пичове и мацки биха могли да предложат и доста по-лесен вариант и за Winblowz. „ Понеже имам някои неизвестни, ще изчакам някой да се включи по темата с предложение за бозата. | | phrozencrewВто, 14.12.10, 22:30 |
Благодаря за подкрепата, пичове! Аз написах подобен скрипт и на VBScript, обаче бозата Window$ има известни проблеми с поддържането на връзката и по някое време примерно при сваляне на 7-8-ма страница вади грешка. Ще се опитам да подсигуря връзката и да пренапиша скрипта, но май vbs не особено печен за подобни лесни тарикатлъци. Ако 100% имам успех ще го публикувам като вариант. Все пак Linux изключително много улеснява програмиста. | | anonymousВто, 14.12.10, 22:45 | RE: Как да свалим всичките си мнения от Download.BG
” Благодаря за подкрепата, пичове! Аз написах подобен скрипт и на VBScript, обаче бозата Window$ има известни проблеми с поддържането на връзката и по някое време примерно при сваляне на 7-8-ма страница вади грешка. Ще се опитам да подсигуря връзката и да пренапиша скрипта, но май vbs не особено печен за подобни лесни тарикатлъци. Ако 100% имам успех ще го публикувам като вариант. Все пак Linux изключително много улеснява програмиста. „ Нед я дай да поразгледам vbs скрипта.... | | phrozencrewВто, 14.12.10, 23:06 | RE: RE: Как да свалим всичките си мнения от Download.BG
” Нед я дай да поразгледам vbs скрипта.... „
След като се логнеш през IE можеш да запалиш тоя скрипт, обаче гърми...: dim strContents, fso, f1, count
dim ie
set ie = WScript.CreateObject("InternetExplorer.Application")
set fso = CreateObject("Scripting.FileSystemObject")
For count = 1 to 68
set f1=fso.CreateTextFile(count & ".html",True)
ie.visible =false
ie.navigate "http://www.download.bg/index.php?cls=users&mtd=ownpostings&id=229067&h=b7476a7d6100ca10ee3464b11704fe9d&p=" & count
do while ie.busy=true
loop
strContents =ie.document.documentelement.innerhtml
f1.Write strContents
WScript.Sleep(2000)
Next
ie.quit
set ie =nothing |
Не мога да разбера защо вади странни грешки при записа на файл, примерно. Другото, което гърми при мен е, това че не записва някои страници до края. Просто стига до определен текст и продължава със следващата страница. Хм... | | anonymousСря, 15.12.10, 00:30 |
Нед виж за .mht CreateObject("CDO.Message") Const adSaveCreateNotExist = 1 Const adSaveCreateOverWrite = 2 Const adTypeBinary = 1 'Binary data Const adTypeText = 2 '(Default) Text data URL = "http://www.download.bg/" DiskFile = "test.mht" Set objMessage = CreateObject("CDO.Message") objMessage.CreateMHTMLBody URL SaveToFile objMessage, DiskFile Sub SaveToFile(Msg, Fn) Dim Strm, Dsk Set Strm = CreateObject("ADODB.Stream") Strm.Type = adTypeText Strm.Charset = "US-ASCII" Strm.Open Set Dsk = Msg.DataSource Dsk.SaveToObject Strm, "_Stream" Strm.SaveToFile Fn, adSaveCreateOverWrite End Sub ... stoqncho я по спокойно никой не те "2. Не ми пречи да ме използваш за опитно зайче и да се еее.....баваш на мой гръб." | | electric_ccСря, 15.12.10, 06:02 |
Предлагам за експериментиране две процедури на VB6. Едната отваря страницата на download.bg, а другата трета страница на постингите на Стоянчо (да е жив и здрав и корав). Трябва да измислите как да се логнете и да извлечете страниците като ги запишете във файл. Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _ ByVal hwnd As Long, _ ByVal lpOperation As String, _ ByVal lpFile As String, _ ByVal lpParameters As String, _ ByVal lpDirectory As String, _ ByVal nShowCmd As Long) As Long Private Sub cmdLogin_Click() Username$ = "???????" Parola$ = "????" a$ = "http://www.download.bg/" ShellExecute Me.hwnd, "open", a$, vbNullString, "C:\", ByVal 1& End Sub Private Sub cmdOpen_Click() x = 3 a$ = "http://www.download.bg/index.php?cls=users&mtd=ownpostings&id=229067&h=b7476a7d6100ca10ee3464b11704fe9d&p=" & CStr(x) ShellExecute Me.hwnd, "open", a$, vbNullString, "C:\", ByVal 1& End Sub | | electric_ccСря, 15.12.10, 14:32 |
За улеснение на програмистите, логването може да стане така: Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _ ByVal hwnd As Long, _ ByVal lpOperation As String, _ ByVal lpFile As String, _ ByVal lpParameters As String, _ ByVal lpDirectory As String, _ ByVal nShowCmd As Long) As Long Private Sub cmdLogin_Click() Username$ = "?????????" 'тук трябва да си запишете съответните параметри Parola$ = "????????" L$ = "cls=Users&mtd=Login&ref=&nick=" + Username$ + "&password=" + Parola$ + "&action=%D0%92%D1%85%D0%BE%D0%B4" a$ = "http://www.download.bg/index.php?" + L$ ShellExecute Me.hwnd, "open", a$, vbNullString, "C:\", ByVal 1& End Sub | | Коментар |