CyberFlow Logo CyberFlow 📚 Blog

awk - Veri ayrıştırma otomasyonu

✍️ Ahmet BİRKAN 📂 kali_tools_otomasyon_ve_scripting_araclari
awk - Veri ayrıştırma otomasyonu Giriş Giriş Veri analizi, günümüz dijital dünyasında kritik bir rol oynamaktadır. Verilerin meziyetinin anlaşılması, daha iyi…
awk - Veri ayrıştırma otomasyonu

awk - Veri ayrıştırma otomasyonu

Giriş

Giriş

Veri analizi, günümüz dijital dünyasında kritik bir rol oynamaktadır. Verilerin meziyetinin anlaşılması, daha iyi karar verme süreçlerini desteklediği gibi, siber güvenlik alanında da saldırılara karşı önceden tedbir alma imkanı sunar. Bu noktada, awk gibi güçlü araçlar, veri ayrıştırma ve işleme sürecinde öne çıkar. awk, metin dosyalarını analiz etme ve düzenleme için kullanılan güçlü bir programlama dilidir ve genellikle komut satırı ortamlarında yer alır.

awk Nedir?

awk, adını geliştiricileri Aho, Weinberger ve Kernighan'dan alır ve özellikle verileri sütunlar halinde işlemek için tasarlanmıştır. Basit bir sözdizimine sahip olması, kullanıcıların hızlı bir şekilde veri analizi yapmasını sağlar. awk, ham veriler üzerinde çeşitli işlemler gerçekleştirmek için güçlü bir araçtır. Komut satırında çalışan awk, genellikle raportaj, dosya okuma, düzenleme ve veri çıkarımı gibi görevlerde kullanılır.

Kullanım amacına uygun olarak veriyi işlemenin birkaç temel bileşeni bulunmaktadır. Aşağıda basit bir awk komutunun nasıl çalıştığını gösteren bir örnek bulunmaktadır:

awk '{print $1}' dosya.txt

Yukarıdaki komut, dosya.txt dosyasındaki her satırın ilk sütununu ekrana yazdırır. awk kullanarak, belirli bir formatta olan verileri seçmek ve düzenlemek oldukça kolaydır.

Neden Önemlidir?

Veri ayrıştırma ve işleme, siber güvenlik alanında şu anki tehditlerin anlaşılması açısından da büyük önem taşır. awk gibi araçlar sayesinde:

Hangi Alanlarda Kullanılır?

awk, pek çok farklı alanda kullanılmaktadır. Özellikle aşağıdaki alanlarda etkili sonuçlar sağlamaktadır:

Siber Güvenlik Açısından awk Kullanımı

Siber güvenlik, verilerin korunması ve analiz edilmesi gereken bir alan olarak awk'in önemini artırmaktadır. Örneğin, bir ağ güvenliği uzmanı, bir gün boyunca gerçekleşen tüm bağlantı isteklerini sürekli izlemek ve uluslararası ya da şüpheli bağlantıları tanımlamak için log dosyalarını awk ile analiz edebilir.

Aşağıda, awk kullanarak bir log dosyasındaki bir IP adresinin kaç kez geçmişte bağlantı kurduğunu sayma örneği bulunmaktadır:

awk '{print $1}' access.log | sort | uniq -c

Bu komut, access.log dosyasındaki her bir benzersiz IP adresini sayarak, hangi IP'lerin en sık erişim sağladığını listeleyecektir.

Sonuç olarak, awk, veri ayrıştırma ve analizi konusunda önemli bir araçtır. Özellikle siber güvenlik alanında, verilerin düzgün ve etkili bir şekilde işlenmesi, tehditlerin önceden tespit edilmesi ve gerekli önlemlerin alınabilmesi için vazgeçilmez bir çözüm sunar. Yeni başlayanlar için anlaşılır bir sözdizimi ve güçlü fonksiyonları sayesinde, awk, veri bilimi ve siber güvenlik alanında temel bir beceri haline gelmektedir.

Teknik Detay

awk'nin Temel Çalışma Mantığı

awk, Unix tabanlı işletim sistemlerinde kullanılabilen güçlü bir metin işleme aracıdır. Veri ayrıştırma, raporlama ve genel metin manipülasyonu işlemlerinde sıklıkla tercih edilir. Bu program, adını yaratıcısı Alfred Aho, Peter Weinberger ve Brian Kernighan'ın baş harflerinden almıştır. awk, üzerinde çalıştığı veriyi alan ve belirli kurallara göre işleyen bir dildir.

Kavramsal Yapı

awk, metin dosyalarını satır bazında okur ve bu satırları belirli alanlara ayırır. Satırlar, default olarak boşluk veya sekme karakterlerine göre ayrılır; ancak kullanıcı, kendi ayrıştırıcı karakterini belirleyebilir. awk programı, üç temel bileşenden oluşur: diziler, değişkenler ve döngüler. Bu bileşenler kullanılarak karmaşık veri analizi ve raporlamaları gerçekleştirilebilir.

İşleyiş Mantığı

awk, komut satırında çalıştırıldığında genellikle şu yapıdadır:

awk 'koşul {eylem}' dosya_adı

Burada koşul, belirli bir satırın işlenip işlenmeyeceğini belirlerken, {eylem} kısmı ise koşul sağlandığında gerçekleştirilecek işlemi tanımlar. Aşağıda basit bir örnekle kullanımını açıklayalım:

awk '$3 > 50 {print $1, $2}' data.txt

Bu komut, data.txt dosyasındaki üçüncü sütunu 50'den büyük olan satırları bulur ve bu satırların birinci ve ikinci sütunlarını ekrana yazdırır.

Kullanılan Yöntemler

awk'da birçok yerleşik işlev ve değişken mevcuttur. Örneğin, NR (Toplam Okunan Satır Sayısı) ve NF (Toplam Alan Sayısı) gibi değişkenler verinin analizi için sıkça kullanılır:

Aşağıdaki örnek, her satırın kaç alan içerdiğini gösterir:

awk '{print "Satır " NR " " NF " alan içeriyor."}' data.txt

Dikkat Edilmesi Gereken Noktalar

awk -F, '{print $1}' veri.csv

Bu komut, veri.csv dosyasındaki her satırı virgüle göre ayırarak yalnızca birinci alanı yazdırır.

Analiz Bakış Açısı

Veri analizi, yüksek miktarda veriyle çalışırken oldukça karmakarışık hale gelebilir. awk, yüzlerce satırı saatlerce manuel incelemek yerine, belirli koşullar altında verileri hızla analiz edip derlemenize olanak tanır. Örneğin, bir log dosyasındaki hata mesajlarını filtrelemek için yukarıdaki temel yapıyı kullanabilirsiniz:

awk '/ERROR/ {print $0}' log.txt

Bu durumda, log.txt dosyasındaki "ERROR" kelimesini içeren tüm satırlar ekranda gösterilecektir.

Sonuç

awk, veri ayrıştırma otomasyonu için son derece etkili bir araçtır. Hızlı bir kurulum ve esnek bir yapı sunması sayesinde farklı senaryolara kolaylıkla adapte olabilir. Gelişmiş raporlama ve analiz olanaklarıyla, veri işleme sürecinde zaman ve enerji tasarrufu sağlar. awk üzerinde çalışmaya başlamak için temel yapı ve işlem mantığını anlamak, bu güçlü aracın sunduğu tüm potansiyeli keşfetmenin ilk adımıdır.

İleri Seviye

İleri Seviye awk Kullanımı

awk, metin dosyalarını işlemek için güçlü bir yazılımdır ve özellikle veri ayrıştırma için sıkça tercih edilir. Sızma testleri sırasında, log dosyalarından bilgi çekmek veya şüpheli aktiviteleri izlemek üzere awk sıkı bir şekilde entegre edilebilir. Bu bölümde, ileri seviye awk kullanımıyla veri ayrıştırma otomasyonunu ele alacağız.

awk ile Veri Ayrıştırma Mantığı

awk, dosyalardaki verileri satır ve sütunlar halinde işler. Varsayılan olarak, beyaz boşlukları ayırıcı olarak kullanır, ancak özel ayırıcılar tanımlamak mümkündür. Aşağıdaki basit örnek, bir log dosyasındaki kullanıcının IP adreslerini filtrelemek için awk'ın nasıl kullanıldığını göstermektedir.

Örneğin, bir web sunucusu log dosyasında aşağıdaki gibi satırlar yer alabilecektir:

192.168.1.1 - - [01/Jan/2023:10:00:00 +0000] "GET /index.html HTTP/1.1" 200 2048
192.168.1.2 - - [01/Jan/2023:10:05:00 +0000] "POST /upload HTTP/1.1" 404 1024

Bu satırlardan yalnızca IP adreslerini çekmek için şu komutu kullanabilirsiniz:

awk '{ print $1 }' access.log

Özel Ayırıcılar ile Çalışma

Sızma testi sırasında, yapılandırma dosyaları veya JSON formatındaki loglarda özel ayırıcılar kullanmak gerekli olabilir. Örneğin, bir JSON dosyasında kullanıcı bilgilerini ayıklamak için awk'ın nasıl kullanılabileceğine bakalım:

[
  {
    "username": "admin",
    "ip": "192.168.1.1"
  },
  {
    "username": "guest",
    "ip": "192.168.1.2"
  }
]

Bu JSON verisinden yalnızca IP adreslerini çekmek için jq istemcisini kullanmaya alternatif olarak awk kullanılabilir. JSON'un düzgün bir şekilde ayrıştırılması için awk'ın kullanımı şöyle olabilir:

awk -F'"' '/"ip":/ {print $4}' data.json

Bu komut, her satırda "ip" anahtarını bulacak ve ardından ilgili IP adresini çıkaracaktır.

İleri Seviye Analiz Mantığı ve Filtreleme

awk'ın en güçlü yönlerinden biri, karmaşık filtreleme ve istatistiksel hesaplamaları basit bir şekilde gerçekleştirebilmesidir. Aşağıdaki örnek, belirli bir IP adresinin ne sıklıkla günlüğe kaydedildiğini analiz etmek için kullanılabilir.

Bir log dosyasında belirli bir IP adresinin kaç kez erişimde bulunduğunu bulmak için:

awk '$1 == "192.168.1.1" {count++} END {print count}' access.log

Bu komut, belirtilen IP adresi için erişim sayısını döndürecektir. END bloğunda sayım işlemi tamamlanır ve sonuç gösterilir.

Payload ve Otomasyon Örneği

Sızma testi sırasında, belirli bir durumu tespit etmek amacıyla logları sürekli analiz etmek istiyorsanız, otomatik bir kontrol sağlamak için bir bash script erstellenebilirsiniz. Örnek bir script ile sık yapılan hatalı girişleri tespit edelim:

#!/bin/bash

tail -F access.log | awk '{if ($9 == "401") print "Hatalı giriş: " $1 " zaman: " $4}'

Bu script, log dosyasına sürekli olarak göz atacak ve 401 (Yetkisiz Erişim) hata kodunun bulunduğu satırları işleyerek IP adresini ve zaman bilgisini çıktılayacaktır.

Sonuç

awk, sızma testi süreçlerinde veri ayrıştırma ve log analizi için vazgeçilmez bir araçtır. Gelişmiş kullanımı ile veri filtrelemesi, sayım ve analiz işlemlerini otomatik hale getirerek daha etkin bir sızma testi yürütmenizi sağlar. Yukarıda verilen örnekler ve komutlar, awk'ın işlevselliğini artırmak için nasıl kullanılabileceğine dair kapsamlı bir bakış sunmaktadır.