קריאת נתונים מקובץ INI

danielthewhite

New member
קריאת נתונים מקובץ INI

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

ranpar

New member
שתי אפשרויות

1. אל תעבוד עם קובץ טקסט פשוט, צור קובץ בינארי (האופציה העדיפה) 2. צור לעצמך קובץ ב"שפת סתרים" תגדיר ש A = C, B=D וכיו"ב וכשאתה קורא את המידע נתוך התוכנית "תיישר" את הנתונים בהצלחה
 

ranpar

New member
מייצרים את הקובץ דרך תוכנה

1. מגדירים מבנה Type 2. מכניסים ערכים לכל שדה במבנה 3. כותבים את הקובץ ע"י פתיחה כ - Binary בשלב הקריאה מהקובץ, פותחים את הקובץ כ - Random ומכניסים את הערכים שמתקבלים לאותו מבנה מסובך מעט אבל זו הדרך הנכונה ל"הצפנת" קבצי איתחול תוכל לקרוא עוד בנושא, חפש Open For Random, Open For Binary בהצלחה
 

danielthewhite

New member
השאלה היא

האם אני אוכל לשנות את הערכים של הקובץ הזה מהתוכנה שלי. היתרון בINI זה שהתוכנה יכולה גם לכתוב ערכים לקובץ, לא רק לקרוא ממנו... ואני צריך את זה.
 

ranpar

New member
הכל פונקציה של תכנות

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

danielthewhite

New member
אוקי...

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

ranpar

New member
בנוגע להצפנה ....

ראשית, אם ה"מבנה" UDT - User Defined Type הוא יותר מורכב כלומר, אינו מכיל רק strings, יהיה קשה יותר לפענח את מה שכתוב בקובץ שנית, אם מדובר בהצפנה, לדוגמא של סיסמא, השיטה הפשוטה ביותר היא להשתמש בפונקציית XOR ואז לעבוד עם קובץ טקסט רגיל. גם מי שיראה את הכתוב דרך Notepad, לא יכול לפענח את מה שכתוב אלא אם כן הוא יידע את בסיס ה - XOR (שאותו תקמפל יחד עם התוכנה לדוגמא, נניח שהסיסמה היא abcd נפעיל על הסיסמה, לדוגמה XOR 5 על (כל אות בנפרד דרך לולאה בצורה הבאה) chr(asc("a") xor 5) chr(asc("b") xor 5) chr(asc("c") xor 5) chr(asc("d") xor 5) תקבל כיתוב dgfa (בקובץ) רק כשתקלוט בחזרה את הכיתוב מתוך הקובץ ותפעיל עליו שוב XOR 5, אותו בסיס XOR !!!! תוסר ההצפנה והסיסמה תחזור להיות abcd chr(asc("d") xor 5) chr(asc("g") xor 5) chr(asc("f") xor 5) chr(asc("a") xor 5 abcd בצורה הזו, אומנם מי שייכנס ל - Notepad, ייראה את הערך dgfa אבל אין לזה שום משמעות מבחינת התוכנה, זוהי אינה הסיסמה !!! בהצלחה
 

danielthewhite

New member
המבנה שלי מכיל רק מחרוזות...

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

ranpar

New member
צודק, קבצים בינאריים הינו פתרון כוללני יותר

במקרה כמו שאתה מתאר, שהמבנה מכיל רק מחרוזות, שווה לך ללכת על האופציה XOR וקובץ INI פשוט
 

danielthewhite

New member
כן...

למרות שיותר נוח לעבוד עם הקבצים הבינאריים בויזואל בייסיק - לא צריך כל מיני API, וקל לעבוד עם טיפוסי נתונים מוכרים. מה גם ששיכללתי קצת את הXOR ועשיתי שכל פעם שהתוכנה כותבת לקובץ היא מגרילה מספר אקראי בין 1 ל100 ומשתמשת בו להצפנה, כאשר היא מכניסה גם אותו לקובץ בטיפוס נתונים נוסף - אותו היא יודעת לקרוא ולהפוך את ההצפנה בקריאה. ככה ההצפנה נעשית קצת יותר קשה לשבירה. לא יודע אם צריך את זה, אבל זה נחמד. בכל מקרה, תודה שהכרת לי את העבודה עם הקבצים האלה. אני מניח שבכל מקרה זה יהיה שימושי בעתיד
 
למעלה