حماية كلمات المرور في الـ Console Applications

20 يناير 2017     401 مشاهدة    0 تعليق
تم النشر في #Security  #Tips & Tricks 

كما هو من المعلوم أن ليس كل التطبيقات لها واجهة رسومية GUI, فهنالك الكثير من التطبيقات وليست بالبسيط التي تشتغل على Command Line, والتي تعتمد في أسلوبها على الإدخال والإخراج كما هو الحال في الـ DOS والـ PowerShell وغيرهما.

فسأحاول اليوم التطريق إلى كيفية حماية كلمات المرور في الـ Console Applications حيث أن هذا النوع من التطبيقات لا يقوم بإخفاء كلمة السر عن المشاهدين, فلاحظوا لم استخدم كلمة تشفير في المقالة لأن التشفير شيء آخر تماماً, فالموضوع متعلق بحماية كلمة المرور عن الغير.

طبعاً ببساطه ما سأقوم به هو إستبدال كل حرف يقوم المستخدم إدخاله في الـ Console بالحرف "*" ولكن هنالك تحدي في كيفية إخفاء الحرف المدخل من قبل المستخدم, فلحسن الحظ قدمت لنا الدوت نت طريقة لمقاطعة الحرف المدخل في الدالة Console.Read(), وذلك بتمرير القيمة True لعمل المقاطعه وعدم إظهار الحرف المدخل.

أما التحدي الآخر فهو كيفية مسح الحرف الأخير الظاهر على الـ Console في حال ضغط مفتاح الرجوع, فقد استخدمت حيلة بسيطه موضحه في الشفره المصدريه ادناه وذلك بطباعه مفتاح الرجوع في الـ Console ثم طباعة فراغ والرجوع مرة آخرى.

Public Function ReadPassword() As String
    Dim password As String = String.Empty
    Dim keyInfo As ConsoleKeyInfo
    Do
        keyInfo = Console.ReadKey(True)
        If keyInfo.Key <> ConsoleKey.Backspace AndAlso keyInfo.Key <> ConsoleKey.Enter Then
            password &= keyInfo.KeyChar
            Console.Write("*")
        Else
            If keyInfo.Key = ConsoleKey.Backspace AndAlso password.Length > 0 Then
                password = password.Substring(0, password.Length - 1)
                Console.Write(vbBack & " " & vbBack)
            End If
        End If
    Loop Until keyInfo.Key = ConsoleKey.Enter
    Return password
End Function

قد يتسأل البعض عن بعض التطبيقات التي يمكن أن نستخدم فيها الداله ReadPassword(), هنالك أمثلة كثيره وليس مثال واحد, فأي تطبيق يتطلب كلمة المرور من المستخدم فبالتأكيد ستكون هذه الداله مفيدة جدا, ولا انسى بالذكر مستخدمي الـ MySQL مثلا فهم بالتأكيد يقوموا بتزويد إسم المستخدم وكلمة المرور في الـ CMD ليتمكنوا من الوصول لقاعدة بيانات معينة.

أخيراً قد تظهر كلمات السر في بعض البرام على شكل نجوم أو تكون مخفيه تماماً كما هو ملاحظ في الـ Terminal في نظام اللينكس فأعتقد ببساطه يمكنك تعديل الشفره السابقه لتواكب متطلباتك.

تويتر فيسبوك قوقل + لينكد إن


اكتب تعليقك