Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

MD5

bullvar_katip

Administrator
Katılım
21 Mayıs 2024
Mesajlar
532,105
MD5 (Message-Digest algorithm 5), yaygın olarak kullanılan bir kriptografik özet fonksiyonudur. Girilen verinin boyutundan bağımsız olarak, 128-bit özet değeri üretir. MD5 ilk olarak kriptografik özet fonksiyonu olarak tasarlanmış olmasına rağmen geniş çaplı güvenlik açıkları tespit edilmiştir. Veri bütünlüğünün sağlandığını kontrol etmek için sağlama değeri (ing: checksum) üretmek amacıyla kullanılır. Ancak sadece kasıtsız yapılan değişiklere karşı kullanışlıdır. Birçok özet (hash) fonksiyonu gibi MD5 da şifreleme algoritmaları içermez. Kaba kuvvet saldırısı ile kırılabilir. Aşağıdaki Güvenlik bölümünde ayrıntılı olarak açıklandığı gibi geniş çaplı güvenlik açıklarından muzdariptir. MD5, Ron Rivest tarafından 1991 yılında, daha önceki versiyon olan MD4 yerine kullanılması amacıyla tasarlanmıştır. RFC 1321'deki kaynak kodu RSA lisansı içerir. "MD" kısaltması "Mesaj Özeti (Message Digest)" anlamına gelmektedir. MD5'ın güvenilirliği ciddi olarak sarsılmıştır. İçerdiği güvenlik zafiyetleri sahada da kullanılmıştır, bunlardan en önemlisi 2012'deki Flame kötücül yazılımıdır (Flame malware). CMU Yazılım Mühendisliği Enstitüsü MD5'ı için "kriptografik açıdan kırılabilir daha fazla kullanım için uygun değildir" açıklamasında bulunmuştur. Tarih ve Kriptanaliz MD5, MIT Profesörü Ronald Rivest tarafından tasarlanan, bir kriptografik özet algoritmasıdır (Rivest, 1992). Analatik çalışmalar MD5'ın önceki versiyonu olan MD4'un yeterince güvenli olmadığını kanıtlayınca, Rivest güvenli bir yedek olarak MD5'ı tasarladı.(Hans Dobbertin MD4'te güvenlik açıkları bulmuştur.) 1993 yılında Den Boer ve Bosselaers iki farklı başlanlıç vektörünü (initialization vector) kullanarak aynı özet değerini üretip sınırlı bir sözde-çakışma (pseudo-collision) sonucu elde etmiş oldular. 1996 yılında Dobbertin MD5 sıkıştırma fonksiyonunda çakışmalar olduğunu belirtti (Dobbertin, 1996).Bu MD5'ın tamamında etkili bir atak olmadığı için kriptografiyle ilgilenen insanlar MD5'ın, SHA-1 veya RIPEMD-160 yerine geçebileceği taraftarıydılar. Özet değerinin boyutu (128 bit) yeterince küçük olduğu için doğum günü saldırıları için uygundu. Mart 2004'te doğum günü saldırısı ile çakışma bularak MD5'ın pratikte güvenilir olmadığını göstermeyi amaçlayan MD5CRK isimli bir proje başladı. Kısa süre sonra, Xiaoyun Wang, Dengguo Feng, Xuejia Lai ve Hongbo Yu tarafından MD5'ın tamamı için çakışmalar duyurulunca MD5CRK Ağustos 2004'te sona erdi. Yaptıkları analitik saldırının IBM p690 clusterda yalnızca 1 saat sürdüğü raporlandı. 1 Mart 2005'te, Arjen Lenstra, Xiaoyun Wang ve Benne de Weger tarafından farklı açık anahtarlardan aynı MD5 özet değerine sahip iki X.509 sertifikasının üretildiği pratik ve çarpıcı bir çakışma gösterildi. Özet üretimi iki açık anahtarın da gizli anahtarlarını içeriyordu. Birkaç gün içinde Vlastimil Klima tarafından bu algoritmanın gelişmiş versiyonu yayınlandı.Yeni algoritmayla bir saat içinde tek bir notebook bilgisayar ile MD5 çakışmaları üretebiliyordu. 18 Mart 2016'da Vlastimil Klima, tunneling adını verdiği bir algoritma yayınladı. BU algoritmayla yalnızca bir dakikada içinde tek bir notebook bilgisayar ile MD5 çakışmaları üretebiliyordu. MD5'la ilgili çeşitli RFC yazım hataları yayınlandı. 2009 yılında United States Cyber Command,misyonunu belirten cümlenin MD5 özet değerini, resmi ambleminin bir parçası olarak kullandı. 24 Aralık 2010'da, Tao Xie ve Dengguo Feng,ilk kez tek blok (512-bit) MD5 çakışmasını yayınladılar.(Önceki çakışma bulguları çok bloklu saldırılar üzerindeydi) Güvenlik nedenleriyle, Xie ve Feng yani saldırının algoritmasını açıklamadılar.1 Ocak 2013'ten önce farklı 64 baytlık bir çarpışmayı ilk bulana 10.000 ABD doları ödül vereceklerini açıklayarak şifreleme topluluğuna meydan okudular. Marc Stevens, meydan okumaya yanıt verdi ve çakışan tek blokluk mesajların yanı sıra kendi algoritmasını ve kaynak kodunu yayınladı. 2011 yılında, MD5 ve HMAC-MD5'daki güvenlikhususlarını güncellemek için RFC 6151 kabul edildi. Güvenlik MD5 özet fonksiyonunun güvenilirliği ciddi şekilde sarsılmıştır.2,6GHz Pentium 4 işlemcili bir bilgisayarda birkaç saniye içinde çarpışmalara neden olabilecek bir çarpışma saldırısı mevcuttur. Ayrıca chosen-prefix collision attack ile belirli ön eklere sahip iki girdiden saatler içerisinde çakışma bulunabilir. Çakışmaları bulmak, hazır GPU'ların kullanımı ile büyük ölçüde kolaylaşmıştır. NVIDIA GeForce 8400GS grafik işlemcisinde saniyede 16-18 milyon özet değeri hesaplanabilir. NVIDIA GeForce 8800 Ultra, saniyede 200 milyondan fazla özet değeri hesaplayabilir. Bu hash değeri çakışması saldırıları, dosyaların çakışması, sayısal sertifikalar (digital certificates)'ın çakışması da dahil olmak üzere kamuoyuna duyuruldu. 2015'ten itibaren, MD5'in oldukça yaygın olarak kullanıldığı, güvenlik araştırmaları ve antivirüs şirketleri tarafından gösterildi. Güvenlik konularına genel bakış 1996'da MD5'ın tasarımında bir hata bulundu. Bu hata dönemde çok önemli bir güvenlik açığı sayılmasa da, kriptografçılar, o zamanlar güvenlik açıkları olduğu tespit edilen SHA-1 için olduğu gibi MD5 için de başka algoritmaların kullanılmasını önermeye başladılar. 2004 yılında MD5'in çakışmaya karşı güvenli olmadığı gösterildi. Bu nedenle, MD5, SSL sertifikaları veya dijital imza gibi dijital güvenliğe dayalı uygulamalar için uygun değildir. Ayrıca 2004 yılında, algoritmayı güvenlik nedeniyle şaibeli hale getiren daha ciddi kusurlar keşfedildi; Özellikle bir grup araştırmacı, aynı MD5 sağlama değerini üreten bir çift dosya oluşturduklarını açıkladı. 2005, 2006 ve 2007 yıllarında MD5'ı kırmak için daha fazla ilerleme kaydedildi. Aralık 2008'de bir grup araştırmacı bu tekniği sahte SSL sertifikası üretmek için kullandı. 2010 itibarıyla, CMU Yazılım Mühendisliği Enstitüsü MD5'ı için "kriptografik açıdan kırılabilir daha fazla kullanım için uygun değildir" açıklamasında bulunmuştur ve ABD hükûmet uygulamalarının çoğunda SHA-2 ailesi özet fonksiyonlarının kullanılması gerekmektedir. 2012'de, Flame kötücül yazılımı(Flame malware) ile MD5'daki güvenlik açıkları, sahte Microsoft dijital imzası üretmek için kullanıldı. Çakışma Açıkları (Collision vulnerabilities) 1996 yılında, MD5 sıkıştırma fonksiyonunda çakışmalar bulundu.Hans Dobbertin RSA Laboratuvarları teknik haber bülteninde "Sunulan saldırı MD5'in pratik uygulamalarını henüz tehdit etmiyor ancak tehdit etmeye çok yakın ... gelecekte çakışmaya karşı dayanıklı özet fonksiyonun gerekli olduğu durumlarda ... daha fazla MD5 kullanılmamalı . " 2005 yılında araştırmacılar, PostScript belgelerinin ve X.509 sertifikalarının çiftlerini aynı özet değerinden oluşturabildiler. O yıl, MD5'in tasarımcısı Ron Rivest, "md5 ve sha1'in her ikisinin de (çakışma direnci bakımından) açıkça kırıldığını" yazdı. 30 Aralık 2008'de bir grup araştırmacı, 25. Chaos Communication Kongresi'nde, MD5 özet değeri ile kontrol edildiğinde geçerli görünen, sahte bir ara sertifika yetkilisi sertifikası oluşturmak için MD5 çakışmlarının nasıl kullanılacağını açıkladı. Araştırmacılar, İsviçre'deki EPFL'de,SonyPlayStation 3 cluster kullanarak, RapidSSL tarafından yayınlanan normal bir SSL sertifikasını, RapidSSL tarafında geçerliliği imzalanmış sahte sertifikalar üretebilecekleri CA sertifikasına dönüştürdüler. RapidSSL sertifikalarının onaylayıcısı olan VeriSign, güvenlik açığı ilan edildiğinde, sağlama değeri hesaplamak için MD5 kullanarak oluşturulan yeni RapidSSL sertifikaları için onay vermeyi bıraktığını duyurdu.VeriSign, MD5 kullanılarak imzalanmış mevcut sertifikaları iptal etmedi, bu karar atağı yaratıcısı olan araştırmacılar tarafından uygun görüldü. (Alexander Sotirov, Marc Stevens, Jacob Appelbaum, Arjen Lenstra, David Molnar, Dag Arne Osvik, and Benne de Weger). Bruce Schneier, "MD5'in kırılmış bir özet fonksiyonu olduğunu zaten biliyorduk","artık hiç kimse MD5 kullanmamalı" açıklamalarında bulundu. SSL araştırmacıları "Sertifika Yetkilileri, yeni sertifikalar verirken MD5'i kullanmayı bırakmalıdır. Ayrıca MD5'in diğer uygulamalarda kullanımının tekrar gözden geçirilmesini umuyoruz" ifadelerini içeren bir yazı yayınladılar. Microsoft'a göre, 2012 yılında, Flame zararlı yazılımının yaratıcıları, MD5 çakışmasını kullanarak bir Windows kod imzalama sertifikası hazırladılar. MD5, Merkle-Damgård yapısını kullanır; bu nedenle, iki ön-ekle aynı özet değeri oluşturulabiliyorsa, çakışmayı kullanan uygulama, geçerli olarak kabul edilme olasılığının arttırmak için ortak bir sonek ekleyebilir. Ayrıca, mevcut çakışmaları bulma teknikleri rastgele bir ön-ek belirlemeye olanak tanır: bir saldırgan, aynı içerikle başlayan aynı özet değerine sahip iki dosya oluşturabilir. Aralarında 6 bitlik fark olan iki mesajın MD5 çakışma örneği: d131dd02c5e6eec4 693d9a0698aff95c 2fcab5712467eab 4004583eb8fb7f89 55ad340609f4b302 83e48883251415a 085125e8f7cdc99f d91dbd280373c5b d8823e3156348f5b ae6dacd436c919c6 dd53e2487da03fd 02396306d248cda0 e99f33420f577ee8 ce54b6708080d1e c69821bcb6a88393 96f965b6ff72a70 d131dd02c5e6eec4 693d9a0698aff95c 2fcab5712467eab 4004583eb8fb7f89 55ad340609f4b302 83e48883251415a 085125e8f7cdc99f d91dbd280373c5b d8823e3156348f5b ae6dacd436c919c6 dd53e2487da03fd 02396306d248cda0 e99f33420f577ee8 ce54b6708080d1e c69821bcb6a88393 96f965b6ff72a70 İki mesaj da aynı MD5 özet değerine sahip:79054025255fb1a26e4bc422aef54eb4. İki örnek arasındaki fark, her bayt için en öndeki bitin flip edilmiş olmasıdır. Örneğin, ilk örneğin 20. baytı (offset 0x13), 0x87, ikilik tabanda 10000111'dir. Bu baytın ilk biti flip edildiğinde ikilik tabanda 00000111 elde edilmiş olur. Bu sayı da ikinci örnekteki 0x07'dir. Daha sonra ayrı ayrı seçilen iki dosya arasında çakışma oluşturmanın mümkün olduğu bulundu. Bu teknik 2008 yılında, sahte CA sertifikası oluşturmak için kullanıldı.2014'te Anton Kuznetsov tarafından MPI kullanarak paralelleştirilmiş çakışma araştırmasının yeni bir varyasyonun, cluster kullanarak 11 saatte çakışma bulduğu açıklandı. Preimage Açıkları Nisan 2009'da, MD5'ın preimage (ters görüntü kümesi) korumasını geçebilen bir preimage saldırısı yayınlandı. Bu teorik saldırının ful preimage için hesaplama karmaşıklığı 2'dür. Uygulamalar MD5 özetleri, yazılım dünyasında, aktarılan bir dosyanın bozulmadan geldiğine dair güvence sağlamak için yaygın şekilde kullanılır. Örneğin, dosya sunucuları dosyalar için önceden-hesaplanmış MD5 (md5sum olarak bilinir) sağlama değeri (checksum) yayınlarlar, böylece bir kullanıcı indirdiği dosyanın sağlama değerini hesaplayıp onu dosya sunucusunun sağlama değeri ile karşılaştırabilir; Windows kullanıcıları PowerShell üzerinden "Get-FileHash" komutunu kullanabilir, Microsoft programları yükleyebilir veya üçüncü parti yazılım uygulamalarını kullanabilir. Android ROM'lar da bu şekilde sağlama değeri kullanırlar.bağlantı= MD5 çakışmalarını üretmek kolay olduğu için, dosyayı oluşturan kişinin aynı sağlama değerine sahip ikinci bir dosya oluşturması mümkündür, bu nedenle yukarıda anlatılmış olan yöntem bazı kötü niyetli müdahalelere karşı koruma sağlayamaz. Bazı durumlarda, sağlama değeri güvenilir değildir (örneğin, indirilen dosya ile aynı kanal üzerinden elde edilmişse ve dosyaya bir müdahale varsa sağlama değerine de müdahale olmuş olabilir), bu durumda MD5 ile yalnızca,bozuk veya tamamlanmamış indirme; gibi hatalar denetlenebilir. Dosya boyutu büyüdükçe bu tarz hataların oluşma ihtimali artar. Tarihsel olarak incelendiğinde MD5, genellikle anahtar uzatılması(key stretching) yöntemiyle, bir şifrenin, tek yönlü bir fonksiyonla özet değerini oluşturup o şekilde saklamak için kullanılmıştır. Güvenlik bölümünde açıklanan zayıflıkları nedeniyle, NIST şifre saklamak için önerilen özet fonksiyonları listesinde MD5'ı içermemektedir. MD5, hukuksal araştırmalar sırasında değiştirilen her belge için benzersiz bir tanımlayıcı sağlamak amacıyla elektronik keşif alanında da kullanılır. Bu yöntem, kağıt belgeleri değişip değişmediğini anlamak için onlarca yıl boyunca kullanılan Bates damga numaralandırma sisteminin yerine kullanılabileceği düşünülmüştür. Ancak yukarıda da belirtildiği gibi, çakışma saldırılarının kolaylığı nedeniyle vazgeçilmiştir. Algoritma [[Dosya:MD5 algorithm.svg|bağlantı= algorithm.svg|küçükresim|330x330pik|Figür 1.Bir MD5 fonksiyonudur.MD5 4 round içinde 16 kere olmak üzere bu işlemden 64 tane içerir.F lineer olmayan bir fonksiyondur. 32 bitlik mesaj inputu, K her işlem için farklı bir constanttır.. bağlantı= shift s kadarlık sola kaydırma demektir. bağlantı= mod 2'de toplama için kullanılmıştır]] MD5 değişken uzunluktaki bir mesajı 128 bitlik bir sabit uzunlukta çıktı olarak işler. Giriş mesajı 512-bitlik blok parçalarına ayrılır (on altı tane 32-bitlik kelimeler halinde).İleti, uzunluğu 512 ile bölünebilecek şekilde doldurulur. Bu doldurma işlemi şu şekilde işler: İlk olarak mesajın sonuna bir bit 1 eklenir. Sonrasında mesajın uzunluğu 512'nin katından 64 bit eksik olacak şekilde 0'larla doldurulur. Geriye kalan 64 bite de orijinal mesajın uzunluğu mod 2 'de yazılır. Ana MD5 algoritması, A, B, C ve D olarak adlandırılan dört adet32 bitlik kelimeye ayrılmış 128 bitlik parçalar üzerinde çalışır. Bunlar belirli sabit değerlerlebaşlatılır. Daha sonra ana algoritma, her 512-bit ileti bloğunu durumunu(128 bit) değiştirmek için kullanır. Bir mesaj bloğunun işlenmesi, tur denilen dört benzer aşamadan oluşur; Her tur, doğrusal olmayan bir fonksiyon , modüler toplama işlemi ve bit bazında sola kaydırma işlemlerinden oluşur. Toplamda 16 tur vardır. Figür 1'de her tur içinde yapılan işlemler gösterilmiştir.4 olası F fonksiyonu vardır; her turda farklı bir fonksiyon kullanılır: sırasıyla XOR, AND, OR veNOToperasyonlarının yerine kullanılmıştır. Sözde Kod MD5 özet değeri aşağıdaki algoritma ile hesaplanır. Algoritmadaki tüm değerler little-endian'dır. var int[64] s, K s[ 0..15] := { 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22 } s[16..31] := { 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20 } s[32..47] := { 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23 } s[48..63] := { 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21 } for i from 0 to 63 K := floor(2 × abs(sin(i + 1))) end for K[ 0.. 3] := { 0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee } K[ 4.. 7] := { 0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501 } K[ 8..11] := { 0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be } K[12..15] := { 0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821 } K[16..19] := { 0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa } K[20..23] := { 0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8 } K[24..27] := { 0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed } K[28..31] := { 0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a } K[32..35] := { 0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c } K[36..39] := { 0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70 } K[40..43] := { 0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x04881d05 } K[44..47] := { 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665 } K[48..51] := { 0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039 } K[52..55] := { 0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1 } K[56..59] := { 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1 } K[60..63] := { 0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391 } var int a0 := 0x67452301 var int b0 := 0xefcdab89 var int c0 := 0x98badcfe var int d0 := 0x10325476 append "1" bit to message append "0" bit until message length in bits ≡ 448 (mod 512) append original length in bits mod (2 pow 64) to message for each 512-bit chunk of message break chunk into sixteen 32-bit words M[j], 0 ≤ j ≤ 15 var int A := a0 var int B := b0 var int C := c0 var int D := d0 for i from 0 to 63 if 0 ≤ i ≤ 15 then F := (B and C) or ((not B) and D) g := i else if 16 ≤ i ≤ 31 F := (D and B) or ((not D) and C) g := (5×i + 1) mod 16 else if 32 ≤ i ≤ 47 F := B xor C xor D g := (3×i + 5) mod 16 else if 48 ≤ i ≤ 63 F := C xor (B or (not D)) g := (7×i) mod 16 dTemp := D D := C C := B B := B + leftrotate((A + F + K + M[g]), s) A := dTemp end for a0 := a0 + A b0 := b0 + B c0 := c0 + C d0 := d0 + D end for var char digest[16] := a0 append b0 append c0 append d0 leftrotate (x, c) return (x << c) binary or (x >> (32-c)); Not: Gösterilen orijinal RFC 1321'den gelen formülasyon yerine, aşağıdaki kodlar verimliliği arttırmak için kullanılabilir (assembly dili kullanılıyorsa yararlıdır aksi halde derleyici yukarıdaki kodu optimize eder. Bu formülasyonlarda her hesaplama başka bir hesaplamaya bağımlı olduğu için nand ve and'lerin paralelleştirilebildiği yukarıdaki yöntemden genellikle daha yavaştır): (0 ≤ i ≤ 15): F := D xor (B and (C xor D)) (16 ≤ i ≤ 31): F := C xor (D and (B xor C)) MD5 Özetleri 128 bit (16 baytlık) MD5 hashleri (ileti özetleri olarak da adlandırılır) genellikle 32 hexadecimal sayı ile gösterilir. Aşağıda 43 baytlık bir ASCII girişi ve bu girişin MD5 özetleri gösterilmektedir: MD5("The quick brown fox jumps over the lazy dog") = 9e107d9d372bb6826bd81d3542a419d6 Mesajdaki ufak bir değişiklik bile (çok büyük olasılıkla), avalanche effect(çığ etkisi) nedeniyle çok farklı bir özet oluşmasına sebep olacaktır. Örneğin, cümlenin sonuna bir nokta eklendiğinde: MD5("The quick brown fox jumps over the lazy dog") = e4d909c290d0fb1ca068ffaddf22cbd0 0 uzunluğundaki stringin özeti: MD5("") = d41d8cd98f00b204e9800998ecf8427e MD5 algoritmasında, mesaj herhangi bir sayıdaki bitten oluşabilir; Sekiz bit (octet, byte)) katları ile sınırlı değildir. md5sum gibi bazı MD5 uygulamaları oktetlerle sınırlı olabilir veya başlangıçta belirlenemeyen uzunlukta iletiler için desteklenmeyebilir. Ayrıca bakınız Kriptografik özet fonksiyonları SHA-1 SHA-2 Kaynakça Kategori:Kriptoloji Kategori:Kriptografik algoritmalar Kategori:Kriptografik karma işlevleri
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Izgara yada normal mod

Temanızda forum listeleme yapısını ızgara yapısında yada normal yapıda listemek için kullanabilirsiniz.

Forum arkaplan resimleri

Forum arkaplanlarına eklenmiş olan resimlerinin kontrolü senin elinde, resimleri aç/kapat

Sidebar blogunu kapat/aç

Forumun kalabalığında kurtulmak için sidebar (kenar çubuğunu) açıp/kapatarak gereksiz kalabalıklardan kurtula bilirsiniz.

Yapışkan sidebar kapat/aç

Yapışkan sidebar ile sidebar alanını daha hızlı ve verimli kullanabilirsiniz.

Radius aç/kapat

Blok köşelerinde bulunan kıvrımları kapat/aç bu şekilde tarzını yansıt.

Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Geri