firebird veritabanı masterkey şifresinin programla değiştirilmesi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
sadikacar60
Üye
Mesajlar: 83
Kayıt: 28 Ara 2017 04:14
İletişim:

firebird veritabanı masterkey şifresinin programla değiştirilmesi

Mesaj gönderen sadikacar60 »

arkadaşlar firebird veritabanı şifresini uygulama ile değiştirmem lazım bunu yapabilirmiyiz netde hiç bir bilği yok yanlışmı arıyorum
yardımcı olabilecek var mı saygılarımla
ihalilcoban
Üye
Mesajlar: 121
Kayıt: 10 Ara 2015 10:39

Re: firebird veritabanı masterkey şifresinin programla değiştirilmesi

Mesaj gönderen ihalilcoban »

Merhaba.

Kullandığınız delphi ve firebird sürümlerini belirtirseniz yardımcı olmaya çalışırım.
sadikacar60
Üye
Mesajlar: 83
Kayıt: 28 Ara 2017 04:14
İletişim:

Re: firebird veritabanı masterkey şifresinin programla değiştirilmesi

Mesaj gönderen sadikacar60 »

delphi7 firebird 2.1 çok sağolun hocam borçlanacağım size. saygılar
ihalilcoban
Üye
Mesajlar: 121
Kayıt: 10 Ara 2015 10:39

Re: firebird veritabanı masterkey şifresinin programla değiştirilmesi

Mesaj gönderen ihalilcoban »

Rica ederim.

Öncelikle forma bir adet IBSecurityService bileşeni ekleyin (Interbase Admin Sekmesinde). Sonra bir buton içerisine aşağıdaki kodları ekleyin;

Kod: Tümünü seç

  IBCSecurityService1.ClientLibrary := 'fbclient.dll';
  IBCSecurityService1.Username := 'SYSDBA';
  IBCSecurityService1.Password := 'masterkey';
  IBCSecurityService1.LoginPrompt := False;
  IBCSecurityService1.Attach;
  IBCSecurityService1.UserInfo.UserName := 'username';
  IBCSecurityService1.UserInfo.Password := 'new password';
  IBCSecurityService1.ModifyUser;
  IBCSecurityService1.Detach;
Kodları deneme imkanım olmadı ama muhtemelen işinizi görecektir.

Kolay gelsin.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: firebird veritabanı masterkey şifresinin programla değiştirilmesi

Mesaj gönderen freeman35 »

Bu password işi firebird ün hala en saçma sayılacak kısmı. security.fdb içindeki bu kullanıcı ad ve şifreleri, ancak security.fdb olduğu serverda işe yarar. çünkü bunu sadece tcp connection larda kullanıyor. sizin db yi başka bir makinaya kopyalandığında, yada security.fdb nin orjinalini yada bildiğiniz birini kopyalarsa db ye gene bağlanırsınız.
Role koyulursada yanılmıyorsam kullanıcıyı security.fdb ye eklerseniz tekrar erişim sağlanır. (bunu hiç denemedim) o yüzdende db mi başkaları kurcalamasın diye şimdilik uğraşmayın.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
sadikacar60
Üye
Mesajlar: 83
Kayıt: 28 Ara 2017 04:14
İletişim:

Re: firebird veritabanı masterkey şifresinin programla değiştirilmesi

Mesaj gönderen sadikacar60 »

hocam hata aldım ama
Resim

IBCSecurityService1 yerine IBSecurityService1 var ondan olabilir mi
saygılar
sadikacar60
Üye
Mesajlar: 83
Kayıt: 28 Ara 2017 04:14
İletişim:

Re: firebird veritabanı masterkey şifresinin programla değiştirilmesi

Mesaj gönderen sadikacar60 »

https://www.devmedia.com.br/criando-usu ... fb-ib/2005

linkdeki örneği kurcalayarak çözdüm zaman ayırıp cevap yazan hocalarıma saygılar sunarım




unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,DBXpress, IBServices, ComCtrls;




type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button2: TButton;
ListView1: TListView;
IBSecurityService1: TIBSecurityService;
Button1: TButton;
Button3: TButton;
Button4: TButton;
edtUN: TEdit;
edtPass: TEdit;
procedure Button2Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ListView1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
Tipo: byte;
procedure CarregaUser;
{ Public declarations }
end;

var
Form1: TForm1;

implementation
uses IB;
{$R *.dfm}



procedure IslemYap(user,sifre:string;Tipo:byte);
begin

with Form1.IBSecurityService1 do
begin
try
UserName := user;
Password := sifre;

Active := True;
case Tipo of
0: AddUser;
1: ModifyUser;
2: DeleteUser;
end;
ShowMessage('İşlem Yapıldı.');
except
on E: EIBInterbaseError do
raise Exception.Create(
'Hata');
end;
end;
end;




procedure TForm1.Button2Click(Sender: TObject);
var
UserName,Password:string;
begin
UserName := Edit1.Text;
Password := Edit2.Text;

IslemYap(UserName,Password,0)

end;

procedure TForm1.CarregaUser;
var
i: Integer;
aLista: TListItem;
begin
ListView1.Clear;
with IBSecurityService1 do
begin
DisplayUsers;
for i := 0 to UserInfoCount - 1 do { Iterate }
begin
with UserInfo do
begin
aLista := ListView1.Items.Add;
aLista.Caption := UserName;
aLista.SubItems.Add(FirstName + ' ' +
MiddleName + ' ' +
LastName);
end;
end;
Active := False;
end;
end;




procedure TForm1.FormShow(Sender: TObject);
begin
CarregaUser;
end;

procedure TForm1.ListView1Click(Sender: TObject);
begin
Edit1.Text:= ListView1.Selected.Caption;

end;




procedure TForm1.Button1Click(Sender: TObject);
var
UserName,Password:string;
begin
Username := Edit1.Text;
Password := Edit2.Text;
IslemYap(UserName,Password,1);

end;

procedure TForm1.Button3Click(Sender: TObject);
var
UserName,Password:string;
begin
Username := Edit1.Text;
Password := Edit2.Text;
IslemYap(UserName,Password,2);

end;

procedure TForm1.Button4Click(Sender: TObject);
begin
IBSecurityService1.UserName:=edtUN.Text;
IBSecurityService1.Password:=edtPass.Text;
IBSecurityService1.Active:=True;
CarregaUser;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

en
sadikacar60
Üye
Mesajlar: 83
Kayıt: 28 Ara 2017 04:14
İletişim:

Re: firebird veritabanı masterkey şifresinin programla değiştirilmesi

Mesaj gönderen sadikacar60 »

malesef stabil çalışmıyor arkadaşlar başka bir pc de programı çalıştırıp masterkey olan şifreyi değiştirmeye çalıştığında
bağlanmıyor iş görmüyor
ihalilcoban
Üye
Mesajlar: 121
Kayıt: 10 Ara 2015 10:39

Re: firebird veritabanı masterkey şifresinin programla değiştirilmesi

Mesaj gönderen ihalilcoban »

Merhaba.

Gerekli açıklamayı freeman35 yukarıda yapmış. O yüzden şifre değiştirmekle uğraşmak yerine veri tabanını güvenliğini kullanıcının sorumluluğuna bırakmak bence daha makul bir davranış olacaktır. Ayrıca bu şifreyi değiştirmek istemenizin sebebi nedir? Kullanıcı yetkilendirme gibi bir yapı mı kurmaya çalışıyorsunuz yoksa tamamen merak mı?
sadikacar60
Üye
Mesajlar: 83
Kayıt: 28 Ara 2017 04:14
İletişim:

Re: firebird veritabanı masterkey şifresinin programla değiştirilmesi

Mesaj gönderen sadikacar60 »

küçük bir ticari programım var eski sürümlerimden birini vatandaşın biri çaldı kullanıyor mahkemeydi davaydı patentdi lisanstı bana zor ve maliyetli geliyor lisanslama için benim bilmediğim kolay bir yöntem varsa önerinizi beklerim.

şimdi standart şifreyle programı verdiğimde meraklı birileri çıkıp kayıtları değiştirmeye çalışıyorlar ayrıca en azından şifreleri belirli seviye amatörlerden korumak istiyorum . inanki öyle şeylerle karşılaşıyorumki inanamazsın. amacım benden başkasının firebird veritabanından kayıtlarıma ulaşmasını enğellemek.
yukardaki programda kompenant üzerinden username ve şifre verdiğimde bağlanıyor kod ile yaptığımda bağlanmıyor enterasan çözemedim.

kodlar burda bir kontrol ederseniz sevinirim
https://drive.google.com/open?id=1U6jEb ... 04-BxgUM7K
ihalilcoban
Üye
Mesajlar: 121
Kayıt: 10 Ara 2015 10:39

Re: firebird veritabanı masterkey şifresinin programla değiştirilmesi

Mesaj gönderen ihalilcoban »

Programı bu şekilde veri tabanı şifresini değiştirerek korumak pek sağlıklı değil. Lisanslama olayı tamamen farklı bir konu. Ben lisanslama için Harddiskin fabrika seri numarasını alıp bir dizi işleme tabi tuttuktan sonra lisans parametresini şifreleyip veri tabanına kaydediyorum. Onun haricinde de kayıt kısıtlaması getiriyorum. Örneğin 30 müşteri eklemesine izin veriyorum. Müşteri sayısı 30 olunca veri tabanından lisans anahtarı var mı yok mu kontrol ettiriyorum. Bu şekilde senaryolar üreterek programı koruma altına alıyorum.

Eğer firebird şifre değiştirmek istiyorsanız bu kadar kodla uğraşmak yerine firebird in kendi servisi olan GESC i kullanarak manuel olarak şifreyi değiştirebilirsiniz.
sadikacar60
Üye
Mesajlar: 83
Kayıt: 28 Ara 2017 04:14
İletişim:

Re: firebird veritabanı masterkey şifresinin programla değiştirilmesi

Mesaj gönderen sadikacar60 »

bende benzer şekilde yapıyorum ama oyun programı diyelimki 50 kişi oyun oynadı veritabanına bağlanıp 10 adedini silip 40 oyun oynanmış ğibi gösterebilir veritabanına ulaşılmasını enğellemem lazım. GESC istemiyorum müşterinin önünde girmem gerekebiliyor.
resimdeki gibi kompenant üzerinden yaptığımda çalışıyor ama kodla bağlanmaya çalıştığımda bağlanamıyorum

Kod: Tümünü seç

procedure TForm1.Button4Click(Sender: TObject);
begin
with IBSecurityService1 do
  begin
  UserName:=edtUN.Text;
  Password:=edtPass.Text;
  //LoginPrompt:=True;
  Active:=True;
  end;
CarregaUser;
end;

Resim
ihalilcoban
Üye
Mesajlar: 121
Kayıt: 10 Ara 2015 10:39

Re: firebird veritabanı masterkey şifresinin programla değiştirilmesi

Mesaj gönderen ihalilcoban »

Kod: Tümünü seç

procedure TForm1.Button4Click(Sender: TObject);
begin
with IBSecurityService1 do
  begin
  Params.Clear;
  Protocol:=Local;
  Params.Add('user_name=SYSDBA');
  Params.Add('password=masterkey');
  LoginPrompt:=FAlse;
  SecurityAction:=ActionDisplayUser;
  Active:=True;
  end;
CarregaUser;
end;
Sizin kullanıcı yenilemek için kullandığınız butona bu kodu yazarsanız çalışacaktır.
sadikacar60
Üye
Mesajlar: 83
Kayıt: 28 Ara 2017 04:14
İletişim:

Re: firebird veritabanı masterkey şifresinin programla değiştirilmesi

Mesaj gönderen sadikacar60 »

tamamdır hocam çalıştı. allah razı olsun emeğinize elinize sağlık
saygılar sunarım.
ihalilcoban
Üye
Mesajlar: 121
Kayıt: 10 Ara 2015 10:39

Re: firebird veritabanı masterkey şifresinin programla değiştirilmesi

Mesaj gönderen ihalilcoban »

Rica ederim. Allah cümlemizden razı olsun. İyi çalışmalar.
Cevapla