[Çözüldü] C ile port arama programında IP farklılığı

Başlatan sem, 10 Nisan 2010 - 15:05:37

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

sem

   Merhabalar. Arkadaşlar çok basit deneme amaçlı bir port arama programı yazdım. Kendi IP' mi girdiğim zaman ile 127.0.0.1 girdiğim zaman gözüken açık portlar farklı çıkıyor. Bunun nedeni nedir? Dışarı yani internete açmadan, kendi içinde port açma diye bir kavram mı vardır? Öyle değilse ne olabilir? Kod hatası mıdır?

//Kodu göndereyim, kod hatası ise bir fikriniz olsun...


#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
#include <unistd.h>
#include <stdlib.h>

int main()
{
    char sal[20];
    int server,port_no;
    struct sockaddr_in server_info;
    FILE * portlar;
   
    if((portlar = fopen("portlar","w+t")) == NULL)
    {
       fprintf(stdout,"cikti dosyasi olusturulamadi...\n");
       exit(-1);
    }
   else
   {
      fprintf(stdout,"cikti dosyasi olusturuldu...\n");
   }
 
      fprintf(stdout,"Ip numaranızı girin:");
      fscanf(stdin,"%s",sal);

   server_info.sin_family = AF_INET;
   inet_aton(sal,&(server_info.sin_addr));

   if((server = socket(AF_INET,SOCK_STREAM, IPPROTO_TCP)) < 0)
   {
       fprintf(stdout,"server soketi olusturulamadi...\n");
       exit(-1);
   }
   else
   { 
      fprintf(stdout,"server soketi olusturuldu...\n");
   }

   for(port_no = 1025; port_no != 65537; ++port_no)   
   {
      server_info.sin_port = htons(port_no);
     
      if((connect(server,(struct sockaddr *)&server_info, sizeof(struct sockaddr))) == -1)
      {
         fprintf(portlar,"KAPALI:%d\n",port_no);
         printf("%%%d\r",port_no*100/65536);
         continue;         
      }
      else
      {
         fprintf(portlar,"ACIK:  %d\n",port_no);
         printf("%%%d\r",port_no*100/65536);
         shutdown(server,2);
         server = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
         continue;
      }
   }

    shutdown(server,2);
    printf("\n");
    return 0;
}
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

heartsmagic

Kendi IP adresin dediğin içerideki IP adresi mi, dışarıdaki IP adresi mi?
Sen şimdi SSH sunucusu kurarsan ve içerideki IP adresine istek yaparsan cevap alırsın. Fakat port yönlendirme yapmazsan dışarıdaki IP adresi için bu port açık görünmeyecektir.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

sem

Merhabalar heartsmagic, aslında dediklerin çok yabancı bana. Yazdıklarını okuduktan sonra cehaletin son perdesini okudum gözümde. O nedenle; içerdeki ve dışardaki ip'den kastın nedir onu açıklayabilir misin ?  Bir de SSH sunucusu kurarsan demişsin, hiç birşey kurmadan yazdım ben programı, tek girdi IP adresi. Benim denediklerim de birincisi dinamik IP dedikleri, internet sitelerinden bakabildiklerimiz, diğeri local host dedikleri "127.0.0.1"  . Programı kodları yukarda olduğu onun dışında SSH ya da başka hiçbirşey kurmadım. Bilmiyorum da dediklerini =)... 
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

heartsmagic

Estağfurullah ne cehaleti. Böyle düşünecek olursak buradaki herkes bir başka şeyin cahili olur :)

İçerideki IP adresi dediğim ağda kullandığın makinene ait IP adresidir. Örneğin 192.168.2.1. localhost dediğin de aslında bu IP adresine işaret eder.
ifconfig çıktındaki ilgili karta ait bölümde görebilirsin bu IP adresini.

Dış IP adresi dediğim senin de söylediğin ISS'nin sana sağladığı dinamik (statik de olabilir tabii) ve internet sitelerinde görünen IP adresindir.

Şimdi, port meselesi içeriden ve dışarıdan kontrol etmene göre değişecektir. Şöyle ki. Sen diyelim ki bir porttan hizmet veren bir uygulama/servis kurdun. Bu uygulamanın veya servisin içeride çalışması için yapman gereken fazladan bir şey olmaz. Sistem üzerinde portları kısıtlamamışsan tabii. Bu kurduğun servis güzel güzel çalışacaktır. Örneğin FTP sunucusu, SSH sunucusu. Ancak, işte bu sunucuların/servislerin dışarıdan da hizmet vermesini istiyorsan yapman gereken bazı şeyler vardır. Modemine giderek port yönlendirmesi yapmalısın. Diyelim ki FTP sunucusu için konuşuyoruz. Gidip 21. portu içeride bu sunucuyu çalıştıran makineye yönlendirmelisin. Böylece dışarıdan istek yapınca 21. port doğrudan bu makineye yönlenecektir.

Sen port yönlendirmesi yapmadığın için içeriden yaptığın port kontrolüyle dışarıdan yaptığın arasında farklar olacaktır.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

sem

Aynen anladım dediklerinizi... Aslında daha önce açtığım "C ile network programlama IP sorunu" konusundan ağzım yandığı ve uykularım kaçtığı için bu sefer akıllandım... Port yönlendirmesi yapıyorum kodu çalıştırırken... Örneğin 5 tane portu açıyorum kendi bilgisayarım için, açık olan portları yakalıyor program... Ondan sonra 127.0.0.1 girdiğim zaman ki bu da 192.168.. adresine eş değermiş... daha farklı portlar buluyordum... İkisi de aynı bilgisayar sonuçta o nedenle kafam karışmıştı... Yani; içerisi - dışarısı kavramından dolayı bu farklılıklar oldu... Teşekkür ederim... Konu benim için çözülmüş sayılıyır şu anda... Ukalalık olmasın ben [ÇÖZÜLDÜ] olarak değiştirmeyeyim size bırakıyorum =) forumda gezinirken öğrendim sabah =)... İyi günler
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

heartsmagic

Ukalalık olmaz bilakis seviniriz :) Zira başlık sana ait olduğu için, çözülüp çözülmediği kararını sen veriyorsun. Bizler çözüldü geri bildirimi gelen kadar kapatmıyoruz genelde başlıkları. Ben yapıyorum bu sefer, ilerideki başlıklar için şimdiden teşekkürler :)
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.