Friday, August 1, 2025

"Ciklet Pil" için LM317 ile Sabit Akım NiCd Şarj Devresi / DIY Gumstick Battery Charger

Yıllardır kenarda köşede yatan Sanyo Cadnica NiCd "ciklet" pili şarj etmek istedim ve bunun için LM317 regülatörü ile sabit akım kontrollü basit bir şarj devresi kurdum. 

Marka/Model: Sanyo Cadnica KF-A650

Tip: NiCd
Gerilim: 1.2 V
Şarj önerisi: 65 mA @ 14–16 saat

Devre LM317 üzerinden sabit akım sağlayacak şekilde tasarlanmıştır. Girişe uygulanacak gerilim, LM317’nin düzgün çalışabilmesi için belirli sınırlar içinde olmalıdır.

LM317 Sabit Akım Formülü:

I = 1.25 V / R

65 mA elde etmek için:

R = 1.25 / 0.065 ≈ 19.2 ohm

20 ohm dirençle akım yaklaşık 62.5 mA olur.

Projede 9V 1A’lik bir DC adaptör kullanılmıştır. Bu adaptör, hem yeterli akımı sağlayabilmesi hem de LM317’nin giriş-çıkış farkı için uygun voltaj aralığında kalması açısından idealdir.

LM317 sabit akım konfigürasyonunda düzgün çalışabilmek için çıkışta hedeflenen pil voltajına (yaklaşık 1.2–1.4 V arası) göre en az 3 V’luk bir farkla beslenmelidir. Bu nedenle güvenli çalışma aralığı: 8 – 12V'tur. 8V altı durumlarda LM317 yeterli regülasyon sağlayamayabilir. 12V üzeri durumlarda ise LM317 üzerinde harcanan güç artacağı için soğutma gerekebilir.

Devre ortalama 65–70 mA civarında sabit akım çeker. 9 V girişle, adaptörün sağlayacağı gücü şöyle hesaplayabiliriz:

Toplam çekilen güç: P_in = 9 V × 0.07 A = 0.63 W

Bu değer oldukça düşük olduğu için 1A kapasiteli sıradan bir adaptör bu yükü rahatlıkla karşılayabilir.

Şarj Esnasında Güç Tüketimi

Şarj ilerledikçe pil voltajı yükselir ve LM317 üzerindeki gerilim farkı azalır. Bu da çekilen gücün zamanla düşmesini sağlar.

Örnek:
Giriş voltajı: 9 V
Pil voltajı: 1.3 V
Akım: 65 mA

LM317 üzerindeki kayıp (ısı): 
V_drop = 9 V − 1.3 V = 7.7 V
P_loss = 7.7 V × 0.065 A ≈ 0.5 W

Bu yaklaşık yarım watt’lık bir ısı kaybıdır. Soğutmasız da çalışabilir, ancak sürekli kullanımda basit bir soğutucu önerilir.

Regaülatörü ters bağlantıya karşı korumak için girişte 1N400x diyot kullanılmıştır. 

Devreyi parazitik etkilerden arındırarak stabilize etmek için yine girişte 100 uf ve 100 nf cap kullanmak üreticinin önerdiği bir tasarım detayı olmaktadır. 

Out ve Adj arasındaki 20 ohm'luk direnç istenen değerde sabit akım sağlar.

Pil şarj çıkışı regülatör out bacağı (pil +) ve devrenin GND'sinden (pin -) olacak şekilde kurulmalıdır.

Şema:

Breadbord:


Ciklet pil yuvası olarak 18650 yuvası kullanıldı:


LM317 Pinout:

Tuesday, July 8, 2025

Epey Rahatsız Edici 30 Film / The 30 Most Extreme Films of the 21st Century (So Far)

1. A Serbian Film (Srdjan Spasojevic, 2010, Serbia)
2. Irreversible (Gaspar Noé, 2002, France)
3. Martyrs (Pascal Laugier, 2008, France)
4. Inside (À l’intérieur) (Alexandre Bustillo, Julien Maury, 2007, France)
5. Visitor Q (Takashi Miike, 2001, Japan)
6. Ichi the Killer (Takashi Miike, 2001, Japan)
7. Taxidermia (György Pálfi, 2006, Hungary)
8. Gozu (Takashi Miike, 2003, Japan)
9. Haute Tension (Alexandre Aja, 2003, France)
10. Cold Fish (Sion Sono, 2010, Japan)
11. Wolf Creek (Greg Mclean, 2005, Australia)
12. Frontière(s) (Xavier Gens, 2007, France)
13. Oldboy (Chan-wook Park, 2003, South Korea)
14. The Loved Ones (Sean Byrne, 2009, Australia)
15. Funny Games (Michael Haneke, 1997 & 2007, Austria & US)
16. Ex Drummer (Koen Mortier, 2007, Belgium)
17. I Saw the Devil (Kim Jee-woon, 2010, South Korea)
18. The Woman (Lucky McKee, 2011, U.S)
19. Calvaire (The Ordeal) (Fabrice Du Welz, 2004, Belgium)
20. Strange Circus (Sion Sono, 2005, Japan)
21. Eden Lake (James Watkins, 2008, UK)
22. The Chaser (Hong-jin Na, 2008, South Korea)
23. In My Skin (Marina de Van, 2002, France)
24. Three…Extremes (Fruit Chan’s segment “Dumplings,” 2004, Hong Kong)
25. Bedevilled (Chul-soo Jang, 2010, South Korea)
26. Red White & Blue (Simon Rumley, 2010, UK/US)
27. The Skin I Live In (Pedro Almodóvar, 2011, Spain)
28. Das Experiment (Oliver Hirschbiegel, 2001, Germany)
29. Kidnapped (Miguel Ángel Vivas, 2010, Spain)
30. Love Exposure (Sion Sono, 2008, Japan)

Thursday, June 19, 2025

🎞️ ffmpeg ile Videodan Belirli Bir Alanı Kırpma (Crop)

Video işleme projelerinde, bazen bir videonun sadece belirli bir bölümünü saklamak ve kenarlardaki alanları atmak isteyebilirsiniz. Örneğin, dikey bir videoda sadece orta kısmı almak ya da sabit bir kameranın kadrajındaki sabit çerçeveyi izole etmek gerekebilir.

Bu yazıda, ffmpeg kullanarak bir videodan istediğiniz bölgeyi nasıl kırpabileceğinizi adım adım göstereceğim.

🔧 Gerekli Araçlar

  • ffmpeg — komut satırı tabanlı açık kaynak video işlem aracı

Ubuntu için:

sudo apt install ffmpeg

Windows kullanıcıları buradan indirip ffmpeg.exe'yi bir klasöre çıkarıp PATH'e eklemeli.

📐 Adım 1: Videonun Boyutunu Öğren

ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=p=0 input.mp4

Örnek çıktı:

1080,1918

Bu durumda videonun genişliği 1080 piksel, yüksekliği 1918 piksel.

🖼️ Adım 2: Almak İstediğiniz Bölgeyi Belirleyin

Diyelim ki videonun ortasındaki 864x1442’lik bir bölgeyi almak istiyorsunuz. Geri kalan her şey silinecek.

Kırpma için gereken x ve y değerleri (video ortalanacak şekilde):

x = (1080 - 864) / 2 = 108
y = (1918 - 1442) / 2 = 238

✂️ Adım 3: ffmpeg ile Kırpma İşlemi

ffmpeg -i input.mp4 -filter:v "crop=864:1442:108:238" -c:a copy output.mp4

Parametreler:

  • w: alınacak bölgenin genişliği
  • h: yüksekliği
  • x: videonun solundan itibaren başlangıç noktası
  • y: üstten itibaren başlangıç noktası

🎯 Alternatif: Dört Kenardan Kırpma Mantığı

Eğer her kenardan kırpılacak miktar belliyse, formül şu şekilde olur:

crop_w = width - left - right
crop_h = height - top - bottom
x = left
y = top

Örnek:

ffmpeg -i input.mp4 -filter:v "crop=1060:1868:10:20" -c:a copy output.mp4

🎁 Bonus: Tek Kare Alıp Görselde Ölçüm Yapmak

ffmpeg -i input.mp4 -frames:v 1 -q:v 2 -ss 00:00:01 frame.jpg

Bu görseli Paint veya GIMP ile açarak tam olarak hangi alanı almanız gerektiğini ölçebilirsiniz.

📌 Sonuç

ffmpeg'in crop filtresiyle videolardan yalnızca istediğiniz kısmı almak oldukça pratik ve güçlü bir yöntemdir. İster sabit bir kamera çerçevesi kırpın, ister estetik düzenlemeler yapın — doğru kullanıldığında zamandan ve disk alanından büyük tasarruf sağlar.

Friday, June 6, 2025

Xbox One Termal Macun Deneyimi

Geçtiğimiz günlerde Xbox One konsolumun termal macununu değiştirmeye karar verdim. Konsolda hiçbir sıkıntı yoktu, sırf çok uzun yıllardır el değmeden kullandığım için temizlik ve bakım yapasım geldi. Bu iş için önce elimde hazır bulunan kalitesiz, markasız bir macun kullandım Sonuç: Felaket.

Uygulama sonrasında fan bir anda çok yüksek devirde çalışmaya başladı. Konsol boşta bile sanki ağır oyun çalıştırıyormuş gibi ses çıkarıyordu. Dahası, fan çıkışından gelen hava  soğuktu. Yani işlemciden çıkan ısı heatsink’e doğru düzgün aktarılmıyordu. Heatsink neredeyse çalışmıyordu.

Bunun üzerine Arctic MX-4 aldım ve tekrar uyguladım ve konsol eski sessiz haline döndü. Bazen Netflix'te film izlerken, bazen Pacman'de bile çıldıran konsol artık RDR2'de bile fanı düşük hızlarda tutuyordu. En güzeli, artık fan çıkışından gelen hava sıcaktı. Bu da ısının olması gerektiği gibi heatsink'e ulaşabildiğini gösteriyordu.

Xbox One’ın APU yapısı (SoC), CPU ve GPU’nun birleşik olduğu karmaşık bir tasarıma sahip. Bu yüzden termal temas çok kritik. Kalitesiz bir termal macun, sistemin dengesini tamamen bozabiliyor. 

Ucuz termal macun kullanmak bana zaman ve huzur kaybettirdi. Sessizlik ve stabilite istiyorsanız, özellikle Xbox One gibi cihazlarda iyi bir termal macun kullanmak şart. Arctic MX-4 ya da benzeri kaliteli macunları tavsiye ederim.

Tuesday, June 3, 2025

WiZ Akıllı Ampulleri PC Üzerinden Kontrol Etmek (Python GUI Arayüzlü Uygulama)

WiZ markalı akıllı ampulleri (Signify/Philips) cep telefonu uygulaması yerine bilgisayardan kontrol etmek için Python tabanlı GUI uygulaması. Bu uygulama sayesinde aynı ağa bağlı WiZ ampulleri PC'den açmak ve kapatmak mümkün.




✨ Özellikler:

  • 3 farklı WiZ ampul için "Aç" ve "Kapat" butonları
  • Tüm ampulleri tek tuşta açıp kapama; "Hepsini Aç" / "Hepsini Kapat"
  • Tkinter tabanlı basit ve hızlı arayüz
  • Kod Python 3 ve pywizlight kütüphanesiyle yazıldı

📅 Gerekenler:

  • Python 3.8+
  • pywizlight kütüphanesi:

pip install pywizlight

Bilgisayar ile ampuller aynı ağda olmalı

⚙️ Kod:


import tkinter as tk
from tkinter import messagebox
import asyncio
from pywizlight import wizlight, PilotBuilder

# Ampul IP listesi, kendi senaryonuza göre düzenleyin
bulb_ips = ["192.168.1.104", "192.168.1.105", "192.168.1.106"]

class WizController:
    def __init__(self):
        self.loop = asyncio.new_event_loop()

    def turn_on(self, ip):
        self.loop.run_until_complete(self._turn_on(ip))

    def turn_off(self, ip):
        self.loop.run_until_complete(self._turn_off(ip))

    async def _turn_on(self, ip):
        try:
            bulb = wizlight(ip)
            await bulb.turn_on(PilotBuilder())
        except Exception as e:
            messagebox.showerror("Bağlantı Hatası", f"{ip} için hata: {e}")

    async def _turn_off(self, ip):
        try:
            bulb = wizlight(ip)
            await bulb.turn_off()
        except Exception as e:
            messagebox.showerror("Bağlantı Hatası", f"{ip} için hata: {e}")

app = tk.Tk()
app.title("WiZ Ampul Kontrol Paneli")
app.geometry("300x300")

controller = WizController()

for idx, ip in enumerate(bulb_ips):
    frame = tk.LabelFrame(app, text=f"Ampul {idx + 1} - {ip}", padx=10, pady=10)
    frame.pack(padx=10, pady=5, fill="x")

    btn_on = tk.Button(frame, text="Aç", width=10, command=lambda ip=ip: controller.turn_on(ip))
    btn_on.pack(side="left", padx=5)

    btn_off = tk.Button(frame, text="Kapat", width=10, command=lambda ip=ip: controller.turn_off(ip))
    btn_off.pack(side="left", padx=5)

bulk_frame = tk.Frame(app)
bulk_frame.pack(pady=15)

btn_all_on = tk.Button(bulk_frame, text="Hepsini Aç", width=12, command=lambda: [controller.turn_on(ip) for ip in bulb_ips])
btn_all_on.pack(side="left", padx=5)

btn_all_off = tk.Button(bulk_frame, text="Hepsini Kapat", width=12, command=lambda: [controller.turn_off(ip) for ip in bulb_ips])
btn_all_off.pack(side="left", padx=5)

app.mainloop()

Friday, May 30, 2025

Inkscape'te EPS Dosyası Açmak İçin Ghostscript Kurulumu.

EPS (Encapsulated PostScript) dosyası bir grafik formatıdır. Ancak Inkscape gibi modern yazılımlar bu dosya türünü açmak için arka planda Ghostscript adlı ek bir yazılımı kullanır. Eğer sistemde Ghostscript kurulu değilse EPS dosyalarını açamaz. Bu yazıda, Windows ortamında Ghostscript kurulumu ve Inkscape ile EPS dosyasını nasıl açabileceğini işliyoruz.

1. Ghostscript Nedir? Ghostscript, PostScript (PS) ve EPS dosyalarını okuyan, yorumlayan ve rasterlaştıren açık kaynaklı bir yazılımdır. Inkscape, EPS dosyasını içeri aktarabilmek için arka planda Ghostscript'i kullanır.

2. Ghostscript Kurulumu

  1. Ghostscript'in en güncel sürümünü indirin: https://ghostscript.com/download/gsdnld.html

  2. Varsayılan kurulum dizini: C:\Program Files\gs\gs10.05.1\

  3. Aşağıdaki dizinleri sistem PATH ortam değişkenine ekleyin:

    • C:\Program Files\gs\gs10.05.1\bin

    • C:\Program Files\gs\gs10.05.1\lib

PATH Ortam Değişkeni Nasıl Eklenir?

  • Bu Bilgisayar > Özellikler > Gelişmiş Sistem Ayarları > Ortam Değişkenleri > Sistem Değişkenleri > Path > Düzenle > Yeni


3. Ghostscript Kurulumunun Doğrulanması Komut İsteminde (CMD) şunu yazın:

gswin64c --version

Bu komut, yüklü sürümü gösteriyorsa her şey hazırdır.

4. Inkscape ile EPS Dosyası Açmak

  1. Inkscape'i çalıştırın

  2. File > Open ile EPS dosyasını seçin

  3. Ghostscript çağrılır ve EPS dosyası SVG gibi düzenlenebilir hale gelir

İPUCU:

  • EPS dosyasının adında Türkçe karakter veya boşluk olmaması import sırasında hata olasılığını azaltır.

  • Microsoft Store sürümü yerine MSI kurulumlu sürüm kullanın.


5. EPS Alternatifi: PDF'ye Dönüştürmek EPS dosyasını çevirmek için Ghostscript kullanabilirsiniz:

gswin64c -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=output.pdf input.eps

PDF dosyası Inkscape'e import edilerek kolayca SVG'ye dönüştürülebilir.


Sonuç Ghostscript kurulduktan sonra Inkscape, EPS dosyalarını sorunsuz şekilde açabilir. Bu sayede karmaşık vektör setlerini kolayca seçebilir, İkonları SVG formatında düzenleyebilir ve animasyonlu gösterimler için hazır hale getirebilirsiniz.

Elektron Volt, Enerji Taşınımı ve Newton Sarkacı Benzetmesi

Elektron Volt, Elektronun Hızı ve Gerçek Enerji Taşınımı

Elektron volt (eV), bir elektronun 1 voltluk potansiyel farkı boyunca hareket ettiğinde kazandığı enerjidir. Enerji birimi olarak, mikroskobik düzeyde müthiş pratik bir araçtır.

1 eV ≈ 1.602 × 10−19 joule

Mesafe Değil Voltaj Belirleyicidir

Bir elektron 10 cm'lik bir telde ya da 1 km'lik bir kabloda hareket etsin, eğer iki uç arasında 1 voltluk potansiyel fark varsa, elektron yine 1 eV enerji kazanır. Yani:

E = q × V = (1.6 × 10−19 C) × (1 V) = 1.6 × 10−19 J = 1 eV

Elektron Ne Kadar Hızlanır?

Kinetik enerji ile hız arasındaki ilişki:

E = (1/2)mv² → v = √(2E/m)

1 eV alan bir elektronun hızı yaklaşık:

v ≈ 5.93 × 105 m/s

Drift Hızı Başka, Hız Başka

Elektronlar iletken içinde çok yavaş ilerler (drift hızı). Örneğin 1 A akım geçen bir mm²'lik telde:

vd ≈ 70 µm/s

Yani saniyede sadece saç teli kadar yol alır. Buna rağmen lambayı açtığında ışık anında yanar. Neden?

Newton Sarkacı Benzetmesi

Bu olay, Newton sarkacına çok benzer:

  • Bir uçtaki top hareket eder, ortadakiler yerinde durur, son top anında fırlar.
  • Enerji taşıyıcısı madde değil, etkidir.
Aynı şekilde elektrik akımında da enerji, elektronların birbirini dürtmesiyle iletilmez; bir etki zinciri olarak yayılır.

Gerçek Enerji Taşıyıcısı: Poynting Vektörü

Enerjinin nasıl, nereden aktığını tanımlar:

S = E x B
  • E: Elektrik alan
  • B: Manyetik alan
  • S: Enerjinin yönü ve yoğunluğu (Watt/m²)

Ve işte çarpıcı gerçek:

Elektrik devrelerinde enerji, telin içinden değil, telin dışındaki boşluktan akar.

Elektronlar içeride yavaşça hareket eder ama telin dışını saran E ve B alanları sayesinde, enerji dışarıdan akar — tıpkı görünmeyen bir “yağ gibi”.

O Zaman Elektronlar Ne İşe Yarıyor?

Elektronlar aslında enerji taşımaz. Onlar, enerji taşıyan alanların oluşması için gereken “akım” kaynağıdır. Yani:

  • Elektron akışı → manyetik alan oluşturur (B)
  • Potansiyel farkı → elektrik alan oluşturur (E)
  • Bunların etkileşimiyle oluşan S = E × B → enerjiyi taşır

Sonuç

Elektrik akımı, sadece elektronların yavaş hareketi değil; alanların etkileşimiyle enerjinin kablonun dışından taşınmasıdır.

Elektronlar orada ama enerjiyi taşıyanlar onlar değil, onları çevreleyen alanlar.


PowerShell ile Web Sunucusu Loglarından Saldırgan IP Engelleme

Sunucunuzun erişim loglarını incelerken bazı IP'lerin sürekli olarak phpMyAdmin, sqladmin veya cgi-bin gibi yolları taradığını mı fark ettiniz? Bu yazıda, saldırgan davranışlar sergileyen IP adreslerini loglardan otomatik olarak ayıklayan ve Windows Güvenlik Duvarı'nda engelleyen bir PowerShell scripti paylaşıyorum.

Adım 1 – Log Dosyasını Hazırla

Öncelikle Apache/Nginx gibi bir sunucudan alınmış bir erişim logunuz olmalı. Örnek format:


45.131.155.254 - - [29/May/2025:01:01:46 +0300] "GET / HTTP/1.1" 200 5795 "-" "Mozilla/5.0"

Bu dosyayı örneğin C:\loglar\access.log yoluna yerleştirelim.

Adım 2 – PowerShell Scripti

Yeni bir PowerShell scripti oluşturun:

# Kaydet: block-malicious-ips.ps1

$logFile = "C:\loglar\access.log"
$logLines = Get-Content $logFile
$ipRegex = '(\d{1,3}\.){3}\d{1,3}'

# Şüpheli istekleri filtrele
$suspiciousPatterns = @(
    "/phpmyadmin", "/sqladmin", "/mysql", "/db/php", "/cgi-bin", "/PMA",
    "/MyAdmin", "Sakura.sh", "/Management.asp", "/authLogin.cgi"
)

$badIps = @{}

foreach ($line in $logLines) {
    foreach ($pattern in $suspiciousPatterns) {
        if ($line -match $pattern -and $line -match $ipRegex) {
            $ip = ($line -match $ipRegex) | Out-Null; $matches[0]
            if (-not $badIps.ContainsKey($ip)) {
                $badIps[$ip] = 1
            } else {
                $badIps[$ip] += 1
            }
        }
    }
}

# Engelle
foreach ($ip in $badIps.Keys) {
    Write-Output "Engelleniyor: $ip"
    New-NetFirewallRule -DisplayName "Block $ip" -Direction Inbound -RemoteAddress $ip -Action Block -Profile Any -Enabled True
}

Adım 3 – Scripti Çalıştırma

  1. PowerShell’i Yönetici olarak açın.
  2. Script dosyasının bulunduğu klasöre gidin:
    cd C:\loglar
  3. Scripti çalıştırın:
    Set-ExecutionPolicy RemoteSigned -Scope Process
    .\block-malicious-ips.ps1

İsteğe Bağlı: BAT Dosyası ile Çalıştırmak

Scripti çift tıklamayla başlatmak için aşağıdaki gibi bir .bat dosyası oluşturabilirsiniz:

@echo off
powershell -ExecutionPolicy Bypass -File "C:\loglar\block-malicious-ips.ps1"
pause

Sonuç

Bu PowerShell çözümü ile şüpheli IP'leri loglardan ayıklayıp otomatik olarak Windows güvenlik duvarında engelleyebilirsiniz. Script, özellikle küçük çaplı web sunucuları veya kişisel sistemler için pratik bir güvenlik önlemi sunar.

Tuesday, May 27, 2025

Statik IP ve DHCP IP Çakışmaları: Neden Olur, Nasıl Önlenir?

Ağ yöneticileri ve teknik kullanıcılar için "IP çakışması" sinir bozucu bir sorundur. Özellikle aynı yerel ağda hem statik IP atanmış cihazlar hem de DHCP sunucusu tarafından IP dağıtılan cihazlar varsa bu risk daha da büyür. Bu yazıda şu sorunun cevabını detaylıca ele alacağız:

"Statik IP verdim ama modem başka bir cihaza da aynı IP'yi verdi, nasıl olur?"


DHCP Sunucusu Statik IP'yi Nasıl Görür?

❗ Görmez.

Evet, DHCP sunucusu yalnızca kendi üzerinden IP talep eden cihazları tanır. Bir cihaza manuel olarak (statik) 192.168.1.102 verildiğinde bu cihaz DHCP'den IP istemediyse, DHCP sunucusunun ondan haberi yoktur.

Bu durumda DHCP sunucusu 192.168.1.102 adresini "boşta" sanabilir ve başka bir cihaza da aynı IP'yi kiralayabilir.


IP Çakışması Nasıl Oluşur?

Senaryo:

  • PC'ye manuel olarak 192.168.1.102 atanır

  • PC kapanır veya ağdan çıkar

  • DHCP havuzunda 192.168.1.100–192.168.1.150 arası aktif

  • DHCP, boşta zannettiği 192.168.1.102'yi başka bir cihaza verir

  • PC yeniden açılır → IP çakışması oluşur

DHCP sunucusu bu IP'nin zaten başka bir cihaza verildiğini bilemez çünkü ona hiç sorulmadı.


DHCP Lease Süresi de Etkili midir?

Evet. IP adresleri belirli bir "kiralama süresi (lease time)" ile dağıtılır.

  • Eğer cihaz bu süre boyunca yeniden bağlanmazsa,

  • DHCP sunucusu bu IP'yi tekrar kullanılabilir sayar.

Ancak bu yalnızca DHCP üzerinden IP almış cihazlar için geçerlidir. Statik IP alanlar lease tablosuna hiç girmez.


Statik IP Kullanırken Yapılmaması Gerekenler

  • DHCP havuzu içinden rastgele bir IP seçip statik vermek ❌

  • Statik IP verdikten sonra modem DHCP'sine haber vermemek ❌

  • Aynı IP'yi birden fazla cihazda statik olarak kullanmak ❌


Doğru Yaklaşım Nedir?

✅ Yöntem 1: DHCP Rezervasyonu (Önerilen)

  • Modem arayüzüne girilir

  • Cihaza ait MAC adresini seçilir

  • "IP Rezervasyonu" tanımlanır (örneğin: 192.168.1.113)

  • Artık cihaz her bağlandığında otomatik olarak bu IP’yi alır

  • Ağ içinde çakışma riski sıfırlanır

✅ Yöntem 2: DHCP aralığı dışından Statik IP vermek

  • Örneğin DHCP aralığı 192.168.1.100–192.168.1.150 olsun

  • 192.168.1.200 gibi bir IP'yi elle verince DHCP o IP'ye karışmaz.


DHCP Sunucusu IP Pingleyerek Tespit Eder mi?

Bazı gelişmiş DHCP sunucuları IP’yi atamadan önce "bu IP kullanılıyor mu?" diye ping atabilir:

arping 192.168.1.102

Ancak:

  • Bu çoğu modem/router’da yoktur

  • Cihaz kapalıysa veya ICMP yanıtı vermiyorsa yine işe yaramaz


Sonuç

DurumSonuç
Statik IP verildi,                             DHCP bilmezÇakışma olabilir
Lease süresi dolduIP tekrar kullanılabilir
DHCP rezervasyonu yapıldıGüvenli, çakışma yaşanmaz

DHCP'nin doğası gereği sadece istekte bulunan cihazları takip etmesi, ağda statik IP kullanımında dikkatli olunmasını zorunlu kılar.

En güvenli yol: IP'yi elle değil, DHCP rezervasyonu ile sabitlemek.


Ekstra Not: Windows Ağ Ayarında

Statik IP yerine DHCP seçip modemde rezervasyon yapılırsa:

  • IP otomatik gelir

  • DNS ve gateway otomatik doğru olur

  • Manüel girişe gerek kalmaz

Modern ağlarda bu yöntem en sağlam ve sürdürülebilir çözümdür. 🧠🔐

Monday, May 26, 2025

Windows + Nginx: Sade ve Guvenli Firewall Yapilandirmasi

1. Başlangıç Durumu

Windows'un varsayılan güvenlik duvarı:

  • Profil tabanlı (Private/Public/Domain) çalışır.
  • Gelen bağlantılar Block, giden bağlantılar Allow şeklindedir.
  • Yüzlerce "Network Discovery", "Remote Assistance" vb. kural aktif olabilir.

Bu karmaşa dış dünyaya açık kalan portların gözden kaçmasına neden olabilir.

2. Amacımız Nedir?

Servis Durum Açıklama
HTTP (port 80) ✅ Açık Her IP'den erişilsin
SMB (445/139) ✅ Sadece LAN 192.168.1.0/24 ağından erişilsin
UPnP, SSDP, mDNS ❌ Kapalı Güvenlik zaafiyetleri nedeniyle
Diğer tüm servisler ❌ Kapalı Tanımlanmadıkça bloklanacak

3. Kuralları Script ile Tanımlama

firewall_rule_set.ps1 Scripti

# 1. HTTP (80) tüm profillerde açık
New-NetFirewallRule -DisplayName "Allow HTTP on All" `
    -Direction Inbound `
    -Protocol TCP `
    -LocalPort 80 `
    -Profile Any `
    -Action Allow

# 2. SMB sadece LAN'dan
New-NetFirewallRule -DisplayName "Allow SMB from LAN only" `
    -Direction Inbound `
    -Protocol TCP `
    -LocalPort 445,139 `
    -RemoteAddress 192.168.1.0/24 `
    -Action Allow

# 3. SMB dış IP'lere kapalı
New-NetFirewallRule -DisplayName "Block SMB from Others" `
    -Direction Inbound `
    -Protocol TCP `
    -LocalPort 445,139 `
    -RemoteAddress Any `
    -Action Block

# 4. UPnP ve SSDP kapalı
New-NetFirewallRule -DisplayName "Block UPnP" `
    -Direction Inbound `
    -Protocol TCP `
    -LocalPort 2869 `
    -Action Block

New-NetFirewallRule -DisplayName "Block SSDP" `
    -Direction Inbound `
    -Protocol UDP `
    -LocalPort 1900 `
    -Action Block

Scripti Çalıştırma

  1. PowerShell'i Yönetici olarak açın.
  2. Güvenlik politikasını geçerli kılmak için:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
  1. Scripti çalıştırın:
powershell -ExecutionPolicy Bypass -File "firewall_rule_set.ps1"

4. Nginx Loglarını Temizleme ve Takip Etme

Logları sıfırla:

Clear-Content "C:\nginx\logs\access.log"
Clear-Content "C:\nginx\logs\error.log"

Anlık log takibi:

Get-Content "C:\nginx\logs\access.log" -Wait

Gelen istekleri, IP adreslerini ve durum kodlarını gerçek zamanlı izleyebilirsiniz.

5. Kötü Niyetli IP'leri Engelleme

Loglarda aşağıdakiler görülürse:

  • GET /login.rsp gibi zaafiyet denemeleri
  • User-Agent: sqlmap, Hello World, curl vb. bot imzaları
  • Kara liste IP'lerden gelen bağlantılar

Engellemek için:

New-NetFirewallRule -DisplayName "Block malicious IP 196.251.81.93" `
  -Direction Inbound `
  -RemoteAddress 196.251.81.93 `
  -Action Block

(Opsiyonel) Nginx'te engelleme:

server {
    deny 196.251.81.93;
}

6. Otomatik IP Analizi (PowerShell)

$log = "C:\nginx\logs\access.log"
$loglines = Get-Content $log -Tail 100

$blocklist = @()
foreach ($line in $loglines) {
    if ($line -match "login\.rsp" -or $line -match "Hello World" -or $line -match "sqlmap" -or $line -match "curl") {
        if ($line -match "^(\d+\.\d+\.\d+\.\d+)") {
            $ip = $matches[1]
            if (-not ($blocklist -contains $ip)) {
                $blocklist += $ip
                Write-Host "Engelleniyor: $ip"
                New-NetFirewallRule -DisplayName "AutoBlock $ip" -Direction Inbound -RemoteAddress $ip -Action Block
            }
        }
    }
}
Bu script tekrar çalıştırıldığında sadece yeni IP’leri ekler. Görev Zamanlayıcı ile otomatikleştirilebilir.

7. Durum Kontrolleri

Aktif ağ profili:

Get-NetConnectionProfile | Format-Table Name, InterfaceAlias, NetworkCategory

Aktif kurallar özeti:

Get-NetFirewallRule -Enabled True | Format-Table DisplayName, Direction, Action, Profile, LocalPort, Protocol -AutoSize

Dinlenen portlar:

Get-NetTCPConnection -State Listen | Sort-Object LocalPort | Format-Table LocalAddress, LocalPort, OwningProcess

8. Sonuç

  • Sadece tanımlı servisler aktif olur
  • Minimum port dışa açıktır
  • Loglar temiz ve okunabilirdir
  • Profil bazlı karmaşa ortadan kalkar
  • Saldırgan IP'ler anında engellenebilir
  • Otomatik analiz ile sürekli güvenlik sağlanır

Güvenli, sade ve kontrollü bir Windows + nginx ortamı! 🛡️

Monday, May 19, 2025

Windows'ta Kayıp "New → Text Document" Sorunu ve Çözümü

Bazı Windows sistemlerinde sağ tık → New (Yeni) menüsünde "Text Document" (Metin Belgesi) seçeneği kaybolabiliyor. Bu sorun, özellikle Notepad++ gibi üçüncü parti yazılımlar yüklendikten sonra veya yanlış registry düzenlemeleri sonrasında ortaya çıkabiliyor. Bu yazıda bu problemi nasıl teşhis edip, sistemsel olarak kalıcı bir şekilde çözebileceğinizi anlatıyorum.

Sorunun Belirtileri

  • Sağ tık menüsünde "New → Text Document" seçeneği görünmüyor.

  • .txt dosyasına çift tıklayınca "yetki hatası" veya "uygulama ilişkilendirme" hatası geliyor.

  • assoc ve ftype komutları boş veya bozulmuş çıkıyor.

Adım Adım Çözüm

1. Komut Satırıyla File Association'ı Düzeltme

Admin haklarıyla CMD açıp aşağıdaki komutları girin:

assoc .txt=txtfile
ftype txtfile="%SystemRoot%\system32\NOTEPAD.EXE" "%1"

Bu komutlar .txt uzantısını "txtfile" sınıfına bağlar ve bu sınıfın Notepad ile açılmasını sağlar.

2. Registry Anahtarını Temizle ve Düzelt

regedit ile şu konuma gidin:

HKEY_CLASSES_ROOT\.txt

Bu anahtarın içinde şu şekilde görünmelidir:

  • (Default) değeri: txtfile

Eğer alt klasörler varsa (ShellNew, OpenWithProgids, vs) ve bozuklarsa, tamamını silin. Sadece yukarıdaki (Default) anahtarı kalmalı.

Not: Bozulmuş ShellNew anahtarı, "New → Text Document" menüsünün görünmemesine neden olur.

3. Yeniden Başlat

Registry düzenlemelerinin ardından sisteminizi yeniden başlatın. Artık:

  • .txt dosyaları Notepad ile açılır.

  • Sağ tık → New menüsünde "Text Document" seçeneği geri gelir.

Sonuç

Bu işlem, bozuk file association durumlarında %100 çalışan bir çözümdür. assoc, ftype ve registry düzeltmeleri birlikte ele alındığında, Windows'taki tüm metin dosyası işleyişi normale döner.

İlgili .reg Yedeği (Opsiyonel)

Aşağıdaki gibi bir .reg dosyası oluşturup saklayabilirsiniz:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.txt]
@="txtfile"

Friday, February 28, 2025

DungeonCrawlers.

DungeonCrawlers.org, birinci şahıs, ızgara tabanlı dungeon crawler oyunlarına adanmış kapsamlı bir çevrimiçi veritabanıdır. Sitede hem klasik hem de modern yapımların detaylı listeleri, geliştirici ve yayıncı bilgileri, platformlara göre filtreleme seçenekleri ve çeşitli oyun serileri hakkında bilgiler bulunmaktadır.

Site, her yıl düzenlediği "Dungeon Crawler Jam" etkinlikleriyle de tanınmaktadır. Bu etkinliklerde, katılımcılar belirli bir süre içinde kendi dungeon crawler oyunlarını geliştirerek sunarlar. Örneğin, 2023 yılında düzenlenen etkinlikte 1800'den fazla katılımcı ve yaklaşık 200 oyun başvurusu alınmıştır. Bu etkinlikler, türün gelişimine katkıda bulunmakta ve yeni yeteneklerin ortaya çıkmasına olanak tanımaktadır.

DungeonCrawlers.org, ayrıca Discord sunucusu üzerinden topluluk üyelerinin bir araya gelerek deneyimlerini paylaştığı, önerilerde bulunduğu ve oyun geliştirme süreçleri hakkında tartışmalar yürüttüğü aktif bir platform sunmaktadır. Site, kullanıcı geri bildirimlerine önem vererek sürekli güncellenmekte ve genişlemektedir.

Eğer dungeon crawler türüne ilgi duyuyorsanız, DungeonCrawlers.org sizin için vazgeçilmez bir kaynak olacaktır.

https://www.dungeoncrawlers.org/