Nüfuz edici bombalar geliyor

2/2/2009 ·

Her türlü sığınak ve korugana karşı kullanılacak “nüfuz edici” yeni tip bomba üretimiyle ilgili araştırma-geliştirme (Ar-Ge) çalışmaları başlatıldı.

Her türlü sığınak ve koruganın imhası amacıyla geliştirilmesi planlanan nüfuz edici bomba projesinde ilk adım MKEK ile TÜBİTAK-SAGE arasında geçtiğimiz günlerde “alt yükleniciliği” sözleşmesinin imzalanmasıyla atıldı. Sözleşme gereği üretilecek yeni tip bombaların tasarım sorumluluğunu TÜBİTAK-SAGE, üretimi ise MKEK’e tesislerde yapılacak.

Bombaların tasarım sorumluluğu Türkiye Bilimsel ve Teknik Araştırma Kurumu-Savunma Sanayii Araştırma ve Geliştirme Enstitüsü (TÜBİTAK-SAGE), alt yükleniciliğini ise Makina ve Kimya Endüstrisi Kurumu (MKEK) yapacak.

Türk Hava Kuvvetleri Komutanlığı için üretimi planlanan ve “nüfuz edici bomba” olarak tanımlanan yeni tip bombaların üretimi, MKEK tesislerinde gerçekleştirilecek.

Araştırma-Geliştirme safhası çalışmalarının tamamlanmasından sonra, sonra söz konusu proje MKEK’in yatırım programına alınacak. Nüfus edici bombaları üretimiyle ilgili tesislerin üretim kapasitesi, maliyeti, Ar-Ge çalışmalarının tamamlanmasından sonra netlik kazanacak.

Yorum (yok) Yorum yaz!

Basit Delphi Kodlari

2/2/2009 · Kategori: DELPHI POGRAMLAMA

Dosya Kopyalama (1)

Procedure FileCopy( Const sourcefilename, targetfilename: String );
Var
S, T: TFileStream;
Begin
S := TFileStream.Create( sourcefilename, fmOpenRead );
try
T := TFileStream.Create( targetfilename,
fmOpenWrite or fmCreate );
try
T.CopyFrom(S, S.Size ) ;
finally
T.Free;
end;
finally
S.Free;
end;
End;

Dosya Kopyalama (2)

procedure FileCopy(const FromFile, ToFile: string);
var
FromF, ToF: file;
NumRead, NumWritten: Word;
Buf: array[1..2048] of Char;
begin
AssignFile(FromF, FromFile);
Reset(FromF, 1); { Record size = 1 }
AssignFile(ToF, ToFile); { Open output file }
Rewrite(ToF, 1); { Record size = 1 }
repeat
BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
BlockWrite(ToF, Buf, NumRead, NumWritten);
until (NumRead = 0) or (NumWritten <> NumRead);
CloseFile(FromF);
CloseFile(ToF);
end;

Dosya Kopyalama (3)

procedure CopyFile(FromFileName, ToFileName: string);
var
FromFile, ToFile: File;
begin
AssignFile(FromFile, FromFileName); { Assign FromFile to FromFileName }
AssignFile(ToFile, ToFileName); { Assign ToFile to ToFileName }
Reset(FromFile); { Open file for input }
try
Rewrite(ToFile); { Create file for output }
try
if LZCopy(TFileRec(FromFile).Handle, TFileRec(ToFile).Handle) < 0
then
raise EInOutError.Create(’Error using LZCopy’)
finally
CloseFile(ToFile); { Close ToFile }
end;
finally
CloseFile(FromFile); { Close FromFile }
end;
end;

Directory Adi degistirme

SysUtils unitesinin içindeki RenameFile function bu isi görmektedir.

Treeview componentinin durumunu kaydetme ve gösterme

Kaydetmek için

TreeView.SaveToFile(’Dosya.adi’);

Dosyayi açmak için

TreeView.LoadFromFile(’Dosya.adi’);

Dosyayi yanlizca okumak (read only) seklinde açma

AssignFile(F, Dosya);
FileMode := 0; (read only modunda açmak}
Reset(F);
.
.
.
CloseFile(F);

Açilan dosyanin tarih ve zamanini ayarlamak


var
f: file;
begin
Assign(f, DirInfo.Name);
Reset(f);
SetFTime(f, Time);
Close(f);
end;

Deltree

{$I-} {$I+}

procedure delTree (DirName: string);
var
FileSearch: SearchRec;
begin

chDir (DirName);
FindFirst (’*.*’, Directory, FileSearch);
while (DosError = 0) do begin
if (FileSearch.name <> ’.’) AND (FileSearch.name <> ’..’) AND
( (FileSearch.attr AND Directory) <> 0)
then begin
if DirName[length(DirName)] = ’’ then
delTree (DirName+FileSearch.Name)
else
delTree (DirName+’’+FileSearch.Name);
ChDir (DirName);
end;
FindNext (FileSearch)
end;


FindFirst (’*.*’, AnyFile, FileSearch);
while (DosError = 0) do begin
if (FileSearch.name <> ’.’) AND (FileSearch.name <> ’..’) then
Remove (workdir);
end;
FindNext (FileSearch)
end;
rmDir (DirName)
end;

Dbgrid’de (Ctrl-Del diyince) dosya silmesini engelleme

if (ssctrl in shift) and (key=vk_delete) then
begin
key:=0;
end;

String’i renk’e renk’i stringe çevirme

Uses graphics;
form1.Color:=stringtocolor(’121’);
label1.caption:= ColorToString(form1.color);

Mouse’un yerini degistirmek

randomize;
SetCursorPos(random(100),random(100));

ComboBox’in asagiya listelemesinin farkli bir yolu (DropComboBox)

SendMessage(ComboBox1.handle , 1039, 1, 0);

Basligi Gizlemek ve Göstermek

Procedure HideTitlebar;
Var
Save : LongInt;
Begin
If form1.BorderStyle=bsNone then Exit;
Save:=GetWindowLong(form1.Handle,gwl_Style);
If (Save and ws_Caption)=ws_Caption then Begin
Case form1.BorderStyle of
bsSingle,
bsSizeable : SetWindowLong(form1.Handle,gwl_Style,Save and
(Not(ws_Caption)) or ws_border);
bsDialog : SetWindowLong(form1.Handle,gwl_Style,Save and
(Not(ws_Caption)) or ds_modalframe or ws_dlgframe);
End;
form1.Height:=form1.Height-getSystemMetrics(sm_cyCaption);
form1.Refresh;
End;
end;

Procedure ShowTitlebar;
Var
Save : LongInt;
begin
If form1.BorderStyle=bsNone then Exit;
Save:=GetWindowLong(form1.Handle,gwl_Style);
If (Save and ws_Caption)<>ws_Caption then Begin
Case form1.BorderStyle of
bsSingle,
bsSizeable : SetWindowLong(form1.Handle,gwl_Style,Save or ws_Caption or
ws_border);
bsDialog : SetWindowLong(form1.Handle,gwl_Style,Save or ws_Caption or
ds_modalframe or ws_dlgframe);
End;
form1.Height:=form1.Height+getSystemMetrics(sm_cyCaption);
form1.Refresh;
End;
end;

GradientFill (eyimli renk) kullanimi

Önce uses bölümüne chart ekleyin.
Formun üstüne bir tane image componenti yerlestirin ve formun create olayina asagidaki kodu yazin.

procedure TForm1.FormCreate(Sender: TObject);
begin
GradientFill(Image1.Canvas,Image1.ClientRect,clred,clblue,false);
end;

Küçük bir kolaylik ctrl-space

Delphide esitlik kurucaginiz zaman ctrl-space’e bastiginizda verebileceginiz degerleri göstermektedir.
Label1.caption:= (burada ctrl-space bastiginizda verebileceginiz degerleri görürsünüz)


Dbf dosyasini pack etmek (silinen dosyalari diskten silmek)

Table1.Exclusive := True;
Table1.Active := True;
Error := DbiPackTable(Table1.DBHandle, Table1.Handle, nil, szdBASE, True);
Table1.Active := False;
Table1.Exclusive := False;

BDE’ nin yüklü olup olmadigini anlamak

HKEY_LOCAL_MACHINESoftwareBorlandDatabase Engine bölümü bde’ye ayrilmistir ve yüklü olup olmadigini asagidaki degerleri kontrol ederek bulabilirsiniz.

DLLPATH
CONFIGFILE01

Clipboard’a kopyalama ve yapistirma (copy,past)

procedure CopyButtonClick(Sender: TObject);
begin
If ActiveControl is TMemo then TMemo(ActiveControl).CopyToClipboard;
If ActiveControl is TDBMemo then TDBMemo(ActiveControl).CopyToClipboard;
If ActiveControl is TEdit then TEdit(ActiveControl).CopyToClipboard;
If ActiveControl is TDBedit then TDBedit(ActiveControl).CopyToClipboard;
end;

procedure PasteButtonClick(Sender: TObject);
begin
If ActiveControl is TMemo then TMemo(ActiveControl).PasteFromClipboard;
If ActiveControl is TDBMemo then TDBMemo(ActiveControl).PasteFromClipboard;
If ActiveControl is TEdit then TEdit(ActiveControl).PasteFromClipboard;
If ActiveControl is TDBedit then TDBedit(ActiveControl).PasteFromClipboard;
end;

TStringgrid’i kaydetme ve açma

Procedure SaveGrid;
var
f:textfile;
x,y:integer;
begin
assignfile (f,’Filename’);
rewrite (f);
writeln (f,stringgrid.colcount);
writeln (f,stringgrid.rowcount);
For X:=0 to stringgrid.colcount-1 do
For y:=0 to stringgrid.rowcount-1 do
writeln (F, stringgrid.cells[x,y]);
closefile (f);
end;

Procedure LoadGrid;
var
f:textfile;
temp,x,y:integer;
tempstr:string;
begin
assignfile (f,’Filename’);
reset (f);
readln (f,temp);
stringgrid.colcount:=temp;
readln (f,temp);
stringgrid.rowcount:=temp;
For X:=0 to stringgrid.colcount-1 do
For y:=0 to stringgrid.rowcount-1 do begin
readln (F, tempstr);
stringgrid.cells[x,y]:=tempstr;
end;
closefile (f);

Avi dosyasinin görünüm alanini seçilen panele esitleme

begin
with MediaPlayer1 do begin
DeviceType := dtAutoSelect;
visible := false;
FileName := InputBox(’AVI’, ’Enter AVI file name’, ’c:windowsorland.avi’);
display := panel1;
open;
DisplayRect := rect(0, 0, panel1.width, panel1.height); {This is it!}
rewind;
play;
end;
end;
wherthus
Windows’a çizgi çizmenin farkli bir yolu

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var dc:hdc;
begin
dc:=getdc(0);
Windows.LineTo(dc,x,y);
end;

end.


Memo componentindeki cursorun pozisyonunu bulma

procedure TForm1.Button1Click(Sender: TObject);
var
Row, Col: Integer;
begin
Row := SendMessage(Memo1.Handle, EM_LINEFROMCHAR, Memo1.SelStart, 0);
Col := Memo1.SelStart - SendMessage(Memo1.Handle, EM_LINEINDEX, Row, 0);
Label1.caption := ’Row= ’ + IntToStr(Row+1) + ’ Col= ’ + IntToStr(Col+1);
end;


Form üstüne dbclick yapilinca maximisize (tam ekran) olmasi

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
procedure WMNCHitTest(var M: TWMNCHitTest); message wm_NCHitTest;
end;

var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
begin
inherited;
if M.Result = htClient then
M.Result := htCaption;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;
end.


Control paneldeki bölümleri açma (cpl dosyalarini açma)

unit open_cpl;

interface

function RunControlPanelApplet( sAppletFileName : string) : integer;

implementation

uses Windows;

function RunControlPanelApplet( sAppletFileName : string) : integer;
begin
Result := WinExec( PChar(’rundll32.exe shell32.dll,’+ ’Control_RunDLL ’+sAppletFileName), SW_SHOWNORMAL);
end;

end.


access.cpl: Accessibility Properties
appwiz.cpl: Add/Remove Programs Properties
desk.cpl: Display Properties
intl.cpl: Regional Settings Properties
joy.cpl: Joystick Properties
main.cpl: Mouse Properties
mmsys.cpl: Multimedia Properties
modem.cpl: Modems Properties
sysdm.cpl: System Properties
timedate.cpl: Time/Date Properties


Kullanilan printer adi

uses Printers;
function GetDefaultPrinterName : string;
begin GetDefaultPrinterName := Printer.Printers[ Printer.PrinterIndex ];
end;


Cd sürücüsünün seri numarasi

function GetDiskVolSerialID( cDriveName : char ) : DWord;
var dwTemp1, dwTemp2 : DWord;
begin GetVolumeInformation( PChar( cDriveName + ’:’ ), Nil, 0, @Result, dwTemp2, dwTemp2, Nil, 0 );
end;

MessageDlg( ’Serial number: ’ + Format( ’%X’, [ GetDiskVolSerialID( ’E’ ) ] ),
mtInformation, [mbOk], 0 );


Capslock’un durumunu ögrenme

function IsCapsLockOn : boolean;
begin Result := 0 <> (GetKeyState(VK_CAPITAL) and $01);
end;


Renklerin hex degerlerini bulma

function
TColorToHex( Color : TColor ) : string;
begin
Result := IntToHex( GetRValue( Color ), 2 ) + IntToHex( GetGValue( Color ), 2 ) + IntToHex( GetBValue( Color ), 2 );
end;


Cursor’u gizleyip tekrar gösterme
Showcursor(true); //cursoru göster
Showcursor(false); //cursoru gizle


internete bagli olup olmadiginizi anlamak


Forma bir tane tcp componenti ve bir tane buton yerlestirdikten sonra
Buttonnun içine asagidaki yazi yazilir.

if TCP1.LocalIp = ’0.0.0.0’ then
ShowMessage(’Bagli degilsiniz!’);


Html Sayfasini printerden çikarma

uses Printers;
var
EskCur: TCursor;
begin
EskCur := Screen.Cursor;
with Printer do begin
BeginDoc;
HTML1.AutoPrint(handle);
Title := HTML1.URL;
EndDoc;
end;
Screen.Cursor := EskCur;
end;


Menu’ye clicklenirken hangi tusla basildigini algilama (Control,Shift,Alt)

procedure TForm1.Menu1Click(Sender: TObject);
begin
if HiWord(GetKeyState(VK_SHIFT)) <> 0 then
Label1.Caption := ’Shift’
else
if HiWord(GetKeyState(VK_CONTROL)) <> 0 then
Label1.Caption := ’Control’
else
if HiWord(GetKeyState(VK_MENU)) <> 0 then
Label1.Caption := ’Alt’
else
Label1.Caption := ’None’;
end;


Formu taskbardan gizleme

ShowWindow(Application.Handle, SW_HIDE);
wherthus
Silinmis Dosyalari gösterme (DBF);

type
TForm1 = class(TForm)
Table1: TTable;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
CheckBox1: TCheckBox;
procedure CheckBox1Click(Sender: TObject);
public
procedure ShowDeleted(Table: TTable; ShowDeleted: Boolean);
end;

var
Form1: TForm1;

implementation

uses DBITYPES, DBIERRS, DBIPROCS;

{$R *.DFM}

procedure TForm1.ShowDeleted(Table: TTable; ShowDeleted: Boolean);
var
rslt: DBIResult;
szErrMsg: DBIMSG;
begin
Table.DisableControls;
try
Check(DbiSetProp(hDBIObj(Table.Handle), curSOFTDELETEON,
LongInt(ShowDeleted)));
finally
Table.EnableControls;
end;
Table.Refresh;
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
ShowDeleted(Table1, CheckBox1.Checked);
end;

end.


Form hakkinda kisa bilgi

Form1.Show; {Formu göster}
Form1.Showmodal { Formu showmodal olarak göster (Showmodal iken baska hiçbir forma ulasilamaz) }
myForm.Hide; {Formmu gizle }
myForm.Free; {Formu sil }



Formu seffaf hale getirilmesi

OnCreate olayina Brush.Style:=bsClear; yazmaniz yeterli.


ESC tusuyla programdan çikma

OnKeyPress olayina if Key = #27 then halt; yazin.


Bir Resim Dosyasi Açip içine Çizim Yapma

var
Resim: TBitmap;


Resim := TBitmap.Create;
with Resim do
try
Width := 100;
Height := 100;
with Canvas do
begin
Rectangle(0, 0, 100, 100);
MoveTo(0, 0);
LineTo(100, 100);
MoveTo(0, 100);
LineTo(100, 0);
end;
SaveToFile(’test.bmp’)
finally
Free;
end;


Asla Yazi Kutusundan Çikamazsin

procedure TForm1.Edit1Exit(Sender: TObject);
begin
showmessage(’Asla yazi kutusundan çikamassin’);
postmessage(handle,WM_NEXTDLGCTL,0,0);
postmessage(handle,WM_NEXTDLGCTL,1,0);
end;


Formun Boyutlarini Sabitleme

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;


type
TForm1 = class(TForm)
private
{ Private declarations }
public
procedure WMGetMinMaxInfo( var Message :TWMGetMinMaxInfo ); message WM_GETMINMAXINFO;
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.WMGetMinMaxInfo( var Message :TWMGetMinMaxInfo );
begin
with Message.MinMaxInfo^ do
begin
ptMaxSize.X := 200;
ptMaxSize.Y := 200;
ptMaxPosition.X := 99;
ptMaxPosition.Y := 99;
ptMinTrackSize.X := 100;

ptMinTrackSize.Y := 100;
ptMaxTrackSize.X := 300;
ptMaxTrackSize.Y := 300;
end;
Message.Result := 0;
inherited;
end;


end.


Windows’a True Type Font Ekleme

uses Registry;
procedure TForm1.Button1Click(Sender: TObject);
var
reg: TRegistry;
b : bool;
begin CopyFile(’C:DOWNLOADFP000100.TTF’, ’C:WINDOWSFONTSFP000100.TTF’, cool.gif;
reg := TRegistry.Create; reg.RootKey := HKEY_LOCAL_MACHINE;
reg.LazyWrite := false; reg.OpenKey(’SoftwareMicrosoftWindowsCurrentVersionFonts’, false); reg.WriteString(’TESTMICR (TrueType)’,’FP000100.TTF’);
reg.CloseKey; reg.free;
AddFontResource(’c:windowsfontsFP000100.TTF’); SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
RemoveFontResource(’c:windowsfontsFP000100.TTF’); SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
end;


Dosya Tasima
MoveFile(’C:Sourcesourcefile.txt’, ’C:Destdestfile.txt’);


Trim Fonksiyonunun açilimi

unit StrFunc;
interface
procedure LTrim(var s : string);
procedure RTrim(var s : string)
;procedure Trim(var s : string);
implementation
{$R *.DFM}
procedure LTrim(var s : string);
begin
while ((length(s) > 0) and (s[1] = #32)) do Delete(s, 1, 1);
end;
procedure RTrim(var s : string);
begin
while ((length(s) > 0) and (s[Length(s)] = #32)) do Delete(s, Length(s), 1);
end;
procedure Trim(var s : string);
begin
LTrim(s); RTrim(s);
end;


Screen Capture Programi (Ekran Çalma)

Bir tane image componenti eklemek zorundasiniz.

procedure TForm1.FormCreate(Sender: TObject);
var
DCDesk: HDC;

begin
DCDesk:=GetWindowDC(GetDesktopWindow);
BitBlt(Image1.Canvas.Handle, 0, 0, Screen.Width, Screen.Height,DCDesk, 0, 0,SRCCOPY);
ReleaseDC(GetDesktopWindow, DCDesk);
end;


Saga yada Sola hizalama function’u

function hiza(sagsol,yer:string;sayi:integer):string;
var
i,bosluk,uzunluk:integer;
begin
trim(yer); //Bosluklari temizle
uzunluk:=length(yer); //Verilen stringin uzunlugunu ögren
bosluk:=sayi-uzunluk; //Verilen sayidan uzunlugu çikar
if sagsol=’sag’ then begin //Sagami solami yaslancagini ögren
for i:=1 to bosluk do begin //Fark kadar saga bosluk ekle
yer:=’ ’+yer; //Bosluk ekle
end;
result:=yer; //Sonucu bildir
exit;
end;
if sagsol=’sol’ then
begin
trim(yer);
for i:=1 to bosluk do begin //Fark kadar sola ekle
yer:=yer+’ ’;
end;
result:=yer; //Sonucu bildir
exit;
end;

Sayiyi virgüllü yazma functionu

Bunun için forma birtana label componenti yerlestirin ve visible özeligini false yapin.

function frmt(yer:string):string;
var
s:string;
uzunluk:integer;
kalan,k,dgr:integer;
begin
s:=’.’;
uzunluk:=Length(yer);
dgr:=uzunluk div 3;
kalan:=uzunluk - (dgr*3);
label1.caption:=inttostr(kalan);
if yer=’0’ then
begin
yer:=’0,’;
result:=yer;
exit;
end;
if label1.caption<>’0’ then
begin
insert(s,yer,kalan+1);
for k:=1 to dgr do begin
if k=dgr then begin
insert(’,’,yer,(kalan +(k*3)+k+1));
result:=yer;
exit;
end;
insert(s,yer,(kalan +(k*3)+k+1));
end;
end;


Comp degerindeki bir sayiyi string yapma

function Comp2Str(N: Comp): String;
var
TS: String;
begin
Str(N:0:0, TS);Comp2Str := TS;
end;


Dosya açilis yollari

Windows programinin açilisi
WinExec(’C:WINDOWSNOTEPAD.EXE’, SW_SHOWNORMAL);

Komut satiri ile birlikte :
WinExec(’C:WINDOWSNOTEPAD.EXE C:WINDOWSWIN.INI’, SW_SHOWNORMAL);

Pop Up dos kutusuyla :
WinExec(’COMMAND.COM’, SW_SHOWNORMAL);

Normal bir dos programinin komutla açilisi
WinExec(’COMMAND.COM /C DIR *.*’, SW_SHOWNORMAL);
wherthus
Dekstop’i refresh etmek

procedure TForm1.Button1Click(Sender: TObject);
begin
SendMessage(FindWindow(’Progman’, ’Program Manager’), WM_COMMAND,$A065, 0);
end;


Programin windows’la birlikte açilmasi

uses Registry, {For Win32}
IniFiles; {For Win16}
{$IFNDEF WIN32}
const
MAX_PATH = 144;
{$ENDIF}
{For Win32}
procedure TForm1.Button1Click(Sender: TObject);
var
reg: TRegistry;
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.LazyWrite := false; reg.OpenKey(’SoftwareMicrosoftWindowsCurrentVersionRun’, false); reg.WriteString(’My App’, Application.ExeName);
reg.CloseKey;
reg.free;
end;


Formun ara çubugunu gizleme

procedure TForm1.FormCreate(Sender: TObject);
begin
SetWindowLong(Form1.Handle,GWL_STYLE,GetWindowLong(Handle,GWL_STYLE) and not WS_CAPTION);
Height := ClientHeight;
end;


Flash icon

var Flash : bool;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
FlashWindow(Form1.Handle, Flash);
FlashWindow(Application.Handle, Flash); Flash := not Flash;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Flash := False;
end;


Taskbar’in handle sayisi

hTaskbar := FindWindow(’Shell_TrayWnd’, Nil );


Exe yada Dll’deki iconlarin alinmasi
Uses shellapi;
procedure TForm1.FormCreate(Sender: TObject);
var TheIcon: TIcon;
begin TheIcon := TIcon.Create;
TheIcon.Handle := ExtractIcon(hInstance,’C:dosyadosya.EXE’,0);
image1.picture.Icon:=Theicon;
end;


Windows ekranina çizim yapma

procedure TForm1.Button1Click(Sender: TObject);
var dc : hdc;
begin dc := GetDc(0);
MoveToEx(Dc, 0, 0, nil);
LineTo(Dc, 300, 300);
ReleaseDc(0, Dc);
end;



Edit1’deki yaziyi edit2’ye GetTextBuf yolluyla aktarma

procedure TForm1.Button1Click(Sender: TObject);
var
Buffer: PChar;
Size: Byte;
begin
Size := Edit1.GetTextLen; {Get length of string in Edit1}
Inc(Size); {Add room for null character}
GetMem(Buffer, Size); {Creates Buffer dynamic variable}
Edit1.GetTextBuf(Buffer,Size); {Puts Edit1.Text into Buffer}
Edit2.Text := StrPas(Buffer); {Converts Buffer to a Pascal-style string]
FreeMem(Buffer, Size); {Frees memory allocated to Buffer}

end;

Form1’in aynisini printerden çikartma

Form1.Print;


O anki sürücünün kapasitesini ve sürücüdeki bos yer miktarini bulmak;

DiskFree(0) //o anki sürücüdeki bos yer miktarini byte cinsinden döndürür.
DiskSize(0) //o anki sürücünün kapasitesini byte cinsinden döndürür.
DiskSize(0) div 1024 //o anki sürücünün kapasitesini KB cinsinden döndürür.


Bir menü ögesinin enabled özelligini false yapmak;

mainmenu1.items[0].items[1].enabled:=False;


Listbox veya Combobox’ta seçili bir veya birden fazla ögeyi seçilmemis duruma getirmek için;

Listbox1.itemindex:=-1;


Listbox, Combobox ve Memo’ya bir seferde ekleme yapmak;

Listbox1.items.SetText(’aaa’#13’bbb’#13’ccc’);
Memo1.Lines.SetText(’aaa’#13’bbb’#13’ccc’);


Harddiskin seri numarasinin bulunmasi;

procedure TForm1.Button1Click(Sender: TObject);
var
VolumeSerialNumber : DWORD;
MaximumComponentLength : DWORD;
FileSystemFlags : DWORD;
SerialNumber : string;
begin
GetVolumeInformation(’C:’,nil,0,@VolumeSerialNumber,MaximumComponentLength,FileSystemFlags,nil, 0);
SerialNumber := IntToHex(HiWord(VolumeSerialNumber), 4) + ’-’ +IntToHex(LoWord(VolumeSerialNumber), 4);
Memo1.Lines.Add(SerialNumber);
end;
Bir string’in basindaki ve sonundaki bosluklari atmak için;

Trim(string)
TrimLeft (string) //stringin sadece basindaki bosluklari atmak için
TrimRight (string) //stringin sadece sonundaki bosluklari atmak için

sifreli bir table için programin sifre istememesi için;

Table’in Active özelligini False yapin ve Form’un OnCreate olayina asagidaki kodu ekleyin

Session.AddPassword(’sifre’);
Table1.Active:=True;
Pencereyi minimize etmek;

Application.Minimize; //taskbar’a minimize
CloseWindow(handle)
WindowState := wsMinimized;


Windows’u kapatmak veya yeniden baslatmak(reboot);

var
i:dword;
begin
ExitWindowsEx(EWX_SHUTDOWN); //yeniden baslatmak için EWX_REBOOT
end;
Help menüsünden About kismina girin. Alt tusuna basili tutarak TEAM veya DEVELOPERS yazin. Delphi’yi gelistirenlerin isimlerini görebilirsiniz. Database Desktop’tada Help menüsünden About kismina girin ve delphi yazin.


ico’dan bmp’ye çevirme;

var
Icon : TIcon;
Bitmap : TBitmap;
begin
Icon := TIcon.Create;
Bitmap := TBitmap.Create;
Icon.LoadFromFile(’c:picture.ico’);
Bitmap.Width := Icon.Width;
Bitmap.Height := Icon.Height;
Bitmap.Canvas.Draw(0, 0, Icon );
Bitmap.SaveToFile(’c:picture.bmp’);
Icon.Free;
Bitmap.Free;
end;
CD-Rom sürücüyü açmak ve kapamak;

uses kismina MMSystem unitini ekleyin.

mciSendString(’Set cdaudio door open wait’, nil, 0, handle); //aç
mciSendString(’Set cdaudio door closed wait’, nil, 0, handle); //kapa
CapsLock ve Numlock tuslarini açip-kapama;

procedure TMyForm.Button1Click(Sender: TObject);
Var
KeyState : TKeyboardState;
begin
GetKeyboardState(KeyState);
if (KeyState[VK_CAPITAL] = 0) then
KeyState[VK_CAPITAL] := 1
else
KeyState[VK_CAPITAL] := 0;
SetKeyboardState(KeyState);
end;
Numlock tusu için VK_CAPITAL yerine VK_NUMLOCK yaziniz.


Menü’ye bitmap (resim) ekleme;

procedure TForm1.FormCreate(Sender: TObject);
var
Bmp1 : TPicture;
begin
Bmp1 := TPicture.Create;
Bmp1.LoadFromFile(’c:deneme urkey.bmp’);
SetMenuItemBitmaps( deneme1.Handle,
0,
MF_BYPOSITION,
Bmp1.Bitmap.Handle,
Bmp1.Bitmap.Handle);
end;
Alt + Tab ve Ctrl + Esc tuslarinin kullanilmaz hale getirilmesi;

var
OldVal : LongInt;
begin
SystemParametersInfo (97, Word (True), @OldVal, 0)
//Word(False) ile kullanirsaniz tuslari tekrar kullanabilirsiniz.
Windows ve System klasörlerinin bulunmasi

procedure TForm1.Button1Click(Sender: TObject);
var
a : Array[0..144] of char;
begin
GetWindowsDirectory(a, sizeof(a));
ShowMessage(StrPas(a));
GetSystemDirectory(a, sizeof(a));
ShowMessage(StrPas(a));
end;
wherthus
Speakerdan Beep sesi çikartma

MessageBeep(word(-1));

--------------------------------------------------------------------------------

Belgeler menüsüne bir dosya ekleme

uses kismina ShlOBJ unitini ekleyin;

procedure TForm1.Button1Click(Sender: TObject);
var
s : string;
begin
s := ’C:DownLoaddeneme.html’;
SHAddToRecentDocs(SHARD_PATH, pChar(s));
end;

--------------------------------------------------------------------------------

Belgeler menüsünü temizleme

uses kismina ShlOBJ unitini ekleyin;

SHAddToRecentDocs(SHARD_PATH, nil);

--------------------------------------------------------------------------------

Bir web adresini açma

uses kismina Shellapi unitini ekleyin;

ShellExecute(Handle,
’open’,
’http://emreoz.cjb.net’,
nil,
nil,
sw_ShowMaximized);

--------------------------------------------------------------------------------

Bir DOS programini çalistirma ve çalismasi bitince penceresini kapatma

WinExec("command.com /c progdos.exe",sw_ShowNormal); //progdos.exe çalistiriliyor.

//eger ikinci paremetreyi sw_Hide yaparsaniz kullanici programin çalistigini görmez.



--------------------------------------------------------------------------------

Uygulamanizin Görev Çubugundaki butonunu gizleme

Uygulamanizin Görev Çubugundaki butonunu gizlemek için programinizin ana formunun OnCreate olayina asagidaki kodu yazin;

SetWindowLong(Application.Handle,GWL_EXSTYLE, WS_EX_TOOLWINDOW);

--------------------------------------------------------------------------------

Ekran koruyucusunu kapatmak ve açmak

//kapatmak için
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,
0,
nil,
0);
//açmak için
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,
1,
nil,
0);


--------------------------------------------------------------------------------

Alt+F4 tus kombinasyonuyla programin kapanmamasi için

Formun OnCreate olayina;

KeyPreview := true;
Formun OnKeyDown olayina;

if ((ssAlt in Shift) and (Key = VK_F4)) then
Key := 0;

--------------------------------------------------------------------------------

Hareketli imleç(animated cursor)leri kullanma

procedure TForm1.Button1Click(Sender:TObject);
var
h : THandle;
begin
h := LoadImage(0,
’C:TheWallMagic.ani’,
IMAGE_CURSOR,
0,
0,
LR_DEFAULTSIZE or
LR_LOADFROMFILE);
if h = 0 then ShowMessage(’Cursor not loaded’) else begin
Screen.Cursors[1] := h;
Form1.Cursor := 1;
end;
end;

--------------------------------------------------------------------------------

Windows lisans bilgilerinin (isim ve sirket) bulunmasi

uses kismina Registry unitini ekleyin;

procedure TForm1.Button1Click(Sender:TObject);
var
reg: TRegIniFile;
begin
reg := TRegIniFile.create(’SOFTWAREMICROSOFTMS SETUP (ACME)’);
Memo1.Lines.Add(reg.ReadString(’USER INFO’,
’DefName’,
’Emre ÖZ’));
Memo1.Lines.Add(reg.ReadString(’USER INFO’,
’DefCompany’,
’Bilgisayar Bilimleri Müh.’));
reg.free;
end;

--------------------------------------------------------------------------------

Çok Satirli ipucu

procedure TForm1.FormCreate(Sender: TObject);
begin
SpeedButton1.Hint:=’Çok satirli ipucunu ’+chr(13)+
’mutlaka denemelisiniz ’+chr(13)+
’çok güzel’;
end;


--------------------------------------------------------------------------------

Bir klasörü ve onun altindaki tüm dosyalari ve klasörleri silme

Ancak salt okunur (read only) özelligi olan ve kullanimda olan dosyalar silinmez.

procedure TForm1.Button1Click(Sender: TObject);
var
DirInfo: TSearchRec;
r : Integer;
begin
r := FindFirst(’C:DownloadTest*.*’, FaAnyfile, DirInfo);
while r = 0 do begin
if ((DirInfo.Attr and FaDirectory <> FaDirectory) and
(DirInfo.Attr and FaVolumeId <> FaVolumeID)) then
if DeleteFile(pChar(’C:Download est’ + DirInfo.Name))
= false then
ShowMessage(’C:Download est’+DirInfo.Name+’ silinemiyor!!!’);
r := FindNext(DirInfo);
end;
SysUtils.FindClose(DirInfo);
if RemoveDirectory(’C:DownloadTest’) = false then
ShowMessage(’C:Download est klasörü silinemiyor!!!’);
end;


--------------------------------------------------------------------------------

Baslat butonunu gizlemek veya kullanilmaz hale getirmek

procedure TForm1.Button1Click(Sender: TObject);
var
Rgn : hRgn;
begin
// Baslat butonunu gizle
Rgn := CreateRectRgn(0, 0, 0, 0);
SetWindowRgn(FindWindowEx(FindWindow(’Shell_TrayWnd’, nil),
0,
’Button’,
nil),
Rgn,
true);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
//Gizlenen Baslat butonunu eski haline döndürmek için
SetWindowRgn(FindWindowEx(FindWindow(’Shell_TrayWnd’, nil),
0,
’Button’,
nil),
0,
true);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
//Baslat butonunu kullanilmaz yap
EnableWindow(FindWindowEx(FindWindow(’Shell_TrayWnd’, nil),
0,
’Button’,
nil),
false);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
//Kullanilmaz yapilan Baslat butonunu eski haline getirmek için
EnableWindow(FindWindowEx(FindWindow(’Shell_TrayWnd’, nil),
0,
’Button’,
nil),
true);
end;


--------------------------------------------------------------------------------

Windows Gezginini istediginiz bir klasörle açma

uses kismina Shellapi unitini ekleyin.


ShellExecute(0,
’explore’,
’C:WINDOWS’, //açmak istediginiz dizin
nil,
nil,
SW_SHOWNORMAL);


--------------------------------------------------------------------------------

Duvar kagidini degistirmek

var
s: string;
begin
s := ’c:windowsathena.bmp’;
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, PChar(s),0);


--------------------------------------------------------------------------------

Form’un arka kismina bir resmi dösemek

Bitmap: TBitmap;

procedure TForm1.FormCreate(Sender: TObject);
begin
Bitmap := TBitmap.Create;
Bitmap.LoadFromFile(’C:WINDOWScars.BMP’);
end;

procedure TForm1.FormPaint(Sender: TObject);
var
X, Y, W, H: LongInt;
begin
with Bitmap do begin
W := Width;
H := Height;
end;
Y := 0;
while Y < Height do begin
X := 0;
while X < Width do begin
Canvas.Draw(X, Y, Bitmap);
Inc(X, W);
end;
Inc(Y, H);
end;
end;
wherthus
Bir Denetim Masasi uygulamasini çalistirmak

Control Panel uygulamalari WindowsSystem klasörü altinda bulunur. *.CPL uzantili dosyalardir. Bu uygulamalari Control.Exe programi ile çalistirabilirsiniz. Bazi Control Panel uygulamalari WindowsSystem klasöründe bulunmaz. Bunlarin ismini vererek çalistirabilirsiniz.


WinExec(’C:WINDOWSCONTROL.EXE TIMEDATE.CPL’, sw_ShowNormal);
WinExec(’C:WINDOWSCONTROL.EXE MOUSE’, sw_ShowNormal);
WinExec(’C:WINDOWSCONTROL.EXE PRINTERS’, sw_ShowNormal);

--------------------------------------------------------------------------------

Sayilari virgüllerle yazmak
Sayi windows’unuz ayarina göre 12.345.678 veya 12,345,678 seklinde gösterilir.
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
i := 12345678;
Memo1.Lines.Add(FormatFloat(’#,’, i));


--------------------------------------------------------------------------------

Sistem Tarihini ve Saatini Degistirmek

Sistemin tarihini ve saatini degistirmek için SetLocalTime fonksiyonunu kullanabilirsiniz.

var
t:TSystemTime;
begin
t.wYear:=1998;
t.wMonth:=5;
t.wDay:=23;
t.wHour:=12;
t.wMinute:=34;
SetLocalTime(t);
end;


--------------------------------------------------------------------------------

Fareyi mesgul sekilde göstermek

try
Screen.Cursor := crHourGlass;
{buraya kodunuzu yazin...}
finally
Screen.Cursor := crDefault;
end;
Application.ProcessMessages;


--------------------------------------------------------------------------------

Dos programi kullanmak için;
WinExec(’command.com /c progdos.exe’,sw_ShowNormal);




--------------------------------------------------------------------------------

Çevirme
Edit1.OnChange := NIL;
if Edit1.Text = ’Emre ÖZ’ then
Edit1.Text := ’Emre’;
Edit1.OnChange := Edit1Change;




--------------------------------------------------------------------------------

ilk harf büyük digerleri küçük
Edit1’e yazilan yazinin ilk harfini büyük diger harflerini küçük yapiyor.

var
OldStart : Integer;
begin
With Edit1 do
if Text <> ’’ then begin
OnChange := NIL;
OldStart := SelStart;
Text := UpperCase(Copy(Text,1,1))+LowerCase(Copy(Text,2,Length(Text)));
SelStart := OldStart;
OnChange := Edit1Change;
end;
end;




--------------------------------------------------------------------------------

Taskbar gizleme
procedure hideTaskbar;
var
wndHandle : THandle;
wndClass : array[0..50] of Char;
begin
StrPCopy(@wndClass[0], ’Shell_TrayWnd’);
wndHandle := FindWindow(@wndClass[0], nil);
ShowWindow(wndHandle, SW_HIDE);
end;

procedure showTaskbar;
var
wndHandle : THandle;
wndClass : array[0..50] of Char;
begin
StrPCopy(@wndClass[0], ’Shell_TrayWnd’);
wndHandle := FindWindow(@wndClass[0], nil);
ShowWindow(wndHandle, SW_RESTORE);
end;




--------------------------------------------------------------------------------

Ses kaydetme
Bu program mikrofondan sesi alip bir wav dosyasi içine kayit ediyor.


uses
MMSystem,
WinCrt;
function RecordSound(MMSecs: LongInt): LongInt;
var
DeviceID: Word;
Return: LongInt;
MciOpen: TMCI_Open_Parms;
MciRecord: TMCI_Record_Parms;
MciPlay: TMCI_Play_Parms;
MciSave: TMCI_SaveParms;
Result2: LongInt;
Flags: Word;

begin
MciOpen.lpstrDeviceType := ’waveaudio’;
MciOpen.lpstrElementName := ’’;
Flags := Mci_Open_Element or Mci_Open_Type;
Result2 := MciSendCommand(0, MCI_OPEN, Flags, LongInt(@MciOpen));
DeviceID := MciOpen.wDeviceId;

WriteLn(’Kayit’);
MciRecord.dwTo := MMSecs;
Flags := Mci_To or Mci_Wait;
Result2 := MciSendCommand(DeviceID, Mci_Record, Flags, LongInt(@MciRecord));

WriteLn(’Durdur’);
mciPlay.dwFrom := 0;
Flags := Mci_From or Mci_Wait;
MciSendCommand(DeviceId, Mci_Play, Flags, LongInt(@MciPlay));

mciSave.lpfileName := ’Ses.Wav’;
Flags := MCI_Save_File or Mci_Wait;
Result := MciSendCommand(DeviceID, MCI_Save, Flags, LongInt(@MciSave));
MciSendCommand(DeviceID, Mci_Close, 0, LongInt(nil));

end;

begin
WriteLn(’Basla’);
RecordSound(10000);
WriteLn(’Bitir’);




--------------------------------------------------------------------------------

DELPHi NASIL EXE YAPIYOR ?

Delphi , delphi ile birlikte gelen dcc.exe ile projeleri derliyor. (Delphi 3’de dcc32.exe)
Örnek olarak
dcc /CW /b uls.dpr
komutlar :
/CW : Windows için,
/cd : Dos için,
/cp: Korumali mod için.

/b: Hepsini tekrar olustur,
/m: Hepsinin güncel oldugundan emin ol.




--------------------------------------------------------------------------------

BRC Nedir ?

Brc Res dosyalarini derliyor.
Bir res dosyasi açin ,(Notepad ile)
içine Icon ICON "emre.ico" yazin. (emre.ico dosyasi ayni klasörde bulunmali. )
BRC -r EMRE.RES olarak derleyin.
Delphideki projenizin basinada {$ Emre.rc} yazin. Böylece ikon dosyalarini tasimadan kullana bilirsiniz.
Sadece icon degil , ayrica BITMAP,TEXT de kullana bilirsiniz.

Kalıcı Bağlantı Yorum (yok) Yorum yaz!

Visual Studio.NET Ortamını Tanıyalım

2/2/2009 · Kategori: VB_net 2005 _Gorsel Programlama Kod Ornekleri_

Bu makalede, Visual Studio .NET ortamı tanıtılacaktır . Projemizin özelliklerini değiştimeyi, dinamik yardım almayı ve görev listesini kullanmak öğretilecektir.

Assembly Nedir?

.NET ortamında herhangi bir .NET dilinde yazılan kodu derlediğimizde, .exe ve .dll uzantılı dosyalar oluşur. İşte .NET'in otomatik olarak oluşturduğu bu dosyalara assembly denir. Assembly içinde ise koda ait kritik bilgiler tutulur. .NET içerisinde oluşturulan başka bir projeye, daha önceden farklı kişiler tarafından yazılıp derlenmiş assembly'leri ekleyebiliriz. Yani büyük bir proje parçalara ayrılıp, proje çalışanları tarafından ayrı yerlerde yazılıp daha sonra assembly'ler bileştirilebilir.

Projeye Referans Eklemek

"yeni" isminde yeni bir Windows uygulaması açalım ve “Solution Explorer” penceresine bakalım:

Sekil 1: Solution Explorer

“References” alanında proje açılınca otomatik olarak gelen referanslar aşağıda listelenmiştir:

  • System: Programımızın çalışması için gerekli en temel referanstır. Verileri ise, System.dll assembly'si içinde tutulur.
  • System.Data: Veritabanı bağlantılarını oluşturan veri sağlayıcılarına ait verilerin tutulduğu referanstır. Veriler ise, System.Data.dll assembly'si içinde tutulur.
  • System.Drawing, System.Windows.Forms: Windows kontrolleriyle program yazabilmemizi sağlayan referanslardır. System.Drawing.dll ve System.Windows.Forms.dll assembly'leri bu referanslara ait verileri tutar.
  • System.XML : XML verilerini kullanılmasını sağlayan veriler bu referansta tutulur. Veriler ise System.XML.dll assembly'si içinde tutulur.

Projenin oluşturulmasıyla gelen bu referanslara yenilerini ekleyebiliriz. Referans olarak aşağıda belirtilen üç çeşit eleman eklenebilir:

  • .NET Assembly'si
  • COM bileşenleri
  • Diğer .NET projeleri

Referans eklemek için şu adımlar izlenir:

•  Solution Explorer üzerine gelip proje ismi üzerine gelip sağ tıklayalım. Veya “References” alanının üzerine gelip sağ tıklayalım.

•  Açılan listede “Add Reference” diyalog kutusu üzerine gelip tıklayalım.

•  Karşımıza şekil 2'deki diyalog penceresi çıkar:

Sekil 2: Refereans ekleme penceresi

•  Penceredeki .NET, COM, Projects sekmelerinden birini seçelim. Aktif olan sekme .NET assembly'lerini ekleyeceğimiz .NET sekmesidir.

•  Eklemek istediğimiz assembly'i seçelim ve sağ üst köşedeki “Select” düğmesini tıklayalım. Burada birden fazla assembly ekleyebiliriz.

•  Referans ekleme işimiz bittikren sonra “OK” düğmesine tıklayarak kod ekranına geri dönelim.

Namespace (isim alanı) Nedir?

.NET içindeki tüm dillerin, .NET Framework ismi verilen ortak kütüphaneyi kullandığını biliyoruz. Bu kütüphane içinde assembly'lerin içeriğini oluşturan sınıf, arayüz ve moduller, kullanım amaçlarına göre “namespace” dediğimiz isim alanlarında gruplandırılır. Örneğin veritabanı işlemlerimizi yapabilmemiz için gerekli bileşenler

System.Data

isim alanında gruplanmıştır. Bu isimalanının referansı projemize otomatik olarak eklenmişti.

- Yeni İsimalanı Eklemek

Projemiz içine kendi isim alanlarımızı oluşturmak oldukça kolaydır. Bir

VB.NET

Namespace Isimalani_ismi
‘...
End Namespace

C#.NET

namespace Isimalani_ismi {
//...
}

bloğuyla yeni bir isim alanı oluşturabiliriz.

Örneğin; NSYeni isminde bir isim alanı oluşturalım:

Örnek 1:

VB.NET

Namespace NSYeni

' NSYeni isim alanında kullanılacak Sınıf, Modul ve Arayüzler tanımlanır

Class Egitim
'...
End Class

Class Ogrenci
'...
End Class

' vs...

End Namespace

C#.NET

namespace NSYeni {

' NSYeni isim alanında kullanılacak Sınıf, Modul ve Arayüzler tanımlanır

class Egitim{
//...
}

class Ogrenci{
//...
}

// vs...

}

NSYeni isim alanı içindeki Ogrenci sınıfını kullanmak için, sınıf ismini, isimalanı ismi ile kombine etmeliyiz.

VB.NET
Dim yeniOgrenci As New yeni.NSYeni.Ogrenci()

C#.NET
yeni.NSYeni.Ogrenci yeniOgrenci = new yeni.NSYeni.Ogrenci();

UYARI: Yeni bir proje oluşturulduğunda Visual Studio.NET derleyicisi, projenin isminde bir isim alanını otomatik olarak yaratılır. Ve projemizin en genel isim alanı haline gelir. Buna kök isim alanı (root namespace) denir. Projemizin ismi BilgeAdam, ve kök isim alanımız ise BilgeAdam'dır. Bu yüzden, kendi oluşturduğumuz isim alanlarını kullanacağımız zaman, kök isim alanını da kombine etmeliyiz.

İsim alanına ait önemli bir özellik ise, isim alanı içinde birden fazla isim alanı tanımlamanın mümkün olmasıdır. Örnek:1 de belirtilen isim alanını genişletelim ve içeriğini değiştirelim.

Örnek 2

VB.NET
Namespace NSYeni

' NSYeni isim alanında kullanılacak
'Class, Module ve Interface'ler tanımlanır

Namespace Idari

Class Personel

End Class

End Namespace

Namespace Egitim

Class Grup

End Class

End Namespace

Namespace Ogrenci

Class Bilgi

End Class

End Namespace

'vs...

End Namespace

 

C#.NET
namespace {

// NSYeni isim alanında kullanılacak
// Class, Module ve Interface'ler tanımlanır

namespace Idari {

class Personel {

}

}

namespace Egitim {

class Grup {

}

}

namespace Ogrenci {

class Bilgi {

}

}

'vs...

}

NSYeni isminde genel bir isimalanı tanımladık. Ve içinde ise Idari, Egitim ve Ogrenci olmak üzere üç ayrı isim alanı tanımladık.

- Projeye İsimalanı Dahil Etmek

Projemizde bir isim alanı içindeki nesneleri kullanmanın bir yolu, o nesnenin bulunduğu assembly yolunu eksiksiz olarak belirtmektir. Ancak bu şekilde kullanılan isimler, kodun okunmasını oldukça zorlaştırır.

Vb.NET
Dim kisi1 As New yeni.NSYeni.Idari.Personel

Dim OgrenciBilgi As New yeni.NSYeni.Ogrenci.Bilgi

C#.NET
yeni.NSYeni.Idari.Personel kisi1 ;

yeni.NSYeni.Ogrenci.Bilgi OgrenciBilgi;

Gördüğümüz gibi, her bir nesne için sınıfın tam yolunu belirtmemiz gerekir.

Her bir nesne için tam yol belirtmenin getirdiği zorluğu ortadan kaldırmak için, Imports anahtar sözcüğü kullanarak ilgili isim alanını projemize dahil edebiliriz. Böylece o isim alanı içindeki her nesneyi projemizde kullanabilir hale geliriz.

Örneğin yeni isim alanını projemize dahil edelim:

VB.NET
Imports yeni.NSYeni

C#.NET
using yeni.NSYeni;

Artık NSYeni isim alanında bulunan bir nesneyi kullanmak için sadece ismini yazmamız yeterli olacaktır.

Dim ogrenciBilgi As New Ogrenci.Bilgi

C#.NET
Ogrenci.Bilgi ogrenciBilgi

İçiçe isim alanlarında içteki isim alanını kolay belirlemek için Imports eşanlamlısı düşünülmüştür. NSYeni isim alanı içindeki Ogrenci isim alanına kolay erişim verebilmek için Örnek 3'e bakalım:

Örnek 3:

Vb.NET
Imports ogr = yeni.NSYeni.Ogrenci

Public Class Form1

Inherits System.Windows.Forms.Form

' ...

Dim OgrBilgi As New ogr.Bilgi

End Class

C#.NET
using ogr = yeni.NSYeni.Ogrenci;

public class Form1 : System.Windows.Forms.Form {

// ...

ogr.Bilgi OgrBilgi;

}

Örnek 3'te gördüğümüz gibi içiçe isim alanlarında içte bulunan isim alanına erişimin kolaylaştırmak için imports eşanlamlısı kullanıldık. Ve yeni bir nesne tanımlanırken artık eşanlamlının ismini kullanacağız.

Kalıcı Bağlantı Yorum (yok) Yorum yaz!

Gelmiş Geçmiş En Büyük Hacker Kevin Mitnick’in Öyküsü.....

2/2/2009 ·

Kevin Mitnick. 38 yaşında. Gelmiş geçmiş en büyük hacker olarak kabul ediliyor. 5 yıl hapiste kaldıktan sonra geçtiğimiz yıl koşullu olarak serbest bırakıldı. Koşullardan birisi telefona ve bilgisayara dokunmamak. Bu koşulun başlıca nedeni daha önce de hapse giren Kevin’in intikam olarak kendisini mahkum eden yargıca kendisini suçlayan savcıya vb. oyunlar oynaması. Örneğin bir seferinde telefon numarası öğrenme hattını (bizdeki 118 hizmeti) bir yargıcın telefonuna yönlendirmiş. Bir başkasında sevmediği birisinin telefonunu aylarca arızalı olarak göstermiş. Bir başkasının telefonuna binlerce dolarlık faturalar gönderilmesini sağlamış. Telefon ve bilgisayar sistemlerini avucunun içi kadar iyi bildiği tartışılmaz.



Kevin Mitnick sorunlu bir aileden geliyor. Kevin üç yaşındayken anne ve babası ayrılmışlar. Amcası bir madde bağımlısı. Bir seferinde cinayetle suçlanmış. Üvey kardeşi Adam aşırı doz uyuşturucu kullanmaktan ölmüş.



Annesi Shelly lokantalarda garsonluk yaparak hayatını kazanıyor ve sık sık erkek arkadaş değiştiriyordu. Kevin annesinin arkadaşlarından birisine yakınlık duymaya başladığı zaman annesinin hayatına başka birisi giriyordu. Kevin’in gerçek babası ile ilişkisi çok azdı. Sık sık yer değiştiriyorlardı düzenli bir hayatları yoktu. Kevin’in sürekli değişen arkadaş çevresine karşı telefon iletişiminden başka bir seçeneği yoktu. Bu yüzden telefon sistemlerini iyi öğrenmesi gerekiyordu. Öğrendi de.



1978’de Kevin Mitnick amatör radyoculukla uğraşıyordu. Bir yandan da telefon sistemleriyle ilgileniyordu. İnsan ilişkileri kötüydü hemen herkesle takışıyor ve kavga ettiği herkese kin besleyip zarar vermeye çalışıyordu. Örneğin telefon hatlarının kesilmesini sağlıyordu. Kin tutma ve sevmediği insanlara teknolojik zararlar verme huyu hep devam etti.



Kevin 1978 yılında amatör radyo sistemleriyle uğraşırken Roscoe ile tanıştı. Kevin’in Roscoe ile ilişkisi hep sürecekti. 1995 yılında yakalandığında ilk aradığı kişi Roscoe olmuştu. Roscoe daha kolay kız arkadaş bulmak için o zamanlar ABD’de yaygın olan telefon konferans sistemlerinden birisini işletiyordu. Roscoe teknolojinin bu yönünü seviyordu: Kız arkadaş bulmasına yardımcı olmasını. İlerde bu sayede tanıştığı ve yattığı kızların sayısını anımsamadığını söyleyecekti. Roscoe bu bilgilerini yazıya dökecek ve “Ev Bilgisayarınızı Kullanarak Kadınları Baştan Çıkarma Kılavuzu” adlı bir kitapçık da yazacaktı. Roscoe’nun kız arkadaşı Susan ise gündüzleri santral operatörlüğü geceleri fahişelikle para kazanıyordu. Susan da sevgilisi Roscoe sayesinde telefon sistemlerine ve daha sonra da bilgisayar sistemlerine girmeye başladı. Bu garip üçlüye katılan bir başkası Steven da telefon sistemleri konusunda bilgili birisiydi. Dördü çok uyumlu olmasa da iyi bir gurup oluşturdular. İçlerinde teknik olarak en iyileri Kevin’ken gurubu bir arada tutan kişi ve gurubun beyni Roscoe idi. Kevin ve Susan birbirlerinden nefret ediyorlar ama ortak arkadaşları (ve Susan’ın sevgilisi) Roscoe yüzünden birbirlerine katlanıyorlardı.



Bu guruptakiler telefon sistemini telefon firmalarının çalışanlarından daha iyi biliyorlardı. Gizli bilgileri ve kişisel bilgileri elde etmeleri çoğunlukla sosyal mühendisliğe dayanıyordu: Sızmak istedikleri sistemdeki birilerini arayıp onların bir şeylere kızmış üstleri gibi konuşup onlardan bilgi alıyorlardı. Roscoe bu işi bilime dönüştürmüştü. Bir deftere çalışanların kişiliğine ait bir çok bilgi giriyordu: Üstü kim altında kimler çalışıyor yardımcı olmaya çalışan birisi mi yoksa soğuk birisi mi çaylak mı deneyimli mi. Hatta onların hobileri çocuklarının adları vb. bile defterinde bulunuyordu.



Elde ettikleri bilgileri para için kullanmıyorlardı. Sistemlere girebilmek onları tanımayan birisine ilişkin en ayrıntılı bilgileri elde etmek vb onlara yetiyordu. Bir seferinde bu dörtlü telefon numarası öğrenme servisini kendilerine yönlendirdiler ve telefon numarası soranlara “Beyaz mısınız zenci mi? Telefon kataloglarımızı ayrı ayrı da” gibi sorular yönelttiler. Bu tür şeylerle çok eğleniyorlardı.



Daha sonra uzmanlık alanlarını telefon sistemlerinden bilgisayarlara kaydırdılar. Roscoe üniversitelerin bilgisayar sistemlerinde dolaşırken Susan askeri bilgisayarlara giriyordu.



Kevin Mitnick’in fotoğrafik bir belleği vardı. Bir çok parolayı içeren bir listeye biraz baktıktan sonra listeyi saatler sonra bile bir bire tekrarlayabiliyordu.



Bir süre sonra Kevin ile Roscoe özellikle Susan’ı dışlayacak şekilde vakit geçirmeye başladılar. Susan bu durumdan memnun değildi. Üstüne bir de Roscoe’nun başka bir kızla nişanlanması eklenince memnuniyetsizliği arttı. Memnuniyetsiz ve bilgili herhangi bir kadının yapabileceği şekilde intikam almaya karar verdi.



1980 yılının Aralık ayında US Leasing adında elektronik cihazları kiralama konusunda uzman bir firmanın bilgisayarlarına girildi. Kendisini Digital Equipments firmasının teknisyeni olarak tanıtan birisi US Leasing’i arayıp sistemdeki bir arızayı çözmek için geçerli bir kullanıcı adı parolası ve bağlantı için telefon numarası sordu. Bu bilgileri şüphelenmeden karşı tarafa veren firma çalışanı ertesi gün Digital firmasını aradığında böyle bir kimsenin olmadığını firmalarının onlar tarafından aranmadığını öğrendi. Aynı gece boyunca firmanın yazıcıları sürekli olarak “Sistem kırıcısı döndü. Sistem A üzerindeki disklerinizi ve yedeklerinizi uçurmaya az kaldı. Sistem B’yi zaten uçurmuştum. Bunları geri yüklerken eğleneceğini umuyorum seni .öt deliği” “Öc alma zamanı” “FUCK YOU FUCK YOU FUCK YOU” vb ifadeleri basıyordu. Bütün zemin kağıtla kaplanmıştı. Kağıtlarda arada bir de insan adları görünüyordu: Roscoe Mitnick Roscoe Mitnick.

US Leasing’e kimin girdiği anlaşılamadı. Roscoe ve Kevin bunu Susan’ın yaptığını iddia ederken Susan da onları suçluyordu.



Susan’ın intikam çabaları devam etti. Roscoe’nun firmasını arayarak onun bilgisayar terminallerini izinsiz kullandığını ihbar etti. Bunun sonucunda Roscoe işten atıldı. Bu arada Roscoe ve Kevin’in telefon kayıtlarını takip ediyor ve nereleri aradıklarını ne yaptıklarını saptamaya çalışıyordu. Roscoe ve Kevin takipten kurtulmak için sık sık telefon numaralarını değiştiriyorlardı. Buna karşılık Susan da onların evlerine kadar gelip telefon hatlarına saplanıyor ve bir telefon aparatıyla bağlı bulundukları santralda özel bir numarayı arayıp (telekom çalışanlarının kullandıkları bir teknik) numarayı öğreniyordu. Sonra bu tekniği kullanamamaya başladı: Kevin daha bilgili olduğu için santralın bilgisayarına girip kendi telefonunun bu şekilde bulunmasını engellemişti. Sonra da Kevin Susan’ın telefon görüşmelerini dinleyerek karşı kanıt toplamaya başladı. Susan yeni edindiği erkek arkadaşına telefonda mesleğinin inceliklerini ve ücretlerini bir bir açıklıyordu: “sen baskınsan yarım saati 45 dolar sen pasifsen 40 dolar ve “güreşmek” istersen 60 dolar”. Bu arada Roscoe kendisini ve ailesini tehdit ettiği iddiasıyla Susan’ı savcılığa şikayet etti. Susan zor durumda kalmıştı ama öc almak için hala bir fırsatı bulunuyordu. Savcılık ve emniyet görevlilerine Kevin ve Mitnick’in yaptıkları işleri anlattı ve bu bilgilere karşı korunma istedi.



1981 yılında Kevin ve Roscoe ABD’nin en büyük telekom şirketlerinden birisi olan Pasific Bell şirketinin Los Angeles’daki COSMOS merkezine girmeye karar verdiler. COSMOS telefon firmaları tarafından her türlü iş için kullanılan veritabanı programının adıydı ve Digital Equipments firmasının bilgisayarları üzerinde çalışıyordu. Ülke çapında yüzlerce CSOMOS sistemi kuruluydu. Bu sistemde 10-15 civarında komutun nasıl kullanıldığını iyi bilmek gerekiyordu. Bunu da merkezin çöp kutularını karıştırarak elde ettiler. Çöpler arasında yazıcı çıktıları çalışanların birbirlerine gönderdikleri notlar (parolalar dahil olmak üzere) ve buna benzer bilgiler vardı. Daha fazla bilgiye gereksinimleri olduğunu anlayınca kendilerini merkezin çalışanları olarak tanıtıp içeri girdiler. Şirket çalışanlarının bilgilerinin yer aldığı bölüme bazı adları eklediler. Digital Equipments bilgisayarları kullanan yerleri bir Digital çalışanıymış gibi aradıklarında bu adları kullanıyorlardı. Eğer karşı taraf kontrol etmek için COSMOS merkezini ararsa bu adlara rastlanacak ve arayan kişinin gerçekten Digital’da çalıştığı sanılacaktı. Bir yöneticinin odasından da COSMOS’a ilişkin birçok kılavuz alıp çıktılar. Ama fazla ileri gitmişlerdi. Yaptıkları iş hacker’lık falan değil düpedüz hırsızlıktı. Ertesi sabah odasına daldıkları yönetici işyerine gelince kılavuzların eksik olduğunu farketti. Çalışan kayıtları arasında da tanımadıkları adları kolayca farkedebildiler ve şirketin güvenlik departmanına haber verdiler. Onlar da emniyet görevlilerine haber verdiler: Susan’ın bilgi verdiği emniyet görevlilerine.



Polisin Kevin’in evini basması uzun sürmedi. Kevin evde yoktu. Polislerin buldukları şeyler arasında COSMOS merkezi ile ilgili hiçbir şey yoktu ama genel olarak telefon ve bilgisayar sistemlerine ilişkin çok şey vardı. COSMOS güvenlik görevlilerinin ifadelerine dayanarak tutuklama kararı çıkartıldı. Kevin sinagoga gitmişti. Ailece pek dindar olmasalar da Kevin sık sık part-time çalışmakta olduğu sinagoga gidiyordu. Polisleri karşısında gören Kevin kaçmak istedi ama kısa bir araba takibi sonunda yakalandı. Kevin yakalandığında dağılmıştı: Çok korktuğunu söylüyor ve ağlıyordu.



Savcı Kevin’i ve Roscoe’yu hırsızlık ve bilgisayara izinsiz girme ile suçladı. Duruşmadan hemen önce Kevin iki konuda suçlu olduğunu kabul etti. Bu yolla Roscoe’ya ihanet ediyordu ama Islahhaneye gitmekten kurtulmayı umuyordu. Kurtuldu da. Aldığı ceza (ceza bile denilemez) 90 günlük bir inceleme ve 1 yıllık gözetim idi. Diğer arkadaşları da 3-5 ay arası cezalar aldılar. Kevin’in arkadaş gurubuyla da görüşmemesi gerekiyordu.



Guruptaki kişiler cezalarını çekerken Susan da büyük bir aşama kat etti ve güvenlik konusunda danışman olarak çalışmaya başladı. Hatta bu sırada Washington’a gidip senatörlere ve yüksek düzey askeri personele bilgi bile verdi.



Kevin bu sırada Lenny adında başka bir arkadaşıyla en iyi bildiği işe devam ediyordu: Bilgisayarlara ve telefon sistemlerine girmek. En çok rastladıkları bilgisayarlar Digital Equipments firmasının mini bilgisayarlarıydı. Önceleri PDP serisi bilgisayarlar daha sonra ise VAX serisi bilgisayarlar. Bu bilgisayarlar üniversitelerde ve telekom firmalarında çok yaygın olarak kullanılıyorlardı. Kevin ve arkadaşı Lenny en çok da Güney Kaliforniya Üniversitesinin bilgisayarlarına giriyorlardı. Bu da tekrar başlarının belaya girmesine neden oldu. Bir akşam üniversitenin terminallerinde "çalışırken" yakalandılar. Bu sefer Kevin kolay kurtulamadı: Bir ıslahhanede 6 ay geçirmesi gerekti. Bu arada Los Angeles polisi için de bilgisayar güvenliği konusunda bir video bant hazırladı. 1983'ün sonlarında serbest kaldı.



Kevin bir aile dostunun yanında çalışmaya başladı. Ama çalıştığı yerdeki tek bilgisayarı bütün gün boyunca kullanması patronunun dikkatini çekti. Patronu Mitnick'in neler yaptığını pek anlamıyordu ama Kevin'in bilgisayar başında kredi kartları sorgulaması yaptığını farkediyordu ve kaygılanıyordu. Kaygılarını anlatmak için polis teşkilatına ziyaret yaptı; Kevin Mitnick'in belalısı polis detektifi ile görüştü. Detektif de o sıralar Kevin ve arkadaşı Rhoades için bir soruşturma yürütüyordu. Soruşturma konusu bir telekom firmasının kodlarını kullanarak uzak mesafe görüşmeleri yapmalarıydı. Aynı zamanda MIT'nin çalışanlarını elektronik ortamda tehdit ediyorlardı. Bu sıralarda amatör radyo yayınlarıyla yaptığı kabalıklar Kevin'in amatör radyo lisansını kaybetmesine neden olmuştu. Detektif için bütün bunlar yeterliydi ve Kevin için bir arama ve tutuklama kararı çıkarttı. Evini işyerlerini aradılar ama Kevin'i bulamadılar. Hapishaneye girmektense kaçmayı tercih etmişti.



1985'in yazında Kevin tekrar ortaya çıktı. Hakkındaki tutuklama kararı zaman aşımına uğramıştı. Tekrar arkadaşı Lenny ile ilişkiye geçti. Lenny çalıştığı yerlerdeki bilgisayarları Kevin'in kullanımına açıyordu. Bu sırada ABD'nin en büyük (CIA ve FBI'dan daha büyük) haber alma teşkilatı olan NSA (National Security Agency) bilgisayarlarına da girmeye başladı. Yaklaşık altı ay içinde Los Angeles bölgesi içindeki hemen tüm mini bilgisayarlara girmelerini sağlayacak kullanıcı hesaplarını elde ettiler. Bu sırada NSA'in sıkıştırmasıyla Lenny işten kovuldu (girdiği işlerin çoğundan kovuluyordu).



Kevin 1985'in Eylül'ünde bir bilgisayar okuluna yazıldı. Başarılı bir okul dönemi geçiriyordu.



Kevin'in kızlarla arası hiç iyi olmamıştı. Bu yüzden 1987 yılında arkadaşlarına evleneceğini söylediğinde herkesi şaşırttı. Gelin adayı bir telefon şirketinde yönetici olarak çalışıyordu (Kevin kızın nerede çalıştığını duyduğunda gülmekten az kalsın yere yuvarlanıyordu) ve Kevin'le okulda tanışmışlardı. Kevin ve arkadaşı birlikte yaşamaya başladılar.



Kevin UNIX işletim sisteminin bir çeşidini üretip satan Santa Cruz Operation (SCO) firmasının bilgisayarlarına girdi. Bir sekreterin hesabını kullanıyordu. Eylemleri fark edildi. SCO yetkilileri telekom şirketiyle işbirliği yaparak bağlantının kaynağını bulmaya çalıştılar. Bu iş normalde onlar için çocuk oyuncağıydı. Ama bu sefer bir zorlukla karşılaştılar: Bağlantıyı izlemeleri engelleniyordu. Kevin saatlerce bağlı kaldığı halde hattı bulunamıyordu. Bir süre sonra Kevin firmanın programı olan XENIX'i kopyalamaya çalıştı. Artık çok olmuştu. Bir seferinde dikkatsiz bir şekilde bağlanınca nereden bağlandığı saptandı. Evi yerel polis tarafından basıldı. Evde bilgisayar modum (polis kayıtlarında böyle görünüyordu) telefon bağlantı aparatı 55 adet disket çeşitli kitap ve kılavuzlar ile bir adet tabanca buldular. Kevin ve arkadaşı için tutuklama kararı çıkartıldı sonra arkadaşının bu işin içinde olmadığı anlaşılınca onun kararı kaldırıldı. Dava sürerken Kevin ve arkadaşı evlendiler. SCO davası Kevin'in suçunu kabul edip işbirliğine yanaşması ile bitti.



1988 yılında Kevin ve arkadaşı Lenny bir başka okula girdiler. İlk yaptıkları şey okulun bilgisayarındaki bütün dosyaları manyetik bant kartuşlarına kopyalamaya çalışmak oldu ve bu iş sırasında yakalandılar. Okulun sistem sorumlusu gecikmeden polise haber verdi. Polisin elinde yeterince bilgi vardı ve Kevin'i hapishaneye tıkıp orada uzun süre tutmak için ellerinden geleni yapmaya kararlıydılar. Ama polis üniversite telekom şirketi ve Digital Equipments arasındaki koordinasyonsuzluk yüzünden hiçbir şey yapılamadı.



Çalışmaları için Lenny’nin işyerindeki bilgisayarları kullanıyorlardı.



Kevin ve Lenny'nin şimdiki amaçları Digital Equipments firmasının en değerli yazılımı olan VMS işletim sistemini elde etmekti. Bunun için Arpanet içinde gezinmeye başladılar. Arpanet içindeki bir askeri bilgisayara girmeyi başardılar ve onu çaldıkları yazılımları saklamak için kullanmaya başladılar. Bu bilgisayara girdikleri anlaşılınca başka bilgisayarlara geçtiler: Güney Kaliforniya Üniversitesinin bilgisayarlarına. Bilgisayarlara giriyorlar onların üzerinden Arpanet'e çıkıyorlar ve bir yerlerden aldıkları VMS'in kaynak kodunu bu bilgisayarlara kopyalamaya çalışıyorlardı. Kopyaladıkları kod VMS'in alalade bir sürümü de değil 5.0 sürümüydü. Bu sürüm henüz müşterilere dağıtılmaya başlanmamıştı ve bulunabileceği tek yer Digital Equipments'ın iç ağı olan Easynet idi. Kevin ve Lenny gerçekten de bir zamandır Easynet'e giriyorlardı. Girmekle kalmayıp Easynet içinde çalışanların birbirleriyle yazışmalarını da izleyebiliyorlardı. Bu yazışmalar arasında iki kişi dikkatlerini çekti . Birincisi bir VMS güvenlik uzmanıydı. İkincisi ise sürekli olarak bu uzmanla yazışan ve İngiltere'deki bir üniversitede çalışan bir başka uzmandı. İkinci uzman sürekli olarak bulduğu güvenlik açıklarını ilkine gönderiyordu. Tabii bunlar Kevin ile Lenny'nin eline de geçiyordu.



VMS’in kaynak kodunun üniversitenin bir bilgisayarına aktarılması bittiğinde sıra dosyaları bir manyetik bant kartuşuna kopyalamaya gelmişti. Ellerindeki araçlarla bunu uzaktan yapmaları mümkün değildi. Bunu üniversitenin bilgisayarının başında yapmaları gerekiyordu. Bu iş için yanlarına eski arkadaşları Roscoe’yu aldılar. Kevin tanındığı için üniversiteye girmeyecek işi Lenny ile Roscoe bitirecekti. Roscoe kendisini bir öğrenci olarak tanıtıp kopyalaması gereken dosyalar olduğunu söyledi ve kartuşun bilgisayara takılmasını sağladı. Sonra Lenny ile buluşup telefonla Kevin’e haber verdiler. Kevin bilgisayara uzaktan bağlanarak dosyaların kopyalanması için gereken komutları verdi. İşlem bitince Roscoe kartuşu aldı. Dosyalar çok büyük olduğu için bu işlemleri birkaç kez yapmaları gerekti ama sonunda VMS’in kaynak kodlarına sahip oldular. Artık bu kodu inceleyip işletim sisteminin açıklarını bulabilirlerdi.



Bu sırada hem üniversitede hem de Digital Equipments’da sisteme birilerinin girdiği anlaşılmıştı. Kevin ve Lenny’nin de okudukları e-postalar ile yakından bildikleri gibi Digital içinde üç kişi hemen hemen tüm zamanlarını bu işi çözmeye adamışlardı. Ama Kevin ve Lenny yine bu e-postlardan Digital’ın onları bulsa bile kolay kolay suçlamayacağını öğrenmişlerdi. Firmalar kendi sistemlerine birilerinin girdiğinin öğrenilmesinden hiç de memnun kalmıyorlardı. Yine de her iki kurum da onları saptamak için ellerinden geleni yapıyorlardı. Kendilerine gelen telefon bağlantılarını izlemek için telekom şirketleriyle birlikte çalışıyorlardı. Kevin telefon sistemini iyi tanıması nedeniyle aramalarını hep çağrı yönlendirme yöntemiyle yapıyor ve izleme sonunda rastgele numaralara erişmelerini sağlıyordu. Bir keresinde rastgele numara ortadoğudan göçen bir adamın numarası çıktı. Adamın evi FBI tarafından basıldı ama ajanlar televizyon seyreden bir adamdan başka bir şey bulamadılar.



Bu arada Lenny ile Kevin arasında sorunlar baş göstermeye başladı. Lenny daha normal bir hayat sürmek istiyordu: Hacker’lık dışında faaliyetlerle ilgilenmek kız arkadaşına daha fazla zaman ayırmak istiyordu. Kevin ise tek bir şeye saplanmıştı: Daha çok daha çok bilgisayar sistemine girmek. Lenny’i de kendisiyle çalışmaya zorluyordu. Lennny Kevin’in ilerde kendi aleyhinde kullanabileceği bilgileri topladığını düşünüyordu. Sık sık tartışıyorlardı. Kevin her işlerinde "bu sonuncu olacak başka bir hacking yapmayacağız" diyordu ama birisi bitince bir başka işi başlatan da yine hep o oluyordu. Kevin çalışmaları ile ilgili olarak da karısına sürekli yalanlar söylüyordu. Lenny arkadaşları Roscoe’yu arayıp durumdan yakındı. Roscoe da Kevin’in halinden memnun değildi ve ona şimdiden iyi bir avukat bulmasını önerdi. Kevin çığrından çıkmıştı: VMS işletim sisteminin kaynak kodunu kopyaladıktan sonra şimdi de yine Digital’dan Doom adında bir oyunu kopyalamak istiyordu. Lenny için bu kadarı fazlaydı. İşindeki amirleriyle konuşup durumunu anlattı. Birlikte hem Digital’ı hem de FBI’ı aradılar ve durumu anlattılar. Lenny o ana kadar elde ettikleri 36 adet kartuşu FBI’a teslim etti. Birlikte Kevin’e bir tuzak hazırladılar. Lenny’nin üstüne mikrofon ve teyp yerleştirdiler. Lenny her akşam olduğu gibi işyerinde Kevin ile buluştu. Bu sırada FBI ve Digital güvenlik elemanları da aynı binada onları izliyordu. Kevin sabah saat 3’e kadar çalışmayı sürdürdü. Ertesi sabah FBI ajanları ve Digital yetkilileri bir toplantı yaptılar. Her zamankinin aksine bu sefer Digital da geri çekilmemeye karar vermişti. O gün akşam Kevin tutuklandı. Yıl 1988 idi.



Kevin’in tutuklanışı gazetelere manşet oldu. Haberlerde onun basit bir telefonla nükleer savaşa yol açabileceği toplum için bir tehdit oluşturduğu işleniyordu. Kevin maksimum güvenliğin sağlandığı bir hapishaneye kondu. Digital firması Mitnick’in kendilerine verdiği zararın 160 bin dolara mal olduğunu iddia etti. Kevin mahkemede bazı suçlamaları kabul etti yaptıklarından dolayı özür diledi ve bu tür şeyleri bir daha tekrarlamayacağına söz verdi. Mahkeme onu bir yıl hapis ve altı aylık bir tedavi ile cezalandırdı. İyi hali görüldüğünden 1990 yılının baharında cezasının tümünü tamamlamadan hapishaneden şartlı olarak çıktı. Hapishaneden çıktığında karısı boşanmak istedi: Bütün olan bitenden bıkmıştı.



Kevin hapisten çıktığı zaman eski arkadaşı Susan ile görüşmeye başladı. Kevin kilo vermişti ve düzenli bir işte çalışıyordu. Susan sonradan bu döneminde Kevin’i baştan çıkarmaya çalıştığını söyleyecekti. Onun yatakta nasıl olduğunu merak ediyordu. Ama Kevin’in bu taraklarda bezi yoktu. Susan vazgeçti. Daha sonra “isteseydim onunla yatardım” diyecekti.


FBI hapisten çıkan Kevin'in ıslah olduğuna inanmıyordu. Justin Petersen adında bir eski hacker'ı Kevin'in peşine taktı. Justin hem Kevin hem de Roscoe ile ilişkiye geçip onları bilgisayarlara girme konusunda cesaretlendirdi. Üçlü birlikte bir çok bilgisayara girdiler. Kevin Justin'in ajan olduğunu farkedince bir avukata danışıp onunla yaptıkları görüşmeleri teybe kaydettiler. Ama çok geçti. Şartlı salıverme kurallarını ihlal ettiği için Kevin hakkında tutuklama kararı çıkartıldı. Kevin yakalanmamak için kaçmaya başladı. Sürekli şehir değiştiriyor alışverişini hep nakit paralarla yapıyordu. Bilgisayarlara girme huyundan vazgeçememişti. Gelişen teknoloji ile birlikte bir dizüstü bilgisayar bir hücresel telefon ve modemle çalışmak yeterli hale gelmişti. İnternet'in yaygınlaşması da ona hizmet ediyordu. Bir yerel İnternet hizmet sağlayıcısına bağlanıyor oradan da İnternet'te yaygın olarak kullanılan Telnet programı ile istediği sisteme bağlanabiliyordu.



Bu sırada Digital firmasına VAX sistemlerinin hatalarını rapor eden İngiliz'le arasında garip bir bağ oluştu. Kevin İngiliz'in firmaya gönderdiği e-postaların hepsini okuyabiliyordu. Bu e-postalardan ne kadar bilgili bir kişi olduğunu anladığı İngiliz'e karşı hayranlık besliyordu. Bu hayranlığın sonunda kendisini telefonla aramaya bile başladı. Telefon görüşmeleri 2 3 bazen 4 saat sürüyordu. İngiliz'in FBI ile bağlantılı olarak onu yakalamaya çalıştığını öğrenince büyük hayal kırıklığına uğrayıp bağlarını koparttı.



1994'ün son aylarında Kevin Seattle kentindeydi (Microsoft'un da merkezinin bulunduğu Amerika'nın kuzeydoğusundaki bir kent) . Brian Merril adıyla bir hastanede bilgisayar teknisyeni olarak çalışıyordu. Şehrin telekom şirketinin iki detektifi telefon korsanlığını araştırırken onu buldular. Tarama cihazı ile binasına kadar ulaşıp telefon konuşmasını dinlediler. Kevin karşısındakiyle bir bilgisayar sistemine nasıl girileceğinden konuşuyordu. Ama arama emri ancak birkaç ay sonra çıkarılabildi. Arama yapıldığında da Kevin'i bulamadılar. Kevin yine kaçmayı başarmıştı. Kaçtığı yer Amerika'nın doğusundaki Raleigh kentiydi. Bu kentte son ve en uzun hapis cezasına çarptırılmasına neden olan işini yapacaktı: Japon kökenli bir Amerikalı olan Tsutomo Shimomura'nın bilgisayarına girmek.



Tsutomo Shimomura dünyaca ünlü bir fizikçi olan Richard Feynman'dan ders alan parlak bir astrofizikçi idi. Ama astrofizik onu kesmiyordu. 19 yaşında Los Alamos Ulusal Laboratuvarında işlemci mimarisi ve hesaplama yöntemleri üzerinde çalışmaya başladı. Daha sonra San Diego Süper Bilgisayar Merkezinde çalışmaya başladı. Kendini beğenmiş birisiydi. Karşısındaki kişi onun konularından anlamıyorsa Tsutomo için değersizdi. Bilgisayarları çok seviyor ve bilgisayar güvenliği alanıyla yakından ilgileniyordu. Bu özelliği yüzünden Hava Kuvvetlerine ve NSA'e güvenlik konusunda danışmanlık yapıyordu. Bilgisayarına girildiğini farkettiğinde çok şaşırdı çok bozuldu ve bunu kişisel bir tehdit olarak algılayıp bilgisayarına gireni takip etti. Yakalayana dek.



Tsutomo'nun sistemine giren kişi iz bırakmamak için günlük dosyalarını (log files) silmişti. Ama Tsutomo çok önceden tedbirini almıştı: Günlük dosyalarının bir başka bilgisayara düzenli olarak gönderilmesini sağlamıştı. Bu dosyaları bir master öğrencisi düzenli olarak inceliyordu. Bu öğrenci normalde hep artması gereken günlük dosyalarının son kopyasının küçülmüş olduğunu gördüğünde yolunda gitmeyen bir şeyler olduğunu farketti. Durumu Tsutomo'ya haber verdiğinde Tsutomo kayak yapmaya gidiyordu. Tatilini iptal edip hemen San Diego'ya döndü.



Tsutomo'nun bilgisayarlarına saldıran kişi IP spoofing denilen bir tekniği kullanıyordu. Chicago'daki Loyola Üniversitesinden girdiği sanılan birisi bilgisayarının IP adresini Tsutomo'nun ağındaki bir IP adresi olarak göstermişti. Saldırgan bu yolla Tsutomo'nun birçok bilgisayarından düzinelerce dosyayı kopyalamıştı. Tsutomo bu tekniği duymuştu ama gerçekleştirilmesi çok zor olduğu için uygulandığını hiç görmemişti.



Tsutomo bilgisayar güvenliği konusunda çalışan kişilerin çoğu gibi Kevin Mitnick'i duymuştu. Kevin'in arandığını da biliyordu. Saldırganın o olduğundan emin değildi ama araştırmaya hemen başladı. Önce saldırganın neleri çaldığını buldu: Hücresel telefon kodları Tsutomo'nun e-postalarını ve çeşitli güvenlik araçlarını içeren özel klasörü (home directory) birçok başka dosya. Tsutomo bilgisayarlarındaki güvenlik önlemlerini arttırıp tatiline döndü. Sonraki günlerde Tsutomo Bruce Koball adında birisi tarafından arandı. Bruce San Fransisco'da yaşıyordu ve İnternet hesabına ayrılan disk alanının Tsutomo'nun dosyaları ile dolduğunu bildiriyordu. Bu alanda Tsutomo'nun yaklaşık 150MB'lık dosyası bulunuyordu. Tsutomo San Fransisco'ya uçup İnternet Hizmet Sağlayıcısının merkezine karargah kurdu. Buradan kendi sistemlerine giren kişiyi izlemeye başladılar. Onun klavyede bastığı her tuşu takip edebiliyorlardı. Saldırganın o bölgedeki başka İnternet Hizmet Sağlayıcılarına (ISP) da girdiğini ve o sistemleri de parmağının ucunda oynattığını farkettiler. Karşılarındaki kişi sıradan birisi değildi. Saldırganın aslında yine o yöredeki başka bir ISP'den girdiğini farkedince karargahlarını oraya taşıdılar. Orada saldırganın ISP'nin 26000 müşterisine ait kredi kartı bilgilerini elde etmiş olduğunu gördüler (bu kredi kartı bilgilerinin kullanılıp kullanılmadığı hiç anlaşılamadı). Saldırgan ondan fazla kişinin e-postalarını izliyordu. Bu e-postalar içinde "itni" ifadesini arıyordu. Tsutomo'nun kuşkusu kalmamıştı: Aradıkları kişi Kevin Mitnick'ti.



Bu sırada saldırganın aramayı Raleigh'den (ABD'nin öbür tarafı) başlattığı saptandı. Aramalar bir hücresel telefon ve modemle yapılıyordu. Tsutomo tası tarağı toplayıp Raleigh'a uçtu. Orada telekom şirketi Sprint'in bir teknisyeni ile birlikte bir arabaya atlayıp telefon görüşmelerini taramaya başladılar. Otuz dakika içinde Kevin'in yeri saptandı. FBI'a haber verildi. Kevin'in kanıtları yok etmemesi için hızlı hareket etmeleri gerekiyordu. Sabahın ikisinde ajanlar kapıyı çaldılar. Kevin'in ilk sorduğu şey arama belgesiydi. Ajanlar arama belgesini gösterdiklerinde adresin yanlış yazılmış olduğu anlaşıldı. Ama bu Kevin'in içeri giren ajanlar tarafından tutuklanmasına engel olamadı. Beş yıl hapishanede kaldı. 2000 yılı içinde serbest bırakıldı. Halen gözetim altında. Telefon kullanamıyor (annesini araması dışında). Bilgisayara el süremiyor. ABD dışına çıkması yasak. Geçimini konferanslara katılarak sağlıyor. 2003 yılının gelmesini ve üzerindeki kısıtlamaların kaldırılmasını bekliyor.

Yorum (yok) Yorum yaz!

Win 7'nin ilk güvenlik endişesi ve jet yanıt!

2/2/2009 ·

Kullanıcı Hesap Yönetimi Win 7 ile tekrar gündemde: UAC güvenli değil iddiasına MS'den yanıt geldi.

User Account Control yani UAC, Türkçe adıyla Kullanıcı Hesabı Denetimi, Vista ile birlikte tanıştığımız Microsoft'un yeni güvenlik önlemlerinden biri. UAC, sistemde yapılacak önemli değişiklikler esnasında bir onay penceresi ile kullanıcıyı uyarma görevini üstlenen bir uygulama. Peki Vista'dan sonra bazı değişikliklerle Windows 7'de de kullanılmakta olan UAC ne kadar güvenli? Güvenlik konusunda uzman olan Rafael Rivera ve Long Zheng yeterince güvenli olmadığı görüşünde.

Hatta bu görüşlerini ispatlamak için UAC'yi kandıracak bir yazılım bile hazırladılar. Hazırladıkları yazılım, kullanıcının haberi olmadan arka planda UAC'yi kapatıp, istenen zararlı yazılımları yüklüyor ve sonrasında UAC'yi tekrar aktif hale getiriyor. Zheng bu sayede virüslerin UAC'yi ve dolayısıyla kullanıcıyı kandırabileceklerini iddia ediyorlar.

Kendi bloglarında bu konu ile ilgili araştırmalarını yayınladıktan sonra bir anda UAC'nin işe yararlılığını tartışılır hale getiren Zheng ve Rivera'ya Microsoft'dan da jet hızıyla yanıt geldi. Özetle Microsoft, UAC'de bir güvenlik açığı olduğunu düşünmüyor. Microsoft yaptığı açıklamada UAC'nin kullanıcıların büyük kısmından beğeni topladığını ve Windows 7'de de kullanıcıların görüşleri dikkate alınarak özel geliştirmelere gidildiğini söyledi. UAC'nin kapatılması ise Microsoft'a göre ancak sistemde hali hazırda bulunan bir zararlı yazılım ile mümkün. Yani UAC'nin art niyetli bir program yardımıyla kapatılması için, bahsi geçen art niyetli yazılımın önce kendisinin UAC'yi geçmesi gerekiyor. Bu da ancak kullanıcının dikkatsizliği veya UAC'nin zaten kapalı olması sayesinde gerçekleşebilir.

Yorum (yok) Yorum yaz!

« Önceki ::

KORSANSTYLE