SlideShare a Scribd company logo
1 of 40
Python İle Ağ
Programlama
Oguzhan Coskun
İçerik Hakkında
Bu belge Python programlama dili ile ağ programlama
bilgileri içerir. Teorik bilgiler az, uygulama örnekleri daha
çok verilmiştir.
Başlamadan önce Python ile çalışırken işimizi
kolaylaştıracak bir kaç aracın kurulumundan ve
yararlarından bahsedeceğiz.
Gereksinimler
>>> //Bu işareti gördüğünüzde Python yorumlayıcısında
çalıştığımızı unutmayalım.
root@soulmac://Bu da benim makinem. Bash
komutlarını verdiğim zaman burada
vereceğim.
Python2.7
Python Package Index
Virtualenv
Python2.7
Üzerinde çalışacağımız sürüm Python2.7. Geçmişten
günümüze Python üzerinde çalışan paketlerin
uyumluluğu ve tarafımdan kod sürekliliği için Python2.7
tercih edilmiştir.
Python Package Index
Python Package Index yani PyPi, Python üzerinde çalışan
tüm paketlerin bulunduğu uzak sunucudur. Ağ
programlamada bu depoyu çokça kez kullanacağız.
http://pypi.python.org
Virtualenv
Virtualenv: virtual environment (sanal ortam), sanal bir
python alanı oluşturup kullandığımız modüllerin,
paketlerin sadece bu sanal ortamda kalmasını, böylelikle
kullandığımız alternatif modüllerin asıl sistemimizdeki
python yorumlayıcısını etkilememesini sağlıyor.
Pip
Pip, Linux dağıtımlarında çalışan Python Package Index e
erişmenin kolay yolu olarak tanımlayabiliriz. Pip
kurulumunu yaparak sunucudan modülleri direk çekebilir
ve kullanabiliriz.
Kurulumlar
Az önce bahsettiğimiz 4 aracın Debian Wheezy
dağıtımında kurulumlarından ve kullanımlarından
bahsedeceğiz.
Python2.7
root@soulmac:/home/oguzhan# apt-get install python2.7
root@soulmac:/home/oguzhan# python2.7
Python 2.7.3 (default, Mar 13 2014, 11:03:55)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more
information.
>>>
Pip
root@soulmac:/home/oguzhan# apt-get install python-pip
root@soulmac:/home/oguzhan# pip install django
Virtualenv
root@soulmac:/home/oguzhan# pip install virtualenv
root@soulmac:/home/oguzhan# virtualenv /opt/sanalortam
root@soulmac:/home/oguzhan# source
/opt/sanalortam/bin/activate
(sanalortam)root@soulmac:/home/oguzhan#
Ağ Programlamaya Giriş
Ağ programlamaya girişte öğrenmemiz gereken temel
terimler ve yöntemler var. Ağ konusu çok geniş olduğu
için temel bilgilere çok fazla giremeyiz. Bu yüzden Ağ
programlamaya başlamaya karar veren birinin en
azından temel ağ ve python bilgisi olması teknik
anlamda öğrenmeye hız kazandıracaktır.
Portlardan başlayacak olursak, fiziksel terim olarak iki
donanımın birbiriyle bağlandığı / iletişime geçtiği
noktadır, bizim ilgileneceğimiz kısımda hemen hemen
aynı ancak ortada fiziksel bir birim yok. Tanımlı olan
65535 port bizi sanal ortamda bir çok uygulamaya
bağlar. Bu uygulamalar, servisler en basiti olarak hemen
hemen her gün bağlandığımız internet gibi, girdiğimiz
sitelerin bize özel sunduğu, yönlendirdiği farklı araçlar
gibi uygulamalardır.
Portlar
TCP / UDP
interneti ele alacak olursak, Global ağ mimarisinde kullandığımız veri
iletişim standartları bu portlar üzerinden dünya üzerindeki tüm
mimarilerin haberleşmesini sağlar, internete çıkabildiğimiz port 80
(HTTP) portudur. Bu port yapısı gereği TCP ve UDP protokollerini
kullanır. Nedir TCP ve UDP? Transmission Control Protocol,
kısacası kayıpsız veri iletimini sağlar. UDP ise TCP’nin yaptığı bir
kaç güvenlik ve sorgu işlemlerini atlayarak iletişimin hızlı olmasını
sağlar ancak kaybı garanti etmez, yani veri kayba uğrayabilir.
Soket
Soket kısaca, diğer programlarla standart Unix dosya tanımlayıcılarını
kullanarak haberleşmemizi sağlayan yapıdır. Bu yapıya ulaşmak için
socket( ) işlevini çağırmamız gerekir. Bu işlev bize bir soket
tanımlayıcı döndürür.
3 tip soket tanımlayıcı vardır. Bunlar İnternet soketleri, Unix soketleri
ve X.25 soketleridir. Hepsini ayrı ayrı incelemek uzun zaman
alacağından, sadece internet soketlerini göreceğiz.
ornek1.1
>>>import socket
>>>socket.getservbyname(‘domain’)
53
ornek1.1
Basit bir örnekle başladık. 1. satırdan inceleyerek gelecek olursak;
Python’da kütüphane tanımlamaları import komutuyla dosyaya
eklenir. Biz de socket sınıfını dosyamıza ekledik. 2. satırda socket
sınıfının altında tanımlanmış olan bir fonksiyonu çağırdık. Bu
fonksiyon eğer çıktıya bakacak olursak, adını girdiğimiz portun port
numarasını döndürür. Çıktıda da gördüğümüz gibi domain portu 53.
DGRAM / STREAM
Şimdi internet soketlerinin ikiye ayrıldığı yol ayrımına gelelim. Daha
önce bahsettiğimiz TCP ve UDP transfer çeşitleri burada karşımıza
çıkıyor. İnternet soketleri de TCP için SOCK_STREAM, UDP için
SOCK_DGRAM olarak ayrılıyor. SOCK_STREAM; verileri güvenilir
kanaldan taşır. SOCK_DGRAM ise SOCK_STREAM’e göre hızlı
fakat güvenliği garanti etmeyen soketlerdir. Bu iki yapının seçimi
yapılacak uygulamaya göre farklılık gösterir.
SOCK_DGRAM
ornek12.py
# -*- coding: utf-8 -*-
#Localhost üzerinde UDP Server ve Client
import socket, sys
s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
max=65535
port=1060
if sys.argv[1:] == [‘server’]:
s.bind((‘127.0.0.1’,port))
print s.getsockname(), ‘dinleniyor’
while True:
data, address=s.recvfrom(max)
print ‘İstemci ’, address, ‘ üzerinden yazıyor..’,repr(data)
s.sendto(‘Veri boyutu %d byte’%len(data),address)
elif sys.argv[1:]==[‘client’]:
s.sendto(‘Bu benim mesajım’,(‘127.0.0.1’, port))
data, address = s.recvfrom(max)
print ‘Server’, address, ‘üzerinden yazıyor’,repr(data)
else:
print >>sys.stderr, ‘kullanimi: ornek12.py server|client’
ornek12.py de ne yaptık?
Açıklama satırında yazanı yaptık. Daha önce bahsettiğimiz
SOCK_DGRAM kullandık yani UDP transfer. İki tip tanımladık
bunlar, server ve client. Server ı başlattığımızda 1060 numaralı
portu dinliyor ve bu porta bağlanana istemcilerin mesajlarını çıktı
veriyor. Dikkat edeceğimiz önemli bir nokta var. Aşağıdaki çıktıya
bakarak bunu anlayalım:
# python ornek12.py
+server tarafı
root@soulmac:/home/oguzhan# python ornek12.py server
('127.0.0.1', 1060) dinleniyor
+client tarafı
root@soulmac:/home/oguzhan# python ornek12.py client
Server ('127.0.0.1', 1060) üzerinden yazıyor 'Veri boyutu 17 byte'
root@soulmac:/home/oguzhan#
+server tarafı
root@soulmac:/home/oguzhan# python ornek12.py server
('127.0.0.1', 1060) dinleniyor
İstemci ('127.0.0.1', 33495) üzerinden yazıyor.. 'Bu benim mesajım'
ornek12.py
Server tarafında 1060 numaralı portu dinlerken client tarafında
uygulamayı çalıştırdığımızda 1060 portuna ‘Bu benim mesajım’
şeklinde bir mesaj gönderiyor, ancak bunu 33495 portu üzerinden
gönderiyor. Başlangıçta 1060 portunu kontrol eden client, serverin
açık olup olmadığına bakıyor, eğer açıksa 65535 port arasından
uygun olan port üzerinden 1060 numaralı porta veriyi gönderiyor.
ornek12.py
Öncelikle bir soket tanımlamalıyız ve bu soketin türünü yani internet,
unix ya da x25 soketleri arasından hangisi olduğunu belirtmeliyiz ve
yine TCP mi yoksa UDP mi olduğunu göstermeliyiz. Bu
tanımlamaları socket.socket(socket.AF_INET,
socket.SOCK_DGRAM) satırında yaptık. Burada AF_INET internet
soketini kullanacağımızı, SOCK_DGRAM ise bu iletişimin UDP
protokolü çerçevesinde gideceğini gösteriyor. bind() komutuyla
localhost üzerinde trafiğin hangi porttan akacağını belirtiyoruz ve
diğer iletişim kurallarına geçiyoruz. sendto( ) ile verimizi gönderme
işlemini gerçekleştiriyoruz.
SOCK_STREAM
SOCK_STREAM ler veri kayıpsız bir iletişim altyapısı sunan TCP
protokolü üzerinde hareket ederler. ornek12.py de konumuz
tamamen UDP yani SOCK_DGRAM dı. Şimdi ise SOCK_STREAM
dan bahsedeceğiz. ornek12.py de kullandığımız soket tanımlamanın
aynısını kullanacağız. İşleyiş aynı ancak felsefe farklı.
#python2.7
>>>import socket
>>>s=socket.socket(socket_AF_INET,
socket.SOCK_STREAM)
>>>
SOCK_STREAM
Felsefeye gelecek olursak, o da basit, UDP, TCP gibi davranmaz ve
bir kaç kontrol noktasını atlayarak iletişimin daha hızlı olmasını ister,
ancak bu hız kayıpları da beraberinde getirebilir. TCP ise size hızı
garanti edemez, trafik yoğunluğuna göre değişir ancak kayıpsız bir
transferi garanti eder.
SOKET İSİMLERİ
ornek12.py de gördüğümüz ve aslında daha önce görmediğimiz
tanımları burada ayrıntılı işleyeceğiz. Her bir tanımın ne işe
yaradığını daha iyi anlamak için bu bölüm yeterli olacaktır.
SOKET OLUŞTURMAK
socket(family,type,[protocol])
o family: Bu parametre soketin hangi alan için oluşturulduğunu belirtir. Unix için
AF_UNIX, internet için AF_INET tanımlaması yapmak gerekir.
o type: Kullanılacak protokol tipini belirtir. Bu protokoller TCP ya da UDP dir. TCP için
SOCK_STREAM, UDP için SOCK_DGRAM tanımlanmıştır. Diğer seçenekler,
SOCK_RAW, SOCK_SEQPACKET, SOCK_RDM.
o protocol: Bu parametre varsayılan olarak 0 dır ve bizde böyle bırakıyoruz.
SOKET BAĞLAMAK
Oluşturulan soketler sunucu ya da istemci taraflı kullanılabilir. Sunucu taraflı
bağlanacaksa bir hosta bağlamamız gerekir. bu bağlama olayını connect( ) metodu ile
gerçekleştireceğiz. Örnek olarak 192.168.1.17 ve port numarası 9562 olan bir hosta
bağlanmak için:
connect((‘192.168.1.17’, 9562))
SOKETİ BİR ADRESE BAĞLAMAK
bind( ) metodu işimizi görecektir. bind( ) parametre olarak soketin bağlanacağı adresi ve
port numarasını verir, bu sayede gelen isteklerin dinleneceği bir ortam oluşur.
bind((‘192.168.1.17’,9562))
BAĞLANTILARI
DİNLEMEK
Soket belirli bir adrese bağlandıktan sonra, belirtilen porttan gelen istekleri dinlemek için
görevlendirilir. Bu amaçla listen( ) metodu kullanılır. Parametre olarak kaç bağlantının
kabul edileceği belirtilir. En az 1 olmalıdır.
listen(5)
VERİ GÖNDERMEK /
ALMAK
Veri recv( ) ve send( ) metodlarıyla aktarılır. recv( ) metodu sunucu ya da istemciden
gönderilen veriyi almak için kullanılır. Parametre olarak buffer size (tampon boyu) ve
flags(bayraklar) alır.
buffer_size = 1024
recv(buffer_size)
Veri göndermek için send( ) metodu çağırılır. Parametre olarak gönderilecek veri ve bayrak
alır.
veri=’test verisi’
send(veri)
TSL VE SSL
Secure Socket Layer (Güvenli Giriş Katmanı) protokolü, internet
üzerinden şifrelenmiş güvenli veri iletişimi sağlar. E-posta
gönderiminde, FTP transferinde ve bir çok alışveriş sitesinde
güvenlik amacıyla kullanılıyor.
TSL VE SSL
Şifreleme esası açık anahtarlı şifrelemeye dayanır.
SSL protokolü geliştirildi ve isim değiştirdi. TLS adıyla sunucu-istemci
uygulamaların ağ üzerinde, dinlenmelerinin ve asıl verinin üzerinde
oynama yapılmasının önüne geçecek şekilde tasarlandı. Bu protokol
uygulama katmanında çalışır.
TSL VE SSL
>>>import ssl
>>>ssl.cert_time_to_seconds(“May 7 00:00:00 2014 GMT”)
>>>1399410000.0
TSL VE SSL
Burada ssl sınıfına ait olan cert_time_to_seconds fonksiyonunu
kullandık. Bu fonksiyon string bir tarih verisini alıp Unix Time da
karşılığını verir. Şimdi SSL ile tarihi saniye cinsinden yazdırmak
nedir? sorusuna gelirsek, ssl bir imza olarak kullanılır, imzada tarih
önemlidir. Unix Time da saniye olarak geri dönen veri imza için
kullanılır.
LOGLAMA
Ağ uygulamalarında log mesajları önemlidir. Bu mesajları üretip,
yedeklemek, uygulamalarımızda karşılaşılan sorunları, hangi
durumda olduğumuzu bilmemizi sağlar. Bu işlem için pythonda
bilinen syslog ve logging modülleri vardır. Biz logging modülünü
kullanacağız.
ornek13.py
import logging
logger=logging.getLogger()
logger.setLevel(logging.INFO)
handler=logging.FileHandler(‘/home/oguzhan/test.log’)
logger.addHandler(handler)
logger.error(‘hata mesaji’)
logger.info(‘bilgi mesaji’)
logger.warning(‘uyari mesaji’)
ornek13.py
root@soulmac:/home/oguzhan# python2.7 ornek13.py
root@soulmac:/home/oguzhan# cat test.log
hata mesaji
bilgi mesaji
uyari mesaji
Uygulamayı çalıştırdığımızda handler da tanımladığımız yola yani
test.log dosyasına bu çıktıları yazdığını göreceğiz.
KAYNAK
Foundations of Python Network Programming - Brandon Rhodes,
John Goerzen 2010

More Related Content

What's hot

PORT TARAMA ve KEŞİF ÇALIŞMALARI
PORT TARAMA ve KEŞİF ÇALIŞMALARI PORT TARAMA ve KEŞİF ÇALIŞMALARI
PORT TARAMA ve KEŞİF ÇALIŞMALARI BGA Cyber Security
 
Nmap101 Eğitim Sunumu - Nmap Kullanım Kılavuzu
Nmap101 Eğitim Sunumu - Nmap Kullanım KılavuzuNmap101 Eğitim Sunumu - Nmap Kullanım Kılavuzu
Nmap101 Eğitim Sunumu - Nmap Kullanım KılavuzuMehmet Caner Köroğlu
 
Arp protokolu ve guvenlik zafiyeti
Arp  protokolu ve guvenlik zafiyetiArp  protokolu ve guvenlik zafiyeti
Arp protokolu ve guvenlik zafiyetiBGA Cyber Security
 
Beyaz Şapkalı Hacker Eğitimi Yardımcı Ders Notları
Beyaz Şapkalı Hacker Eğitimi Yardımcı Ders NotlarıBeyaz Şapkalı Hacker Eğitimi Yardımcı Ders Notları
Beyaz Şapkalı Hacker Eğitimi Yardımcı Ders NotlarıBGA Cyber Security
 
Nessus Kullanım Kitapçığı
Nessus Kullanım KitapçığıNessus Kullanım Kitapçığı
Nessus Kullanım KitapçığıBGA Cyber Security
 
Derinlemesine Paket İnceleme (Deep Packet Inspection)
Derinlemesine Paket İnceleme (Deep Packet Inspection)Derinlemesine Paket İnceleme (Deep Packet Inspection)
Derinlemesine Paket İnceleme (Deep Packet Inspection)BGA Cyber Security
 
SIZMA TESTLERİNDE BİLGİ TOPLAMA
SIZMA TESTLERİNDE BİLGİ TOPLAMASIZMA TESTLERİNDE BİLGİ TOPLAMA
SIZMA TESTLERİNDE BİLGİ TOPLAMABGA Cyber Security
 
Uygulamalı Ağ Güvenliği Eğitimi Lab Çalışmaları
Uygulamalı Ağ Güvenliği Eğitimi Lab ÇalışmalarıUygulamalı Ağ Güvenliği Eğitimi Lab Çalışmaları
Uygulamalı Ağ Güvenliği Eğitimi Lab ÇalışmalarıBGA Cyber Security
 
Siber Güvenlik ve Etik Hacking Sunu - 10
Siber Güvenlik ve Etik Hacking Sunu - 10Siber Güvenlik ve Etik Hacking Sunu - 10
Siber Güvenlik ve Etik Hacking Sunu - 10Murat KARA
 
LINUX, WINDOWS VE AĞ SİSTEMLERİ SIZMA TESTLERİ
LINUX, WINDOWS VE AĞ SİSTEMLERİ SIZMA TESTLERİ LINUX, WINDOWS VE AĞ SİSTEMLERİ SIZMA TESTLERİ
LINUX, WINDOWS VE AĞ SİSTEMLERİ SIZMA TESTLERİ BGA Cyber Security
 
Hacklenmiş Windows Sistem Analizi
Hacklenmiş Windows Sistem AnaliziHacklenmiş Windows Sistem Analizi
Hacklenmiş Windows Sistem AnaliziBGA Cyber Security
 
TCP/IP Ağlarda Parçalanmış Paketler ve Etkileri
TCP/IP Ağlarda Parçalanmış Paketler ve EtkileriTCP/IP Ağlarda Parçalanmış Paketler ve Etkileri
TCP/IP Ağlarda Parçalanmış Paketler ve EtkileriBGA Cyber Security
 
Log Yönetimi ve Saldırı Analizi Eğitimi -1
Log Yönetimi ve Saldırı Analizi Eğitimi -1Log Yönetimi ve Saldırı Analizi Eğitimi -1
Log Yönetimi ve Saldırı Analizi Eğitimi -1BGA Cyber Security
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 1, 2, 3
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 1, 2, 3Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 1, 2, 3
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 1, 2, 3BGA Cyber Security
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15BGA Cyber Security
 
Kablosuz Ağ Saldırı Araçları
Kablosuz Ağ Saldırı AraçlarıKablosuz Ağ Saldırı Araçları
Kablosuz Ağ Saldırı AraçlarıBGA Cyber Security
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9BGA Cyber Security
 

What's hot (20)

PORT TARAMA ve KEŞİF ÇALIŞMALARI
PORT TARAMA ve KEŞİF ÇALIŞMALARI PORT TARAMA ve KEŞİF ÇALIŞMALARI
PORT TARAMA ve KEŞİF ÇALIŞMALARI
 
Nmap101 Eğitim Sunumu - Nmap Kullanım Kılavuzu
Nmap101 Eğitim Sunumu - Nmap Kullanım KılavuzuNmap101 Eğitim Sunumu - Nmap Kullanım Kılavuzu
Nmap101 Eğitim Sunumu - Nmap Kullanım Kılavuzu
 
Arp protokolu ve guvenlik zafiyeti
Arp  protokolu ve guvenlik zafiyetiArp  protokolu ve guvenlik zafiyeti
Arp protokolu ve guvenlik zafiyeti
 
Beyaz Şapkalı Hacker Eğitimi Yardımcı Ders Notları
Beyaz Şapkalı Hacker Eğitimi Yardımcı Ders NotlarıBeyaz Şapkalı Hacker Eğitimi Yardımcı Ders Notları
Beyaz Şapkalı Hacker Eğitimi Yardımcı Ders Notları
 
Nessus Kullanım Kitapçığı
Nessus Kullanım KitapçığıNessus Kullanım Kitapçığı
Nessus Kullanım Kitapçığı
 
Derinlemesine Paket İnceleme (Deep Packet Inspection)
Derinlemesine Paket İnceleme (Deep Packet Inspection)Derinlemesine Paket İnceleme (Deep Packet Inspection)
Derinlemesine Paket İnceleme (Deep Packet Inspection)
 
VERİTABANI SIZMA TESTLERİ
VERİTABANI SIZMA TESTLERİVERİTABANI SIZMA TESTLERİ
VERİTABANI SIZMA TESTLERİ
 
SIZMA TESTLERİNDE BİLGİ TOPLAMA
SIZMA TESTLERİNDE BİLGİ TOPLAMASIZMA TESTLERİNDE BİLGİ TOPLAMA
SIZMA TESTLERİNDE BİLGİ TOPLAMA
 
Uygulamalı Ağ Güvenliği Eğitimi Lab Çalışmaları
Uygulamalı Ağ Güvenliği Eğitimi Lab ÇalışmalarıUygulamalı Ağ Güvenliği Eğitimi Lab Çalışmaları
Uygulamalı Ağ Güvenliği Eğitimi Lab Çalışmaları
 
Tcp ip
Tcp ipTcp ip
Tcp ip
 
Siber Güvenlik ve Etik Hacking Sunu - 10
Siber Güvenlik ve Etik Hacking Sunu - 10Siber Güvenlik ve Etik Hacking Sunu - 10
Siber Güvenlik ve Etik Hacking Sunu - 10
 
LINUX, WINDOWS VE AĞ SİSTEMLERİ SIZMA TESTLERİ
LINUX, WINDOWS VE AĞ SİSTEMLERİ SIZMA TESTLERİ LINUX, WINDOWS VE AĞ SİSTEMLERİ SIZMA TESTLERİ
LINUX, WINDOWS VE AĞ SİSTEMLERİ SIZMA TESTLERİ
 
Hacklenmiş Windows Sistem Analizi
Hacklenmiş Windows Sistem AnaliziHacklenmiş Windows Sistem Analizi
Hacklenmiş Windows Sistem Analizi
 
TCP/IP Ağlarda Parçalanmış Paketler ve Etkileri
TCP/IP Ağlarda Parçalanmış Paketler ve EtkileriTCP/IP Ağlarda Parçalanmış Paketler ve Etkileri
TCP/IP Ağlarda Parçalanmış Paketler ve Etkileri
 
Log Yönetimi ve Saldırı Analizi Eğitimi -1
Log Yönetimi ve Saldırı Analizi Eğitimi -1Log Yönetimi ve Saldırı Analizi Eğitimi -1
Log Yönetimi ve Saldırı Analizi Eğitimi -1
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 1, 2, 3
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 1, 2, 3Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 1, 2, 3
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 1, 2, 3
 
PAROLA KIRMA SALDIRILARI
PAROLA KIRMA SALDIRILARIPAROLA KIRMA SALDIRILARI
PAROLA KIRMA SALDIRILARI
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15
 
Kablosuz Ağ Saldırı Araçları
Kablosuz Ağ Saldırı AraçlarıKablosuz Ağ Saldırı Araçları
Kablosuz Ağ Saldırı Araçları
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9
 

Viewers also liked

Python mu Java mı?
Python mu Java mı?Python mu Java mı?
Python mu Java mı?aerkanc
 
Ruby - Dünyanın En Güzel Programlama Dili
Ruby - Dünyanın En Güzel Programlama DiliRuby - Dünyanın En Güzel Programlama Dili
Ruby - Dünyanın En Güzel Programlama DiliSerdar Dogruyol
 
Python Programlama Dili Eğitimi
Python Programlama Dili EğitimiPython Programlama Dili Eğitimi
Python Programlama Dili EğitimiEnes Ateş
 
Tcpdump ile Trafik Analizi(Sniffing)
Tcpdump ile Trafik Analizi(Sniffing)Tcpdump ile Trafik Analizi(Sniffing)
Tcpdump ile Trafik Analizi(Sniffing)BGA Cyber Security
 
AI - Tekil 12 GSÜ
AI - Tekil 12 GSÜAI - Tekil 12 GSÜ
AI - Tekil 12 GSÜBurak Evren
 
Yapay Zeka, Deep Learning and Machine Learning
Yapay Zeka, Deep Learning and Machine LearningYapay Zeka, Deep Learning and Machine Learning
Yapay Zeka, Deep Learning and Machine LearningAlper Nebi Kanlı
 
Özgür Yazılımlarla Görüntü İşleme
Özgür Yazılımlarla Görüntü İşlemeÖzgür Yazılımlarla Görüntü İşleme
Özgür Yazılımlarla Görüntü İşlemeEnes Ateş
 
TCP/IP Ağlarda İleri Seviye Paket Analizi – Tshark
TCP/IP Ağlarda İleri Seviye Paket Analizi – TsharkTCP/IP Ağlarda İleri Seviye Paket Analizi – Tshark
TCP/IP Ağlarda İleri Seviye Paket Analizi – TsharkBGA Cyber Security
 
HTTPS Ne Kadar Güvenlidir?(sslstrip)
HTTPS Ne Kadar Güvenlidir?(sslstrip)HTTPS Ne Kadar Güvenlidir?(sslstrip)
HTTPS Ne Kadar Güvenlidir?(sslstrip)BGA Cyber Security
 
Büyük Veri ve Risk Yönetimi
Büyük Veri ve Risk YönetimiBüyük Veri ve Risk Yönetimi
Büyük Veri ve Risk YönetimiFatma ÇINAR
 
10-Kablosuz Ağlardaki Zaafiyetler
10-Kablosuz Ağlardaki Zaafiyetler10-Kablosuz Ağlardaki Zaafiyetler
10-Kablosuz Ağlardaki ZaafiyetlerÖnay Kıvılcım
 
YAPAY ZEKÂ VE DUYGUSAL ZEKÂ KULLANIM FARKLILIKLARININ İNCELENMESİ: TEKNOLOJİK...
YAPAY ZEKÂ VE DUYGUSAL ZEKÂ KULLANIM FARKLILIKLARININ İNCELENMESİ: TEKNOLOJİK...YAPAY ZEKÂ VE DUYGUSAL ZEKÂ KULLANIM FARKLILIKLARININ İNCELENMESİ: TEKNOLOJİK...
YAPAY ZEKÂ VE DUYGUSAL ZEKÂ KULLANIM FARKLILIKLARININ İNCELENMESİ: TEKNOLOJİK...SELENGCN
 
Görüntü işleme
Görüntü işlemeGörüntü işleme
Görüntü işlemeErol Dizdar
 

Viewers also liked (18)

Python mu Java mı?
Python mu Java mı?Python mu Java mı?
Python mu Java mı?
 
Ruby - Dünyanın En Güzel Programlama Dili
Ruby - Dünyanın En Güzel Programlama DiliRuby - Dünyanın En Güzel Programlama Dili
Ruby - Dünyanın En Güzel Programlama Dili
 
Python Programlama Dili Eğitimi
Python Programlama Dili EğitimiPython Programlama Dili Eğitimi
Python Programlama Dili Eğitimi
 
EXPLOIT POST EXPLOITATION
EXPLOIT POST EXPLOITATIONEXPLOIT POST EXPLOITATION
EXPLOIT POST EXPLOITATION
 
Holynix v1
Holynix v1Holynix v1
Holynix v1
 
Pasif Bilgi Toplama
Pasif Bilgi ToplamaPasif Bilgi Toplama
Pasif Bilgi Toplama
 
Nmap Kullanım Kitapçığı
Nmap Kullanım KitapçığıNmap Kullanım Kitapçığı
Nmap Kullanım Kitapçığı
 
Tcpdump ile Trafik Analizi(Sniffing)
Tcpdump ile Trafik Analizi(Sniffing)Tcpdump ile Trafik Analizi(Sniffing)
Tcpdump ile Trafik Analizi(Sniffing)
 
Yapay Zeka
Yapay ZekaYapay Zeka
Yapay Zeka
 
AI - Tekil 12 GSÜ
AI - Tekil 12 GSÜAI - Tekil 12 GSÜ
AI - Tekil 12 GSÜ
 
Yapay Zeka, Deep Learning and Machine Learning
Yapay Zeka, Deep Learning and Machine LearningYapay Zeka, Deep Learning and Machine Learning
Yapay Zeka, Deep Learning and Machine Learning
 
Özgür Yazılımlarla Görüntü İşleme
Özgür Yazılımlarla Görüntü İşlemeÖzgür Yazılımlarla Görüntü İşleme
Özgür Yazılımlarla Görüntü İşleme
 
TCP/IP Ağlarda İleri Seviye Paket Analizi – Tshark
TCP/IP Ağlarda İleri Seviye Paket Analizi – TsharkTCP/IP Ağlarda İleri Seviye Paket Analizi – Tshark
TCP/IP Ağlarda İleri Seviye Paket Analizi – Tshark
 
HTTPS Ne Kadar Güvenlidir?(sslstrip)
HTTPS Ne Kadar Güvenlidir?(sslstrip)HTTPS Ne Kadar Güvenlidir?(sslstrip)
HTTPS Ne Kadar Güvenlidir?(sslstrip)
 
Büyük Veri ve Risk Yönetimi
Büyük Veri ve Risk YönetimiBüyük Veri ve Risk Yönetimi
Büyük Veri ve Risk Yönetimi
 
10-Kablosuz Ağlardaki Zaafiyetler
10-Kablosuz Ağlardaki Zaafiyetler10-Kablosuz Ağlardaki Zaafiyetler
10-Kablosuz Ağlardaki Zaafiyetler
 
YAPAY ZEKÂ VE DUYGUSAL ZEKÂ KULLANIM FARKLILIKLARININ İNCELENMESİ: TEKNOLOJİK...
YAPAY ZEKÂ VE DUYGUSAL ZEKÂ KULLANIM FARKLILIKLARININ İNCELENMESİ: TEKNOLOJİK...YAPAY ZEKÂ VE DUYGUSAL ZEKÂ KULLANIM FARKLILIKLARININ İNCELENMESİ: TEKNOLOJİK...
YAPAY ZEKÂ VE DUYGUSAL ZEKÂ KULLANIM FARKLILIKLARININ İNCELENMESİ: TEKNOLOJİK...
 
Görüntü işleme
Görüntü işlemeGörüntü işleme
Görüntü işleme
 

Similar to Python İle Ağ Programlama

Packet-O-Matic:Network Forensic Aracı
Packet-O-Matic:Network Forensic AracıPacket-O-Matic:Network Forensic Aracı
Packet-O-Matic:Network Forensic AracıBGA Cyber Security
 
Web Uygulama Güvenliği Ve Güvenli Kod Geliştirme Eğitim Notlarım
Web Uygulama Güvenliği Ve Güvenli Kod Geliştirme Eğitim NotlarımWeb Uygulama Güvenliği Ve Güvenli Kod Geliştirme Eğitim Notlarım
Web Uygulama Güvenliği Ve Güvenli Kod Geliştirme Eğitim NotlarımNur Yesilyurt
 
Temel Ağ Sızma Testine Giriş Dökümanı
Temel Ağ Sızma Testine Giriş DökümanıTemel Ağ Sızma Testine Giriş Dökümanı
Temel Ağ Sızma Testine Giriş DökümanıAhmet Gürel
 
Tcp ip
Tcp ipTcp ip
Tcp ipepoxxy
 
Wireshark.pdf
Wireshark.pdfWireshark.pdf
Wireshark.pdfandrohitt
 
OSI (Open System Interconnection)
OSI (Open System Interconnection)OSI (Open System Interconnection)
OSI (Open System Interconnection)Ali Can Uzunhan
 
OSI Referans Modeli ve Katmanları - Alican Uzunhan
OSI Referans Modeli ve Katmanları - Alican UzunhanOSI Referans Modeli ve Katmanları - Alican Uzunhan
OSI Referans Modeli ve Katmanları - Alican UzunhanMesut Güneş
 
Linux sunucularda bandwitch monitoring araçları
Linux sunucularda bandwitch monitoring araçlarıLinux sunucularda bandwitch monitoring araçları
Linux sunucularda bandwitch monitoring araçlarıAhmet Han
 
Siber Güvenlik 1. hafta
Siber Güvenlik 1. haftaSiber Güvenlik 1. hafta
Siber Güvenlik 1. haftaOnur Er
 
Network101 murat arslan
Network101 murat arslanNetwork101 murat arslan
Network101 murat arslanMURAT ARSLAN
 
Temel ağ bilgisi
Temel ağ bilgisiTemel ağ bilgisi
Temel ağ bilgisiBegüm Erol
 
Socket Programming.pdf
Socket Programming.pdfSocket Programming.pdf
Socket Programming.pdfYasinKabak
 
Sistem ve network
Sistem ve networkSistem ve network
Sistem ve networkAba Emekçi
 
Hping ile IP/ICMP ve UDP Paketleri Oluşturma
Hping ile IP/ICMP ve UDP Paketleri OluşturmaHping ile IP/ICMP ve UDP Paketleri Oluşturma
Hping ile IP/ICMP ve UDP Paketleri OluşturmaBGA Cyber Security
 
Cmd (ms dos) komutları cansu salduz
Cmd (ms dos) komutları cansu salduzCmd (ms dos) komutları cansu salduz
Cmd (ms dos) komutları cansu salduzOnur Kılıç
 
RPC Zafiyetlerinin Keşfi
RPC Zafiyetlerinin KeşfiRPC Zafiyetlerinin Keşfi
RPC Zafiyetlerinin KeşfiSignalSEC Ltd.
 

Similar to Python İle Ağ Programlama (20)

Packet-O-Matic:Network Forensic Aracı
Packet-O-Matic:Network Forensic AracıPacket-O-Matic:Network Forensic Aracı
Packet-O-Matic:Network Forensic Aracı
 
Web Uygulama Güvenliği Ve Güvenli Kod Geliştirme Eğitim Notlarım
Web Uygulama Güvenliği Ve Güvenli Kod Geliştirme Eğitim NotlarımWeb Uygulama Güvenliği Ve Güvenli Kod Geliştirme Eğitim Notlarım
Web Uygulama Güvenliği Ve Güvenli Kod Geliştirme Eğitim Notlarım
 
Temel Ağ Sızma Testine Giriş Dökümanı
Temel Ağ Sızma Testine Giriş DökümanıTemel Ağ Sızma Testine Giriş Dökümanı
Temel Ağ Sızma Testine Giriş Dökümanı
 
Tcp ip
Tcp ipTcp ip
Tcp ip
 
Ağ Temelleri
Ağ TemelleriAğ Temelleri
Ağ Temelleri
 
Wireshark.pdf
Wireshark.pdfWireshark.pdf
Wireshark.pdf
 
OSI (Open System Interconnection)
OSI (Open System Interconnection)OSI (Open System Interconnection)
OSI (Open System Interconnection)
 
OSI Referans Modeli ve Katmanları - Alican Uzunhan
OSI Referans Modeli ve Katmanları - Alican UzunhanOSI Referans Modeli ve Katmanları - Alican Uzunhan
OSI Referans Modeli ve Katmanları - Alican Uzunhan
 
Linux sunucularda bandwitch monitoring araçları
Linux sunucularda bandwitch monitoring araçlarıLinux sunucularda bandwitch monitoring araçları
Linux sunucularda bandwitch monitoring araçları
 
AğAğ
 
Siber Güvenlik 1. hafta
Siber Güvenlik 1. haftaSiber Güvenlik 1. hafta
Siber Güvenlik 1. hafta
 
Ubuntu Linux
Ubuntu LinuxUbuntu Linux
Ubuntu Linux
 
Network101 murat arslan
Network101 murat arslanNetwork101 murat arslan
Network101 murat arslan
 
Temel ağ bilgisi
Temel ağ bilgisiTemel ağ bilgisi
Temel ağ bilgisi
 
Socket Programming.pdf
Socket Programming.pdfSocket Programming.pdf
Socket Programming.pdf
 
Sistem ve network
Sistem ve networkSistem ve network
Sistem ve network
 
Nmap & Hping
Nmap & HpingNmap & Hping
Nmap & Hping
 
Hping ile IP/ICMP ve UDP Paketleri Oluşturma
Hping ile IP/ICMP ve UDP Paketleri OluşturmaHping ile IP/ICMP ve UDP Paketleri Oluşturma
Hping ile IP/ICMP ve UDP Paketleri Oluşturma
 
Cmd (ms dos) komutları cansu salduz
Cmd (ms dos) komutları cansu salduzCmd (ms dos) komutları cansu salduz
Cmd (ms dos) komutları cansu salduz
 
RPC Zafiyetlerinin Keşfi
RPC Zafiyetlerinin KeşfiRPC Zafiyetlerinin Keşfi
RPC Zafiyetlerinin Keşfi
 

Python İle Ağ Programlama

  • 2. İçerik Hakkında Bu belge Python programlama dili ile ağ programlama bilgileri içerir. Teorik bilgiler az, uygulama örnekleri daha çok verilmiştir. Başlamadan önce Python ile çalışırken işimizi kolaylaştıracak bir kaç aracın kurulumundan ve yararlarından bahsedeceğiz.
  • 3. Gereksinimler >>> //Bu işareti gördüğünüzde Python yorumlayıcısında çalıştığımızı unutmayalım. root@soulmac://Bu da benim makinem. Bash komutlarını verdiğim zaman burada vereceğim. Python2.7 Python Package Index Virtualenv
  • 4. Python2.7 Üzerinde çalışacağımız sürüm Python2.7. Geçmişten günümüze Python üzerinde çalışan paketlerin uyumluluğu ve tarafımdan kod sürekliliği için Python2.7 tercih edilmiştir.
  • 5. Python Package Index Python Package Index yani PyPi, Python üzerinde çalışan tüm paketlerin bulunduğu uzak sunucudur. Ağ programlamada bu depoyu çokça kez kullanacağız. http://pypi.python.org
  • 6. Virtualenv Virtualenv: virtual environment (sanal ortam), sanal bir python alanı oluşturup kullandığımız modüllerin, paketlerin sadece bu sanal ortamda kalmasını, böylelikle kullandığımız alternatif modüllerin asıl sistemimizdeki python yorumlayıcısını etkilememesini sağlıyor.
  • 7. Pip Pip, Linux dağıtımlarında çalışan Python Package Index e erişmenin kolay yolu olarak tanımlayabiliriz. Pip kurulumunu yaparak sunucudan modülleri direk çekebilir ve kullanabiliriz.
  • 8. Kurulumlar Az önce bahsettiğimiz 4 aracın Debian Wheezy dağıtımında kurulumlarından ve kullanımlarından bahsedeceğiz.
  • 9. Python2.7 root@soulmac:/home/oguzhan# apt-get install python2.7 root@soulmac:/home/oguzhan# python2.7 Python 2.7.3 (default, Mar 13 2014, 11:03:55) [GCC 4.7.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>>
  • 10. Pip root@soulmac:/home/oguzhan# apt-get install python-pip root@soulmac:/home/oguzhan# pip install django
  • 11. Virtualenv root@soulmac:/home/oguzhan# pip install virtualenv root@soulmac:/home/oguzhan# virtualenv /opt/sanalortam root@soulmac:/home/oguzhan# source /opt/sanalortam/bin/activate (sanalortam)root@soulmac:/home/oguzhan#
  • 12. Ağ Programlamaya Giriş Ağ programlamaya girişte öğrenmemiz gereken temel terimler ve yöntemler var. Ağ konusu çok geniş olduğu için temel bilgilere çok fazla giremeyiz. Bu yüzden Ağ programlamaya başlamaya karar veren birinin en azından temel ağ ve python bilgisi olması teknik anlamda öğrenmeye hız kazandıracaktır.
  • 13. Portlardan başlayacak olursak, fiziksel terim olarak iki donanımın birbiriyle bağlandığı / iletişime geçtiği noktadır, bizim ilgileneceğimiz kısımda hemen hemen aynı ancak ortada fiziksel bir birim yok. Tanımlı olan 65535 port bizi sanal ortamda bir çok uygulamaya bağlar. Bu uygulamalar, servisler en basiti olarak hemen hemen her gün bağlandığımız internet gibi, girdiğimiz sitelerin bize özel sunduğu, yönlendirdiği farklı araçlar gibi uygulamalardır. Portlar
  • 14. TCP / UDP interneti ele alacak olursak, Global ağ mimarisinde kullandığımız veri iletişim standartları bu portlar üzerinden dünya üzerindeki tüm mimarilerin haberleşmesini sağlar, internete çıkabildiğimiz port 80 (HTTP) portudur. Bu port yapısı gereği TCP ve UDP protokollerini kullanır. Nedir TCP ve UDP? Transmission Control Protocol, kısacası kayıpsız veri iletimini sağlar. UDP ise TCP’nin yaptığı bir kaç güvenlik ve sorgu işlemlerini atlayarak iletişimin hızlı olmasını sağlar ancak kaybı garanti etmez, yani veri kayba uğrayabilir.
  • 15. Soket Soket kısaca, diğer programlarla standart Unix dosya tanımlayıcılarını kullanarak haberleşmemizi sağlayan yapıdır. Bu yapıya ulaşmak için socket( ) işlevini çağırmamız gerekir. Bu işlev bize bir soket tanımlayıcı döndürür. 3 tip soket tanımlayıcı vardır. Bunlar İnternet soketleri, Unix soketleri ve X.25 soketleridir. Hepsini ayrı ayrı incelemek uzun zaman alacağından, sadece internet soketlerini göreceğiz.
  • 17. ornek1.1 Basit bir örnekle başladık. 1. satırdan inceleyerek gelecek olursak; Python’da kütüphane tanımlamaları import komutuyla dosyaya eklenir. Biz de socket sınıfını dosyamıza ekledik. 2. satırda socket sınıfının altında tanımlanmış olan bir fonksiyonu çağırdık. Bu fonksiyon eğer çıktıya bakacak olursak, adını girdiğimiz portun port numarasını döndürür. Çıktıda da gördüğümüz gibi domain portu 53.
  • 18. DGRAM / STREAM Şimdi internet soketlerinin ikiye ayrıldığı yol ayrımına gelelim. Daha önce bahsettiğimiz TCP ve UDP transfer çeşitleri burada karşımıza çıkıyor. İnternet soketleri de TCP için SOCK_STREAM, UDP için SOCK_DGRAM olarak ayrılıyor. SOCK_STREAM; verileri güvenilir kanaldan taşır. SOCK_DGRAM ise SOCK_STREAM’e göre hızlı fakat güvenliği garanti etmeyen soketlerdir. Bu iki yapının seçimi yapılacak uygulamaya göre farklılık gösterir.
  • 19. SOCK_DGRAM ornek12.py # -*- coding: utf-8 -*- #Localhost üzerinde UDP Server ve Client import socket, sys s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM) max=65535 port=1060 if sys.argv[1:] == [‘server’]: s.bind((‘127.0.0.1’,port)) print s.getsockname(), ‘dinleniyor’ while True: data, address=s.recvfrom(max) print ‘İstemci ’, address, ‘ üzerinden yazıyor..’,repr(data) s.sendto(‘Veri boyutu %d byte’%len(data),address) elif sys.argv[1:]==[‘client’]: s.sendto(‘Bu benim mesajım’,(‘127.0.0.1’, port)) data, address = s.recvfrom(max) print ‘Server’, address, ‘üzerinden yazıyor’,repr(data) else: print >>sys.stderr, ‘kullanimi: ornek12.py server|client’
  • 20. ornek12.py de ne yaptık? Açıklama satırında yazanı yaptık. Daha önce bahsettiğimiz SOCK_DGRAM kullandık yani UDP transfer. İki tip tanımladık bunlar, server ve client. Server ı başlattığımızda 1060 numaralı portu dinliyor ve bu porta bağlanana istemcilerin mesajlarını çıktı veriyor. Dikkat edeceğimiz önemli bir nokta var. Aşağıdaki çıktıya bakarak bunu anlayalım:
  • 21. # python ornek12.py +server tarafı root@soulmac:/home/oguzhan# python ornek12.py server ('127.0.0.1', 1060) dinleniyor +client tarafı root@soulmac:/home/oguzhan# python ornek12.py client Server ('127.0.0.1', 1060) üzerinden yazıyor 'Veri boyutu 17 byte' root@soulmac:/home/oguzhan# +server tarafı root@soulmac:/home/oguzhan# python ornek12.py server ('127.0.0.1', 1060) dinleniyor İstemci ('127.0.0.1', 33495) üzerinden yazıyor.. 'Bu benim mesajım'
  • 22. ornek12.py Server tarafında 1060 numaralı portu dinlerken client tarafında uygulamayı çalıştırdığımızda 1060 portuna ‘Bu benim mesajım’ şeklinde bir mesaj gönderiyor, ancak bunu 33495 portu üzerinden gönderiyor. Başlangıçta 1060 portunu kontrol eden client, serverin açık olup olmadığına bakıyor, eğer açıksa 65535 port arasından uygun olan port üzerinden 1060 numaralı porta veriyi gönderiyor.
  • 23. ornek12.py Öncelikle bir soket tanımlamalıyız ve bu soketin türünü yani internet, unix ya da x25 soketleri arasından hangisi olduğunu belirtmeliyiz ve yine TCP mi yoksa UDP mi olduğunu göstermeliyiz. Bu tanımlamaları socket.socket(socket.AF_INET, socket.SOCK_DGRAM) satırında yaptık. Burada AF_INET internet soketini kullanacağımızı, SOCK_DGRAM ise bu iletişimin UDP protokolü çerçevesinde gideceğini gösteriyor. bind() komutuyla localhost üzerinde trafiğin hangi porttan akacağını belirtiyoruz ve diğer iletişim kurallarına geçiyoruz. sendto( ) ile verimizi gönderme işlemini gerçekleştiriyoruz.
  • 24. SOCK_STREAM SOCK_STREAM ler veri kayıpsız bir iletişim altyapısı sunan TCP protokolü üzerinde hareket ederler. ornek12.py de konumuz tamamen UDP yani SOCK_DGRAM dı. Şimdi ise SOCK_STREAM dan bahsedeceğiz. ornek12.py de kullandığımız soket tanımlamanın aynısını kullanacağız. İşleyiş aynı ancak felsefe farklı.
  • 26. SOCK_STREAM Felsefeye gelecek olursak, o da basit, UDP, TCP gibi davranmaz ve bir kaç kontrol noktasını atlayarak iletişimin daha hızlı olmasını ister, ancak bu hız kayıpları da beraberinde getirebilir. TCP ise size hızı garanti edemez, trafik yoğunluğuna göre değişir ancak kayıpsız bir transferi garanti eder.
  • 27. SOKET İSİMLERİ ornek12.py de gördüğümüz ve aslında daha önce görmediğimiz tanımları burada ayrıntılı işleyeceğiz. Her bir tanımın ne işe yaradığını daha iyi anlamak için bu bölüm yeterli olacaktır.
  • 28. SOKET OLUŞTURMAK socket(family,type,[protocol]) o family: Bu parametre soketin hangi alan için oluşturulduğunu belirtir. Unix için AF_UNIX, internet için AF_INET tanımlaması yapmak gerekir. o type: Kullanılacak protokol tipini belirtir. Bu protokoller TCP ya da UDP dir. TCP için SOCK_STREAM, UDP için SOCK_DGRAM tanımlanmıştır. Diğer seçenekler, SOCK_RAW, SOCK_SEQPACKET, SOCK_RDM. o protocol: Bu parametre varsayılan olarak 0 dır ve bizde böyle bırakıyoruz.
  • 29. SOKET BAĞLAMAK Oluşturulan soketler sunucu ya da istemci taraflı kullanılabilir. Sunucu taraflı bağlanacaksa bir hosta bağlamamız gerekir. bu bağlama olayını connect( ) metodu ile gerçekleştireceğiz. Örnek olarak 192.168.1.17 ve port numarası 9562 olan bir hosta bağlanmak için: connect((‘192.168.1.17’, 9562))
  • 30. SOKETİ BİR ADRESE BAĞLAMAK bind( ) metodu işimizi görecektir. bind( ) parametre olarak soketin bağlanacağı adresi ve port numarasını verir, bu sayede gelen isteklerin dinleneceği bir ortam oluşur. bind((‘192.168.1.17’,9562))
  • 31. BAĞLANTILARI DİNLEMEK Soket belirli bir adrese bağlandıktan sonra, belirtilen porttan gelen istekleri dinlemek için görevlendirilir. Bu amaçla listen( ) metodu kullanılır. Parametre olarak kaç bağlantının kabul edileceği belirtilir. En az 1 olmalıdır. listen(5)
  • 32. VERİ GÖNDERMEK / ALMAK Veri recv( ) ve send( ) metodlarıyla aktarılır. recv( ) metodu sunucu ya da istemciden gönderilen veriyi almak için kullanılır. Parametre olarak buffer size (tampon boyu) ve flags(bayraklar) alır. buffer_size = 1024 recv(buffer_size) Veri göndermek için send( ) metodu çağırılır. Parametre olarak gönderilecek veri ve bayrak alır. veri=’test verisi’ send(veri)
  • 33. TSL VE SSL Secure Socket Layer (Güvenli Giriş Katmanı) protokolü, internet üzerinden şifrelenmiş güvenli veri iletişimi sağlar. E-posta gönderiminde, FTP transferinde ve bir çok alışveriş sitesinde güvenlik amacıyla kullanılıyor.
  • 34. TSL VE SSL Şifreleme esası açık anahtarlı şifrelemeye dayanır. SSL protokolü geliştirildi ve isim değiştirdi. TLS adıyla sunucu-istemci uygulamaların ağ üzerinde, dinlenmelerinin ve asıl verinin üzerinde oynama yapılmasının önüne geçecek şekilde tasarlandı. Bu protokol uygulama katmanında çalışır.
  • 35. TSL VE SSL >>>import ssl >>>ssl.cert_time_to_seconds(“May 7 00:00:00 2014 GMT”) >>>1399410000.0
  • 36. TSL VE SSL Burada ssl sınıfına ait olan cert_time_to_seconds fonksiyonunu kullandık. Bu fonksiyon string bir tarih verisini alıp Unix Time da karşılığını verir. Şimdi SSL ile tarihi saniye cinsinden yazdırmak nedir? sorusuna gelirsek, ssl bir imza olarak kullanılır, imzada tarih önemlidir. Unix Time da saniye olarak geri dönen veri imza için kullanılır.
  • 37. LOGLAMA Ağ uygulamalarında log mesajları önemlidir. Bu mesajları üretip, yedeklemek, uygulamalarımızda karşılaşılan sorunları, hangi durumda olduğumuzu bilmemizi sağlar. Bu işlem için pythonda bilinen syslog ve logging modülleri vardır. Biz logging modülünü kullanacağız.
  • 39. ornek13.py root@soulmac:/home/oguzhan# python2.7 ornek13.py root@soulmac:/home/oguzhan# cat test.log hata mesaji bilgi mesaji uyari mesaji Uygulamayı çalıştırdığımızda handler da tanımladığımız yola yani test.log dosyasına bu çıktıları yazdığını göreceğiz.
  • 40. KAYNAK Foundations of Python Network Programming - Brandon Rhodes, John Goerzen 2010