Giriş
Kullanmanın en büyük avantajlarından biri Linux sunduğu çok sayıda yararlı yardımcı programdır. Program içi özellikler genellikle çoğu programcının işini yapması için yeterlidir. Bu, çoğu zaman harici programlar ve yazılımlar indirmenize gerek kalmayacağı anlamına gelir. Yerleşik araçlar size yeterli faydayı sağlayacaktır. Bu yararlı özellikler arasında netcat yardımcı programı da bulunmaktadır.
Ağ araçları dünyası söz konusu olduğunda, netcat adeta aşırı güçlü bir silahtır. Birden fazla amaç için kullanabileceğiniz inanılmaz derecede çok yönlü bir komuttur. Örneğin, sisteminizin bağlantıları üzerinden her türlü dosya ve veriyi izlemek, test etmek ve aktarmak için bu tek aracı kullanabilirsiniz. Bu kılavuzda, tüm bu eylemleri bir VPS üzerinde netcat kullanarak nasıl gerçekleştireceğimizi inceleyeceğiz.
Netcat'i Bulma
Netcat genellikle tüm modern Linux dağıtımlarında mevcuttur. Bu, büyük olasılıkla zaten sahip olduğunuz ve yüklemek için ekstra bir çaba sarf etmenize gerek olmadığı anlamına gelir. Eğitimimizde Ubuntu 12.04 VPS kullanacağız. Eğitimimizi takip ederek kendi Ubuntu sunucunuzu kurabilirsiniz. Ubuntu normalde netcat yardımcı programının BSD varyantı ile birlikte gelir. Başka bir sürüme sahipseniz, biraz farklı çalışabileceğini unutmayın.
Temel Sözdiziminin Üzerinden Geçmek
Netcat yardımcı programında çalışan genel sözdizimini öğrenerek başlıyoruz. Bir TCP connection başlatarak netcat'i çalıştırabilirsiniz. Bağlantının uzak bir ana bilgisayara başlatılması gerekir. İşte netcat için temel sözdizimi:
|
1 |
netcat [options] host port |
Bu komut, uzak bir ana bilgisayara TCP bağlantısı başlatmaya çalışacaktır. Hangi ana bilgisayara bağlanacağı, komutta belirttiğiniz port numarasına bağlıdır. Bağlantı şifrelenmemiş olacaktır. Gördüğünüz gibi, bu komut telnet komutunun çalışma şekline benzer şekilde çalışır.
Öte yandan, bir UDP collection da başlatabilirsiniz. TCP yerine bir UDP paketi göndermek için -u seçeneğini kullanmanız gerekir. Şöyle görünecektir:
|
1 |
netcat -u host port |
Dilerseniz bir port aralığı da belirtebilirsiniz. Bunu yapmak için ilk ve son port arasına bir tire koymanız gerekir. İşte bir örnek:
|
1 |
netcat host startport-endport |
Buna daha fazla bayrak da ekleyebilirsiniz. Dikkat edilmesi gereken bir diğer husus da netcat ve nc komutlarını birbirinin yerine kullanabileceğinizdir. Sizi aynı komuta yönlendirirler, yani birbirlerinin takma adlarıdır (alias).
Port Tarama için Netcat Kullanımı
Başlangıç olarak, netcat'in en yaygın kullanım alanlarından birini inceleyelim. Onu bir port tarayıcı olarak nasıl kullanacağımızı öğreneceğiz. Çoğu durumda, nmap gibi bir araç kullanmanız daha iyi olacaktır. Ancak, yalnızca basit port taramaları yapmanız gerekiyorsa, netcat kullanışlıdır. Açık portları kolayca tespit etmenize yardımcı olabilir.
Netcat'i port tarayıcı olarak kullanmak için port aralığını belirtmeniz gerekir. Bunu -z seçeneğini kullanarak yapacaksınız. Böylece sistem, bağlantı kurmaya çalışmak yerine port aralığını tarayacaktır. Diyelim ki port 1'den port 1000'e kadar tarama yapmak istiyoruz:
|
1 |
netcat -z -v domain.com 1-1000 |
-z komutuna ek olarak, -v seçeneğini de kullandık. İkincisi, komuta daha fazla bilgi vermemizi sağlar. Daha 'ayrıntılı' (verbose) olmamızı sağlar.
Karşılığında şöyle bir çıktı alacaksınız:

Çıktı, her bir port için birçok bilgi gösterir. Her portun bağlantı durumunu bilirsiniz. Öte yandan, biliyorsanız alan adı yerine IP adresini de kullanabilirsiniz. Bu, işlemi çok daha hızlı hale getirir. İşte bir örnek:
|
1 |
netcat -z -n -v 198.51.100.0 1-1000 |
Sistemin IP adresini çözümlemek için DNS kullanması gerekmediğini belirtmek için -n bayrağını kullandık.
Genellikle, geri dönen mesajlar standart hataya (standard error) gönderilir. Sonuçları daha hızlı filtrelemek için bunları standart çıktıya (standard out) yönlendirebilirsiniz. Bunu yapmak için 2>&1 bash sözdizimini kullanacağız. Sonrasında, grep kullanarak sonuçları filtreleyeceğiz. Bunu örneğimize uygulayalım:
|
1 |
netcat -z -n -v 198.51.100.0 1-1000 2>&1 | grep başarılı oldu |
Çıktı şuna benzer görünecektir:
![]()
Çıktı, verilen aralıkta bağlantı için yalnızca port 22'nin açık olduğunu gösteriyor. Port 22, geleneksel SSH portudur.
Netcat Aracılığıyla İletişim: Nasıl Çalışır?
Sırada, TCP ve UDP paketleri göndermek için netcat'i nasıl kullanabileceğinizi göreceğiz. Sadece bu da değil, aynı zamanda çeşitli portlardan paketler de alabilir. Bu yeteneğin bir sonucu olarak, bir istemci-sunucu ilişkisi oluşturmak için iki netcat örneği kullanabilirsiniz. Başlangıçta, istemciyi ve sunucuyu belirleyeceksiniz. İlk yapılandırmadan sonra, her iki istemci de her iki yönde paket gönderip alabilir.
Doğal olarak, bir sistemde netcat'i bir port üzerinden bağlantıları dinleyecek şekilde yapılandırmanız gerekecektir. Bunu yapmak için -l parametresini kullanmalısınız. Bununla, tercih ettiğiniz portu şu şekilde seçebilirsiniz:
|
1 |
netcat -l 4444 |
Artık bu makinedeki TCP, 4444 numaralı port üzerinden bağlantıları dinliyor olacak. Unutulmaması gereken bir nokta, root olmayan veya normal bir kullanıcıysanız, 1000'in altındaki portlara erişemeyeceğinizdir.
Ardından, bağlantı kurmak için ikinci bir makineyi yapılandırmanız gerekir. Aynı port numarasını kullanacak ve şu şekilde belirli bir alan adı belirteceksiniz:
|
1 |
netcat domain.com 4444 |
Bu komutu çalıştırmak size herhangi bir çıktı vermeyecektir. Ancak bağlantıyı kuracaktır. Bu, sunuculardan herhangi birinden diğerine mesaj göndermeye başlayabileceğiniz anlamına gelir. Bunu yapmak için tek yapmanız gereken mesajı yazıp ardından ENTER tuşuna basmaktır. Mesaj her iki ekranda da görünecektir.
İşiniz bittiğinde, CTRL+D tuşlarına basarak TCP bağlantısını kapatabilirsiniz.
Netcat Kullanarak Dosya Gönderebilir misiniz?
Sırada, netcat aracılığıyla nasıl dosya gönderebileceğinizi göstereceğiz. Bir TCP bağlantısı ile mesajların yanı sıra diğer veri türlerini de gönderebilirsiniz. Başlamak için, bağlantıları dinlemek üzere bir makine seçmelisiniz. Ancak, bilgileri komuta yazmak yerine, şu şekilde bir dosyaya yerleştireceğiz:
|
1 |
netcat -l 4444 > received_file |
Diğer makinede yeni bir metin dosyası oluşturmanız gerekecek. Kullanılacak komut şudur:
|
1 |
echo "Merhaba, bu bir dosyadır" > original_file |
Dosyayı iletmek için, dinleyen bilgisayardaki bağlantı için bir girdi olarak kullanacaksınız:
|
1 |
netcat domain.com 4444 < original_file |
Diğer bilgisayarda 'received_file' adında yeni bir dosya görünecektir. Bu dosya, yazdığımız tüm bilgileri içerecektir:
|
1 |
cat received_file |
Bu yardımcı programı kullanabilir ve bir dosya aktarım programına dönüştürebilirsiniz. Diyelim ki bir dizinin içeriğini aktarmak istiyorsunuz. Bunu, sisteme aktaracağımız ve uzak dizine açacağımız isimsiz bir tarball oluşturarak yapacağız. Diğer makinede, dosyayı almaya hazır olmamız gerekir. Dosyayı açıp çıkartmamız gerekeceğini biliyoruz. Bunu yapmak için şu komutu verin:
|
1 |
netcat -l 4444 | tar xzvf - |
Tire işareti, tar'ın standart girdi üzerinde çalışacağını belirtir. Bu, ilk bağlantıyı kurduğumuzda ilk sunucudaki netcat'ten gelir.
Son olarak, tüm dizinin içeriğini bir tarball içine koyabilir ve netcat aracılığıyla şu şekilde gönderebiliriz:
|
1 |
tar -czf - * | netcat domain.com 4444 |
tar komutundaki tire işareti, sisteme dizin içeriğini tar ve zip yapmasını söylediğimizi gösterir. Ayrıca sonucu standart çıktıya yazmasını talimatlandırır. Dosya, TCP bağlantısı üzerinden diğer uca gidecektir. Alıcı sunucu dosyayı açacak ve mevcut uzak dizine kaydedecektir.
Tıpkı bunun gibi, netcat aracılığıyla diğer veri türlerini de aktarabilirsiniz. Birçok kişi diskleri imajlamak ve aktarmak için dd komutunu kullanır. Veri ve dosya aktarmanın başka bir yolu için SFTP ile dosya aktarırken güvenliğin nasıl sağlanacağını gösteren kılavuzumuza göz atın.
Netcat'i Web Sunucusu Olarak Kullanma
netcat'in bir diğer kullanışlı işlevi de sayfalarınızı test etmek için kullanabilmenizdir. Diyelim ki bunun gibi bir HTML dosyası oluşturmak için bir sunucu kullanıyoruz:
|
1 |
nano index.html |
Dosyanın içerdiği HTML kodu şudur:
|
1 2 3 4 5 6 7 8 9 10 |
<html> <head> <title>Test Sayfası</title> </head> <body> <h1>Seviye 1 başlık</h1> <h2>Alt başlık</h2> <p>Buraya normal metin</p> </body> </html> |
Bunu dosyaya girin, ardından kaydedip kapatın. Genellikle, port 80 varsayılan web portudur. Normal, root olmayan bir kullanıcı olarak 8888 portunu seçeceğiz. Sayfayı bir kez sunmak ve kontrol etmek istediğinizi varsayarsak, şu komutu kullanmalısınız:
|
1 |
printf 'HTTP/1.1 200 OK\n\n%s' "$(cat index.html)" | netcat -l 8888 |
Dosyanın içeriğini görüntülemek için tarayıcınıza gidin. Şunu ziyaret edin:
|
1 |
http://server_IP:8888 |
HTML dosyası ile kodladığınız sayfayı görebileceksiniz:

Sayfayı aldığınızda, netcat bağlantısı kapanacaktır. Bu, sayfayı yenilemenin içerik yerine bir hata vereceği anlamına gelir. Bunun nedeni, sayfayı yalnızca bir kez sunacak şekilde yapılandırmış olmamızdır. Sayfayı süresiz olarak görmek için bağlantı almaya devam etmek istiyorsanız, farklı bir kod kullanacaksınız:
|
1 |
while true; do printf 'HTTP/1.1 200 OK\n\n%s' "$(cat index.html)" | netcat -l 8888; done |
Burada, son komutu sonsuz bir döngüye aldık. Döngüyü durdurmak istiyorsanız tek yapmanız gereken CTRL-C tuşlarına basmaktır. Artık ilk bağlantı kapandıktan sonra bile sayfanızı ve oluşturulmuş halini görüntülemeye devam edebilirsiniz. Ancak bu, netcat aracını bir web sunucusu olarak kullanarak elde edebileceğiniz maksimum işlevselliktir. Herhangi bir güvenlik sağlamadığı için gerçek web sitelerini sunmak amacıyla kullanmayı denemeyin. Bunun yerine, Nginx gibi web sunucusu yazılımlarının nasıl kurulacağı veya Apache.
Sonuç
Bu öğreticide, netcat aracını ele aldık ve Ubuntu üzerinde bir araç olarak çok yönlülüğünü inceledik. Yukarıdaki bölümlerde ele aldığımız gibi, bunu iletişim, veri aktarımı ve sayfa sunma amaçları için kullanabilirsiniz. TCP/UDP bağlantıları aracılığıyla sunucular arasındaki hızlı etkileşimler için mükemmel şekilde çalışır. Birçok temel düzeydeki işlevsellik ve teşhis için oldukça yardımcı bir özelliktir.
Keyifli Bilişimler!
Yorumlar
Henüz yorum yapılmamış. İlk siz olun.