Bigdata Nedir? Hadoop Nedir? MapReduce Nedir? Big Data.
Python ile yapılabilecekler
1. Güvenlik denetimi yapanlar için python araçları
Güvenlik araştırma, reverseengineering veya sızma testleri ile ilgileniyorsanız python programlama
dilini denemenizi öneririm. Çok sayıda kütüphaneler ve programlara sahip. Bu sayfa bunlardan
bazılarını listeliyor.
Listelenen araçların çoğu Python'da yazılmış, diğerleri ise mevcut C kütüphaneleri için Python
bağlayıcıları (yani python programlardan bu kütüphanelere kolay erişim sağlıyorlar).
Agresif araçların bazıları (pentestframework, bluetoothsmasher, webappvulnscanner, war-dialervs)
çıkarıldı çünkü bu araçların kanunlara uygunluğu konusunda kesin bir bilgim yok. Bu liste beyaz
şapkalara yardım için hazırlandı.
Ağ
Scapy - ağ paketlerini gönderme, dinleme ve işleme. İnteraktif olarak veya kütüphane olarak
kullanılabilir.
pycap, Pcapy ve pylibpcap - libpcap için çeşitli Python bağlayıcıları
dpkt - hızlı, basit paket yaratma parse etme, temel TCP/IP protokollerinin tanımlarına sahip
Impacket - Ağ paketleri yaratma ve decode etme. NMB ve SMB gibi yüksek-seviye protokoller için
desteği de var.
pynids - dinleme, IP defragmentation, TCP stream tekrar birleştirme ve port tarama tespiti sunan
libnidswrapper
Dirtbagspy-pcap - libpcap olmadan pcap dosyalarını okuma
flowgrep - regularexpression kullanarak paket yüklerine grep
httplib2 - Diğer HTTP kütüphanelerinde eksik olan çok sayıda özelliğe sahip kapsamlı bir HTTP istemci
kütüphanesi
KnockSubdomainScan - hedef bir alandaki alt alanları bir kelime listesi kullanarak listeler
Mallory - man-in-the-middleproxy
mitmproxy - SSL destekli, mitmproxy. Konsol arayüzünde trafik akışı geçiş anında incelenip
değiştirilebilir.
Debug ve reverseengineering
Paimei - Reverseengineeringframework, PyDBG, PIDA, pGRAPH'ı içeriyor
ImmunityDebugger - script destekli grafik arayüz ve komut satırı debugger
IDAPython - Python programlama dili ile entegre olupscript'lerin IDA Pro içinde çalıştırılabilmesini
sağlayan bir IDA Pro plugini.
PyEMU - IA-32 emulator, zararlı yazılım analizinde kullanışlı
pefile - PortableExecutable dosyalarını okuma ve çalışma
pydasm - libdasm x86 disassembling kütüphanesi için Python arabirimi
PyDbgEng - Microsoft Windows Debugnig Engine için Pythonwrapper
uhooker - DLL'ler içinden yapılan API çağrılarını yakalama ve çalıştırılabilir dosyanın hafızasında
istenilen adresler...
diStorm64 - AMD64 için dissambler kütüphanesi, BSD lisanslı
python-ptrace - ptrace kullanan debugger (işlemleri trace için Linux, BSD ve Darwin sistem çağrısı)
Fuzzing
Sulley - Genişletilebilir bileşenlere sahip fuzzer geliştirme ve fuzz test framework
2. PeachFuzzing Platform - Generation ve mutation tabanlı fuzzing için genişletilebilir fuzzingframework
antiparser - fuzz test ve faultinjection API
TAOF, ProxyFuzz ile, bir mitmnon-deterministic network fuzzer
untidy - Genel amaçlı XML fuzzer
Powerfuzzer - Tamamen otomatikleştirilebilen ve özelleştirilebilen wefuzzer (HTTP protoklü tabanlı
uygulama fuzzer)
FileP - Dosya fuzzer. Kaynak dosya listesinden mutate edilmiş dosyalar yaratır ve bunları harici bir
programa verir.
SMUDGE
Mistress - Önceden belirlenmiş pattern'lere göre dosya formatları ve bozuk veriye sahip protokol
testi
Fuzzbox - çoklu-codec medya fuzzer
ForensicFuzzing Araçları - fuzzed dosyalar, fuzzed dosya sistemleri yaratıp forensic araçlarının ve
inceleme sistemlerinin test edilmesi
Windows IPC Fuzzing Araçları - Windows InterprocessCommunication mekanizmalarını kullanan
uygulamaları fuzz etmekte kullanılan araçlar
WSBang - SOAP tabanlı web servislerinin otomatik güvenlik testi
Construct - Binary veya textual veri yapılarını parse ve inşa. Kendi veri yapılarınızı tanımlayın.
fuzzer.py (feliam) - FelipeAndresManzano'dan basit bir fuzzer
Fusil - Fuzzing programları yazmak için python kütüphanesi
Web
ProxMon - Proxy log'larını işleyip bulunan problemleri raporlar
WSMap - web servis endpoint'leri bulmada ve dosyaları keşfetmede
Twill - Webe komut satırından bakın. Otomatik webn testi destekliyor.
Windmill - Web uygulamanızı otomatik olarak test ve debug etmenizi sağlayan web test aracı
FunkLoad - Fonksiyonel ve yük testi
Forensic
Volatility - Volatile hafıza (RAM) örneklerinden dijital bulgular çıkarma
SandMan - Windows sürümüne bağlı olmadan hibernation dosyasını okuma
LibForensics - Dijital forensic uygulamaları geliştirmek için kütüphane
TrIDLib - Dosya tiplerini binary imzalarından tanıma. Artık Python bağlantısı da içeriyor.
Zararlı Yazılım Analizi
pyew - komut satırı hexadecimaleditor ve disassembler, temelde zararlı yazılım testi için
Exefilter - e-postalardaki, web sayfalarındaki veya dosyalardaki dosya formatlarını filreleme. Çoğu
genel dosya tipini tespit ediyor ve aktif içeriği çıkarabiliyor.
pyClamAV - Python yazılımınıza virüs tespit yetenekleri ekleyin
jsunpack-n - Genel JavaScriptunpacker: browser fonksiyonlarını emüle ederek browser ve browser
plug-in açıklarını hedefleyen exploit'leri tespit etmek için
yara-python - zararlı yazılım örneklerini tanımlama ve sınıflandırma için
PDF
Didier Stevens'ın PDF Araçları - PDF dosyalarını analiz, tanıma ve yaratma (PDFiD, pdf-parser,
mPDFve make-pdf dahil)
3. Opaf - Open PDF Analysis Framework. PDF'i analiz edilip değiştirilebilen bir XML ağacına dönüştürür.
Origapy - PDF dosyalarını sanitze eden OrigamiRubymodülü için Pythonwrapper
pyPDF - python PDF toolkit. bilgi ayrıştırma, bölme, birleştirme, kesme, kriptolama ve dekriptolama...
PDFMiner - PDF dosyalardan text çıkarma
python-poppler-qt4 - Poppler PDF kütüphanesi için Pythonbağlantısı , QT4 desteği dahil
Genel
InlineEgg - Python'da küçük assembly programlar yazmak için sınıflar
Exomind - sosyal ağ hizmetleri, arama motorları ve anlık mesajlaşma üzerine grafikler yaratmak ve
açık kaynak intelligence modülleri ve fikirleri geliştirmek için
RevHosts - Verilen IP adresi için sanal host'ları listeleme
simplejson - JSON kodlayıcı/dekoder ör. Google AJAX API
PyMangle - diğer sızma testi araçlarıyla kullanmak için kelime listeleri yaratma komut satırı aracı ve
python kütüphanesi
Hachoir - Bir binarystreamfield'lerini görüntüleme ve düzenleme
Diğer yararlı kütüphane ve araçlar
IPython - Object introspection ve sistem shell erişimi için kendi özel komut sistemi gibi çok sayıda
özelliğe sahip gelişmiş interaktif Pythonshell
BeautifulSoup - ekrandan bilgi toplama için optimize HTML parser
matplotlib - array'ların 2D plot'larını yapmak için
Mayavi - 3 boyutlu bilimsel veri görselleştirme ve plot
RTGraph3D - 3B dinamik grafikler yaratma
Twisted - event-driven ağ motoru
Suds - Web hizmetleri için basit SOAP istemcisi
M2Crypto - OpenSSLwrapper
NetworkX - grafik kütüphanesi (edge,node)
pyparsing - genel parse modülü
lxml - Python dilinde XML ve HTML ile çalışmada en zengin özelliklere sahip ve kullanımı en kolay
kütüphane.
Pexpect - Diğer programları kontrol ve otomatikleştirme, Don LibesExpect sistemine benzer
Sikuli - GUI'leri ekran görüntüleri ile arama ve otomatikleştirme teknolojisi. Jython script'ler ile
kullanılabiliyor
PyQt ve PySide - Qtapplicationframework ve GUI kütüphanesi için Python bağlantıları
Başka kütüphaneler için PyPI, PythonPackageIndex'e bakabilirsiniz.
Dirk Loss http://dirk-loss.de/python-tools.htm
Kaynak: http://www.olympos.net/belgeler/urun/python/guvenlik-denetimi-yapanlar-icin-python-
araclari-2851314.html#ixzz2FspblzMY
Follow us: @olymposnet on Twitter | olympos.net on Facebook
4. PYHTON ile SOKET PROGRAMLAMA
Python'la soket programlama:
1.socket modülü
socket() fonksiyonu: soketin oluşturulması için kullanılır.
Ġstemci Program
host= "localhost"
port= 21567
buf = 1024
addr = (host,port)
host: Bir host ismi veya IP adresi olabilir. Ben yerel olarak programları denemek istediğim için
host="localhost" yazdım. Sunucu internet üzerindeyse IP adresi ve ya domain name kullanılır.
port: Bir numara veya sembolik servis ismi olabilir.
buf: Soketten transfer edilecek verinin maximum büyüklüğünü ayarlamak için kullanılan
değişkendir.
addr: Ġki elemanlı bir demettir ( tuple ). Bu değişken sunucuya mesaj gönderirken kullanılır.
Soketin oluşturulması:
TCPSock=socket(AF_INET, SOCK_STREAM)
Bu kod haberleşmenin TCP protokolüyle yapılacağını gösterir. Bununla yapmamın sebebi FTP
'nin TCP üzerinde çalışması.
Bu parametrelerin anlamı:
AF_INET: TCP ve UDP için IPv4 protokolleri
AF_INET6: TCP ve UDP için IPv6 protokolleri
AF_UNIX: UNIX domain protokolleri
Soket tipi,soket akışında kullanılan iletişim tipidir.Bunlar beş çeşit:
SOCK_STREAM: Ġletişim tabanlı TCP byte akışı
SOCK_DGRAM: Datagramların UDP ile transferi, sunucu- istemci doğrulamasına gerek
duymayan kendi kendine yeten IP paketleri için...
SOCK_RAW: Henüz olgunlaşmamış soketler
SOCK_RDM: Güvenilir datagramlar için
SOCK_SEQPACKET: Bağlantı üzerinden kayıtlar için bir dizi transfer.
sendto() fonksiyonunu kullanarak sunucuya mesaj göndermek için kod
msg="Sunucuya gönderilecek mesaj"
TCPSock.sendto(data,addr)
--------------------------------------
#!/usr/bin python
# -*- coding:utf-8 -*-
5. fromsocketimport *
# Soket parametreleri oluşturulur
host = "localhost"
port = 21567
buf = 1024
addr = (host,port)
# Soketin oluşturulması
TCPSock = socket(AF_INET,SOCK_STREAM)
def_msg = "===Sunucuya gönderilecek mesajı giriniz===";
print "n",def_msg
# Mesajın gönderilmesi
while (1):
data = raw_input('>> ')
if not data:
break
else:
if(TCPSock.sendto(data,addr)):
print "Sendingmessage '",data,"'....."
# Soketin Kapatılması
TCPSock.close()
----------------------------------------------------------------------------------------
Sunucu Programı
Sunucu programda socketi aynı şekilde kuruyoruz. Ġlk başta değişkenleri oluşturuyorulur:
host= "localhost"
port= 21567
buf = 1024
addr = (host,port)
Soket oluşturulur:
TCPSock = socket(AF_INET,SOCK_STREAM)
Adresi bağlamak için gerekli kod:
TCPSock.bind(addr)
data,addr=TCPSock.recvfrom(buf)
print data
--------------------------------------------------------
#!/usr/bin python
# -*- coding: utf-8 -*-
# Server program
fromsocketimport *
# Set thesocketparameters
6. host = "localhost"
port = 21567
buf = 1024
addr = (host,port)
# Createsocketandbindtoaddress
TCPSock = socket(AF_INET,SOCK_DGRAM)
TCPSock.bind(addr)
# Receivemessages
while 1:
data,addr = TCPSock.recvfrom(buf)
if not data:
print "Client has exited!"
break
else:
print "nReceivedmessage '", data,"'"
# Close socket
TCPSock.close()
-------------------------------------------------------------------------------------------
Ben projemde öncelikle ftp protokolünü kullanacağım. Bunun için pythondaftplibmodülü
bulunmaktadır.
Python'da FTP istemcisi oluşturmak
Ġlk adım ftplibmodülünüimport etmektir.
importftplib
"socket" modülüarayüzeihtiyac duyan tüm python modülleri tarafından kullanılır. FTP kütüphanesi
bunlardan farklı değildir. FTP kütüphanesi öncelikle SOCKS modülüne dayanır, ama eğer model
bulunmazsa socket modülüne başvurulur.
Bağlantının başlatılması
Python'a hangi siteye bağlanması gerektiğini söylüyoruz:
ftp = ftplib.FTP('ftp://baglantikurulacaksite.com')
Burada ftplib kütüphanesinin FTP sınıfından bir nesne oluşturuyoruz. Bu sınıftan bir nesne
oluşturabilmek için gerekli minimum argüman sunucunun URL'sidir. Bu URL başlangıç değeridir
ve geriye bir soket nesnesi döndürür. Bunu ftp değişkenine atadık. Eğer istersek log in bilgilerini
de buradan girebiliriz. Bunun söz dizimi şöyle;
handle=ftplib.FTP(host,username,passwd,account_name)
Soket bağlantısı oluşturuldu ama henüz sunucuda oturum açamadık. FTP sınıfı sunucuda oturum
açmak için şöyle bir metoda sahip;
ftp.login("mylogin","mypassword")
Daha sonra ne yapılacağı ftp bağlantısını neden açtığımıza bağlı. ftplibmodülübinary ve text
formatında saklama ve bulup getirmek için metod sağlar.
Text formatı için metodlar:
7. x.storlines(command,file): satır modunda bir dosyayı saklamak için kullanılır.
x.retrlines(command,callback): satır modunda bir dosyayı getirmek için kullanılır.
Her method için minimum 2 argüman verilmesi lazım. Her ikiside çalıştırılacak olan komutun
açıkça deklare edilmesine gereksinim duyar.
Saklamak için en yaygın komut 'STOR', bulup getirmek içinse 'RETR' dir. Bunlardan başka
kullanılan komutlarda vardır.
Söz konusu olan her iki komutun ikinci bölümü dosya ismidir.
'STOR filename' 'RETR filename'
Her metodun ikinci argümanı ne yaptığımızla alakalıdır. Saklamak için dosya nesnesi getirmek
için bir callback içerir. Bu callback dosya getirildiğinde ne yapılacağını söylemek için bir
fonksiyondur.
Binary mode'ta FTP saklama (store) ve getirme (retrieve)
Binary mode'takimetodların söz dizimi de bir önceki ile aynı ;
x.storlines(command,file[,blocksize]): satır modunda bir dosyayı saklamak için kullanılır.
x.retrlines(command,callback[,blocksize[,rest): satır modunda bir dosyayı getirmek için kullanılır.
Binary ve text arasında 2 önemli fark vardır.
Birincisi her iki binary komutu seçimli blocksizeargümanı için olanak sağlıyor. Bu yüzden
binarymode daha hızlıdır.
Ġkincisi binaryretrieve fonksiyonlu seçimli rest argumanına sahiptir. Bu argüman bir dosyanın
ortasından indirmeye başlamaya yarar. Bu fonksiyon bütün FTP serverlar tarafından
desteklenmez. Eğer sunucu desteklemiyorsa bir error_reply uyarısı alınır.
PYTHON ile SOSYAL AĞ ANALĠZĠ
Recep vaktin olduğu bir zamanda Bu videoyu izleyip sosyal ağ analizi konusunda yapılanları
görüp neler yapabileceğimizi tartışalım.
http://www.youtube.com/watch?v=qgGqaBAEy3Q
Ayrıca aşağıdaki linki de incele güzel bir library dosyası hakkında bilgiler var
http://www.libsna.org/
Şu linktede özellikle saldırı tespit sistemine yönelik host temelli bir kod yazılmış python ile.
http://sourceforge.net/projects/pyids/ bunu da incele gerekirse bir benzerini yazıp veya bunu
kodunda işleyip kodun yapısına göre farklı analizler yapabilirmiyiz bakalım.