21st.dev Magic MCP — AI-powered UI component generation via natural language. Access to 21st.dev component library, SVGL brand logos, and real-time preview. Generate React/Tailwind components with /ui command.
日本語の概要は準備中です。原文の説明を表示しています。
Görüntü steganografi — LSB/MSB, alpha kanal, metadata, file carving tespiti ve Python Pillow ile her kanalın bit-seviyesinde analizi.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Aşağıdaki işaretlerden herhangi birini görürsen bu skill'i tetikle:
.png, .jpg, .jpeg, .bmp, .gif, .tiff dosyası verilmiş# zsteg — PNG/BMP LSB analizi (en hızlı başlangıç)
gem install zsteg
# steghide — JPG/BMP şifreli gizleme
sudo apt install steghide
# stegsolve — Java GUI, çoklu bit düzlemi görselleştirme
wget https://github.com/zardus/ctf-tools/raw/master/stegsolve/install
# ya da doğrudan jar: Stegsolve.jar
# exiftool — EXIF/metadata okuma
sudo apt install exiftool
# binwalk — gömülü dosya tespiti ve çıkarma
sudo apt install binwalk
# Python — PIL/Pillow
pip install Pillow
# strings — ham metin arama
strings image.png | grep -i "flag\|ctf\|secret"
Bu fark CTF'lerde sıkça tuzak olarak kullanılır.
LSB (Least Significant Bit) — bit 0:
MSB (Most Significant Bit) — bit 7:
zsteg varsayılan olarak LSB arar — MSB için özel parametre lazım# zsteg LSB (varsayılan)
zsteg image.png
# zsteg MSB — tüm bit düzlemlerini tara
zsteg -a image.png
# Sadece MSB (bit 7), R kanalı
zsteg -b 7 -o rgb image.png
# Tüm kombinasyonları dene (yavaş ama kapsamlı)
zsteg --all image.png 2>/dev/null | grep -i "flag\|ctf\|pico\|htb"
#!/usr/bin/env python3
"""
Görüntü steganografi — her kanal, her bit düzlemi için veri çıkarıcı.
Çalıştır: python3 stego_extract.py image.png
"""
from PIL import Image
import sys
def extract_bits(img_path: str, bit: int, channels: str = "RGB", order: str = "row") -> bytes:
"""
img_path : PNG dosyası
bit : 0 = LSB, 7 = MSB, 1-6 = ara bitler
channels : "R", "G", "B", "A", "RGB", "RGBA" gibi kombinasyonlar
order : "row" (satır satır) ya da "col" (sütun sütun)
"""
img = Image.open(img_path).convert("RGBA")
width, height = img.size
pixels = img.load()
channel_map = {"R": 0, "G": 1, "B": 2, "A": 3}
ch_indices = [channel_map[c] for c in channels if c in channel_map]
bits = []
if order == "row":
pixel_coords = [(x, y) for y in range(height) for x in range(width)]
else:
pixel_coords = [(x, y) for x in range(width) for y in range(height)]
for (x, y) in pixel_coords:
pixel = pixels[x, y]
for ch in ch_indices:
b = (pixel[ch] >> bit) & 1
bits.append(b)
# Bit dizisini byte'lara çevir
result = bytearray()
for i in range(0, len(bits) - 7, 8):
byte_bits = bits[i:i+8]
byte = 0
for b in byte_bits:
byte = (byte << 1) | b
result.append(byte)
return bytes(result)
def is_printable(data: bytes, threshold: float = 0.7) -> bool:
"""Verinin büyük çoğunluğu yazdırılabilir ASCII ise True döner."""
printable = sum(32 <= b < 127 for b in data[:200])
return printable / min(len(data), 200) > threshold
def try_all_combinations(img_path: str):
"""Tüm bit/kanal kombinasyonlarını dene, anlamlı görünenleri raporla."""
channel_combos = ["R", "G", "B", "A", "RG", "RB", "GB", "RGB", "RGBA"]
print(f"[*] Analiz ediliyor: {img_path}")
print(f"[*] {len(channel_combos)} kanal kombinasyonu × 8 bit düzlemi\n")
found = []
for channels in channel_combos:
for bit in range(8):
try:
data = extract_bits(img_path, bit, channels)
# Flag formatı var mı?
text = data.decode('latin-1', errors='replace')
# Bilinen flag formatlarını ara
flag_patterns = [
"flag{", "Flag{", "FLAG{",
"picoCTF{", "HTB{", "corctf{",
"CTF{", "ctf{"
]
for pat in flag_patterns:
if pat in text[:500]:
idx = text.index(pat)
snippet = text[idx:idx+60]
print(f"[!] FLAG BULUNDU — bit={bit}, channels={channels}")
print(f" {snippet}")
found.append((bit, channels, snippet))
# Genel okunabilirlik kontrolü
elif is_printable(data[:100]) and len(data) > 10:
preview = text[:50].replace('\n', ' ').replace('\r', '')
print(f"[?] Okunabilir — bit={bit}, channels={channels}: {preview}...")
except Exception as e:
pass
if not found:
print("\n[-] Açık flag bulunamadı. Manuel inceleme gerekebilir.")
print(" → zsteg --all ile dene")
print(" → steghide extract -sf image.jpg ile dene (şifreli gizleme)")
return found
# Belirli kombinasyon
def extract_and_save(img_path: str, bit: int, channels: str, out_file: str = "output.bin"):
data = extract_bits(img_path, bit, channels)
with open(out_file, "wb") as f:
f.write(data)
print(f"[+] {len(data)} byte yazıldı: {out_file}")
print(f"[+] İlk 100 byte: {data[:100]}")
print(f"[+] ASCII: {data[:100].decode('latin-1', errors='replace')}")
if __name__ == "__main__":
img = sys.argv[1] if len(sys.argv) > 1 else "image.png"
# Tüm kombinasyonları otomatik tara
results = try_all_combinations(img)
# Manuel çıkarım örnekleri:
# extract_and_save(img, bit=0, channels="RGB") # LSB RGB
# extract_and_save(img, bit=7, channels="RGB") # MSB RGB (picoCTF tarzı)
# extract_and_save(img, bit=0, channels="A") # Alpha kanalı LSB
#!/usr/bin/env python3
"""
picoCTF 2023 "MSB" challenge tam çözümü.
Her pikselin R, G, B kanalının MSB'si (bit 7) alınıp birleştiriliyor.
"""
from PIL import Image
img = Image.open("challenge.png").convert("RGB")
width, height = img.size
pixels = img.load()
bits = []
for y in range(height):
for x in range(width):
r, g, b = pixels[x, y]
bits.append((r >> 7) & 1) # R MSB
bits.append((g >> 7) & 1) # G MSB
bits.append((b >> 7) & 1) # B MSB
# Byte'lara çevir
result = bytearray()
for i in range(0, len(bits) - 7, 8):
byte = 0
for b in bits[i:i+8]:
byte = (byte << 1) | b
result.append(byte)
# Flag'i bul
text = result.decode('latin-1', errors='replace')
if 'picoCTF{' in text:
start = text.index('picoCTF{')
end = text.index('}', start) + 1
print(f"[+] FLAG: {text[start:end]}")
else:
# Dosyaya kaydet, elle incele
with open("msb_output.bin", "wb") as f:
f.write(result)
print(f"[-] Flag bulunamadı. msb_output.bin inceleniyor...")
print(f" strings msb_output.bin | grep picoCTF")
# Tüm metadata alanlarını göster
exiftool image.jpg
# Sadece yorum/açıklama alanları
exiftool -Comment -ImageDescription -UserComment image.jpg
# GPS koordinatları (bazen flag formatında)
exiftool -GPSLatitude -GPSLongitude image.jpg
# Thumbnail'i çıkar (farklı görüntü içerebilir)
exiftool -b -ThumbnailImage image.jpg > thumbnail.jpg
# Tüm binary alanları çıkar
exiftool -b image.jpg > raw_metadata.bin
strings raw_metadata.bin | grep -i "flag\|ctf\|secret"
# Metadata'yı temizlemeden önce inceleme (silinmiş ama hala orada olabilir)
exiftool -all= image.jpg -o clean.jpg # kopyasını temizle
# Orijinal dosyayı hex editörle incele: hexdump -C image.jpg | grep -A2 "Exif"
# Gömülü dosya tespiti
binwalk image.png
# Örnek çıktı:
# DECIMAL HEXADECIMAL DESCRIPTION
# 0 0x0 PNG image, 800 x 600, 8-bit
# 45231 0xB0AF Zip archive data, "flag.txt"
# 46892 0xB72C End of Zip archive
# Otomatik çıkarma (-e = extract, -M = matryoshka/iç içe)
binwalk -e image.png
binwalk -eM image.png # iç içe dosyaları da çıkar
# Manuel çıkarma (belirli offset'ten)
dd if=image.png bs=1 skip=45231 of=extracted.zip
unzip extracted.zip
# PNG chunk'larını incele (gizli IDAT/tEXt/zTXt chunk)
python3 -c "
import struct, zlib
with open('image.png', 'rb') as f:
data = f.read()
# PNG signature
assert data[:8] == b'\x89PNG\r\n\x1a\n', 'Geçersiz PNG!'
pos = 8
while pos < len(data):
length = struct.unpack('>I', data[pos:pos+4])[0]
chunk_type = data[pos+4:pos+8].decode('ascii', errors='replace')
chunk_data = data[pos+8:pos+8+length]
crc = data[pos+8+length:pos+12+length]
print(f'Chunk: {chunk_type} ({length} byte)')
if chunk_type in ('tEXt', 'zTXt', 'iTXt'):
print(f' >>> Metin: {chunk_data[:200]}')
if chunk_type == 'IEND':
trailing = data[pos+12:]
if trailing:
print(f' [!] IEND sonrası {len(trailing)} byte veri var!')
with open('trailing_data.bin', 'wb') as f:
f.write(trailing)
pos += 12 + length
"
zsteg -a tüm yönleri dener.zsteg -b 7 -o rgb image.png.img.convert("RGBA") kullan.stegcracker image.jpg wordlist.txt ile brute-force dene.P (palette) PNG'lerde piksel değerleri renk indeksi, renk değeri değil. img.convert("RGB") ile dönüştür.まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
21st.dev Magic MCP — AI-powered UI component generation via natural language. Access to 21st.dev component library, SVGL brand logos, and real-time preview. Generate React/Tailwind components with /ui command.
日本語の概要は準備中です。原文の説明を表示しています。
AES CBC/ECB modlarına karşı kriptografik bütünlük saldırıları — bit flipping, IV manipulation, ECB cut-and-paste, CBC-MAC length extension, IV reuse
日本語の概要は準備中です。原文の説明を表示しています。
AES-GCM ve ChaCha20-Poly1305 nonce yeniden kullanımı saldırısı — GF(2^128) polinom kök bulma ile Hash Key kurtarma ve MAC sahteciliği.
日本語の概要は準備中です。原文の説明を表示しています。
tespit etmeabnormal access patterns in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics. Identifies after-hours bulk downloads, access from new IP addresses, unusual API calls (GetObject spikes), and potential data exfiltration using statistical baselines and time-series anomaly Tespit.
日本語の概要は準備中です。原文の説明を表示しています。
Perform static and symbolic analysis of Solidity smart contracts using Slither and Mythril to tespit etmereentrancy, integer overflow, access control, and other vulnerability classes before Dağıt:ment to Ethereum mainnet.
日本語の概要は準備中です。原文の説明を表示しています。
Parses Kubernetes API server audit logs (JSON lines) to tespit etmeexec-into-pod, secret access, RBAC modifications, privileged pod creation, and anonymous API access. Builds threat Tespit rules from audit event patterns. Use investigating yaparken Kubernetes cluster compromise or building k8s-specific SIEM Tespit rules.
日本語の概要は準備中です。原文の説明を表示しています。