using System.Net.Security; using System.Net.Sockets; using System.Security.Cryptography.X509Certificates; using static System.Console; internal class Program { private static void Error(string error) { var c = ForegroundColor; ForegroundColor = ConsoleColor.Red; WriteLine(error); ForegroundColor = c; } private static void Wait() => ReadLine(); private static void Main(string[] args) { WriteLine(@"/--------------------------------------\"); WriteLine(@"| dotPhish by ethical.blue |"); WriteLine(@"\--------------------------------------/"); WriteLine(); string text = string.Empty; int port = 443; if (args.Length <= 0) { Write("Adres: "); text = ReadLine() ?? ""; Write("Port (domyślnie 443): "); _ = int.TryParse(ReadLine(), out port); port = Math.Clamp(port, 443, 65535); } else { text = args.ElementAtOrDefault(0) ?? ""; port = 443; } if (string.IsNullOrWhiteSpace(text) || text.StartsWith("http://")) { Error("Witryna nie jest bezpieczna lub wprowadzony adres jest nieprawidłowy."); return; } try { Uri uri = new(text.StartsWith("https://") ? text : $"https://{text}"); WriteLine($"Authority: {uri.Authority}"); WriteLine($"DnsSafeHost: {uri.DnsSafeHost}"); WriteLine($"Host: {uri.Host}"); WriteLine($"IdnHost: {uri.IdnHost}"); using TcpClient tcp = new(uri.Host, port); using SslStream ssl = new(tcp.GetStream(), true, (_, _, _, errors) => { if (errors != SslPolicyErrors.None) Error("Błąd certyfikatu."); return true; }); ssl.AuthenticateAsClient(uri.Host); if (ssl.RemoteCertificate is X509Certificate2 X509_2) { WriteLine($"Certyfikat {X509_2.GetFormat()}"); WriteLine($"Wersja {X509_2.Version}"); WriteLine($"Wystawiony przez {X509_2.Issuer}"); WriteLine($"Wystawiony dla {X509_2.Subject}"); WriteLine($"Wystawiony dnia {X509_2.GetEffectiveDateString()}"); WriteLine($"Wygasa dnia {X509_2.GetExpirationDateString()}"); WriteLine($"Nazwa uproszczona {X509_2.GetNameInfo(X509NameType.SimpleName, true)}"); WriteLine($"Nazwa DNS {X509_2.GetNameInfo(X509NameType.DnsName, false)}"); } else { Error("Witryna nie jest bezpieczna lub wystąpił błąd odczytania ceryfikatu."); } } catch (Exception ex) { Error(ex.Message); } if (args.Length <= 0) Wait(); } }