OverTheWire Bandit: Seviye 5 → Seviye 6
Bağlam
Bazen, elimizde dosyanın adı yoktur ama özellikleri vardır. Bir sistem yöneticisi veya güvenlik uzmanı olarak, binlerce dosya arasından “700MB’dan büyük log dosyalarını” veya “son 1 saatte değiştirilmiş dosyaları” bulmanız gerekebilir.
Bu seviye, Linux’un en güçlü arama motoru olan find komutunu öğretiyor.
Hedef
Şifre, inhere klasörünün (veya alt klasörlerinin) bir yerindeki dosyada saklı. Dosyanın özellikleri:
- Human-readable (Okunabilir metin dosyası)
- 1033 bytes boyutunda
- Not executable (Çalıştırılabilir değil)
Çözüm
Önce inhere klasörüne girelim:
cd inhere
Eğer sadece ls -R (recursive/özyineli) yaparsak, ekranımız yüzlerce dosya ile dolar. Samanlıkta iğne aramak gibidir. Bunun yerine find komutunu ve filtrelerini kullanacağız.
Gereksinimlerimizi find diline çevirelim:
- Dosya olsun (
-type f) - Boyutu 1033 bayt olsun (
-size 1033c). (Linux’tacsuffix’i bayt anlamına gelir.kkilobayt,Mmegabayt). - Çalıştırılabilir olmasın (
! -executable). (Ünlem işareti “not” yani “değil” anlamındadır).
Komutu birleştirelim:
find . -type f -size 1033c ! -executable
Çıktı:
./maybehere07/.file2
Tek bir sonuç döndü! Bu bizim aradığımız dosya. İçeriğini okuyalım:
cat ./maybehere07/.file2
# Şifre burada
Not: Sonuçta boşluk içeren bir dosya yolu olsaydı (örneğin
./maybe here/.file2), tırnak içine almamız (cat "./maybe here/.file2") gerekirdi.
Öğrendiklerimiz
findFiltreleri:-size: Dosya boyutuna göre arama (1033c= 1033 bayt,+10M= 10MB’dan büyük).-type: Dosya türüne göre (f= file,d= directory).-executable: İzinlere göre arama.
- Mantıksal Operatörler:
!(NOT) operatörü ile istemediğimiz özellikleri hariç tutabiliriz.
Linux’ta bir şeyi “bulamıyorsanız”, muhtemelen find komutunu yeterince spesifik kullanmıyorsunuzdur.