C# İle Şifreleme : Simetrik,  Asimetrik ve Hash Şifreleme

C# İle Şifreleme : Simetrik, Asimetrik ve Hash Şifreleme

  • 17,592 Kez Okundu
  • C#
  • 9 Yorum
  • 2015-07-20 23:22:11

Verilerimizin güvenliğini sağlayabilmek için kodlarımızı ya da verimizi şifrelemek gereği duyarız. Şifrelenen veriye tekrar geri dönüşüm sağlanarak ulaşmak istediğimizde kullanılan algoritmalar ve geri dönüşümü sağlanamayacak bilindik algoritmalar ile birer örnek yaparak kullanımını inceleyelim.

.Net ile beraber bir çok şifreleme kütüphanesi hazır olarak geliyor. Bu şifreleme sınıfları System.Security.Cryptography kütüphanesi içerisinde yeralmaktadır.

Öncelikli olarak şifreleme yöntemlerini sınıflandırmakta fayda var, şu an dünya üzerinde 3 farklı şifreleme yöntemi bulunmaktadır. Bunlar 

  1. Hash Şifreleme Yöntemleri
    1. MD5
    2. SHA1
    3. SHA256
    4. SHA384
    5. SHA512
  2. Simetrik Şifreleme Yöntemleri
    1. DES
    2. Triple DES
    3. RC2
    4. Rijndael
  3. Asimetrik Şifreleme Yöntemleri
    1. DSA
    2. RSA

Hash Şifreleme Yöntemleri

 

Şifrelenen veriye tekrar ulaşmanız mümkün değildir. Şöyleki varsayalım 1000 karakterlik bir veriyi md5, sha 1, sha256 veya sha512 ile şifrelediniz bu durumda elde edeceğiniz şifrelenmiş veri algoritma türüne göre standart boyutta bir karakter katarı olacaktır. Pek tabi şöyle bir soru ortaya çıkacaktır, "eğer şifrelediğim veriye ulaşamayacaksam niye şifreleyim". Bu sorunun cevabı çok basit, bazı yaptığımız uygulamalarda şifrelenmemiş veriyi görmemiz gerekmez, örneğin bir forum açtınız, kullanıcılarınız sisteme üye olarak foruma girebilecek. İşte burada dürüst bir programcı gibi davranarak, kullanıcının girdiği şifre bilgisini Hash algoritma ile şifreleyip veritabanımızda saklamak daha doğru olacaktır. Böylece login işlemi sırasında kullanıcının girdiği veriyi tekrar şifreleyip veritabınındaki şifrelenmiş veri ile karşılaştırabiliriz. Böylece hem kullanıcının şifresini görmeyip kullanıcının özel bilgilerine saygı göstermiş oluruz hemde veri güvenliği sağlamış oluruz.

public static byte[] ByteDonustur(string deger)
{

UnicodeEncoding ByteConverter = new UnicodeEncoding();
return ByteConverter.GetBytes(deger);

}

public static byte[] Byte8(string deger)
{
char[] arrayChar = deger.ToCharArray();
byte[] arrayByte = new byte[arrayChar.Length];
for (int i = 0; i < arrayByte.Length; i++)
{
arrayByte[i] = Convert.ToByte(arrayChar[i]);
}
return arrayByte;
}

MD5 Şifreleme

public string MD5(string strGiris)
{
if (strGiris == "" || strGiris==null)
{
throw new ArgumentNullException("Şifrelenecek veri yok");
}
else
{
MD5CryptoServiceProvider sifre = new MD5CryptoServiceProvider();
byte[] arySifre = ByteDonustur(strGiris);
byte[] aryHash = sifre.ComputeHash(arySifre);
return BitConverter.ToString(aryHash);
}
}

SHA1 Şifreleme

public string SHA1(string strGiris)
{
if (strGiris == "" || strGiris == null)
{
throw new ArgumentNullException("Şifrelenecek veri yok.");
}else
{
SHA1CryptoServiceProvider sifre = new SHA1CryptoServiceProvider();
byte[] arySifre = ByteDonustur(strGiris);
byte[] aryHash = sifre.ComputeHash(arySifre);
return BitConverter.ToString(aryHash);
}
}

SHA256 Şifreleme

public string SHA256(string strGiris)
{
if (strGiris == "" || strGiris == null)
{
throw new ArgumentNullException("Şifrelenecek Veri Yok");
}else
{
SHA256Managed sifre = new SHA256Managed();
byte[] arySifre = ByteDonustur(strGiris);
byte[] aryHash = sifre.ComputeHash(arySifre);
return BitConverter.ToString(aryHash);
}
}

SHA384 Şifreleme

public string SHA384(string strGiris)
{
if (strGiris == "" || strGiris == null)
{
throw new ArgumentNullException("Şifrelenecek veri bulunamadı.");
}else
{
SHA384Managed sifre = new SHA384Managed();
byte[] arySifre = ByteDonustur(strGiris);
byte[] aryHash = sifre.ComputeHash(arySifre);
return BitConverter.ToString(aryHash);
}
}

SHA512 Şifreleme

public string SHA512(string strGiris)
{
if (strGiris == "" || strGiris == null)
{
throw new ArgumentNullException("Şifrelenecek veri yok.");
}
else
{
SHA512Managed sifre = new SHA512Managed();
byte[] arySifre = ByteDonustur(strGiris);
byte[] aryHash = sifre.ComputeHash(arySifre);
return BitConverter.ToString(aryHash);
}
}

 

Simetrik Şifreleme 

Simetrik şifreleme yöntemlerinde şifrelenen veriye ulaşmak için şifreyi çözen tarafın veriyi şifreleyen tarafla aynı anahtara ihtiyacı vardır. 

public static byte[] ByteDonustur(string deger)
{
UnicodeEncoding ByteConverter = new UnicodeEncoding();
return ByteConverter.GetBytes(deger);
}

public static byte[] Byte8(string deger)
{
char[] arrayChar = deger.ToCharArray();
byte[] arrayByte = new byte[arrayChar.Length];
for (int i = 0; i < arrayByte.Length; i++)
{
arrayByte[i] = Convert.ToByte(arrayChar[i]);
}
return arrayByte;
}

C# ile DES Şifreleme Yöntemi

public string DESSifrele(string strGiris)
{
string sonuc = "";
if (strGiris == "" || strGiris == null)
{
throw new ArgumentNullException("Şifrelenecek veri yok");
}
else
{
byte[] aryKey = Byte8("12345678"); // BURAYA 8 bit string DEĞER GİRİN
byte[] aryIV = Byte8("12345678"); // BURAYA 8 bit string DEĞER GİRİN
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, cryptoProvider.CreateEncryptor(aryKey, aryIV), CryptoStreamMode.Write);
StreamWriter writer = new StreamWriter(cs);
writer.Write(strGiris);
writer.Flush();
cs.FlushFinalBlock();
writer.Flush();
sonuc = Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
writer.Dispose();
cs.Dispose();
ms.Dispose();
}
return sonuc;
}

public string DESCoz(string strGiris)
{
string strSonuc = "";
if (strGiris == "" || strGiris == null)
{
throw new ArgumentNullException("Şifrelenecek veri yok.");
}
else
{
byte[] aryKey = Byte8("12345678");
byte[] aryIV = Byte8("12345678");
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream(Convert.FromBase64String(strGiris));
CryptoStream cs = new CryptoStream(ms, cryptoProvider.CreateDecryptor(aryKey, aryIV), CryptoStreamMode.Read);
StreamReader reader = new StreamReader(cs);
strSonuc = reader.ReadToEnd();
reader.Dispose();
cs.Dispose();
ms.Dispose();
}
return strSonuc;
}

C# ile TripleDES Şifreleme Yöntemi
TripleDES algoritması 24 bit anahtar ve 8 bit iv değeri kullanır.

public string Sifrele(string strGiris)
{
string sonuc = "";
if (strGiris == "" || strGiris == null)
{
throw new ArgumentNullException("Şifrelenecek veri yok.");
}
else
{
byte[] aryKey = Byte8("123456781234567812345678");
byte[] aryIV = Byte8("12345678");
TripleDESCryptoServiceProvider dec = new TripleDESCryptoServiceProvider();
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, dec.CreateEncryptor(aryKey, aryIV), CryptoStreamMode.Write);
StreamWriter writer = new StreamWriter(cs);
writer.Write(strGiris);
writer.Flush();
cs.FlushFinalBlock();
writer.Flush();
sonuc = Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
writer.Dispose();
cs.Dispose();
ms.Dispose();
}
return sonuc;
}

public string Coz(string strGiris)
{
string strSonuc = "";
if (strGiris == "" || strGiris == null)
{
throw new ArgumentNullException("Şifrelenecek veri yok.");
}
else
{
byte[] aryKey = Byte8("123456781234567812345678");
byte[] aryIV = Byte8("12345678");
TripleDESCryptoServiceProvider cryptoProvider = new TripleDESCryptoServiceProvider();
MemoryStream ms = new MemoryStream(Convert.FromBase64String(strGiris));
CryptoStream cs = new CryptoStream(ms, cryptoProvider.CreateDecryptor(aryKey, aryIV), CryptoStreamMode.Read);
StreamReader reader = new StreamReader(cs);
strSonuc = reader.ReadToEnd();
reader.Dispose();
cs.Dispose();
ms.Dispose();
}
return strSonuc;
}

C# ile RC2 Şifreleme Yöntemi
RC2 algoritması 8 bit anahtar ve 8 bit iv değeri kullanır.

public string Sifrele(string strGiris)
{
string sonuc = "";
if (strGiris == "" || strGiris == null)
{
throw new ArgumentNullException("Şifrelenecek veri yok.");
}
else
{
byte[] aryKey = Byte8("12345678");
byte[] aryIV = Byte8("12345678");
RC2CryptoServiceProvider dec = new RC2CryptoServiceProvider();
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, dec.CreateEncryptor(aryKey, aryIV), CryptoStreamMode.Write);
StreamWriter writer = new StreamWriter(cs);
writer.Write(strGiris);
writer.Flush();
cs.FlushFinalBlock();
writer.Flush();
sonuc = Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
writer.Dispose();
cs.Dispose();
ms.Dispose();
}
return sonuc;
}

public string Coz(string strGiris)
{
string strSonuc = "";
if (strGiris == "" || strGiris == null)
{
throw new ArgumentNullException("Şifresi çözülecek veri yok.");
}
else
{
byte[] aryKey = Byte8("12345678");
byte[] aryIV = Byte8("12345678");
RC2CryptoServiceProvider cp = new RC2CryptoServiceProvider();
MemoryStream ms = new MemoryStream(Convert.FromBase64String(strGiris));
CryptoStream cs = new CryptoStream(ms, cp.CreateDecryptor(aryKey, aryIV), CryptoStreamMode.Read);
StreamReader reader = new StreamReader(cs);
strSonuc = reader.ReadToEnd();
reader.Dispose();
cs.Dispose();
ms.Dispose();
}
return strSonuc;
}

C# ile Rijndael Şifreleme Yöntemi
Rijndael algoritması 8 anahtar ve 16 bit iv değeri kullanır.

public string Sifrele(string strGiris)
{
string sonuc = "";
if (strGiris == "" || strGiris == null)
{
throw new ArgumentNullException("Şifrelenecek veri yok.");
}
else
{
byte[] aryKey = Byte8("12345678");
byte[] aryIV = Byte8("1234567812345678");
RijndaelManaged dec = new RijndaelManaged();
dec.Mode = CipherMode.CBC;
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, dec.CreateEncryptor(aryKey, aryIV), CryptoStreamMode.Write);
StreamWriter writer = new StreamWriter(cs);
writer.Write(strGiris);
writer.Flush();
cs.FlushFinalBlock();
writer.Flush();
sonuc = Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
writer.Dispose();
cs.Dispose();
ms.Dispose();
}
return sonuc;
}
public string Coz(string strGiris)
{
string strSonuc = "";
if (strGiris == "" || strGiris == null)
{
throw new ArgumentNullException("Şifrezi çözülecek veri yok.");
}
else
{
byte[] aryKey = Byte8("12345678");
byte[] aryIV = Byte8("1234567812345678");
RijndaelManaged cp = new RijndaelManaged();
MemoryStream ms = new MemoryStream(Convert.FromBase64String(strGiris));
CryptoStream cs = new CryptoStream(ms, cp.CreateDecryptor(aryKey, aryIV), CryptoStreamMode.Read);
StreamReader reader = new StreamReader(cs);
strSonuc = reader.ReadToEnd();
reader.Dispose();
cs.Dispose();
ms.Dispose();
}
return strSonuc;
}

Asimetrik Şifreleme

Asimetrik şifreleme yöntemleri ileri düzey şifreleme yöntemleridir. Bu algoritma türünde veriyi şifreleyen taraf ile veriyi çözecek olan taraf birbirinden farklı anahtarlar kullanırlar.

public static byte[] ByteDonustur(string deger)
{
UnicodeEncoding ByteConverter = new UnicodeEncoding();
return ByteConverter.GetBytes(deger);
}

public static byte[] Byte8(string deger)
{
char[] arrayChar = deger.ToCharArray();
byte[] arrayByte = new byte[arrayChar.Length];
for (int i = 0; i < arrayByte.Length; i++)
{
arrayByte[i] = Convert.ToByte(arrayChar[i]);
}
return arrayByte;
}

C# ile RSA Şifreleme Yöntemi

public string Sifrele(string strGiris, out RSAParameters prm)
{
string strSonuc = "";
if (strGiris == "")
{
throw new ArgumentNullException("Şifrelenecek veri yok.");
}
else
{
byte[] aryDizi = ByteDonustur(strGiris);
RSACryptoServiceProvider dec = new RSACryptoServiceProvider();
prm = dec.ExportParameters(true);
byte[] aryDonus = dec.Encrypt(aryDizi, false);
strSonuc = Convert.ToBase64String(aryDonus);
}
return strSonuc;
}

public string Coz(string strGiris, RSAParameters prm)
{
string strSonuc = "";
if (strGiris == "" || strGiris == null)
{
throw new ArgumentNullException("Çözülecek kayıt yok");
}
else
{
RSACryptoServiceProvider dec = new RSACryptoServiceProvider();
byte[] aryDizi = Convert.FromBase64String(strGiris);
UnicodeEncoding UE = new UnicodeEncoding();
dec.ImportParameters(prm);
byte[] aryDonus = dec.Decrypt(aryDizi, false);
strSonuc = UE.GetString(aryDonus);
}
return strSonuc;

 

İsterseniz bu şifreleme yöntemlerini kullanarak daha güçlü şifrelemeler elde edebilirsiniz ya da kendi şifreleme algoritmanızı oluşturabilirsiniz , tercih sizin...

Burak TAŞKIRAN
@Burak TAŞKIRAN demiş ki ;

     Merhabalar,

     Resim şifreleme konusunda nasıl bir yol izlemem gerekiyor? Picturebox daki resmin piksellerine ulaşıp resmi puzzle gibi düşünüp herbir parçasını kendi içinde karıştırıp şifrelemem gerekiyor. Daha sonra şifrelenmiş resmi başka bir picturebox a göndermem lazım. Diğer bir butonun clickevent ına ise şifrelenmiş resmin kodunu çözecek komutları yazmam gerek.(galiba bu işlem sonunda resim ilk resim ile tıpatıp aynı olmuyormuş resmin bazı bölgeleri beyaz oluyormuş).Yukarıdaki yöntemlerden mi hareket etmem gerek, yoksa başka komutlar mı kullanmalıyım? 

admin
@admin demiş ki ;

basit olarak ilk önce şçyle yapabilirsiniz, öncelikle resimi bir dosya olarak ele alın ve üzerinde pixel olarak değil de dosyayı byte şeklinde kullanın ve bunu yukarıdaki her hangi bir geri dönüşebilir bir şifreleme yöntemini kullanarak şifreleyin ve onu kaydedin yeniden geri çevirebilirsiniz şifrelenmiş pictureboxta da karışık bir resim gösterebilirsiniz.

Ama demek istediğiniz sanırım puzzle tarzı bir uygulama resimler net belli olacak ama yerleri değişik olacak şu linkleri inceleyebilirsiniz isterseniz:

http://csharphelper.com/blog/2014/12/make-a-jigsaw-puzzle-in-c/

http://kerimozben.com/drag-drop-mantigi-ile-puzzle-oyunu/

http:// https://social.msdn.microsoft.com/Forums/tr-TR/07e7324b-f138-4510-a455-30cca4ee115b/c-puzzle-resm-karstrma-butonu?forum=csharptr

http://jetgamedev.blogspot.com.tr/2012/05/lesson-0229-c-lab-4-create-image-puzzle.html

 

mustafa
@mustafa demiş ki ;

Hocam elinize dilinize  sağlık cok güzel anlatmışsınız..

kafama takılan bunları "txt" dosyasıyla uygulayabiliyoruz ben "exe" şifrelemk istiyorum yaptıgım programın "exe" şifrelmek "exe" hem şifrelenecen hemde okunacak calışacak .Encrypt,Decrypt ikisini bir Arada  nasıl kullanırım. berber calışma ortamı nasıl oluştururum bu konuda yardımcı olurmusunuz......

Oğuzhan
@Oğuzhan demiş ki ;

Merhaba ben pascal üçgeninde ki sayılarla uygun bi yol ile çarpma işlemi yapıyorum.Bunu yaparken ordaki sayı ikilileri ile uygun bi algoritma ile yapıyorum.Ancak rsa ve hash şifreleme algoritmalarına katkı yapmak anlamında sorayım.Özünde asal sayıları ayırmak zor oluyor birde büyük basamaklı ise rsa şifreleme de asal sayı arama değil aralarında asal olan sayıları çarpanlarına ayırma mantığına dayanıyor bildiğim kadarıyla sayılar teorisi de asal sayıları kabul eder ama onu çabucak çarpanlarına ayırcak yada bi sayının asal sayı olup olmayacağını veren bi formül olduğunu öngörmez.Gerçi bu ikisi ayrı şey.Demek istediğim bu pascalda sayıları önceden bileceğiz.Bu mantıkla oluşacak çok büyük basamakta sayıları bu üçgende kullanabiliriz.Ancak metin şifrelemekten cok dış yapı kapsülasyon şifreleme de işe yarar mı diye sormak istedim.Yani kelimelere karşılık olarak metine karşılık olarak bu üçgenden sayılar secip pascal mantığı programlanabilirse  şifreleme algoritmalarına katkı sağyalabilir diye düşünüyorum.Burda hash yöntemi bana daha makul geldi.gerekirse düşündüğüm şeyi resim olarak atabilirim..

Mustafa BÜKÜLMEZ
@Mustafa BÜKÜLMEZ demiş ki ;

Selam hocam 

C# ile RSA Şifreleme Yöntemi ni nasıl kullanacağız peki. Bu işlere yeni başlıyorum yani ilk defa yapacağım. Bu sebeple nasıl kullanmam gerektiğini bilmiyorum. Yardımcı olabilir misiniz?. 

admin
@admin demiş ki ;

İlk fırsatta her biri için küçük uygulamalar hazırlamayı düşünüyorum , öncelikle bu şifreleme türleri fonksiyon olarak hazırlanmış durumda google üzerinden fonksiyon kullanımını araştırabilirsiniz.

Anonim
@Anonim demiş ki ;

Hocam iyi güzelde aslında çok nasıl çözülebilir eğer ki verdiğiniz örnekten yola çıkalım. Forum açtım kullanıcı kayıt oldu.Kullanıcının parolası şifrelendi ve db eklendi. kullanıcı foruma girerken aynı şifreyi girdiğinde db deki şifrelenmiş veriyi döndüeüyorsa şifreleme yöntemi o zaman her kelimenin belli karşılığı vardır ve bunu geri çeviricide yapılabilir öyle değil mi? yoksa yanlış mı düşünüyorum.

admin
@admin demiş ki ;

@Anonim Şifrelenen parola db de bulunuyor bunu nasıl şifrelediğiniz de önemli geri okunacak bir şifrleme türü seçmişseniz sıkıntı oluşturabilir. Hem zaten kullanıcı foruma girerken şifrelenmiş veriyi girmeyecek parolasını girecek böylelikle gelen parola aynı şifreleme fonksiyonundan geçirilip veritabanı ile karşılaştırılacak doğru ise işlem başarılı olacak. Bu şifreleme fonksiyonundan çıkan tam menti kullanmayabilirsiniz başından veya sonunda karakter silebilirsiniz veya başka bir şifreleme fonksiyonundan geçirebilirsiniz böylelikle verilerin ele geçmesi durumunda bile parolalar güvende kalma olasılığı yükselir.

Onur TURAN
@Onur TURAN demiş ki ;

Merhabalar,Bir Sorum olcaktı, SHA256 ile şifrelenmiş bir string değeri veritabanına kaydettikten sonra veritabanına erişen biri hash kodunu kopyalayıp login ekranına yapıştırıp girebilirse passwordu şifrelemek ne işe yarar ki?İlaveten, diyelim ki hangi algoritmayla haslandiğini bilmediğim bir şifre buldum bu şifreyi encode etmek için tüm algoritma tiplerini deneyerek bulamazmıyım?Teşekkürler.

YORUM YAPMAK İSTER MİSİN?

    Önerilen Video
    Sponsor Reklamlar
    Son Yorumlar
    Etiket Bulutu
    C#PopupFormOtomatikProgramBaşlatmaBaşlangıçBasitEkran Koruyucuc#ekran görüntüsümail göndermeexedllbirleştirmekIL MergePhpMSSQL BAĞLANTIGerçekIPRealTextBinaryConvertÇalışmaSüreHesaplamakBulmakCssjQueryHtmlScroll TopYukarı ÇıkOnMinimizeControlBoxSimge DurumunaKüçültInternetGetConnectedStateİnternetBağlantıKontrolŞifre MatikPassword GeneratorHash ŞifrelemeMD5SHA1SHA256SHA384SHA512Asimetrik ŞifrelemeRSASimetrik ŞifrelemeKriptoŞifrelemeAlgoritmaDESRC2RijndaelTripleDESKeyLogKlavye DinleTuş YakalamaGlobal HookDialogResultÇıkış MesajıUyarı MesajıFormClosingMySQLConnector/NetKullanımSoruCheckBoxListViewÇoklu SilmebiosdramexploitkontrolgüvenlikinteljavascriptrowhammerscriptPHPAdmin PanelResponsiveXtbadminFreeÜcretsizWifiWirelessKeysŞifreAnahtarPasswordKablosuz AğDepolamaŞifreler NeredeKablosuz ŞifreAndroidTelefonNasılYazılırProgramlama DiliHesap MakinesiSEONedirNasıl YapılırAnalizGoogleLinkÖzgünMobilKonuResim Robots.txtSite MapŞifreli GirişŞifreli FormŞifre KoymaŞifreli AçılışCompilingDebuggingDerlemeKarma ModMixed ModeApp.ConfigKurbanBayramMübarek OlsunBlogScriptYonetimAdminPanelText EditorMSHTMLEditorYazıDüzenleyiciEasyAppKolayUygulamaÇalıştırmaAkıllı TelefonKlavyeiOSKeyboardEl YazısıCalculatorMyScriptHand WritingDosya YöneticisiFile ExplorerFTPBluetoothRootTask ManagerGörev YöneticisiSystemTargetWeb Application PentestErrorShowHideHataGösterGizlePDOSelectInsertUpdateDeleteConnectSeçimEklemeSilmeGüncellemeMsSQLVeritabanıÇeviriçiDatabaseConverterDbConvertMaskeli IPGerçek IPTarayıcı Tespitİşletim Sistemi TespitTekil Ziyaretçi BilgileriAktif Ziyaretçi BilgileriZiyaretçi SayacıVirüsTemizlemeFirewallServiceSecurityServiceTimeServicePentestGüvenliksızma TestiuniscanwindowslinuxperlDosyaKlasörListelemekFileFolderListInternetDownloadUploadSpeedMonitorServisMsconfigStartupRunServiceIOSMatematikDenklemÇözümKameraKablosuzinternetHotspotPaylaşımAyarlarKaliLinuxSharedTerminalÖsymDuyuruTimeTimeZoneDateZamanTarihdate()time()FreelancerSerbestÇalışanJobsİşlerWebSiteVersionSürümGeçişUbuntuSunucuApachephpinfo()phpversion()FonksiyonHerseyiKopyalacopyallcopySızma TestiSQLMapWindowsPython810HotSpotWi-FiWlannetshhostednetworkAutoWlanJsGeri SayımTextAreaOtomatik KayıtSayacSaniyeCountDownXtbadminV2AjaxJavaScriptNumaraFormatPhoneNumberFormatTelefonNumarasıDebuggerDetectUnpackerDisassemblerSecurityReverseEngineeringAlgorithmMacDKHOSCTFCapture The FlagForensicTriviaIntelligenceCRC32CRYPTPASSWORD_HASHWin10StoreMağazaMicrosoftReInstallWSLPowerShellPOSTCyberSiberAdli BilişimHackerUSBCDLiveToolsBruterNmapMSSQL ServerMS SQL ExpressMS AccessOracleIBM DB2SybaseInterbaseInformixExceldBase DbfVisual FoxProMySQLConnectionŞifreleri BulCMDLaZagneEthernetTuxCutNetCutNetKillPerformansCronTabCronJobRestartStopStartBashShellWireSharkFlagUSOMBTKBase64QRÇözümlerWriteUpWrite-UpFinalReconOSINTToolScannerWebsite
    Bumerang - Yazarkafe