יש לכם טלפון USB שעובד בווינדוס עם סקייפ ואין לכם מושג איך להפעיל אותו בלינוקס?
נסו לכתוב בטרמינל (terminal\מסוף\Shell או איך שאתם מעדיפים לקרוא לזה): lsusb, יוצא לכם בפלט את השורה הזו?
$ lsusb
...
Bus 006 Device 006: ID 0851:c080 Macronix International Co., Ltd
...
אז כנראה שיש לכם אותה שפורפרת USB כמו שלי, הנה מדריך איך אפשר להשמיש אותה בלינוקס,
קודם קצת פרטים על השפורפרת:
השפורפרת מזוהה ע"י הלינוקס (דביאן) ככרטיס קול וכהתקן HID
בכל שידור מהשפופרת להתקן במחשב /dev/hidraw0 נשלחים 8 בייט, בלחיצה 8 ובשחרור 8.
ונעבור לקצת פרטים על התוכנות שישמשו אותנו:
udev – לענייננו, תוכנה שמנטרת חיבור חומרה למחשב ומאפשרת פעולות עקב אירועי חומרה.
xdotool – לענייננו, תוכנה המאפשרת שליחת מקשים מתוך סקריפטים,
הערה: xdotool עובדת על גבי שרת הX.
sflphone – תוכנת VoIP.
ועכשיו לסקריפט הBASH שישמש אותנו על מנת לקרוא את המידע מהשפורפרת ולהעביר אותו בצורה שמישה,
את הסקריפט נשמור ב: /home/<user>/bin/USB-phone.sh (כמובן לשנות לתיקיית משתמש שלכם)
#!/bin/bash
export DISPLAY=:0; # בחירת תצוגה לפעילות
function update_wid {
local tmp=( $(wmctrl -l|grep "SFLphone VoIP Client") ); # בחירה בחלון של SFLphone
[[ -n "${tmp[0]}" ]] && opt="--window ${tmp[0]}" || opt=""; # הגדרת המשתנה opt לצורת העבודה בשביל xdotool
echo "update wid: ${tmp[0]}";
}
update_wid; # עדכון הגדרת חלון או כללי לxdotool
speaker="B0"; # משתנה דו מצבי של הרמקול המובנה בשפופרת
cat /dev/hidraw0 |
while read -n1 in[0]; do
for ((i=1;i<=15;i++)); do
read -n1 in[$i];
done; # קריאת 16 בייטים, 8 של לחיצת כפתור ו8 של שחרור כפתור
a="$(printf %d \'"${in[0]}")"; # המרת הבייטים הרלוונטיים למספרים דצימליים
b="$(printf %d \'"${in[2]}")"; # ^^^
if [[ "$a" == "0" ]]; then
if [[ "$b" -le "38" && "$b" -ge "30" ]]; then
xdotool type $opt $((b-29)); # הספרות 1,2,4,5,6,7,8,9
elif [[ "$b" == "0" ]]; then
xdotool type $opt 3; # הספרה 3
elif [[ "$b" == "39" ]]; then
xdotool type $opt 0; # הספרה 0
elif [[ "$b" == "81" ]]; then
xdotool key $opt Down; # כפתור למטה
elif [[ "$b" == "82" ]]; then
xdotool key $opt Up; # כפתור למעלה
fi
elif [[ "$a" == "2" ]]; then
if [[ "$b" == "37" ]]; then
xdotool keydown SHIFT; xdotool type $opt "*"; xdotool keyup SHIFT; # כוכבית
elif [[ "$b" == "0" ]]; then
xdotool keydown SHIFT; xdotool type $opt "#"; xdotool keyup SHIFT; # סולמית
fi
elif [[ "$a" == "7" ]]; then
if [[ "$b" == "0" ]]; then # כפתור C
xdotool key $opt BackSpace;
elif [[ "$b" == "4" ]]; then # כפתור חיוג
xdotool key $opt Return; # שליחת אנטר
elif [[ "$b" == "11" ]]; then # כפתור ניתוק
xdotool key $opt Escape; # שליחת אסקייפ
elif [[ "$b" == "12" ]]; then # כפתר פונקציות שמאלי
update_wid; # עדכון הגדרות שליחה לחלון או שליחה כללית
elif [[ "$b" == "22" ]]; then # כפתור רמקול
echo -e "\x${speaker}" >> /dev/hidraw0 # שליחת משתנה מצב רמקול עכשיוי לשפופרת
[[ "$speaker" == "B0" ]] && speaker="AF" || speaker="B0"; # החלפת משתנה מצב רמקול
fi
fi
done
לאחר מכן נוסיף קובץ בשם: /etc/udev/rules.d/026_usb-phone.rules
בו נגדיר את החוק שיגרום להפעלת הסקריפט בחיבור של ההתקן USB Phone שלנו, יש לשנות את <user> למשתמש שלכם:
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", SYSFS{idProduct}=="c080", SYSFS{idVendor}=="0851", MODE="0600", OWNER="<user>" RUN+="/bin/su <user> - -c '/home/<user>/bin/USB-phone.sh %n'"
הסבר מה כתבנו בעצם:
דבר ראשון החוק בודק התקן שזוהה כhidraw (בדיקת שיוויון בKERNEL ובSUBSYSTEM), ושיהיה לו מזהה התקן ספציפי תואם למה שראינו מקודם בlsusb (בדיקת שיוויון בSYSFS),
ואז מתחילים את הפעולות:
הרשאות כתיבה וקריאה לבעלים,
הפיכת המשתמש שבחרתם לבעלי הקובץ של ההתקן,
RUN+="/bin/su <user> - -c '/home/<user>/bin/USB-phone.sh %n'"
הרצה של הסקריפט כמשתמש הנבחר.
עכשיו ננתק ונחבר את הUSB-Phone, והסקריפט אמור לרוץ, כך שכשתלחצו על ספרה היא תשלח לשרת X (או לתוכנה הספציפית).
אם הוא לא רץ נסו לבצע כroot את הפעולה הזו:
ואם עדיין לא עובד בבקשה דווחו לי וננסה להבין למה.
הסקריפט מוגדר שבהפעלתו הוא יחפש את החלון שכותרתו "SFLphone VoIP Client", אם החלון נמצא הלחיצות על השפורפרת יישלחו כמקשים לחלון זה,
אם החלון לא נמצא, המקשים יישלחו לחלון עם הפוקוס (כמו לחיצות על המקלדת),
אם אתם רוצים שהסקריפט יישלח את המקשים לחלון ספציפי אחר אז שנו בשורה זו לכותרת הרצוייה לכם:
Published דצמבר 31, 2010
bash , regex , ביטוי רגולרי , לינוקס
בהמשך לזה וזה, גם אני בפוסט תגובה.
s="$(curl -s http://www.ynet.co.il/Integration/StoryRss1854.xml|iconv -f windows-1255)"; while [[ "$s" =~ ry\>\<title\>([^<]+) ]]; do s=${s/"${BASH_REMATCH[0]}"}; echo ${BASH_REMATCH[1]}; done|fribidi
באגים ידועים:
מכוער.
לא מקודד סימני HTML.
תלויות:
curl
iconv
fribidi – מומלץ, לא הכרחי.
Published יולי 6, 2010
Uncategorized , אבטחת מידע
אתר חיל המודיעין סגור עקב שיפוצים, כבר מעל שבוע, מוגזם, אבל זה לא הכל.
בתחתית העמוד יש שורה:
"להורדת טפסי התחקיר הבטחוני יש לגלוש לכתובת : לחץ כאן"
הקישור "לחץ כאן" מוביל, ל…
http://tinyurl.com/Amanitur
tinyurl, אתר קיצור כתובות,
כתובת היעד האמיתית הינה:
http://www1.idf.il/SIP_STORAGE/AMAN/files///6 //44226.pdf
tinyurl הינו אתר חיצוני לא רק לחיל מודיעין אלא למדינת ישראל בכללה, השרת (לפי בדיקת whois של הIP) נמצא בהולנד.
למה זה רע או מה יכולים לעשות בעלי האתר tinyurl או פורץ שנכנס למערכותיהם:
א. לשנות את מטרת הקישור, אפשרות אחת, למטרות תעמולה,
אפשרות שנייה למטרות גניבת פרטים: האם הייתם מעלים בדעתכם שאתר הנראה בדיוק כמו אתר חיל המודיעין, ונכנסנו אליו מתוך קישור שהופיע באתר חיל המודיעין, הוא לא אתר חיל המודיעין?
ומכאן אפשר לבקש מהמלש"ב להכניס את הפרטים שלו וכדו', ויש לנו פרטים על מועמד לגיוס לחיל מודיעין.
ב. בלי לשנות את הקישור, לבצע סטטיסטיקות אודות מלש"בים.
ג. צאצא של א' או ב', לבצע תקיפות ספציפיות על מחשבים שזוהו כמחשבים של מלש"ב של חיל מודיעין ע"פ המידע שנאסף וכך להגיע למידע נוסף בהמשך.
עדכון: האתר עודכן והקישור כמובן שנמחק
להורדת טפסי התחקיר הבטחוני יש לגלוש לכתובת :
לחץ כאן
בעבר חיפשתי בגוגל מידע על ביטויים רגולריים – regex בשפת התכנות bash, התוצאות הציעו הצעות מגוונות איך לעשות את זה: grep ,awk ,sed וכדו'… אבל זה עדיין לא bash.
תוצאות אחרות דיברו על אפשרות בסגנון זה:
[[ "$var" =~ regex ]]
שאומנם נתן משהו מתוך bash אך לא כ"כ הבנתי איך ניתן להשתמש בזה.
לאחרונה חיפשתי שוב, והנה הפתרון שמצאתי:
כדי להכניס טקסט לתוך ביטוי רגולרי מבצעים
[[ "regex" =~ ^re(.*)x$ ]]
פעולה זו כאשר הביטוי הרגולרי נמצא תחזיר true ותיצור משתנה מערך: ${BASH_REMATCH[*]}, אם הביטוי לא יימצא הפעולה תחזיר false.
במערך זה באינדקס 0 יהיה את תוצאת הביטוי הרגולרי שנמצאה ובשאר המשתנים ההתאמות הפנימיות
דוגמה:
[[ "testregexexample" =~ st(r.*ex)([ejg]) ]];
echo ${BASH_REMATCH[@]};
יוציא את הפלט: stregexe regex e
testregexexample – תוצאת הביטוי במלואה, נכנסת לאינדקס 0.
testregexexample – התאמה ראשונה, נכנסת לאינדקס 1.
testregexexample – התאמה שנייה, נכנסת לאינדקס 2.
ולסיום, שאלה: האם BASH לא תומך פה בצורה תקינה בקידוד ISO-8859?
בקידוד זה תוצאות שהינם בתווים עבריים (לא בדקתי תווים לא לטיניים אחרים) לא מופעל עליהם באופן תקין regex:
[[ "אבגדה" =~ ^אבג(.*) ]] && echo "${BASH_REMATCH[@]}"
בקידוד UTF-8 מוחזר: "אבגדה דה" – כמו שצריך להיות
בקידוד ISO-8859-8 מוחזר: "אבג"
[[ "אבגדה" =~ ^א.*ה ]] && echo "${BASH_REMATCH[@]}" || echo "false"
בקידוד UTF-8 מוחזר: "אבגדה" – כמו שצריך להיות
בקידוד ISO-8859-8 מוחזר: "false"
Published יולי 27, 2009
אבטחת מידע , אופיס דיפו , כללי
הסיפור היה לפני מעל חצי שנה, ולא פורסם עד עכשיו עקב חוסר תגובה ברורה של אופיס דיפו.
אני לא יודע מה המצב של הבעיה עכשיו.
אדם שיש לי קשר איתו המשתמש באתר העסקי של אופיס דיפו http://bsdnet.officedepot.co.il התלונן בפני שאינטרנט אקספלורר (להלן IE) ופיירפוקס (להלן FF) מתנתקים ומתחברים באופן סינכרוני לאתר ומכיוון שכך הוא לא יכול להכנס לשני משתמשים באתר במקביל, דבר שהוא נהג לעשות קודם מטעמי נוחות,
שמעתי, הבעיה היתה נשמעת לי קצת מוזרה ובאתי לנסות למצוא מה הבעיה.
המחשבה הראשונה היתה,
מכיוון שיש אנשים המעוניינים בתכונה כמו זו של סינכרון חיבור של אתרים בין IE לFF יכול להיות שהכניסו את התכונה הזו לFF?
אומנם לא שמעתי על כך, אבל לא על כל התכונות של FF אני שומע לפני שהם יוצאות, בדקתי בchangelog (רשימת שינויים, תוכנות בעיקר) ולא מצאתי כל מידע על תוספת פיצ'ר בסגנון זה.
ואז חשבתי שבעצם מותקנת על אותו FF גם הרחבה בשם IE TAB שמיועדת לספק תאימות לIE אולי הוסיפו לה את הפיצ'ר הזה שמפריע לו, בדקתי וגם לזה לא מצאתי זכר.
ואז עלה במוחי המחשבה שבעצם אני ייבאתי בשבילו עוגיות מIE לא מזמן ואולי ייתכן שזה קשור לבעיה,
בדקתי את הנושא ע"י העתקת העוגיה למחשב נוסף ואכן מאז ביצוע העתקה כל החיבורים והניתוקים התבצעו בצורה סינכרונית (גם אם המחשב שבו נמצאת העוגיה ממוקם בIP שונה)
זמן "פג התוקף" של העוגיה היה בדקה האחרונה של השנה הנוצרית 2009
התוכן שלה הוא בסגנון זה:
ShopperManager%2FODONLINE=T5KRG4J3E74M8KDKHWLGW7X53B1R83C9
גם במקרה של ניתוק או התחברות לא יהיה כל שינוי בעוגיה אלא רק ברישום הנמצא על שרתי האתר של מה אומרת העוגיה (מנותק \ משתמש X מחובר)
דוגמה לניצול אפשרי של פרצה זו יכולה להיות ע"י ישיבה של מספר שניות במחשב המשמש את הקורבן,
ביצוע של העתקת העוגיה שתהיה יעילה גם במקרים ומדובר בקורבן יותר אחראי מהנורמה שטורח לנתק את המשתמש שלו על מנת למנוע שימוש בלתי מורשה,
לאחר מכן כל אימת שהקורבן יתחבר למשתמש שלו באתר יהיה בידי התוקף את כל האפשרויות שאמורות להיות רק ברשות הקורבן ללא כל סימן על מחשב הקורבן מכיוון שלא הוחדר למחשב שום דבר,
את זה עלול לנצל התוקף לדברים כגון ריגול עסקי ע"י מעקב אחר היסטוריית ההזמנות או גרימת נזקים ע"י הזמנות מזויפות ועוד ועוד כיד הדמיון הרעה עליו…
Published ינואר 3, 2009
כללי , לינוקס , תוכנות
אומנם ממני לא ביקשו, אבל גם אותי הנושא מעניין, אז הנה הפירוט:
- הפצה: מנדריבה (66%) ודביאן (33%)
- סביבת עבודה: KDE וopenbox עם lxpanel
- מעבד תמלילים: אופן אופיס
- נגן מוזיקה:Amarok וmplayer (לא גרפי)
- נגן וידאו: vlc
- שפת תכנות: bash
- דוא"ל: Gmail
- דפדפן: פיירפוקס
- חלוקה למחיצות: Gparted
צימצמתי את הרשימה לדברים שנראה לי יותר נוגעים אלי.
Published נובמבר 30, 2008
אבטחת מידע , כללי , תאוריה
אם היה מתקשר אליכם דקות לאחר שנרשמתם למבחן תאוריה אדם שיודע שנרשמתם, את מספר תעודת הזהות שבו נרשמתם והזמן והמקום אליו נרשמתם, הייתם מפקפקים בכך שהוא ממשרד הרישוי\תחבורה?
מבחני התאוריה ללימוד נהיגה בישראל מתנהלים ע"י חברות טלדור ומנפוואר, להם יש אתר שבו נרשמים לתור למבחן תאוריה.
לאחר ההרשמה התקבל למייל שנרשמים ממנו קישור לכתובת כגון זו:
https://teory.co.il/printme.asp?id=62139
בכתובת זו היה את פרטי ההרשמה להדפסה בשביל להציג במקום שבו נבחנים.
הבעיה היא שהמספר שנמצא בכתובת הוא מספר סידורי בלי שום הגנה נוספת.
כלומר, היה ניתן לעבור לפרטים של מי שנרשם אחריך פשוט ע"י כניסה לכתובת עם מספר עוקב (https://teory.co.il/printme.asp?id=62140) וכן הלאה.
דוגמאות לפרטים שנחשפו:
עלי לציין לשבח את חברת אפריקום (מפתחי האתר) על תיקון מהיר מאוד של התקלה לאחר הדיווח.