רשימת חשבונות האשראי וכיצד אנחנו יכולים לעזור לחברים

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

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

ראשית, הקבצים שמתפרסמים ברשת כוללים בחלקם מאגרי נתונים בקובץ mdb של Microsoft Access. אני לא מבין למה אותם בעלי אתרים משתמשים במאגרים מסוג זה הידועים בביצועים הירודים שלהם, אבל לא אתייחס לפרט זה במסגרת רשומה זו. למרות שבאופן עקרוני ניתן לבצע לחיצה כפולה על אותם הקבצים כדי לפתוח אותם ב־OpenOffice או ב־Microsoft Access, להערכתי מדובר בפעולה מסוכנת ולא נוכל לדעת בקלות מה אותם גורמים עוינים הכניסו לקובץ. במקום זאת, אשתמש בפקודות השורה שזמינות בחבילה mdbtools.

צפייה בטבלאות שקיימות בקובץ:

$ mdb-tables NewIsrael.mdb
tblCards

כלומר בקובץ הנ"ל קיימת טבלה אחת בלבד. בואו נייצא אותה לקובץ מסוג csv.

mdb-export NewIsrael.mdb tblCards > NewIsrael.csv

עכשיו כשיש לנו קובץ טקסטואלי איננו צריכים יותר את קובץ ה־mdb ואפשר למחוק אותו.

השלב הבא היה לקבל את רשימת אנשי הקשר. בחרתי לייצא אותם מ־gmail; ניתן לעשות זאת דרך contacts.google.com, לבחור ב־More,‏ Export, ואז לייצא את רשימת אנשי הקשר שלך כקובץ מסוג Google CSV. התסריט שבהמשך יעבור עם קבצים מתצורה זו בלבד אם כי ניתן בקלות להתאים אותו גם לתבניות האחרות.

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

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

# ‫גזירת כתובות הדואר האלקטרוני מקובץ google.csv שנשמר ב־/tmp/.‬
cat /tmp/google.csv | iconv -f unicode | grep , --color | cut -d, -f29 | sed '/^$/d' > /tmp/my_emails.txt
cat /tmp/google.csv | iconv -f unicode | grep , --color | cut -d, -f31 | sed '/^$/d' >> /tmp/my_emails.txt
cat /tmp/google.csv | iconv -f unicode | grep , --color | cut -d, -f33 | sed '/^$/d' >> /tmp/my_emails.txt
cat /tmp/google.csv | iconv -f unicode | grep , --color | cut -d, -f35 | sed '/^$/d' >> /tmp/my_emails.txt

# ביצוע פעולות ניקיון כלליות על קובץ הססמאות. במקרה שלי בחרתי להסיר מקרים בהם הופיעה המחרוזת "*" בתור כתובת דואר אלקטרוני מסיבה לא ידועה.‏
sed '/^\*$/d' < /tmp/my_emails.txt > /tmp/my_emails2.txt

# ביצוע סריקה בודדת. אני לא משתמש בדרך זו כי היא דורשת משאבים רבים מהמחשב.‏
# הקוד החלופי מופיע בהמשך.‏
# grep --color -f /tmp/my_emails2.txt *

# פיצול קובץ הכתובות לקבצים נפרדים בעלי 10 שורות בכל קובץ. כלומר בכל קובץ
# נשמרות רק 10 כתובות דואר אלקטרוני (במקרה שלי נוצרו מעל 100 קבצים חדשים).‏
split -l 10 /tmp/my_emails2.txt /tmp/my_emails_splitted_

# לכל קובץ כתובות מפוצל בצע סריקה על כל אחד מהקבצים שנמצאים בתיקייה הנוכחית.‏
find /tmp -name my_emails_splitted_* -type f -exec grep --color -f '{}' * \;
rm /tmp/my_emails_splitted_*

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

שלא נדע מצרות.

2 תגובות בנושא “רשימת חשבונות האשראי וכיצד אנחנו יכולים לעזור לחברים”

  1. בשביל מה לפצל את הקובץ? מרגע שקראת אותו פעם אחת גם קובץ גדול יחסית יהיה ב-cache והגישה אליו תהיה די מהירה.

    כמוכן לא ברור לי למה אתה מריץ את grep פעמים רבות במקום פשוט להריץ grep WHATEVER my_email_splitted_*
    אולי בגלל שלא שמעת על האפשרות -h ?

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

השאר תגובה