דילוג לתוכן
  • חוקי הפורום
  • פופולרי
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
מתמחים טופ
  1. דף הבית
  2. מחשבים וטכנולוגיה
  3. עזרה הדדית - מחשבים וטכנולוגיה
  4. להורדה | דבר קטן וחמוד - שומר סיסמאות אופלין

להורדה | דבר קטן וחמוד - שומר סיסמאות אופלין

מתוזמן נעוץ נעול הועבר עזרה הדדית - מחשבים וטכנולוגיה
33 פוסטים 9 כותבים 148 צפיות 7 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • מ מחנה ידידים

    @המלאך הוא צריך לעבור קורס באבטחת מידע.

    א מחובר
    א מחובר
    אהל יהודה
    כתב נערך לאחרונה על ידי
    #22
    פוסט זה נמחק!
    מ תגובה 1 תגובה אחרונה
    0
    • א אהל יהודה

      פוסט זה נמחק!

      מ מנותק
      מ מנותק
      מחנה ידידים
      כתב נערך לאחרונה על ידי מחנה ידידים
      #23
      פוסט זה נמחק!
      א תגובה 1 תגובה אחרונה
      1
      • מ מחנה ידידים

        פוסט זה נמחק!

        א מחובר
        א מחובר
        אהל יהודה
        כתב נערך לאחרונה על ידי
        #24
        פוסט זה נמחק!
        תגובה 1 תגובה אחרונה
        0
        • ה מנותק
          ה מנותק
          המלאך
          כתב נערך לאחרונה על ידי
          #25
          פוסט זה נמחק!
          מ תגובה 1 תגובה אחרונה
          0
          • ה המלאך

            פוסט זה נמחק!

            מ מנותק
            מ מנותק
            מחנה ידידים
            כתב נערך לאחרונה על ידי
            #26
            פוסט זה נמחק!
            תגובה 1 תגובה אחרונה
            1
            • ה המלאך

              @אהל-יהודה סליחה, לא הבנתי נכון.
              אתה עשית בתוכנה שזה עובד רק אם אין חיבור לרשת כרגע?
              איך אפשר לעשות את זה?
              שאלת- האם אפשר לפרוץ - עניתי כן, אם מחוברים לאינטרנט, לא צריך פורץ שיגנוב את המחשב, מספיק לגרום לו להוריד תוכנה זדונית,
              זה עובד אונליין,
              ואז ההאקר יראה "וואו, יש פה תוכנה של סיסמאות" ינסה לפרוץ, ויהיה בהלם,
              "מה? זה נוצר על ידי בינה!"
              כאילו, כל הזמן אומרים לכם שהבינה לא מושלמת בקוד, ואתם כבר נותנים לה שליטה על קוד של תוכנה שאמורה לשמור על הסיסמאות שלכם?
              בקיצור, - לא בא לזלזל,
              רק אומר - תחשבו פעמיים לפני שאתם סומכים על דברים בסגנון הזה.

              יאיר דניאלי מנותק
              יאיר דניאלי מנותק
              יאיר דניאל
              כתב נערך לאחרונה על ידי יאיר דניאל
              #27

              @המלאך כתב בלהורדה | דבר קטן וחמוד - שומר סיסמאות אופלין:

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

              אחי, מה נסגר איתך?
              מה לא מובן - זה קובץ אופליין - ששומר את הסיסמאות שלך - במקום לשמור אותם בקובץ אקסל.
              ומי ישמע "סומך על AI" - מה זה קשור לקוד שהיא כתבה,היא כתבה את הקוד "לתוכנה" הזו, וילד בן 12 עם ידע במחשבים, פורץ את הסיסמה, אבל לא הבנת את הרעיון - זה לא נועד לאקרים ולא לאף אחד שקצת דומה לזה, זה נועד לאנשים פשוטים שרוצים את הקודים שלהם זמינים גם באופליין - לדוגמא משתמשי חדרי מחשבים. והסיסמה היא בשביל שאיזה חבר סקרן לא יכנס ויראה מה הסיסמאות שלך.

              (אגב, גם אם אקר יפרוץ למחשב שלך - כל עוד תקרא לקובץ HTML הזה "בדיני מים אחרונים והמתסעף" בתוך תיקייה "בלימוד", מה האחוזים שהוא ינסה לבדוק מה כתבת בסוגיא הזו?...)

              ה תגובה 1 תגובה אחרונה
              1
              • יאיר דניאלי יאיר דניאל

                @המלאך כתב בלהורדה | דבר קטן וחמוד - שומר סיסמאות אופלין:

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

                אחי, מה נסגר איתך?
                מה לא מובן - זה קובץ אופליין - ששומר את הסיסמאות שלך - במקום לשמור אותם בקובץ אקסל.
                ומי ישמע "סומך על AI" - מה זה קשור לקוד שהיא כתבה,היא כתבה את הקוד "לתוכנה" הזו, וילד בן 12 עם ידע במחשבים, פורץ את הסיסמה, אבל לא הבנת את הרעיון - זה לא נועד לאקרים ולא לאף אחד שקצת דומה לזה, זה נועד לאנשים פשוטים שרוצים את הקודים שלהם זמינים גם באופליין - לדוגמא משתמשי חדרי מחשבים. והסיסמה היא בשביל שאיזה חבר סקרן לא יכנס ויראה מה הסיסמאות שלך.

                (אגב, גם אם אקר יפרוץ למחשב שלך - כל עוד תקרא לקובץ HTML הזה "בדיני מים אחרונים והמתסעף" בתוך תיקייה "בלימוד", מה האחוזים שהוא ינסה לבדוק מה כתבת בסוגיא הזו?...)

                ה מנותק
                ה מנותק
                המלאך
                כתב נערך לאחרונה על ידי
                #28

                @יאיר-דניאל הא... 🫩🥱
                למה לא קוראים כל מה שאמרתי?
                לא התכוונתי להאקר שיפרוץ.
                נקטתי את זה בתור דוגמאות בעלמא.
                התכוונתי לתוכנה זדונית.
                היא מועדת לגניבת ססמאות.
                היא לא מסתכלת על השם.
                היא פשוט גונבת.
                והרי יש שלב שהוא מתחבר לאינטרנט, נכון?
                זה מספיק לשלוח את הססמאות הגנובות, למחשב של ההאקר.

                יאיר דניאלי תגובה 1 תגובה אחרונה
                0
                • ה המלאך

                  @יאיר-דניאל הא... 🫩🥱
                  למה לא קוראים כל מה שאמרתי?
                  לא התכוונתי להאקר שיפרוץ.
                  נקטתי את זה בתור דוגמאות בעלמא.
                  התכוונתי לתוכנה זדונית.
                  היא מועדת לגניבת ססמאות.
                  היא לא מסתכלת על השם.
                  היא פשוט גונבת.
                  והרי יש שלב שהוא מתחבר לאינטרנט, נכון?
                  זה מספיק לשלוח את הססמאות הגנובות, למחשב של ההאקר.

                  יאיר דניאלי מנותק
                  יאיר דניאלי מנותק
                  יאיר דניאל
                  כתב נערך לאחרונה על ידי
                  #29

                  @המלאך כתב בלהורדה | דבר קטן וחמוד - שומר סיסמאות אופלין:

                  התכוונתי לתוכנה זדונית.
                  היא מועדת לגניבת ססמאות.
                  היא לא מסתכלת על השם.
                  היא פשוט גונבת.

                  איך היא גונבת?
                  סתם בשביל הידע.

                  ה תגובה 1 תגובה אחרונה
                  0
                  • יאיר דניאלי יאיר דניאל

                    @המלאך כתב בלהורדה | דבר קטן וחמוד - שומר סיסמאות אופלין:

                    התכוונתי לתוכנה זדונית.
                    היא מועדת לגניבת ססמאות.
                    היא לא מסתכלת על השם.
                    היא פשוט גונבת.

                    איך היא גונבת?
                    סתם בשביל הידע.

                    ה מנותק
                    ה מנותק
                    המלאך
                    כתב נערך לאחרונה על ידי
                    #30

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

                    cfopuserC תגובה 1 תגובה אחרונה
                    0
                    • יאיר דניאלי מנותק
                      יאיר דניאלי מנותק
                      יאיר דניאל
                      כתב נערך לאחרונה על ידי יאיר דניאל
                      #31

                      הנה קוד משופר בהרבה - מעניין אותי מה חושב עליו @מתכנת-חובב - עד כמה זה מאובטח, כמובן במגבלת HTML בודד ובקובץ אופליין.

                      שומר קודים - אופליין.zip

                      הנה הקוד המלא:

                      <!DOCTYPE html>
                      <html lang="he" dir="rtl">
                      <head>
                          <meta charset="UTF-8">
                          <title>PHANTOM VAULT v13.5 | מדריך למשתמש</title>
                          <style>
                              :root { --primary: #2563eb; --bg: #f8fafc; --card: #ffffff; --text: #1e293b; --border: #e2e8f0; --danger: #ef4444; --success: #22c55e; }
                              body { background: var(--bg); color: var(--text); font-family: system-ui, sans-serif; margin: 0; user-select: none; overflow-x: hidden; }
                              .vault-container { background: var(--card); width: 100%; max-width: 500px; margin: 40px auto; padding: 30px; border-radius: 16px; box-shadow: 0 10px 25px rgba(0,0,0,0.05); border: 1px solid var(--border); position: relative; }
                              header { background: var(--card); padding: 15px 40px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--border); position: sticky; top:0; z-index:10; }
                              input { background: #f1f5f9; border: 1px solid var(--border); padding: 12px; width: 100%; box-sizing: border-box; margin-bottom: 15px; border-radius: 10px; outline: none; transition: 0.2s; }
                              input:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1); }
                              .btn { cursor: pointer; border: none; background: var(--primary); color: white; padding: 10px 20px; font-weight: bold; border-radius: 8px; transition: 0.2s; }
                              .btn:hover { opacity: 0.9; transform: translateY(-1px); }
                              .item-card { background: var(--card); border: 1px solid var(--border); padding: 15px; margin-bottom: 10px; border-radius: 12px; display: flex; justify-content: space-between; align-items: center; transition: 0.2s; }
                              .item-card:hover { border-color: #cbd5e1; box-shadow: 0 2px 5px rgba(0,0,0,0.02); }
                              
                              /* Toast Notification */
                              #toast { position: fixed; bottom: 30px; left: 50%; transform: translateX(-50%); background: #1e293b; color: white; padding: 12px 30px; display: none; border-radius: 30px; z-index: 1000; font-size: 14px; box-shadow: 0 5px 15px rgba(0,0,0,0.2); animation: slideUp 0.3s; }
                              @keyframes slideUp { from { bottom: -50px; opacity: 0; } to { bottom: 30px; opacity: 1; } }
                      
                              /* Modal Popup */
                              .modal { display: none; position: fixed; z-index: 1001; left: 0; top: 0; width: 100%; height: 100%; background-color: rgba(0,0,0,0.5); backdrop-filter: blur(4px); animation: fadeIn 0.3s; }
                              .modal-content { background-color: white; margin: 10% auto; padding: 30px; border-radius: 16px; width: 80%; max-width: 500px; box-shadow: 0 15px 35px rgba(0,0,0,0.1); position: relative; }
                              .close-modal { color: #aaa; float: left; font-size: 28px; font-weight: bold; cursor: pointer; margin-top: -10px; }
                              .close-modal:hover { color: var(--danger); }
                              .modal h2 { color: var(--primary); margin-top: 0; }
                              .modal ol { padding-right: 20px; line-height: 1.6; }
                              .modal li { margin-bottom: 10px; }
                              @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
                          </style>
                      </head>
                      <body>
                      
                          <div id="help-modal" class="modal">
                              <div class="modal-content">
                                  <span class="close-modal" id="close-help">&times;</span>
                                  <h2>איך משתמשים בכספת? 🛡️</h2>
                                  <p>ברוך הבא ל-Phantom Vault! הנה מדריך קצר:</p>
                                  <ol>
                                      <li><b>הוספת סיסמה:</b> מלא את שם האתר והסיסמה בשדות למעלה ולחץ על "שמור בכספת".</li>
                                      <li><b>העתקה בטוחה:</b> לחץ על "העתק" ליד סיסמה. היא תהיה זמינה להדבקה למשך 7 שניות בלבד, ואז הלוח ינוקה אוטומטית.</li>
                                      <li><b>מחיקה:</b> לחץ על ה-X האדום כדי למחוק רשומה לצמיתות (תצטרך לאשר את הפעולה).</li>
                                      <li><b>נעילה אוטומטית:</b> אם לא תיגע בעכבר במשך 3 דקות, הכספת תינעל מעצמה.</li>
                                  </ol>
                                  <button class="btn" style="width:100%; margin-top:15px;" id="got-it-btn">הבנתי, בוא נתחיל!</button>
                              </div>
                          </div>
                      
                          <div id="lock-screen" style="display:flex; min-height:100vh;">
                              <div class="vault-container" style="text-align:center;">
                                  <h2 style="color:var(--primary)">PHANTOM VAULT</h2>
                                  <input type="password" id="m-pass" placeholder="מפתח מאסטר" autofocus autocomplete="off">
                                  <button id="auth-btn" class="btn" style="width:100%">פתיחת הכספת</button>
                              </div>
                          </div>
                      
                          <div id="main-ui" style="display:none;">
                              <header>
                                  <span style="font-size: 13px; opacity: 0.7;">נעילה בעוד: <b id="timer">03:00</b></span>
                                  <button onclick="location.reload()" class="btn" style="background:var(--danger)">נעילה מיידית</button>
                              </header>
                      
                              <div class="vault-container" style="max-width: 100%; margin: 20px auto; padding: 20px;">
                                  <h3 style="margin-top:0;">הוספת סיסמה חדשה</h3>
                                  <div style="display:flex; gap:10px;">
                                      <input type="text" id="in-title" placeholder="שם האתר / שירות" style="margin-bottom:0;">
                                      <input type="password" id="in-val" placeholder="סיסמה" style="margin-bottom:0;">
                                  </div>
                                  <button id="save-btn" class="btn" style="width:100%; margin-top:15px; background:var(--success)">שמור בכספת מוצפנת</button>
                              </div>
                              
                              <div id="list" style="max-width:500px; margin:auto; padding-bottom: 50px;"></div>
                          </div>
                      
                          <div id="toast"></div>
                      
                          <script>
                              (function() {
                                  const DB_NAME = "Phantom_Final_RESET_V1"; 
                                  let db, activeKey, lastAct = Date.now();
                                  const enc = new TextEncoder(), dec = new TextDecoder();
                      
                                  const init = () => {
                                      const req = indexedDB.open(DB_NAME, 1);
                                      req.onsuccess = e => { db = e.target.result; };
                                  };
                      
                                  // פונקציית העתקה וניקוי
                                  function forceClipboard(text) {
                                      const textArea = document.createElement("textarea");
                                      textArea.value = text;
                                      textArea.style.position = "fixed"; textArea.style.left = "0"; textArea.style.top = "0"; textArea.style.opacity = "0.01";
                                      document.body.appendChild(textArea);
                                      textArea.focus(); textArea.select();
                                      try { document.execCommand('copy'); } catch (err) {}
                                      document.body.removeChild(textArea);
                                  }
                      
                                  const getK = async (p) => {
                                      const b = await crypto.subtle.importKey("raw", enc.encode(p), "PBKDF2", false, ["deriveKey"]);
                                      return crypto.subtle.deriveKey(
                                          { name: "PBKDF2", salt: enc.encode("fixed_salt_v12"), iterations: 100000, hash: "SHA-256" },
                                          b, { name: "AES-GCM", length: 256 }, false, ["encrypt", "decrypt"]
                                      );
                                  };
                      
                                  // כפתור פתיחה
                                  document.getElementById('auth-btn').onclick = async () => {
                                      const p = document.getElementById('m-pass').value;
                                      if(!p) return;
                                      activeKey = await getK(p);
                                      document.getElementById('lock-screen').style.display = 'none';
                                      document.getElementById('main-ui').style.display = 'block';
                                      render();
                                      startTimers();
                                      showHelpModal(); // הצגת המדריך בפעם הראשונה
                                  };
                      
                                  // כפתור שמירה
                                  document.getElementById('save-btn').onclick = async () => {
                                      const t = document.getElementById('in-title').value.trim(), v = document.getElementById('in-val').value;
                                      if(!t || !v) return;
                                      const iv = crypto.getRandomValues(new Uint8Array(12));
                                      const ct = await crypto.subtle.encrypt({name:"AES-GCM", iv}, activeKey, enc.encode(v));
                                      const tx = db.transaction("data", "readwrite");
                                      tx.objectStore("data").add({t, iv, ct});
                                      tx.oncomplete = () => {
                                          document.getElementById('in-title').value = ''; document.getElementById('in-val').value = '';
                                          showToast("הסיסמה נשמרה והוצפנה!"); render();
                                      };
                                  };
                      
                                  // רינדור הרשימה
                                  async function render() {
                                      const list = document.getElementById('list'); list.innerHTML = '';
                                      db.transaction("data").objectStore("data").getAll().onsuccess = e => {
                                          e.target.result.forEach(item => {
                                              const div = document.createElement('div'); div.className = 'item-card';
                                              div.innerHTML = `<b>${item.t}</b> 
                                              <div>
                                                  <button class="btn copy-btn" style="background:#eee; color:#333; margin-left:5px; padding: 5px 10px; font-size:13px;">העתק</button>
                                                  <button class="btn del-btn" style="background:transparent; color:red; border:1px solid red; padding:5px 10px; font-size:13px;">X</button>
                                              </div>`;
                                              
                                              // העתקה
                                              div.querySelector('.copy-btn').onclick = async () => {
                                                  const raw = await crypto.subtle.decrypt({name:"AES-GCM", iv:item.iv}, activeKey, item.ct);
                                                  const pass = dec.decode(raw);
                                                  forceClipboard(pass);
                                                  showToast("הסיסמה הועתקה! תימחק בעוד 7 שניות 🛡️");
                                                  setTimeout(() => {
                                                      forceClipboard("הלוח נוקה - Phantom Vault"); 
                                                      showToast("הלוח נוקה סופית.");
                                                  }, 7000);
                                              };
                      
                                              // מחיקה
                                              div.querySelector('.del-btn').onclick = () => {
                                                  if(confirm(`למחוק את ${item.t}?`)) {
                                                      db.transaction("data","readwrite").objectStore("data").delete(item.id).onsuccess = render;
                                                  }
                                              };
                                              list.appendChild(div);
                                          });
                                      };
                                  }
                      
                                  // פונקציות עזר
                                  function showToast(m) {
                                      const t = document.getElementById('toast'); t.textContent = m; t.style.display='block';
                                      setTimeout(() => t.style.display='none', 2800);
                                  }
                      
                                  function startTimers() {
                                      setInterval(() => {
                                          let d = 180000 - (Date.now() - lastAct);
                                          if(d <= 0) location.reload();
                                          document.getElementById('timer').textContent = new Date(d).toISOString().substr(14, 5);
                                      }, 1000);
                                      window.onmousemove = () => lastAct = Date.now();
                                      window.onkeydown = () => lastAct = Date.now();
                                  }
                      
                                  // פונקציות המודל (Pop-up)
                                  function showHelpModal() {
                                      document.getElementById('help-modal').style.display = 'block';
                                  }
                                  function hideHelpModal() {
                                      document.getElementById('help-modal').style.display = 'none';
                                  }
                                  document.getElementById('close-help').onclick = hideHelpModal;
                                  document.getElementById('got-it-btn').onclick = hideHelpModal;
                                  window.onclick = (e) => {
                                      if (e.target == document.getElementById('help-modal')) hideHelpModal();
                                  }
                      
                                  init();
                              })();
                          </script>
                      </body>
                      </html>
                      

                      פירוט על הקוד בספויילר:

                      הנה הסבר מפורט על המבנה, הפונקציות ומנגנוני ההגנה של הקוד בגרסה v13.5, המבוסס על הממשק שמוצג בתמונות שהעלית:

                      1. מבנה הממשק וחוויית המשתמש (UI/UX)
                        מסך נעילה (Lock Screen): זהו המחסום הראשון. המערכת דורשת "מפתח מאסטר" לפני שהיא חושפת את תוכן הכספת.

                      חלונית הדרכה (Help Modal): פונקציה חדשה שקופצת לאחר הכניסה ומסבירה למשתמש איך להוסיף, להעתיק ולמחוק סיסמאות.

                      לוח בקרה (Main UI): אזור עבודה נקי הכולל שדות להוספת אתר וסיסמה, ורשימה של כל הפריטים השמורים.

                      1. פונקציות הליבה (Core Functions)
                        init() - הקמת בסיס הנתונים: יוצרת בסיס נתונים מקומי בדפדפן בשם . המידע נשמר על המחשב שלך בלבד ולא נשלח לשום שרת חיצוני.Phantom_Final_RESET_V1

                      getK(p) - מחולל המפתחות: פונקציה זו לוקחת את מפתח המאסטר שהקשת והופכת אותו למפתח הצפנה מתמטי (AES-GCM) באמצעות אלגוריתם PBKDF2 עם 100,000 הרצות.

                      render() - הצגת הרשימה: מושכת את כל הסיסמאות המוצפנות מבסיס הנתונים, מפענחת אותן (רק בזמן אמת בזיכרון) ומציגה אותן בתוך כרטיסיות עם כפתורי פעולה.

                      forceClipboard(text) - העתקה "חסינה": כדי לעקוף חסימות אבטחה של דפדפנים בהרצה מקומית, הפונקציה יוצרת שדה טקסט זמני ונסתר, מבצעת בחירה (Select) והעתקה (Copy).

                      1. מנגנוני הגנה ואבטחה (Protection Layers)
                        הצפנה מקצה לקצה: כל סיסמה שאתה שומר עוברת הצפנה בשיטת AES-GCM. גם אם מישהו יצליח לפתוח את הקובץ ללא המפתח, הוא יראה רק אוסף תווים חסרי משמעות.

                      ניקוי לוח אוטומטי (7 שניות): לאחר העתקת סיסמה, המערכת ממתינה 7 שניות ומבצעת העתקה של המשפט "הלוח נוקה - Phantom Vault". פעולה זו "דורסת" את הסיסמה מהלוח הנוכחי כדי שלא תודבק בטעות במקום אחר.

                      הגנה מפני היסטוריית לוח: כפי שראינו בתיעוד הלוח של Windows (), הפעולה של הקוד מוסיפה שורה חדשה של "הלוח נוקה", מה שמוריד את הסיסמה שלב אחד למטה בהיסטוריה.Win+V

                      טיימר נעילה (3 דקות): הקוד מנטר תנועות עכבר והקלדה. אם אין פעילות במשך 180 שניות, הדף מתרענן והכספת ננעלת אוטומטית.

                      מניעת בחירת טקסט: הקוד כולל הגדרת CSS () שמונעת מהמשתמש לסמן ולהעתיק בטעות טקסטים מהממשק עצמו שלא דרך כפתור ההעתקה המבוקר.user-select: none

                      1. כלי ניהול
                        כפתור מחיקה (X): מאפשר הסרת רשומות מבסיס הנתונים. המערכת מבקשת אישור (Confirm) לפני המחיקה כדי למנוע טעויות.

                      התראות (Toasts): הודעות קופצות בתחתית המסך שמעדכנות על הצלחת השמירה, ההעתקה או ניקוי הלוח.

                      פירוט על צורת העבודה של הקוד:

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

                      אלגוריתם AES-GCM: זוהי רמת הצפנה צבאית. גם אם מישהו יצליח לגשת לקובץ הנתונים ללא מפתח המאסטר שלך, הוא יראה רק רצף תווים אקראי ובלתי קריא.

                      מפתח PBKDF2: הקוד לוקח את הסיסמה שאתה מקליד ומריץ אותה 100,000 פעמים דרך נוסחה מתמטית כדי ליצור מפתח הצפנה חזק במיוחד, מה שמקשה מאוד על ניסיונות פריצה.

                      1. מנגנוני העתקה וניקוי (פתרון הבעיות)
                        פונקציית forceClipboard: זו הפונקציה שפיתחנו כדי לעקוף את חסימות הדפדפן שראינו בתמונות שלך. היא יוצרת שדה טקסט נסתר לרגע, מעתיקה ממנו, ואז נמחקת.

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

                      התמודדות עם היסטוריית הלוח: כפי שראינו בצילום המסך של , ווינדוס שומרת היסטוריה. פעולת הניקוי האוטומטית דוחפת את הסיסמה שלך שלב אחד למטה בהיסטוריה ומחליפה את הלוח ה"פעיל" בטקסט חסר משמעות.Win+V

                      1. שכבות הגנה אקטיביות
                        נעילה אוטומטית (Timeout): בחלק העליון מופיע טיימר של 3 דקות. אם לא הזזת את העכבר, המערכת מניחה שעזבת את המחשב ונועלת את הכספת אוטומטית כדי שאף אחד לא יראה את התוכן.

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

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

                      1. ממשק המשתמש החדש
                        מדריך למשתמש (Popup): הוספנו חלונית הסבר שקופצת מיד לאחר הכניסה. היא מסבירה בצורה פשוטה איך להשתמש במערכת (הוספה, העתקה ומחיקה).

                      כפתור מחיקה (X): מאפשר לך לנקות רשומות ישנות בקלות. המערכת מבקשת אישור לפני המחיקה כדי למנוע טעויות בלתי הפיכות.

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

                      ח תגובה 1 תגובה אחרונה
                      0
                      • יאיר דניאלי יאיר דניאל

                        הנה קוד משופר בהרבה - מעניין אותי מה חושב עליו @מתכנת-חובב - עד כמה זה מאובטח, כמובן במגבלת HTML בודד ובקובץ אופליין.

                        שומר קודים - אופליין.zip

                        הנה הקוד המלא:

                        <!DOCTYPE html>
                        <html lang="he" dir="rtl">
                        <head>
                            <meta charset="UTF-8">
                            <title>PHANTOM VAULT v13.5 | מדריך למשתמש</title>
                            <style>
                                :root { --primary: #2563eb; --bg: #f8fafc; --card: #ffffff; --text: #1e293b; --border: #e2e8f0; --danger: #ef4444; --success: #22c55e; }
                                body { background: var(--bg); color: var(--text); font-family: system-ui, sans-serif; margin: 0; user-select: none; overflow-x: hidden; }
                                .vault-container { background: var(--card); width: 100%; max-width: 500px; margin: 40px auto; padding: 30px; border-radius: 16px; box-shadow: 0 10px 25px rgba(0,0,0,0.05); border: 1px solid var(--border); position: relative; }
                                header { background: var(--card); padding: 15px 40px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--border); position: sticky; top:0; z-index:10; }
                                input { background: #f1f5f9; border: 1px solid var(--border); padding: 12px; width: 100%; box-sizing: border-box; margin-bottom: 15px; border-radius: 10px; outline: none; transition: 0.2s; }
                                input:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1); }
                                .btn { cursor: pointer; border: none; background: var(--primary); color: white; padding: 10px 20px; font-weight: bold; border-radius: 8px; transition: 0.2s; }
                                .btn:hover { opacity: 0.9; transform: translateY(-1px); }
                                .item-card { background: var(--card); border: 1px solid var(--border); padding: 15px; margin-bottom: 10px; border-radius: 12px; display: flex; justify-content: space-between; align-items: center; transition: 0.2s; }
                                .item-card:hover { border-color: #cbd5e1; box-shadow: 0 2px 5px rgba(0,0,0,0.02); }
                                
                                /* Toast Notification */
                                #toast { position: fixed; bottom: 30px; left: 50%; transform: translateX(-50%); background: #1e293b; color: white; padding: 12px 30px; display: none; border-radius: 30px; z-index: 1000; font-size: 14px; box-shadow: 0 5px 15px rgba(0,0,0,0.2); animation: slideUp 0.3s; }
                                @keyframes slideUp { from { bottom: -50px; opacity: 0; } to { bottom: 30px; opacity: 1; } }
                        
                                /* Modal Popup */
                                .modal { display: none; position: fixed; z-index: 1001; left: 0; top: 0; width: 100%; height: 100%; background-color: rgba(0,0,0,0.5); backdrop-filter: blur(4px); animation: fadeIn 0.3s; }
                                .modal-content { background-color: white; margin: 10% auto; padding: 30px; border-radius: 16px; width: 80%; max-width: 500px; box-shadow: 0 15px 35px rgba(0,0,0,0.1); position: relative; }
                                .close-modal { color: #aaa; float: left; font-size: 28px; font-weight: bold; cursor: pointer; margin-top: -10px; }
                                .close-modal:hover { color: var(--danger); }
                                .modal h2 { color: var(--primary); margin-top: 0; }
                                .modal ol { padding-right: 20px; line-height: 1.6; }
                                .modal li { margin-bottom: 10px; }
                                @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
                            </style>
                        </head>
                        <body>
                        
                            <div id="help-modal" class="modal">
                                <div class="modal-content">
                                    <span class="close-modal" id="close-help">&times;</span>
                                    <h2>איך משתמשים בכספת? 🛡️</h2>
                                    <p>ברוך הבא ל-Phantom Vault! הנה מדריך קצר:</p>
                                    <ol>
                                        <li><b>הוספת סיסמה:</b> מלא את שם האתר והסיסמה בשדות למעלה ולחץ על "שמור בכספת".</li>
                                        <li><b>העתקה בטוחה:</b> לחץ על "העתק" ליד סיסמה. היא תהיה זמינה להדבקה למשך 7 שניות בלבד, ואז הלוח ינוקה אוטומטית.</li>
                                        <li><b>מחיקה:</b> לחץ על ה-X האדום כדי למחוק רשומה לצמיתות (תצטרך לאשר את הפעולה).</li>
                                        <li><b>נעילה אוטומטית:</b> אם לא תיגע בעכבר במשך 3 דקות, הכספת תינעל מעצמה.</li>
                                    </ol>
                                    <button class="btn" style="width:100%; margin-top:15px;" id="got-it-btn">הבנתי, בוא נתחיל!</button>
                                </div>
                            </div>
                        
                            <div id="lock-screen" style="display:flex; min-height:100vh;">
                                <div class="vault-container" style="text-align:center;">
                                    <h2 style="color:var(--primary)">PHANTOM VAULT</h2>
                                    <input type="password" id="m-pass" placeholder="מפתח מאסטר" autofocus autocomplete="off">
                                    <button id="auth-btn" class="btn" style="width:100%">פתיחת הכספת</button>
                                </div>
                            </div>
                        
                            <div id="main-ui" style="display:none;">
                                <header>
                                    <span style="font-size: 13px; opacity: 0.7;">נעילה בעוד: <b id="timer">03:00</b></span>
                                    <button onclick="location.reload()" class="btn" style="background:var(--danger)">נעילה מיידית</button>
                                </header>
                        
                                <div class="vault-container" style="max-width: 100%; margin: 20px auto; padding: 20px;">
                                    <h3 style="margin-top:0;">הוספת סיסמה חדשה</h3>
                                    <div style="display:flex; gap:10px;">
                                        <input type="text" id="in-title" placeholder="שם האתר / שירות" style="margin-bottom:0;">
                                        <input type="password" id="in-val" placeholder="סיסמה" style="margin-bottom:0;">
                                    </div>
                                    <button id="save-btn" class="btn" style="width:100%; margin-top:15px; background:var(--success)">שמור בכספת מוצפנת</button>
                                </div>
                                
                                <div id="list" style="max-width:500px; margin:auto; padding-bottom: 50px;"></div>
                            </div>
                        
                            <div id="toast"></div>
                        
                            <script>
                                (function() {
                                    const DB_NAME = "Phantom_Final_RESET_V1"; 
                                    let db, activeKey, lastAct = Date.now();
                                    const enc = new TextEncoder(), dec = new TextDecoder();
                        
                                    const init = () => {
                                        const req = indexedDB.open(DB_NAME, 1);
                                        req.onsuccess = e => { db = e.target.result; };
                                    };
                        
                                    // פונקציית העתקה וניקוי
                                    function forceClipboard(text) {
                                        const textArea = document.createElement("textarea");
                                        textArea.value = text;
                                        textArea.style.position = "fixed"; textArea.style.left = "0"; textArea.style.top = "0"; textArea.style.opacity = "0.01";
                                        document.body.appendChild(textArea);
                                        textArea.focus(); textArea.select();
                                        try { document.execCommand('copy'); } catch (err) {}
                                        document.body.removeChild(textArea);
                                    }
                        
                                    const getK = async (p) => {
                                        const b = await crypto.subtle.importKey("raw", enc.encode(p), "PBKDF2", false, ["deriveKey"]);
                                        return crypto.subtle.deriveKey(
                                            { name: "PBKDF2", salt: enc.encode("fixed_salt_v12"), iterations: 100000, hash: "SHA-256" },
                                            b, { name: "AES-GCM", length: 256 }, false, ["encrypt", "decrypt"]
                                        );
                                    };
                        
                                    // כפתור פתיחה
                                    document.getElementById('auth-btn').onclick = async () => {
                                        const p = document.getElementById('m-pass').value;
                                        if(!p) return;
                                        activeKey = await getK(p);
                                        document.getElementById('lock-screen').style.display = 'none';
                                        document.getElementById('main-ui').style.display = 'block';
                                        render();
                                        startTimers();
                                        showHelpModal(); // הצגת המדריך בפעם הראשונה
                                    };
                        
                                    // כפתור שמירה
                                    document.getElementById('save-btn').onclick = async () => {
                                        const t = document.getElementById('in-title').value.trim(), v = document.getElementById('in-val').value;
                                        if(!t || !v) return;
                                        const iv = crypto.getRandomValues(new Uint8Array(12));
                                        const ct = await crypto.subtle.encrypt({name:"AES-GCM", iv}, activeKey, enc.encode(v));
                                        const tx = db.transaction("data", "readwrite");
                                        tx.objectStore("data").add({t, iv, ct});
                                        tx.oncomplete = () => {
                                            document.getElementById('in-title').value = ''; document.getElementById('in-val').value = '';
                                            showToast("הסיסמה נשמרה והוצפנה!"); render();
                                        };
                                    };
                        
                                    // רינדור הרשימה
                                    async function render() {
                                        const list = document.getElementById('list'); list.innerHTML = '';
                                        db.transaction("data").objectStore("data").getAll().onsuccess = e => {
                                            e.target.result.forEach(item => {
                                                const div = document.createElement('div'); div.className = 'item-card';
                                                div.innerHTML = `<b>${item.t}</b> 
                                                <div>
                                                    <button class="btn copy-btn" style="background:#eee; color:#333; margin-left:5px; padding: 5px 10px; font-size:13px;">העתק</button>
                                                    <button class="btn del-btn" style="background:transparent; color:red; border:1px solid red; padding:5px 10px; font-size:13px;">X</button>
                                                </div>`;
                                                
                                                // העתקה
                                                div.querySelector('.copy-btn').onclick = async () => {
                                                    const raw = await crypto.subtle.decrypt({name:"AES-GCM", iv:item.iv}, activeKey, item.ct);
                                                    const pass = dec.decode(raw);
                                                    forceClipboard(pass);
                                                    showToast("הסיסמה הועתקה! תימחק בעוד 7 שניות 🛡️");
                                                    setTimeout(() => {
                                                        forceClipboard("הלוח נוקה - Phantom Vault"); 
                                                        showToast("הלוח נוקה סופית.");
                                                    }, 7000);
                                                };
                        
                                                // מחיקה
                                                div.querySelector('.del-btn').onclick = () => {
                                                    if(confirm(`למחוק את ${item.t}?`)) {
                                                        db.transaction("data","readwrite").objectStore("data").delete(item.id).onsuccess = render;
                                                    }
                                                };
                                                list.appendChild(div);
                                            });
                                        };
                                    }
                        
                                    // פונקציות עזר
                                    function showToast(m) {
                                        const t = document.getElementById('toast'); t.textContent = m; t.style.display='block';
                                        setTimeout(() => t.style.display='none', 2800);
                                    }
                        
                                    function startTimers() {
                                        setInterval(() => {
                                            let d = 180000 - (Date.now() - lastAct);
                                            if(d <= 0) location.reload();
                                            document.getElementById('timer').textContent = new Date(d).toISOString().substr(14, 5);
                                        }, 1000);
                                        window.onmousemove = () => lastAct = Date.now();
                                        window.onkeydown = () => lastAct = Date.now();
                                    }
                        
                                    // פונקציות המודל (Pop-up)
                                    function showHelpModal() {
                                        document.getElementById('help-modal').style.display = 'block';
                                    }
                                    function hideHelpModal() {
                                        document.getElementById('help-modal').style.display = 'none';
                                    }
                                    document.getElementById('close-help').onclick = hideHelpModal;
                                    document.getElementById('got-it-btn').onclick = hideHelpModal;
                                    window.onclick = (e) => {
                                        if (e.target == document.getElementById('help-modal')) hideHelpModal();
                                    }
                        
                                    init();
                                })();
                            </script>
                        </body>
                        </html>
                        

                        פירוט על הקוד בספויילר:

                        הנה הסבר מפורט על המבנה, הפונקציות ומנגנוני ההגנה של הקוד בגרסה v13.5, המבוסס על הממשק שמוצג בתמונות שהעלית:

                        1. מבנה הממשק וחוויית המשתמש (UI/UX)
                          מסך נעילה (Lock Screen): זהו המחסום הראשון. המערכת דורשת "מפתח מאסטר" לפני שהיא חושפת את תוכן הכספת.

                        חלונית הדרכה (Help Modal): פונקציה חדשה שקופצת לאחר הכניסה ומסבירה למשתמש איך להוסיף, להעתיק ולמחוק סיסמאות.

                        לוח בקרה (Main UI): אזור עבודה נקי הכולל שדות להוספת אתר וסיסמה, ורשימה של כל הפריטים השמורים.

                        1. פונקציות הליבה (Core Functions)
                          init() - הקמת בסיס הנתונים: יוצרת בסיס נתונים מקומי בדפדפן בשם . המידע נשמר על המחשב שלך בלבד ולא נשלח לשום שרת חיצוני.Phantom_Final_RESET_V1

                        getK(p) - מחולל המפתחות: פונקציה זו לוקחת את מפתח המאסטר שהקשת והופכת אותו למפתח הצפנה מתמטי (AES-GCM) באמצעות אלגוריתם PBKDF2 עם 100,000 הרצות.

                        render() - הצגת הרשימה: מושכת את כל הסיסמאות המוצפנות מבסיס הנתונים, מפענחת אותן (רק בזמן אמת בזיכרון) ומציגה אותן בתוך כרטיסיות עם כפתורי פעולה.

                        forceClipboard(text) - העתקה "חסינה": כדי לעקוף חסימות אבטחה של דפדפנים בהרצה מקומית, הפונקציה יוצרת שדה טקסט זמני ונסתר, מבצעת בחירה (Select) והעתקה (Copy).

                        1. מנגנוני הגנה ואבטחה (Protection Layers)
                          הצפנה מקצה לקצה: כל סיסמה שאתה שומר עוברת הצפנה בשיטת AES-GCM. גם אם מישהו יצליח לפתוח את הקובץ ללא המפתח, הוא יראה רק אוסף תווים חסרי משמעות.

                        ניקוי לוח אוטומטי (7 שניות): לאחר העתקת סיסמה, המערכת ממתינה 7 שניות ומבצעת העתקה של המשפט "הלוח נוקה - Phantom Vault". פעולה זו "דורסת" את הסיסמה מהלוח הנוכחי כדי שלא תודבק בטעות במקום אחר.

                        הגנה מפני היסטוריית לוח: כפי שראינו בתיעוד הלוח של Windows (), הפעולה של הקוד מוסיפה שורה חדשה של "הלוח נוקה", מה שמוריד את הסיסמה שלב אחד למטה בהיסטוריה.Win+V

                        טיימר נעילה (3 דקות): הקוד מנטר תנועות עכבר והקלדה. אם אין פעילות במשך 180 שניות, הדף מתרענן והכספת ננעלת אוטומטית.

                        מניעת בחירת טקסט: הקוד כולל הגדרת CSS () שמונעת מהמשתמש לסמן ולהעתיק בטעות טקסטים מהממשק עצמו שלא דרך כפתור ההעתקה המבוקר.user-select: none

                        1. כלי ניהול
                          כפתור מחיקה (X): מאפשר הסרת רשומות מבסיס הנתונים. המערכת מבקשת אישור (Confirm) לפני המחיקה כדי למנוע טעויות.

                        התראות (Toasts): הודעות קופצות בתחתית המסך שמעדכנות על הצלחת השמירה, ההעתקה או ניקוי הלוח.

                        פירוט על צורת העבודה של הקוד:

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

                        אלגוריתם AES-GCM: זוהי רמת הצפנה צבאית. גם אם מישהו יצליח לגשת לקובץ הנתונים ללא מפתח המאסטר שלך, הוא יראה רק רצף תווים אקראי ובלתי קריא.

                        מפתח PBKDF2: הקוד לוקח את הסיסמה שאתה מקליד ומריץ אותה 100,000 פעמים דרך נוסחה מתמטית כדי ליצור מפתח הצפנה חזק במיוחד, מה שמקשה מאוד על ניסיונות פריצה.

                        1. מנגנוני העתקה וניקוי (פתרון הבעיות)
                          פונקציית forceClipboard: זו הפונקציה שפיתחנו כדי לעקוף את חסימות הדפדפן שראינו בתמונות שלך. היא יוצרת שדה טקסט נסתר לרגע, מעתיקה ממנו, ואז נמחקת.

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

                        התמודדות עם היסטוריית הלוח: כפי שראינו בצילום המסך של , ווינדוס שומרת היסטוריה. פעולת הניקוי האוטומטית דוחפת את הסיסמה שלך שלב אחד למטה בהיסטוריה ומחליפה את הלוח ה"פעיל" בטקסט חסר משמעות.Win+V

                        1. שכבות הגנה אקטיביות
                          נעילה אוטומטית (Timeout): בחלק העליון מופיע טיימר של 3 דקות. אם לא הזזת את העכבר, המערכת מניחה שעזבת את המחשב ונועלת את הכספת אוטומטית כדי שאף אחד לא יראה את התוכן.

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

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

                        1. ממשק המשתמש החדש
                          מדריך למשתמש (Popup): הוספנו חלונית הסבר שקופצת מיד לאחר הכניסה. היא מסבירה בצורה פשוטה איך להשתמש במערכת (הוספה, העתקה ומחיקה).

                        כפתור מחיקה (X): מאפשר לך לנקות רשומות ישנות בקלות. המערכת מבקשת אישור לפני המחיקה כדי למנוע טעויות בלתי הפיכות.

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

                        ח מנותק
                        ח מנותק
                        חיים כהן 5
                        כתב נערך לאחרונה על ידי
                        #32

                        @יאיר-דניאל לא הבנתי זה אולי מאובטח יותר אבל הממשק הרבה יותר דפוק עדיף את הממשק הקודם שלך
                        וחוץ מזה שזה ממש לא מאובטח בשום רמה כיון שכל סיסמא שאני מכניס זה נכנס לי למערכת
                        אתה חייב להחזיר את הממשק הקודם ורק לשפר את האבטחה אבל לא לשנות הכל

                        תגובה 1 תגובה אחרונה
                        0
                        • ה המלאך

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

                          cfopuserC מנותק
                          cfopuserC מנותק
                          cfopuser
                          כתב נערך לאחרונה על ידי cfopuser
                          #33

                          לגבי כול הנידון שהיה כאן לגבי אבטחה,
                          אז יש לכם גישה שהיא אולי צודקת טיפה אבל עדיף להמנע ממנה באנגלית קוראים לזה Security through obscurity או sto
                          או בעברית אבטחה על ידי עמימות או ערפול,

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

                          או לשים קוד בתוכנה שלך ששולח מיילים ולסמוך על זה שאף אחד לא יפתח אותה וישתלט לך על המייל... 😉

                          וזה די מה שקורה כאן, אז אולי זה מאובטח יחסית בגלל העמימות שלה אבל מבחינה טכנית טהורה היא ממש לא,
                          לכן אני פשוט ממליץ על להשתמש בפתרונות קימים שיאפשרו לכם המון פיצ'רים עד בלי די pass key שמירת סיסמאות אוטומטית,
                          סריקת קוד qr, יצירת סיסמאות על ידי אלגוריתמים רציניים ועוד ועוד

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

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

                          • התחברות

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

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