C Dilinde Dosya Yönlendirmeleri (IO Redirection)

Yayınlayan
Mehmet Kelepçe
Yayınlanma tarihi
23-06-2022
Okuma süresi
5 DK

C Dilinde Dosya Yönlendirmeleri (IO Redirection) 

Bu yazıda C dilinde “stdin” ve “stdout” işaretlerini (> ve <) kullanmadan dosya yönlendirmelerinin nasıl yapılabildiğinden bahsedilecektir.

Bir program Unix, Linux veya Windows sistemlerinde çalışırken program çıktıları “stdout” ile bir dosyaya yönlendirilebilmekte ve bu şekilde ilgili program çıktıları bir dosyaya yazılabilmektedir.

 Linux sistemlerde “stdout” yönlendirmesi aşağıdaki şekilde yapılmaktadır.

# ./program > cikti.txt

Bu kullanım ile çalıştırılan “program” isimli programa ait çıktı bilgisi “cikti.txt” dosyasına yazdırılacaktır.

Yukarıda bahsedilen yönteme benzer şekilde “stdin” ise programa girdi sağlamak için kullanılabilmektedir. “stdin” işlemi için küçüktür işareti (< ) kullanılmaktadır. Bununla birlikte aşağıdaki yönlendirme şekili de ayrıca karşımıza çıkabilmektedir.

# find / -name *.txt 2>/dev/null

Bu tarz yönlendirmelerde başına “2” getirilen büyüktür işareti (>) “stderr”i temsil etmektedir. Yukarıdaki kullanım baz alınacak olursa “stderr” ile “find” komutunun çalıştırılması esnasında oluşabilecek herhangi bir hata gösterilmeyecek ve /dev/null’ın içerisine yazılacaktır. “/dev/null” diye bir dosyanın bulunmaması sebebiyle bu tür bir kullanımda “stderr” çıktıları hiçbir dosyaya yazdırılmamaktadır. Burada /dev/null dosyasının altının delik olduğu ve her şeyin aşağı düştüğü, hiç bir şeyin barındırılmadığı bir sepet olarak tahayyül edilebilir.

Bahsedilen program çıktısı yönlendirme işlemi C dilindeki standart fonksiyonlar kullanılarak da yapılabilmektedir. Bu işlem için “freopen” fonksiyonu kullanılmaktadır. Fonksiyona ait prototipe bakıldığında kullanımının aşağıdaki gibi olduğu görülmektedir: (bkz. https://linux.die.net/man/3/freopen)

FILE *freopen(const char *path, const char *mode, FILE *stream);

Fonksiyona verilen birinci parametre üzerine yazılacak dosyanın yolunu, ikinci parametre hangi mod ile işlem yapılacağını, üçüncü parametre ise hangi dosyanın yönlendirileceğini ifade etmektedir.

Üçüncü parametreye “stdin”, “stdout” veya “stderr” işlemleri yazılarak ilgili dosyaya yönlendirme yapılabilecektir.

“stdout” üzerine yapılabilecek yönlendirmelere örnek olması açısından aşağıdaki kodu yorumlayabiliriz.

 

#include

#include

int main() {

      FILE *f;

      int i;

      if ((f = freopen("test.txt", "w+", stdout)) == NULL) {

            fprintf(stderr, "acilamadi\n");

            exit(EXIT_FAILURE);

      }

      for (i = 0;i < 10; ++i) {

            printf("%d\n", i);

      }

      fclose(f);

      return 0;

}

 

“freopen” fonksiyonuna geçmeden önce hemen altındaki for döngüsüne bakılacak olursa; döngü 0 dan 9’a kadar olan sayıları ekrana yani “standart output”a (stdout) yazdırmaktadır. Yukarıdaki kodda “freopen” fonksiyonunu kullanarak “standart output”a yazdırılacak bu çıktı test.txt dosyasına yönlendirilmektedir. “freopen” fonksiyonunun üçüncü parametresine verilen “stdout” ile bu imkân sağlanmış olur. Kodun derlenip çalıştırılması durumunda proje dizini altında test.txt dosyası oluşacak ve dosya içeriği aşağıdaki görseldeki gibi olacaktır.

 

 

Freopen fonksiyonuna ait parametre bilgilerinde hangi mod ile işlem yapılacağını belirtmek için “w, w+, r.. “gibi mod bilgileri girilmektedir. Bu modlara yönelik bilgilere aşağıdaki tablodan ulaşabilirsiniz.

 

Sıra

Mod & Açıklama

1

“r”

Okumak için bir dosyayı açar, bunu yapabilmesi için bir dosyanın daha önceden oluşturulmuş olması gerekir.

2

”w”

Yazmak için boş bir dosya oluşturur. Eğer aynı isime sahip herhangi bir dosya varsa içeriğini siler ve dosya boş olarak kabul edilir.

3

”a”

Bir veriyi dosyanın sonuna ekler ve eğer dosya yoksa oluşturur.

4

”r+”

Hem okumak hem de güncellemek için bir dosya açar. Bunu yapabilmesi için daha önceden dosyanın oluşturulmuş olması gerekir.

5

”w+”

Hem okuma hem de yazma için boş dosya oluşturur.

6

”a+”

Okuma ve ekleme için bir dosya açar.

 

 

Mehmet KELEPÇE

Senior Cyber Security Specialist | Red Team

Diğer Blog Yazıları_

Sosyal Medya Kullanımının Riskleri
Sosyal Medya Kullanımının Riskleri
Infraskope Server ve Özellikleri
Infraskope Server ve Özellikleri
Kritik Sunucular Üzerindeki Aktivitelerin Loglanması
Kritik Sunucular Üzerindeki Aktivitelerin Loglanması
Kurumlarda Ağ Güvenlik Stratejileri
Kurumlarda Ağ Güvenlik Stratejileri
WPA-WPA2 Güvenlik Standartlarına Yönelik Saldırı: KRACK (KEY-REINSTALLATION-ATTACK)
WPA-WPA2 Güvenlik Standartlarına Yönelik Saldırı: KRACK (KEY-REINSTALLATION-ATTACK)
Log Yönetiminde Ajanlı/Ajansız Çözümler
Log Yönetiminde Ajanlı/Ajansız Çözümler
Herkesin aklındaki soru: Yapay Zeka Nedir?
Herkesin aklındaki soru: Yapay Zeka Nedir?
Discovery of DLL Hijack on Trend Micro AntiVirus+ | CVE-2018-18333
Discovery of DLL Hijack on Trend Micro AntiVirus+ | CVE-2018-18333
Web Cache Poisoning
Web Cache Poisoning
XML EXTERNAL ENTITY INJECTION AND OOB (OUT-OF-BAND) DATA RETRIEVAL
XML EXTERNAL ENTITY INJECTION AND OOB (OUT-OF-BAND) DATA RETRIEVAL
ARP Poisoning
ARP Poisoning
Cross-Site Request Forgery (CSRF) Zafiyeti
Cross-Site Request Forgery (CSRF) Zafiyeti
SSRF (Server Side Request Forgery)
SSRF (Server Side Request Forgery)
BlueBorne
BlueBorne
Server Side Template Injection Nedir?
Server Side Template Injection Nedir?
Linux Restricted Shell Atlatma Teknikleri
Linux Restricted Shell Atlatma Teknikleri
Discovery of Sandbox Escape on Comodo Container(Antivirus&amp;Firewall)
Discovery of Sandbox Escape on Comodo Container(Antivirus&Firewall)
SDR-Sharp Kullanımı
SDR-Sharp Kullanımı
Log Yönetimi | Log Management | Veritabanı Log | Siem
Log Yönetimi | Log Management | Veritabanı Log | Siem
Cyber Kill Chain, Bir Siber Saldırının Yaşam Döngüsü
Cyber Kill Chain, Bir Siber Saldırının Yaşam Döngüsü
Phishing Nedir?
Phishing Nedir?
“GOLD” Affix Phishing Attack
“GOLD” Affix Phishing Attack
Sızma Testi ve Ödül Avcılığı Hizmetleri
Sızma Testi ve Ödül Avcılığı Hizmetleri
Güvenilir Olarak CAPTCHA Yapılandırılması
Güvenilir Olarak CAPTCHA Yapılandırılması
Basit Kriptolojiden Günümüze Evrilişi
Basit Kriptolojiden Günümüze Evrilişi
Dosya Sistem Analizinin Önemi
Dosya Sistem Analizinin Önemi
HTTP Request Smuggling (HTTP İstek Kaçakcılığı) Nedir?
HTTP Request Smuggling (HTTP İstek Kaçakcılığı) Nedir?
KVKK Kapsamında Veri Keşfi Maskeleme ve Şifreleme
KVKK Kapsamında Veri Keşfi Maskeleme ve Şifreleme
Sosyal Medya Kullanımının Riskleri
Sosyal Medya Kullanımının Riskleri
Sızma (Penetrasyon) Testi Nedir?
Sızma (Penetrasyon) Testi Nedir?
Start Up Kültürü
Start Up Kültürü
Sigma Kuralları ile SIEM Ürünlerinde Tehdit Avı
Sigma Kuralları ile SIEM Ürünlerinde Tehdit Avı
Kritik Altyapılar ve SCADA Güvenliği
Kritik Altyapılar ve SCADA Güvenliği
Zararlı Yazılım Analiz Teknikleri
Zararlı Yazılım Analiz Teknikleri
Uzaktan Çalışma Modellerinde Siber Güvenlik Riskleri
Uzaktan Çalışma Modellerinde Siber Güvenlik Riskleri
Pandemi Sürecinde Siber Güvenlik Riskleri
Pandemi Sürecinde Siber Güvenlik Riskleri
SOC Nedir ve SOC Merkezleri Nasıl Çalışır?
SOC Nedir ve SOC Merkezleri Nasıl Çalışır?
PHISHING Hakkında Her şey
PHISHING Hakkında Her şey
Sosyal Mühendislik Nedir?
Sosyal Mühendislik Nedir?
Siber Hijyen
Siber Hijyen
Adli Bilişim (Digital Forensic) Nedir?
Adli Bilişim (Digital Forensic) Nedir?
DHCP Spoofing Saldırısı Nedir, Nasıl Yapılır?
DHCP Spoofing Saldırısı Nedir, Nasıl Yapılır?
FAIL2BAN İLE SSH BRUTE FORCE SALDIRILARINI ÖNLEME
FAIL2BAN İLE SSH BRUTE FORCE SALDIRILARINI ÖNLEME
BULK EXTRACTOR ARACIYLA DİSK İNCELEME
BULK EXTRACTOR ARACIYLA DİSK İNCELEME
SolarWinds Vaka Analizi
SolarWinds Vaka Analizi
Frida ile SSL Pinning Bypass
Frida ile SSL Pinning Bypass
COOKİE Nedir? Nasıl Çalışır?
COOKİE Nedir? Nasıl Çalışır?
Bilgi Güvenliği Test ve Değerlendirmeleri Teknik Kılavuzu
Bilgi Güvenliği Test ve Değerlendirmeleri Teknik Kılavuzu
Dridex Bankacılık Trojanı Teknik Analiz Raporu (TR)
Dridex Bankacılık Trojanı Teknik Analiz Raporu (TR)
Adwind Rat Technical Analysis Report (ENG)
Adwind Rat Technical Analysis Report (ENG)
SOC Nedir, Firmalar İçin Neden Önemlidir?
SOC Nedir, Firmalar İçin Neden Önemlidir?
Blockchain Nedir?
Blockchain Nedir?
İşlemcilerin Koruma Mekanizması ve Koruma Mekanizmasının Atlatılması
İşlemcilerin Koruma Mekanizması ve Koruma Mekanizmasının Atlatılması
Active Directory Güvenlik İpuçları
Active Directory Güvenlik İpuçları
Nisan 2022 Siber Güvenlik Bülteni
Nisan 2022 Siber Güvenlik Bülteni
Mavi Takım Üyeleri İçin Windows Core Process
Mavi Takım Üyeleri İçin Windows Core Process
Kişiler İçin Bilgi Güvenliği Rehberi
Kişiler İçin Bilgi Güvenliği Rehberi
DDoS Nedir?
DDoS Nedir?
C Dilinde Dosya Yönlendirmeleri (IO Redirection)
C Dilinde Dosya Yönlendirmeleri (IO Redirection)