Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2009, 16:15   #1
Рамик
Студент
Форумчанин
 
Аватар для Рамик
 
Регистрация: 18.02.2009
Сообщений: 125
Вопрос [Delphi] Смена пароля пользователя Windows

помогите кто чем может, а то уже запутался...
я хотел сделать так чтобы при запуске программы она проверяла дату, если дата четное число, то меняем пароль...:
Код:
procedure TForm5.FormCreate(Sender: TObject);
var f,f1:textfile;
    rec:string;
    i:integer;
    name:string;
    date,pass,proba:string;
    daytxt:string;
    day:integer;
    kod:integer;
    parol,k:integer;
begin

date:=DateToStr(now);
daytxt:=copy(date,1,2);
val(daytxt,day,kod);



name:=edit1.text;
assignfile(f,'pass.dat');
reset(f);
while not(eof(f)) do begin
readln(f,rec);
listbox1.Items.Add(rec);
end;
closefile(f);

if (day mod 2)=0 then begin
assignfile(f1,'name.dat');
reset(f1);
read(f1,rec);
closefile(f1);
proba:='cmd /c net user ';
i:=random(listbox1.Count);
for k := 1 to Listbox1.Count - 1 do  begin
if k=i  then
pass:=listbox1.Items[k];
end;
name:=rec+' ';
insert(name,proba,17);
i:=length(proba);
insert(pass,proba,i+1);
winexec(PChar(proba),SW_Hide);
end;

end;
вот тут я пытался изменить пароль:
Код:
if (day mod 2)=0 then begin
assignfile(f1,'name.dat');
reset(f1);
read(f1,rec);
closefile(f1);
proba:='cmd /c net user ';
i:=random(listbox1.Count);
for k := 1 to Listbox1.Count - 1 do  begin
if k=i  then
pass:=listbox1.Items[k];
end;
name:=rec+' ';
insert(name,proba,17);
i:=length(proba);
insert(pass,proba,i+1);
winexec(PChar(proba),SW_Hide);
end;
....но не работает..
А вот я сделал смену пароля при нажатии кнопки:
Код:
procedure TForm5.Button2Click(Sender: TObject);
var rec,name,proba,pass:string;
    i:integer;
    f1:textfile;
begin
assignfile(f1,'name.dat');
reset(f1);
read(f1,rec);
closefile(f1);
proba:='cmd /c net user ';
pass:=edit2.text;
name:=rec+' ';
insert(name,proba,17);
i:=length(proba);
insert(pass,proba,i+1);
winexec(PChar(proba),SW_Hide);
end;
и вот скриншот самой формы...
Изображения
Тип файла: jpg form.JPG (27.2 Кб, 150 просмотров)
Рамик вне форума Ответить с цитированием
Старый 05.08.2009, 16:47   #2
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

1. Зачем это и для чего это делается?
Код:
date:=DateToStr(now);
daytxt:=copy(date,1,2);
val(daytxt,day,kod);
2. Это можно сделать проще.
Код:
i:=random(listbox1.Count);
for k := 1 to Listbox1.Count - 1 do  begin
if k=i  then
pass:=listbox1.Items[k];
end;
3. Это можно записать одной строкой.
Код:
name:=rec+' ';
insert(name,proba,17);
i:=length(proba);
insert(pass,proba,i+1);
winexec(PChar(proba),SW_Hide);
Я не знаю работает это или нет, но просто поставь брекпоинт и погляди чему в результате равно "proba".
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 05.08.2009, 16:51   #3
Рамик
Студент
Форумчанин
 
Аватар для Рамик
 
Регистрация: 18.02.2009
Сообщений: 125
По умолчанию

1. это я узнаю время и беру только день...
2,3. я только начал изучать делфи и поэтому писал больше как на паскале... может подскажешь...?
Рамик вне форума Ответить с цитированием
Старый 05.08.2009, 16:51   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
....но не работает.
Что именно не работает? Пошагово тестировал?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.08.2009, 16:58   #5
Рамик
Студент
Форумчанин
 
Аватар для Рамик
 
Регистрация: 18.02.2009
Сообщений: 125
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Что именно не работает? Пошагово тестировал?
не ставится новый пароль...
мне кажется я не правильно беру случайную строку...

а при нажатии кнопки "сменить пароль" все работает...

Последний раз редактировалось Stilet; 05.08.2009 в 17:15.
Рамик вне форума Ответить с цитированием
Старый 05.08.2009, 17:13   #6
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Код:
Var
  F : TextFile;
  Rec : String;
Begin
//Считываем пароли из файла и заносим в ListBox.
ListBox1.Clear;
AssignFile(F, 'Password.txt');
Reset(F);
While Not Eof(F) Do
  Begin
    ReadLn(F, Rec);
    Listbox1.Items.Add(Rec);
  End;
//Определяем чётный ли день.
//Если да, то меняем пароль.
If (StrToInt(FormatDateTime('d', Now)) Mod 2) = 0 Then
  Begin
    //Меняем пароль.
    Randomize;
    ShowMessage('Новый пароль: ' + ListBox1.Items[Random(ListBox1.Count - 1)]);
  End
Else
  Begin
    //Оставляем старый пароль.
    ShowMessage('Пароль не изменён.');
  End;
End;
Так выглядит значительно лучше, неиспользуется куча ненужных переменых и пр.
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 05.08.2009, 17:34   #7
Рамик
Студент
Форумчанин
 
Аватар для Рамик
 
Регистрация: 18.02.2009
Сообщений: 125
По умолчанию

Цитата:
Сообщение от Вавел из ГМТУ Посмотреть сообщение
Код:
Var
  F : TextFile;
  Rec : String;
Begin
//Считываем пароли из файла и заносим в ListBox.
ListBox1.Clear;
AssignFile(F, 'Password.txt');
Reset(F);
While Not Eof(F) Do
  Begin
    ReadLn(F, Rec);
    Listbox1.Items.Add(Rec);
  End;
//Определяем чётный ли день.
//Если да, то меняем пароль.
If (StrToInt(FormatDateTime('d', Now)) Mod 2) = 0 Then
  Begin
    //Меняем пароль.
    Randomize;
    ShowMessage('Новый пароль: ' + ListBox1.Items[Random(ListBox1.Count - 1)]);
  End
Else
  Begin
    //Оставляем старый пароль.
    ShowMessage('Пароль не изменён.');
  End;
End;
Так выглядит значительно лучше, неиспользуется куча ненужных переменых и пр.
СПАСИБО БОЛЬШОЕ!!! немного подредактировал ваш код и все заработало!

вот что у меня получилось:
Код:
procedure TForm5.FormCreate(Sender: TObject);

Var
  F,f1 : TextFile;
  Rec : String;
  newpass,proba,name:string;
  i:integer;
Begin
//Считываем пароли из файла и заносим в ListBox.
ListBox1.Clear;
AssignFile(F, 'Pass.dat');
assignfile(f1,'name.dat');
reset(f1);
read(f1,name);
closefile(f1);
Reset(F);
While Not (Eof(F)) Do
  Begin
    ReadLn(F, Rec);
    Listbox1.Items.Add(Rec);
  End;
  closefile(f);
//Определяем чётный ли день.
//Если да, то меняем пароль.
If (StrToInt(FormatDateTime('d', Now)) Mod 2) = 1 Then
  Begin
    //Меняем пароль.
    Randomize;
    proba:='cmd /c net user ';
    newpass:= ListBox1.Items[Random(ListBox1.Count - 1)];
    name:=name+' ';
    insert(name,proba,17);
    i:=length(proba);
    insert(newpass,proba,i+1);
    winexec(PChar(proba),SW_Hide);
    ShowMessage('Новый пароль: '+newpass);
  End
Else
  Begin
    //Оставляем старый пароль.
    ShowMessage('Пароль не изменён.');
  End;
end;
а возможно узнать какой пароль стоит на данный момент?
что бы при запуске программы она выводила сообщение на данный момент "ваш пароль:..." ?

Последний раз редактировалось Stilet; 06.08.2009 в 08:38.
Рамик вне форума Ответить с цитированием
Старый 05.08.2009, 17:42   #8
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Я думаю так будет значительно короче:
Код:
NewPass := ListBox1.Items[Random(ListBox1.Count - 1)];
Proba := 'cmd /c net user ' + Name + ' ' + NewPass;
ЧТо касается пароля то незнаю. Если это пароль на учётку, то он как минимум гдето прячется в зашифрованном виде...

адд: мне также не понятно как Винда даёт сменить пароль на учётку без указания старого пароля. Получается что пароль может поставть кто угодно... А это бруд.....

PS: что, действительно меняется пасс учётки??

Последний раз редактировалось Вавел из ГМТУ; 05.08.2009 в 17:50.
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 05.08.2009, 17:57   #9
Рамик
Студент
Форумчанин
 
Аватар для Рамик
 
Регистрация: 18.02.2009
Сообщений: 125
По умолчанию

да меняется, только надо имя пользователя правильно указать
Рамик вне форума Ответить с цитированием
Старый 05.08.2009, 18:07   #10
zotox
Форумчанин
 
Регистрация: 09.09.2008
Сообщений: 395
По умолчанию

Цитата:
а возможно узнать какой пароль стоит на данный момент?
что бы при запуске программы она выводила сообщение на данный момент "ваш пароль:..." ?
Нет. Пароль зашифрован и записан в системный файл (точно его не помню но если надо срочно то могу вспомнить)
zotox вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Delphi] Изменение пароля пользователя Рамик Помощь студентам 8 10.09.2019 23:46
Работа программы с БД с ограниченной учетной записью пользователя Windows Стас БД в Delphi 3 11.12.2009 14:35
Сменя пользователя Windows Mike Free Общие вопросы Delphi 9 07.07.2009 18:32
Взлом пароля Windows mager Безопасность, Шифрование 25 07.03.2009 22:22