Forum

Kapalı olan bilgisa...
 
Bildirimler
Hepsini Temizle

Kapalı olan bilgisayarı uzaktan açmak

6 Yazılar
5 Üyeler
0 Reactions
2,838 Görüntüleme
(@SelcukYAZICI)
Gönderiler: 5
Active Member
Konu başlatıcı
 

Merhaba


Uzaktan evdeki bilgisayarımı açmak istiyorum bu konu hakında net bir bilgiye ulaşamadım,yardımcı olursanız sevinirim.


 

 
Gönderildi : 17/11/2008 18:29

(@serhatakinci)
Gönderiler: 4117
Famed Member
 

Araştırmanız gereken özellik Wake On Lan

Ana karta ait bir özelliktir.

 
Gönderildi : 17/11/2008 18:46

(@SelcukYAZICI)
Gönderiler: 5
Active Member
Konu başlatıcı
 

Evet anakartımın bu özelliği var.


 Tşk.

 
Gönderildi : 17/11/2008 19:00

(@yilmazkara)
Gönderiler: 51
Trusted Member
 

Merha bu özelligi nasıl kullanabiliriz acaba bilgi vermeniz mümkünmüdür.

 
Gönderildi : 21/11/2008 00:29

(@eroldursun)
Gönderiler: 2204
Famed Member
 


Araştırmanız gereken özellik Wake On Lan


Ana karta ait bir özelliktir.



 


valla ben bunu web den çalıştıramadım


http://www.depicus.com/wake-on-lan/woli.aspx


http://www.depicus.com/wake-on-lan/what-is-wake-on-lan.aspx  burayı iyi okuyup yapmak lazım ama ben başaramadım ve pes ettim


var mı bilen yapan ?

 
Gönderildi : 21/11/2008 01:15

(@ugurdasdemir)
Gönderiler: 1824
Noble Member
 

Kısaca Bazı Terimlerin tanımlarından bahsettikten sonra ;

MAC adres: 2. seviyede donanım üreticileri tarafından verilen
değiştirilemeyen (artık değiştirilebiliyor) ve dünyada tek olan adres.
ab:cd:ef:gh:kl:mn formatindadir. Her byte (ab mesela 00'dan FF'e kadar
olabilir). ilk 3 byte üretici kodudur.

ARP: Address Resolution
Protocol: IP adreslerinin karşılığında MAC adreslerini konumlandırmak
için gereken protokol. Yani IP adresini bildiğiniz ama MAC adresini
bilmediğiniz bir makinenin MAC adresini öğrenmeye yarar. Sadece LAN'da
çalışır. Uzak ağlardaki MAC adreslerini öğrenmenize gerek yoktur keza
paket direkt "Varsayılan Ağ Geçidi"ne yönlendirilir. Oradan karşıki
LAN'In routerına, gider vs vs..

Static ARP ise; ARP protokolü olmaksızın IP adresine MAC adresini bağlamaktır.
Gelelim
uzaktaki kapalı olan makinelerin nasıl açılacağına. Basitçe ICMP
paketlerini virtual server olarak içerideki makinene tanımla %99 sistem
çalışacaktır.

WOL özellikli PCI kart : aynen CDROM'dan ses kartına giden kablo gibi bir kablo olur ve board üzerindeki WOL portuna bağlanır.

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

Wake On Lan - Kapalı Bir Bilgisayarı Lan’dan Uyandırma
Kapalı Bir Bilgisayarı Uyandırma

Wake on LAn nedir? Wake on Lan (wol) adından da anlaşılacağı gibi bir PC’yi
network üzerinden açmak için data packetinin gönderilmesidir.

Bir PC’yiuzaktan açabilmek için öncelikle o PC de bir ethernet kartı
olmalı ve networke bağlı olması gerekmektedir. Bundan sonra ise O
ethernet kartının WoL özelliğinin olması ve biostan enable hale
getirilmiş olması gerekmektedir. Ethernet Kartı eğerki onboard değil
ise 3 pinli konnektörünün anakarta bağlı olması da gerekmektedir.
Tümleşik karlarda buna zaten gerek olmamaması da normaldir

Neyse buraya kadar donanımsal kısımdı. Şimdi ise wol packetinden
bahsedelim. Öncellikler wakeonlan paketi UDP pakettir. Yani böyle bir
paketi kolaylıkla kendinizde oluşturabilirsiniz. Elinizde sadece UDP
komponenti olması yeterli. şimdi de paketin içinden bahsedelim.
Bu paket çok basit ve toplam 102 byte’lıktır.
format ise şöyledir.

ilk 6 byte "FF" leden oluşur geri kalan ise açılacak bilgisayarın MAC adresinin 16 kez tekrarlanması ile oluşur.
MAC adresimiz 11h 22h 33h 44h 55h 66h olsun. paket şöyle olur.

FF FF FF FF FF FF 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66
11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66
11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66
11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66
11 22 33 44 55 66

işteee yukardaki paketi bir wake up paketidir.
pekii bu paketi nereye yollayacağız ve nasıl??

Yukarıdaki paketi "broadcast" yada "directed-broadcast" olarak
yollarsanız orada bulunan 11 22 33 44 55 66 mac adresine sahip makina
açılır...

Şimdi broadcast ne demek? gidecek paketi ip adresi olarak
255.255.255.255 e yollamak demek bu paketin broadcast olduğu anl*****
gelir. yani bu paket, paketin yolladnığı segmentteki her yere gider
fakata routerdna geçemez ve orda kalır. yani başka segmentteki makinayı
açamazsınız..

Bu işi aşmak için directed broadcast kulllanılarbilir. directed broadcast kısaca şöle denebilir.
iki network var : 192.168.0.0/255.255.255.0 ve 192.168.1.0/255.255.255.0
şimdi bu 192.168.0.0 networkündeki makinanın 192.168.1.0 daki bir
makinayı açması için 255.255.255.255 paketi göndermesi faydasızdır.
Bu sebeple istenen networkteki makinaya o networke ait broadcast adresi ile yollamak gerek.

yaniii... 192.168.0.255 veya 192.168.1.255 adreslerini kullanarak bu paketi göndermek gerekir.

fazla karışık ise anlamanız için size delphi sourcelarını da yazayım..

Sayfa: 2/2

Burada da delphi de yazılmış bazı kodlar var.
bu iş için forma 4 tane label, 4 tane edit box, 1 status bar, 1 bitbtn ve 1 tane da indy UDP client koymanız gerek. )

1nci edit box MAC adresi
2nci edit box tahmini makinanın ip adresini
3ncü edit box subnet maskını
4ncü remottaki gidilecek ise port numarası.

arkadaşlar bu işlemin çalışması için ya routerlarda interfacelere
ip directed broadcast yada ip forward-protocol udp [port number]
komutlarının girtilmesi gerek. Komutlar cisco ve nortellerde hemen
hemen aynı..

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, NMUDP, IdBaseComponent, IdComponent, IdUDPBase,
IdUDPClient, Buttons, ComCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
UDP1: TIdUDPClient;
BitBtn1: TBitBtn;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
StatusBar1: TStatusBar;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

//*************************** ***************** **
////////HEX TO INT/////////////////
Function hexToInt(const hexStr: string): longint;
var
iNdx: integer;
cTmp: Char;
begin
Result := 0;
for iNdx := 1 to Length(hexStr) do
begin
cTmp := hexStr[iNdx];
case cTmp of
’0’..’9’: Result := 16 * Result + (Ord(cTmp) - $30);
’A’..’F’: Result := 16 * Result + (Ord(cTmp) - $37);
’a’..’f’: Result := 16 * Result + (Ord(cTmp) - $57);
else
raise EConvertError.Create(’Geçersiz karakter’);
end;
end;
end;

////////////////WAKE UP FUNC////////////////////
procedure WakeUPComputer(ip,tmpst: string);
var Cpt, Cpt1: Byte;
tcnt:integer;
tswake1 :string;
tiwake : integer;
stwake : string;
buff1 : array [1..102] of byte;
Buff:Array[1..6] Of Byte;
begin
form1.StatusBar1.SimpleText:=’ WOL is sent to ’+ip;
tcnt:=length(tmpst);
for tiwake:=1 to tcnt do
if (tiwake/2) <> trunc(tiwake/2) then
begin
tswake1:=tmpst[tiwake]+tmpst[tiwake+1];
buff[trunc(tiwake/2)+1]:=(hextoint(tswake1));
end;
Buff1[1] := $FF;
Buff1[2] := $FF;
Buff1[3] := $FF;
Buff1[4] := $FF;
Buff1[5] := $FF;
Buff1[6] := $FF;
for Cpt1 := 1 to 16 do
for Cpt := 1 to 6 do
Buff1[7 + (Cpt1 - 1) * 6 + (Cpt - 1)] := Buff[Cpt];
form1.udp1.ReceiveTimeout:=100 ;
setlength(stwake,102);
for cpt:=1 to 102 do stwake[cpt]:=chr(buff1[cpt]);
form1.udp1.Send(ip,sizeof(stwa ke),stwake);
end;

////////////////broadcast adrr func////////////////////
function calcbroad(ip,sub:string):strin g;
var S1,S2,S3,S4:INTEGER;
I1,I2,I3,I4:INTEGER;
begin
S1:=255-STRTOINT(COPY(SUB,1,POS(’.’,su b)-1));
DELETE(SUB,1,POS(’.’,sub));
S2:=255-STRTOINT(COPY(SUB,1,POS(’.’,su b)-1));
DELETE(SUB,1,POS(’.’,sub));
S3:=255-STRTOINT(COPY(SUB,1,POS(’.’,su b)-1));
DELETE(SUB,1,POS(’.’,sub));
S4:=255-STRTOINT(SUB);

I1:=STRTOINT(COPY(IP,1,POS(’.’ ,ip)-1));
DELETE(IP,1,POS(’.’,ip));
I2:=STRTOINT(COPY(IP,1,POS(’.’ ,ip)-1));
DELETE(IP,1,POS(’.’,ip));
I3:=STRTOINT(COPY(IP,1,POS(’.’ ,ip)-1));
DELETE(IP,1,POS(’.’,ip));
I4:=STRTOINT(IP);
calcbroad:=inttostr(i1 or s1)+’.’+inttostr(i2 or s2)+’.’+inttostr(i3 or s3)+’.’+inttostr(i4 or s4);
end;

///////////////////////////////////////////////////
procedure TForm1.Button1Click(Sender: TObject);
var C,broad,MAC,ip,sub:string;
i:integer;
S1,S2,S3,S4:INTEGER;
I1,I2,I3,I4:INTEGER;
begin
MAC:=edit1.Text;
broad:=calcbroad(edit2.Text,ed it3.Text) ;
udp1.active:=false;
udp1.Port:=strtoint(edit4.Text );
udp1.Active:=true;
//showmessage(broad+’:’+mac);
if length(MAC)=12 then wakeupcomputer(broad,MAC) ELSE SHOWMESSAGE(’ERROR ON MAC’);
udp1.Active:=false;
end;

 

Uzun zaman araştırdıktan sonra  en temiz kaynak olarak bunu kullanmıştım...

Ama uzaktan bilgisayarı açıp ta napıcam demiştim 🙂

 

 
Gönderildi : 21/11/2008 02:55

Paylaş: