בקשת מידע | פתיחת קובץ in או ib מקובץ גיבוי אנשי קשר
-
@חכם-בלילה-1
א. ניסיתי להריץ את הסקריפט על הקבצים ששלחת לי.
יש שגיאה, ואני לא מספיק מבין בפייתון... נראה שהסקריפט לא מתאים לקבצים של 215C:\Users\SUPPORT\Documents\GitHub\phonebook_ib_export>python export.py phonebook.ib phonebook.vcf Traceback (most recent call last): File "C:\Users\SUPPORT\Documents\GitHub\phonebook_ib_export\export.py", line 92, in <module> main() File "C:\Users\SUPPORT\Documents\GitHub\phonebook_ib_export\export.py", line 89, in main process(args.infile, args.outfile) File "C:\Users\SUPPORT\Documents\GitHub\phonebook_ib_export\export.py", line 76, in process entry = Entry(data) ^^^^^^^^^^^ File "C:\Users\SUPPORT\Documents\GitHub\phonebook_ib_export\export.py", line 23, in __init__ raise ValueError('Invalid entry') ValueError: Invalid entry
ב. הקובץ קריא אם פותחים אותו בNotepad++, כלומר הוא מלא סמלים מוזרים, אבל בין לבין רואים שמות ומספרי טלפון
-
-
@מישהו12 הסקריפט בודק את המבנה של הקובץ והוא מצפה למבנה מסויים
המבנה כולל header ידוע של כל רשומת איש קשר ומכיוון שהסקריפט נכתב לנוקיה 3310 הוא נתקל בשגיאה
היה מעניין אותי לקבל את הקובץ הזה ולנסות להתאים אליו את הסקריפט
@חכם-בלילה-1 אם אתה רוצה אתה יכול לשלוח ללי אותו בצ'אט או ל egozkokus1 בג'ימייל -
@חכם-בלילה-1
מה אם תנסה את זה?
https://mitmachim.top/post/685589
ייתכן שזה לא מתאים בכלל לנוקיה, אבל הוא טוען שבכל גיבוי ייוצר קובץ vcf, אז שווה לנסות.
@מישהו12 מהניסיון שלך, זה מתאים גם לנוקיה, או רק ל-מטק וכדו'? -
@מתכנת-חובב אם זה יעזור לך, כאן יוצר הסקריפט הזה מסביר קצת
https://stackoverflow.com/a/54060829 -
@אזולאי כתב בבקשת מידע | פתיחת קובץ in או ib מקובץ גיבוי אנשי קשר:
מה אם תנסה את זה?
https://mitmachim.top/post/685589@אזולאי אתה יכול למקם אותי ספציפית למה כוונתך?
-
@חכם-בלילה-1
שמה כותב @הייתי-שמח-להבין שיש דרך לגלות כל קובץ גיבוי לאנשי קשר, על ידי התוכנה FK TOOL .
זאת תוכנה המיועדת לחילוץ אנשי קשר גם במקרה שנראה שאין לך קובץ vcf.
ניסו את התוכנה הזאת בעיקר על טלפונים כמו mtk ודומיו, אז לא בטוח שזה יעבוד גם על נוקיה, אבל בהחלט שווה לנסות. -
@אזולאי כתב בבקשת מידע | פתיחת קובץ in או ib מקובץ גיבוי אנשי קשר:
אבל בהחלט שווה לנסות
@אזולאי ניסיתי עם התוכנה הזו ולא הצלחתי
-
@חכם-בלילה-1 @מישהו12
כתבתי סקריפט אחר שמדפיס לקונסול את האנשי קשר והמספר פלאפון שלהם אבל הוא כרגע בגרסה ראשונית מאוד וגם לא מדפיס בפורמט VCF אבל זה לבינתים
מקווה שעד סוף שבוע זה יהיה גמורimport struct reverse = 0 header = 0x244 section = 0x250 bin_file = open('path goes here', 'rb') def yep(): global reverse data_hdr = bin_file.read(2) hdr = struct.unpack_from('BB', data_hdr, 0x0) if hdr != (56, 2): raise ValueError("invalid entry") bin_file.seek(-2, 1) # find first name bin_file.read(0x60) by = bin_file.read(2) FN_length = struct.unpack('<H', by)[0] FN = bin_file.read(FN_length*2).decode('utf-16-le')[::-1] reverse = (FN_length*2) + 2 + 0x60 bin_file.seek(-reverse, 1) # find last name bin_file.read(0xB4) by = bin_file.read(2) LN_length = struct.unpack('<H', by)[0] if LN_length == 0: LN = "" else: LN = bin_file.read(LN_length*2).decode('utf-16-le')[::-1] print(FN, LN) reverse = (LN_length*2) + 2 + 0xB4 bin_file.seek(-reverse, 1) # find phone number bin_file.read(0x19E) by = bin_file.read(2) phone_length = struct.unpack('<H', by)[0] if phone_length == 0: LN = "" else: phone = bin_file.read(phone_length*2).decode('utf-16-le')[::-1] print(phone[::-1]) reverse = (phone_length*2) + 2 + 0x19E bin_file.read(header) while True: bin_file.seek(-reverse, 1) bin_file.read(0x250) yep()
-
והנה גרסה עובדת של הסקריפט רק שאני לא יודע אם הפורמט של קובץ ה vcf נכתב נכון - אשמח אם מישהו יוכל לבדוק את זה (@מישהו12)
import struct reverse = 0 header = 0x244 section = 0x250 bin_file = open('path goes here', 'rb') def yep(): global reverse, FN, LN, phone data_hdr = bin_file.read(2) hdr = struct.unpack_from('BB', data_hdr, 0x0) if hdr != (56, 2): raise ValueError("invalid entry") bin_file.seek(-2, 1) # find first name bin_file.read(0x60) by = bin_file.read(2) FN_length = struct.unpack('<H', by)[0] FN = bin_file.read(FN_length*2).decode('utf-16-le')[::-1] reverse = (FN_length*2) + 2 + 0x60 bin_file.seek(-reverse, 1) # find last name bin_file.read(0xB4) by = bin_file.read(2) LN_length = struct.unpack('<H', by)[0] if LN_length == 0: LN = "" else: LN = bin_file.read(LN_length*2).decode('utf-16-le')[::-1] print(FN, LN) reverse = (LN_length*2) + 2 + 0xB4 bin_file.seek(-reverse, 1) # find phone number bin_file.read(0x19E) by = bin_file.read(2) phone_length = struct.unpack('<H', by)[0] if phone_length == 0: phone = "" else: phone = bin_file.read(phone_length*2).decode('utf-16-le')[::-1] print(phone[::-1]) reverse = (phone_length*2) + 2 + 0x19E bin_file.read(header) vcf_file = open('contacts.vcf', 'w', encoding='utf-8') while True: bin_file.seek(-reverse, 1) bin_file.read(0x250) try: yep() except: break # write contact to VCF file phone = phone[::-1] phone = phone.replace("Number\: ", "") vcf_file.write('BEGIN:VCARD\n') vcf_file.write('N:' + FN[::-1] + ';' + LN[::-1] + '\n') vcf_file.write('TEL:' + phone + '\n') vcf_file.write('END:VCARD\n')
רק צריך לוודא שפייתון מותקן במחשב ולשנות את path goes here לנתיב של הקובץ ib ואחרי הריצה יווצר קובץ vcf בתיקיית הסקריפט
הסקריפט אמנם לא כתוב בצורה ברורה והוא לא מי יודע מה יעיל ויש הרבה לשפר בו אבל זה בינתיים -
@מתכנת-חובב ממש תודה רבה על ההשקעה
זה פשוט עובד!!!!!!
זהו זה יש פתרון לייצוא אנשי קשר מנוקיה 215!!!
תודה גם ל @מישהו12 ולכל העוזרים והמסייעים!
אני מתייג את @NH-LOCAL אולי אפשר לכתוב סקריפט פשוט או אפי' תוכנה קטנה
הנושא עלה פעמים רבות בפורום
ושוב תודה רבה בשם כולם!!!@מתכנת-חובב כתב בבקשת מידע | פתיחת קובץ in או ib מקובץ גיבוי אנשי קשר:הסקריפט אמנם לא כתוב בצורה ברורה והוא לא מי יודע מה יעיל ויש הרבה לשפר בו אבל זה בינתיים
הסקריפט מצויין אפשר למחוק את זה...
-
@חכם-בלילה-1 מה שנשאר זה רק לחפש מישהו שידע לומר לי איך עובד הגיבוי בנוקיה 225
יש לי פלאפון כזה ובקובץ הגיבוי רואים רק את השמות של האנש"ק (וגם זה לא נראה לי את כולם) אבל אין מספר טלפוןמישהו פעם ניסה לשחזר מגיבוי של 225 ועבד לו תקין?
-
-
-
@מתכנת-חובב כתב בבקשת מידע | פתיחת קובץ in או ib מקובץ גיבוי אנשי קשר:
והנה גרסה עובדת של הסקריפט רק שאני לא יודע אם הפורמט של קובץ ה vcf נכתב נכון - אשמח אם מישהו יוכל לבדוק את זה (@מישהו12)
לא עובד לי זה מה שנותן,
Python 3.12.0 (tags/v3.12.0:0fb18b0, Oct 2 2023, 13:03:39) [MSC v.1935 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import struct >>> >>> reverse = 0 >>> header = 0x244 >>> section = 0x250 >>> bin_file = open('C:\8', 'rb') <stdin>:1: SyntaxWarning: invalid escape sequence '\8' Traceback (most recent call last): File "<stdin>", line 1, in <module> PermissionError: [Errno 13] Permission denied: 'C:\\8' >>> >>> def yep(): ... global reverse, FN, LN, phone ... data_hdr = bin_file.read(2) ... hdr = struct.unpack_from('BB', data_hdr, 0x0) ... if hdr != (56, 2): ... raise ValueError("invalid entry") ... bin_file.seek(-2, 1) ... ... # find first name ... bin_file.read(0x60) ... by = bin_file.read(2) ... FN_length = struct.unpack('<H', by)[0] ... FN = bin_file.read(FN_length*2).decode('utf-16-le')[::-1] ... reverse = (FN_length*2) + 2 + 0x60 ... bin_file.seek(-reverse, 1) ... ... # find last name ... bin_file.read(0xB4) ... by = bin_file.read(2) ... LN_length = struct.unpack('<H', by)[0] ... if LN_length == 0: ... LN = "" ... else: ... LN = bin_file.read(LN_length*2).decode('utf-16-le')[::-1] ... print(FN, LN) ... ... reverse = (LN_length*2) + 2 + 0xB4 ... bin_file.seek(-reverse, 1) ... ... # find phone number ... bin_file.read(0x19E) ... by = bin_file.read(2) ... phone_length = struct.unpack('<H', by)[0] ... ... if phone_length == 0: ... phone = "" ... else: ... phone = bin_file.read(phone_length*2).decode('utf-16-le')[::-1] ... print(phone[::-1]) ... reverse = (phone_length*2) + 2 + 0x19E ... ... ... ... bin_file.read(header) File "<stdin>", line 44 bin_file.read(header) ^^^^^^^^ SyntaxError: invalid syntax >>> >>> vcf_file = open('contacts.vcf', 'w', encoding='utf-8') >>> >>> while True: ... bin_file.seek(-reverse, 1) ... bin_file.read(0x250) ... try: ... yep() ... except: ... break ... ... # write contact to VCF file ... phone = phone[::-1] ... phone = phone.replace("Number\: ", "") <stdin>:11: SyntaxWarning: invalid escape sequence '\:' ... ... vcf_file.write('BEGIN:VCARD\n') ... vcf_file.write('N:' + FN[::-1] + ';' + LN[::-1] + '\n') ... vcf_file.write('TEL:' + phone + '\n') ... vcf_file.write('END:VCARD\n') ...
-
@שער-השמים אתה לא מריץ את זה נכון
תשנה את הנתיב לקובץ הגיבוי לנתיב המלא (מומלץ להחליף כל "/" ב "//")
ותריץ את זה נורמלי דרך שורת הפקודה ולא באינטרפרטר
@אביב4 @מומי11 בעתיד אני יצור גרסה נוחה יותר של הסקריפט בינתיים אפשר לשלוח אלי את הקובץ ib ואני ישלח לכם חזרה את הקובץ vcf
אפשר לשלוח למייל egozkokus1 בג'ימייל -
@מתכנת-חובב כתב בבקשת מידע | פתיחת קובץ in או ib מקובץ גיבוי אנשי קשר:
אפשר לשלוח אלי את הקובץ ib ואני ישלח לכם חזרה את הקובץ vcf
@מתכנת-חובב מצאת פתרון גם לנוקיה 225?