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.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
RSA'da özel üs d küçük olduğunda (d < N^0.25) sürekli kesirler (continued fractions) genişlemesi ile d'yi kurtarma ve şifreyi çözme saldırısı.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Wiener'in 1990 yılında yayımladığı saldırı: RSA özel üssü d, N^0.25'ten küçükse sürekli kesirler genişlemesiyle d tam olarak kurtarılır.
Challenge'da şunlardan biri görünüyorsa bu saldırıyı dene:
e değeri N'e yakın büyüklükte veya N'den büyüke/N oranı verilmiş ve e açıkça devasa (örneğin N'nin yarısı büyüklüğünde)n2/n1 oranı veya sürekli kesir açılımından bahsediliyorsa (CryptoCTF DoRSA varyantı)d ya da p, q verilmemişse ve e şüpheli büyükWiener saldırısının çekirdeği, sürekli kesirler teoremidir (continued fraction theorem). RSA'da e·d ≡ 1 (mod φ(N)) ilişkisi vardır. Bu ifadeyi yeniden yazmak gerekirse:
e·d = k·φ(N) + 1 → e/N ≈ k/d
Eğer d < N^0.25 / 3 ise, k/d kesri, e/N'nin sürekli kesir açılımındaki yakınsamalardan (convergents) biri olarak tam olarak ortaya çıkar. Tüm yakınsamalar denendikten sonra her (k, d) çifti için φ(N) hesaplanabilir ve bu φ değerinin gerçek bir Euler totient olup olmadığı p, q'nun diskriminantlı kuadratik denklem çözümüyle doğrulanır.
DoRSA varyantında ise iki modül n1, n2 verilir ve n2/n1 ≈ k/x ilişkisi kurulur. Aynı sürekli kesir tekniği k ve x değerlerini kurtarmak için n2/n1 oranına uygulanır; ardından φ(n1) türetilir.
e ve N değerlerini challenge'dan al.e/N oranının sürekli kesir açılımını hesapla.(k, d) için:
φ(N) = (e·d - 1) // k hesapla.p + q = N - φ(N) + 1 ve p·q = N üzerinden diskriminantı kontrol et: (p+q)^2 - 4N tam kare mi?p, q bulunmuştur.d ile m = pow(c, d, N) hesapla.long_to_bytes(m) ile bayrağı çöz.Araçlar:
owiener Python modülü (tek satır çözüm)continued_fraction() fonksiyonuimport owiener
from Crypto.Util.number import long_to_bytes
# Challenge verisi — CryptoHack "Everything is Big" tarzı
# e burada N'e yakın büyüklükte
n = 0xAE053B85FA4A15C8A0C48AF70B4C6B3BF58DF6F4D0B02F4F78BC2A8BAD87BE
e = 0x2B3DF21A5B85CFC80D02A1F22EBAF3F3A7B84B3C1AE8B45E8A5C5A5D1B2E4F
d = owiener.attack(e, n)
if d is None:
print("Wiener saldırısı başarısız — d N^0.25'ten büyük olabilir")
else:
# Şifreli metin
c = 0x1234ABCD...
m = pow(c, d, n)
print(long_to_bytes(m).decode())
# SageMath ortamında çalıştır
from Crypto.Util.number import long_to_bytes
def wiener_attack(e, n):
cf = continued_fraction(e / n)
convergents = cf.convergents()
for kd in convergents:
k = kd.numerator()
d = kd.denominator()
if k == 0:
continue
# phi(n) kontrolü
if (e * d - 1) % k != 0:
continue
phi = (e * d - 1) // k
# p ve q bulmak için kuadratik denklem
# x^2 - (n - phi + 1)x + n = 0
b = n - phi + 1
discriminant = b^2 - 4*n
if discriminant >= 0:
sqrt_disc = Integer(discriminant).isqrt()
if sqrt_disc^2 == discriminant:
p = (b + sqrt_disc) // 2
q = (b - sqrt_disc) // 2
if p * q == n:
return d
return None
# CryptoCTF 2021 DoRSA — n2/n1 varyantı
def dorsa_attack(n1, n2, e, c):
cf = continued_fraction(Integer(n2) / Integer(n1))
convergents = cf.convergents()
for conv in convergents:
k = conv.numerator()
x = conv.denominator()
if k == 0:
continue
# n2 = k * n1 / x yaklaşımı üzerinden phi(n1) hesabı
# phi(n1) = (e * d - 1) / k gibi değil; n1 = p*q olduğundan
# x ≈ p veya q, k ortak çarpan
# Deneme: phi1 = n1 - x - (n1//x) + 1 (p=x, q=n1//x)
if n1 % x == 0:
q_candidate = n1 // x
phi1 = (x - 1) * (q_candidate - 1)
d = pow(e, -1, phi1)
m = pow(c, d, n1)
flag = long_to_bytes(int(m))
if b'CTF' in flag or b'flag' in flag.lower():
return flag
return None
# Kullanım
n = <N değeri>
e = <e değeri>
c = <şifreli metin>
d = wiener_attack(e, n)
if d:
m = pow(c, d, n)
print(long_to_bytes(int(m)))
from Crypto.Util.number import long_to_bytes
import math
def isqrt(n):
if n < 0:
raise ValueError("Negatif sayının karekökü alınamaz")
if n == 0:
return 0
x = n
y = (x + 1) // 2
while y < x:
x = y
y = (x + n // x) // 2
return x
def continued_fraction_convergents(e, n):
"""e/n'nin yakınsamalarını üretir"""
a0 = e // n
convergents = [(a0, 1)]
r0, r1 = n, e % n
p0, p1 = 1, a0
q0, q1 = 0, 1
while r1 != 0:
a = r0 // r1
p0, p1 = p1, a * p1 + p0
q0, q1 = q1, a * q1 + q0
convergents.append((p1, q1))
r0, r1 = r1, r0 % r1
return convergents
def wiener(e, n):
convergents = continued_fraction_convergents(e, n)
for k, d in convergents:
if k == 0:
continue
if (e * d - 1) % k != 0:
continue
phi = (e * d - 1) // k
# Kuadratik: x^2 - (n - phi + 1)x + n = 0
b = n - phi + 1
disc = b * b - 4 * n
if disc >= 0:
sqrt_disc = isqrt(disc)
if sqrt_disc * sqrt_disc == disc and (b + sqrt_disc) % 2 == 0:
return d
return None
# --- Challenge parametreleri ---
n = 0x... # N değerini buraya yaz
e = 0x... # e değerini buraya yaz
c = 0x... # Şifreli metni buraya yaz
d = wiener(e, n)
if d:
print(f"[+] d bulundu: {d}")
m = pow(c, d, n)
print(f"[+] Flag: {long_to_bytes(m).decode()}")
else:
print("[-] Wiener başarısız, d N^0.25'ten büyük")
n1, n2 verilmiş; n2/n1 ≈ k/x ilişkisi tespit edilmiş. Wiener'in sürekli kesir tekniği n2/n1 oranına uygulanarak k ve x kurtarılmış, φ(n1) hesaplanmış ve şifreli metin çözülmüştür.continued_fraction(), PythonCCTF{...} (CryptoCTF flag formatı)e/n sürekli kesir açılımı uygulanmış, yakınsamalar üzerinde geçerli (k, d) bulunmuş, kuadratik denklemle p, q elde edilmiş.owiener Python modülü, SageMathcoppersmith() gerektirir.e ve n'nin doğru sırayla girildiğini kontrol et. Bazı challenge'lar parametreleri ters verir.e ve n aynı boyutta değil mi? e > n ise önce e = e % phi(n) adımını dene (phi bilinmiyorsa n ile yaklaş: e % n).owiener pip paketi veya el yazımı yakınsama döngüsü kullan — her ikisi de SageMath gerektirmez.long_to_bytes(m) bazen baştaki boş baytlar içerir; .lstrip(b'\x00') ile temizle.n2/n1) gereklidir.아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
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.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.