İçindekiler:

Python'da Netcat: 6 Adım
Python'da Netcat: 6 Adım

Video: Python'da Netcat: 6 Adım

Video: Python'da Netcat: 6 Adım
Video: RLWRAPSİZ NETCAT KULLANMA! 2024, Kasım
Anonim
Python'da Netcat
Python'da Netcat

netcat nedir? netcat için kılavuz sayfası şunları söylüyor: "nc (veya netcat) yardımcı programı, güneş altında TCP, UDP veya UNIX etki alanı yuvalarını içeren hemen hemen her şey için kullanılır. TCP bağlantılarını açabilir, UDP paketleri gönderebilir, isteğe bağlı olarak dinleyebilir. TCP ve UDP portları, port taraması yapar ve hem IPv4 hem de IPv6 ile ilgilenir. Telnet(1)'den farklı olarak, nc betikleri güzelce işler ve telnet(1)'in yaptığı gibi, hata mesajlarını standart çıktıya göndermek yerine standart hataya ayırır."

Özünde netcat, TCP veya UDP protokolünü kullanarak diğer sunuculara bağlanmanıza izin verir. TCP, İletim Kontrol Protokolü anlamına gelir ve bağlantı yönelimlidir. UDP, Evrensel Datagram Protokolü anlamına gelir ve bağlantısızdır. TCP, internet uygulamaları için yaygın olarak kullanılırken, UDP medya akışı veya VPN'ler için kullanılır.

Adım 1: Nasıl Başlıyoruz?

Nasıl Başlıyoruz?
Nasıl Başlıyoruz?

Yukarıda netcat'in nasıl çağrıldığı anlatılmaktadır. Sonunda "destination" ve "port" adında iki argüman olduğunu görebilirsiniz. Hedef, bağlanmaya çalıştığımız sunucunun bir ana bilgisayar adını veya ip adresini, bağlantı noktası ise bağlanmaya çalıştığımız sunucunun bağlantı noktasını ifade eder.

2. Adım: Başlayalım

Hadi başlayalım
Hadi başlayalım

Yukarıda bazı başlangıç python kodu var. Gördüğünüz gibi, programın argümanlarını gerçek yardımcı programın yaptığına benzer şekilde işlemek istiyoruz. Ana bilgisayar adı, yürütülebilir dosyanın adından sonraki ilk bağımsız değişken olurken, bağlantı noktası, komut satırında yürütülebilir dosyanın adından sonraki ikinci bağımsız değişken olacaktır.

Adım 3: Bağlantı Oluşturma

Bağlantı Oluşturma
Bağlantı Oluşturma

Kullanabileceğimiz bir netcat fonksiyonu oluşturalım. Burada temel olarak yaptığımız şey bir soket oluşturup verilen parametrelerle sunucuya bağlanmaktır. netcat komutu için geçerli parametreler, bağlanmaya çalıştığımız sunucunun ana bilgisayar adı ve bağlantı noktasıdır. Soket, "socket. AF_INET" ve "socket. SOCK_STREAM" parametrelerini içerir, çünkü bu eğitim için varsayılan olarak bir TCP bağlantısı kullanıyoruz.

Adım 4: Biraz İçerik Gönderelim

Biraz İçerik Gönderelim
Biraz İçerik Gönderelim

Netcat işlevimizi üçüncü bir parametre olan "içerik" alacak şekilde genişlettik. Burada çok fazla içerik var, o yüzden satır numarasına göre ayıralım.

Satır 14-16: Tüm içeriği soket üzerinden göndeririz, biraz bekleriz ve sonra soketin daha fazla veri gelmediğini anlaması için soketi giden verilere kapatırız.

Satır 18-26: Sunucu yanıtını depolamak için bir arabellek oluştururuz ve soket veri alırken, okunacak veri olduğu sürece sonuca 1024 bayta kadar veri ekleriz.

Satır 28-29: Bu netcat bağlantısının tek seferlik bir bağlantı olmasını istiyoruz, bu yüzden bağlantının kapalı olduğunu ilan edip bağlantıyı kapatıyoruz.

31. satır: Bu standart bir HTTP isteğidir. Kodu "google.com" ve "80" komut satırı argümanlarıyla çalıştırırsanız, uygun bir HTTP yanıtı görürsünüz.

Adım 5: Açık Bir Bağlantıya Sahip Olalım

Açık Bağlantı Sağlayalım
Açık Bağlantı Sağlayalım

Yukarıdaki kod (önceki bölümdeki kodun altında bulunur), sözde açık bir bağlantı üzerinden birden fazla netcat komutu çalıştırmamıza izin verir. (Gerçekte, bir komutu her çalıştırdığınızda, yeni bir TCP bağlantısını açar ve sonra kapatır, bu nedenle netcat'in davranışını gerçekten taklit etmez, bunu sadece öğrenme amacıyla yapıyoruz). Bunu da satır satır ayıralım:

Satır 31: "Etkileşimi" sürdürmek için komutları süresiz olarak okumak istiyoruz

Satır 32: Bu, isteğimizin içeriğini depolayacak arabelleğimizdir.

Satır 36-45: Boş bir satır okuyana kadar arabelleğe okuyacağız

Satır 48: ana bilgisayar adı, bağlantı noktası ve yeni oluşturulan içerik (doğru şekilde kodlanmış) ile netcat işlevimizi çağırırız.

Satır 50: arabelleğimizin içeriği "Bağlantı: Kapat" içeriyorsa (bağlantıyı kapatmak istediğimizi belirtir), basitçe döngüden çıkarız

6. Adım: Sonuç

Bu öğreticinin sonunda, minimum düzeyde çalışan bir netcat uygulamasına sahip olmalısınız. Bunu, aşağıdaki gibi özellikleri uygulamak için kullanıcıya bir alıştırma olarak bırakacağım:

1. diğer protokolleri desteklemek

2. kodu her seferinde bağlantıyı kapatmayacak şekilde sabitleme

3. netcat'in davranışı değiştirmek zorunda olduğu bayrakları eklemek

Önerilen: