דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. אתגר | האם אפשר להחזיר את התהליך אחורה?

אתגר | האם אפשר להחזיר את התהליך אחורה?

מתוזמן נעוץ נעול הועבר תכנות
6 פוסטים 2 כותבים 473 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • אורייא מנותק
    אורייא מנותק
    אוריי
    כתב ב נערך לאחרונה על ידי אוריי
    #1

    כתבתי קוד משלי לשמירת סיסמאות בdb אקסס
    זה הקוד:

    Public Function EncryptString(str As String) As String
        Dim i As Integer
        Dim encryptedStr As String
        Dim Doubl As Long
        Dim todivide As Long
        Dim encoded As Long
        encryptedStr = ""
        
        For i = 1 To Len(str)
        
        If i - 1 < 1 Then todivide = Len(str) Else: todivide = i - 1
        If i + 1 > Len(str) Then Doubl = 1 Else: Doubl = i + 1
        encoded = Asc(Mid(str, i, 1)) * Asc(Mid(str, Doubl, 1)) / Asc(Mid(str, todivide, 1))
        If encoded = 32 Then encoded = encoded * Asc(Mid(str, Doubl, 1)) / Asc(Mid(str, todivide, 1))
        If encoded = 13 Then encoded = encoded * Asc(Mid(str, Doubl, 1)) / Asc(Mid(str, todivide, 1))
            Do While encoded >= 191
                encoded = encoded - 191
                If encoded = 32 Then encoded = encoded * Asc(Mid(str, Doubl, 1)) / Asc(Mid(str, todivide, 1))
                If encoded = 13 Then encoded = encoded * Asc(Mid(str, Doubl, 1)) / Asc(Mid(str, todivide, 1))
            Loop
            encryptedStr = encryptedStr & Chr(encoded)
        Next i
        
        EncryptString = encryptedStr
    
    End Function
    

    התוצאות של הקוד שהזנתי הם

    M›rG
    cfoq
    

    האם אפשר לדבג אותם אחורה או שכתבתי מעולה?

    ניתן לפנות אלי גם ב al0548446188@gmail.com
    ותמיד... אבל תמיד תוכלו לשאול אותי ב :) כאן שאלות באקסל

    yossizY תגובה 1 תגובה אחרונה
    1
    • yossizY מחובר
      yossizY מחובר
      yossiz
      השיב לאוריי ב נערך לאחרונה על ידי yossiz
      #2

      @אוריי כתב באתגר | האם אפשר להחזיר את התהליך אחורה?:

      האם אפשר לדבג אותם אחורה או שכתבתי מעולה

      אני רוצה להציע אפשרות שלישית: ייתכן שקשה או בלתי אפשרי לדבג אחורה, אבל לא כתבת מעולה 🙂
      קיבלתי מרבותי: "לא ממציאים שיטות הצפנה מקוריות"
      ההסבר: (מדובר כאשר ההצפנה הוא לצרכי אבטחה) אבטחה הוא נושא רגיש, והצפנה הוא נושא מתמטי קשה כאשר פרט קטן יכול לשבש את כל הבטיחות של האלגוריתם. היו מקרים של אלגוריתמים שמומחים גדולים חשבו שהם טובים עד שהגיע אחד והצביע על חולשה. לכן סומכים על אלגוריתמים שעברו ביקורת של הרבה אנשים חכמים מאוד ולא מנסים להמציא משהו מקורי משלנו.

      לגבי עצם האתגר: גם בלי הרבה חישובים לכאורה אפשר להחליט שאי אפשר להחזיר את התהליך אחורה לגמרי מסיבה פשוטה: יש יותר מקלט אחד שיתאים לפלט של האלגוריתם. זה יכול להיות קצת בעיה באלגוריתם לשמירת סיסמאות...

      אני לא טוב במתמטיקה ולא מומחה בקריפטולוגיה (וגם עצלן, אם אפשר להעביר ביקורת בלי להתאמץ עם חישובים מתמטיים, למה לא...), אבל חולשות שאני רואה מיד (לעומת אלגוריתם גיבוב בטיחותי כמו SHA1 לדוגמה)

      • מה שהזכרתי למעלה: לכאורה יש אפשרות קלה מדי להתנגשויות (לא עיינתי כל הצורך בזה)
      • האורך של הפלט תמיד זהה לאורך של הקלט, דבר שמגלה מידע חשוב לפורץ
      • שינוי של חלק אחד של הקלט משנה רק מקומית את הפלט, תוקף יכול לזהות איזה מחרוזות יש להם חלקים זהים

      בכל מקרה, יהיה מעניין גם לקבל תשובה לאתגר המקורי שלך: נסיון להחזיר אחורה את התהליך בלי brute force

      אגב, הדבר הראשון שעשיתי כאשר קראתי את השאלה זה לבקש מ-chatGPT לתרגם את הקוד לשפה יותר קריאה...

      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

      אורייא תגובה 1 תגובה אחרונה
      6
      • אורייא מנותק
        אורייא מנותק
        אוריי
        השיב לyossiz ב נערך לאחרונה על ידי אוריי
        #3

        @yossiz אני יודע שיכול להיות שלא כתבתי מעולה..
        אני הגעתי למצב שבו אני צריך לכתוב את זה כי כל קוד שקיבלתי מ gpt החזיר שגיאה ולא היה לי כח להתאמץ ולמעשה התייאשתי מלכתוב את הקוד כלל.
        דא עקא יום אחד עלה לי רעיון בענין הזה וכך מצאתי את עצמי יושב וכותב את הקוד הזה ובדקתי מול gpt והתשובה שלו הייתה שלא ניתן להחזיר את הגלגל אחורה היות וקיימים מספר פעמים של הכפלה וחילוק ואין לו שום אפשרות לדעת כמה פעמים זה נעשה ואם אני רוצה לקבל קוד שידבג אחורה אני צריך להביא לו את הסיסמה המקורית 🙂
        אמנם ידעתי שכנראה לא כתבתי מעולה ואני רוצה לדעת מה הטעויות ואיך ניתן לשפר אותו לרמה מקצועית.

        ניתן לפנות אלי גם ב al0548446188@gmail.com
        ותמיד... אבל תמיד תוכלו לשאול אותי ב :) כאן שאלות באקסל

        תגובה 1 תגובה אחרונה
        2
        • yossizY מחובר
          yossizY מחובר
          yossiz
          כתב ב נערך לאחרונה על ידי
          #4

          https://en.wikibooks.org/wiki/Visual_Basic_for_Applications/String_Hashing_in_VBA

          📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

          אורייא תגובה 1 תגובה אחרונה
          1
          • אורייא מנותק
            אורייא מנותק
            אוריי
            השיב לyossiz ב נערך לאחרונה על ידי
            #5

            @yossiz עברתי על הקישור ששלחת, וניסיתי והחזיר שגיאה ולאחר קריאה מעמיקה של הפוסט נכתב שם כך:
            הערות על הקוד
            חשוב. נמצא כי שגרות hash שגיאה בהגדרת Windows 10, 64 סיביות Office. עם זאת, בדיקה שלאחר מכן גילתה את הפתרון. פלטפורמת Windows חייבת לכלול את Net Framework 3.5 (כולל .Net 2 ו- .Net 3), גירסה ישנה זו, ולא רק את השירותים המתקדמים של Net Framework 4.8 שהופעלו בהפעלה וביטול של תכונות Windows. כאשר הוא נבחר שם, השגרה עבדה בצורה מושלמת.

            קוד ה- VBA להלן יוצר את התקצירים עבור קודי hash MD5, SHA1, SHA2-256, SHA2-384 ו- SHA2-512, עבור מחרוזות, באחת מתבניות הפלט hex או base-64. קידודים אלה עושים שימוש בפונקציות המובנות של MS Office, ומספקים תוצאות עקביות. צוין כי יישומים מקוריים במקומות אחרים עבור אותם תקצירים יכולים להיות שונים מאוד בתפוקות שלהם. רק דוגמה אחת ניתנה עם פרמטר זרע או מלח (StrToSHA512Salt), ויש לציין כי פלט המחלקה HMACSHA512 שונה מגיבובי המחלקה SHAManaged שניתנו בשאר. הכיתות המנוהלות נותנות את התוצאות הטובות ביותר המדווחות באופן נרחב. שים לב להפניות VBA הדרושות לפעולה נכונה. תזכורת לכך ניתנת בכמה כותרות נהלים.*

            בכל מקרה, מתכנתים יכולים למצוא את ערכי הגיבוב שלא השתנו במערך הבתים() ובנקודה זו הם נמצאים בבתים של 8 סיביות, כלומר, המספרים המייצגים את קוד ASCI כפי שהוא חל על ערכת שמונה סיביות מלאה, 256 תווים. הקוד שלאחר מילוי מערך הבתים() בכל אחד מהמקרים קובע איזו גירסה של ערכת תווי ASCI לספק. עבור ערכת תווים משושה, 0-9 ו- A עד F, ערכת הסיביות הכוללת מחולקת למספר כפול של ארבעה בתים, ולאחר מכן מוחזרת לשימוש. עבור קבוצת Base-64, אותיות קטנות, אותיות גדולות ומספרים שלמים בעיקר, תווים של שישה סיביות מיוצרים לפלט. שתי קבוצות אלה הן השימושיות ביותר כאן, שכן הן מורכבות מתווים נפוצים. ערכות ASCI 128 ו- 256 מלאות מדי בתווים אקזוטיים ולא מודפסים מכדי להיות שימושיים. עבור כל גרסת גיבוב ספירת הסיביות שלה היא קבועה, ולכן אורך הפלט שלה ישתנה בהתאם לסוג שנבחר.

            וכפי שאני מבין אני צריך להיות מוגבל עם הקוד הזה שזה יעבוד רק למי שמותקן אצלו Net Framework 3.5 (כולל .Net 2 ו- .Net 3) שהיא גירסה ישנה ואני רוצה שיעבוד לכל מי שאני מביא לו את התוכנה (קודים מעין אלו הgpt הביא לי בכמויות...)

            ניתן לפנות אלי גם ב al0548446188@gmail.com
            ותמיד... אבל תמיד תוכלו לשאול אותי ב :) כאן שאלות באקסל

            תגובה 1 תגובה אחרונה
            0
            • yossizY מחובר
              yossizY מחובר
              yossiz
              כתב ב נערך לאחרונה על ידי yossiz
              #6

              @אוריי
              מן הסתם הסיכון באפליקציה כמו שלך קטן יחסית, אני מניח שזה לא להפצה המונית
              אני עדיין טוען שהדבר האידיאלי הוא להשתמש באלגוריתם גיבוב מוכר וידוע כבטוח, ציינתי כמה חולשות באלגוריתם שלך, ואולי יש נוספות, אבל אפשר להסתכל על זה בהקשר הכללי של אפליקציה עם סיכון יחסית קטן
              אני מבין שקשה לך למצוא פתרון חוצה מחשבים/מערכות הפעלה שיעבוד במאה אחוז, זו כבר שאלה ספציפית לגבי אקסס שאין לי את הידע לענות

              📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

              תגובה 1 תגובה אחרונה
              0

              בא תתחבר לדף היומי!
              • התחברות

              • אין לך חשבון עדיין? הרשמה

              • התחברו או הירשמו כדי לחפש.
              • פוסט ראשון
                פוסט אחרון
              0
              • דף הבית
              • קטגוריות
              • פוסטים אחרונים
              • משתמשים
              • חיפוש
              • חוקי הפורום