Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add half finished posts #70

Merged
merged 2 commits into from
Oct 27, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion _posts/2015-08-09-pen-testing-introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: 'Pen Testing - הקדמה'
author: nirgn
layout: post
summary: 'סדרת הפוסטים הקרובה תיהיה יומן מסע של תהליך הלמידה שלי את העולם הענק הנקרא בדיקות חדירה. החלק הזה יהיה הקדמה, תזכורת, ויישור קו. נעבור על מונחים בסיסיים, נתקין את סביבת העבודה, ונדבר קצת על אנונימיות (למה היא חשובה, וכיצד אפשר להתחיל ליישם שיטות לשמירת האנונימיות שלנו בזמן תהליך הלמידה).'
base-images-url: 'pen-testing-part-1'
category: Pen Testing
---
לא ממזמן חזרתי לנושא שעניין אותי עוד מהתקופה שלי בתור נער מתבגר - בדיקות חדירה (Pen Testing ראשי תיבות של Penetration Testing). באיזשהו שלב (לא זכור לי אפילו למה) פניתי לתחומים אחרים הקשורים למחשבים (בעיקר פיתוח), אך העניין האינסופי בתחום נשאר, ולאחרונה חזרתי להתעניין בנושא. סדרת הפוסטים הקרובה תיהיה יומן מסע של תהליך הלמידה שלי את העולם הענק הנקרא בדיקות חדירה. כמו תמיד אבצע disclaimer: אינני מתיימר לדעת הכל, וכל מה שאכתוב כאן הוא מלמידה אישית שלי דרך ספרים ואתרים שונים. אינני אחראי על השימוש שתבצעו בידע שיכתב בפוסטים אלו, ו**אני נגד שימוש לרעה בידע שתצברו כאן** (יש מספיק עבודות בהם תוכלו ליישם את הידע שלכם, כך שממש אין צורך לעבור על החוק).
Expand Down
212 changes: 212 additions & 0 deletions _posts/2019-08-04-building-decision-trees.md

Large diffs are not rendered by default.

210 changes: 210 additions & 0 deletions _posts/2019-08-18-introduction-to-information-theory.md

Large diffs are not rendered by default.

264 changes: 264 additions & 0 deletions _posts/2019-09-01-preparation-the-data.md

Large diffs are not rendered by default.

65 changes: 65 additions & 0 deletions _work/2020-05-04-data-link-layer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
---
title: 'The Data Link Layer – שכבת הערוץ'
author: nirgn
layout: post
summary: "פוסט זה מתמקד בשכבה השניה במודל, לאחר שדיברנו על השכבה הראשונה, הפיזית (לרוב, השכבה הקשה ביותר להבנה לאנשי מדעי המחשב), אנו ממשיכים לשכבה השנייה (מלמטה), הלא היא שכבת הערוץ."
category: Computer Networks
---
פוסט זה מתמקד בשכבה השניה במודל, לאחר שדיברנו על השכבה הראשונה, הפיזית (לרוב, השכבה הקשה ביותר להבנה לאנשי מדעי המחשב), אנו ממשיכים לשכבה השנייה (מלמטה), הלא היא שכבת הערוץ.
בפוסט אבצע סקירה מלאה על השכבה ואפרט את הנושאים הבאים:

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

<!--more-->

&nbsp;

### אז לפני שאנחנו מתחילים, מהי שכבת הערוץ?

שכבת הערוץ עוסקת, באופן כללי, באלגוריתמים להשגת תקשורת אמינה ויעילה של יחידות מידע שלמות הנקראות “מסגרות” (במקום ביטים בודדים כמו בשכבה הפיסית).

&nbsp;

### 1. נושאים בתיכון שכבת הערוץ

לשכבה זו יש כמה מטרות עקריות:
1. לספק ממשק לשירות שכבת הרשת.
2. להתמודד עם שגיאות שידור.
3. לווסת את זרימת הנתונים כך שמקלטים איטיים אינם יוצפו ע”י שולחים מהירים.

כדי להשיג את מטרות אלה, שכבת הערוץ לוקחת את הפאקטות (packets) שהיא מקבלת משכבת הרשת (השכבה שמעליה, השלישית במספר) ועוטפת אותם (מבצעת עליהם [אינקפסולציה – כימוס](http://en.wikipedia.org/wiki/Encapsulation_%28object-oriented_programming%29)) למסגרות (frames) לשידור. כל מסגרת מכילה Header (כותרת), Payload field (שדה להחזקת המנות), ו Trailer (גורר).

&nbsp;

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

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

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

* שירות ללא חיבור שלא מאושר.
* שירות ללא חיבור מאושר.
* שירות מכוון קשר מאושר.

**שירות ללא חיבור שלא מאושר** – מורכב ממכונת מקור המשדרת מסגרות עצמאיות אל מכונת היעד מבלי שמכונת היעד מכירה בהן. אתרנט ([Ethernet](https://en.wikipedia.org/wiki/Ethernet)) הוא דוגמה טובה לפרוטורול בעל שכבת ערוץ המספקת סוג כזה של שירות. אם מסגרת הולכת לאיבוד בשל רעש על הקו, לא נעשה כל ניסיון לזהות את האובדן או להתאושש ממנו בשכבת הערץ. שירות כזה מתאים כאשר שיעור השגיאות הוא נמוך מאוד, ולכן ההתאוששות נשמרת לשכבות גבוהות יותר. כמו כן הוא מתאים גם לתעבורה בזמן אמת כגון שידור קול, שבו מידע שמאחר להגיע גרוע יותר ממידע שהגיע משובש (או לא הגיע בכלל), שכן בתקשורת בזמן אמת עדיף לנו לחוות ירידה של פריים או קטיעה קטנה של התקשורת (גליץ) מאשר להשהות אותה כדי לשלוח אישור שהמסגרת לא הגיע ולחכות שתישלח שוב.

**שירות ללא חיבור מאושר** – כל מסגרת הנשלחת מאושרת באופן נפרד. בדרך זו השולח יודע אם המסגרת הגיע בצורה נכונה אל יעדה ואף אם אבדה בדרך. אם המסגרת לא הגיע תוך פרק הזמן שסוכם מראש ניתן לשלוח אותה שוב. שירות כזה שימושי בערוצים לא אמינים כגון מערכות אלחוטיות, תקן 802.11 ([WiFi](https://en.wikipedia.org/wiki/IEEE_802.11)) הוא דוגמה טובה לערוץ כזה.

**שירות מכוון קשר מאושר** – בשירות זה מכונת המקור ומכונת היעד יוצרות חיבור עוד לפני תחילת העברת הנתונים. כל מסגרת הנשלחת דרך חיבור זה ממוספרת, ושכבת הערוץ מבטיחה כי כל מסגרת הנשלחת אכן מתקבלת, ואפילו יותר מכך, היא מבטיחה כי כל מסגרת התקבלה בדיוק פעם אחת, ושכל המסגרות התקבלו בדיוק בסדר הנכון. שירות שכזה מתאים בשידורים ארוכים ולא אמינים כמו ערוצי לווין או מעגלי טלפונים למרחקים ארוכים. כמובן שכמו “שירות ללא חיבור מאושר” אם מסגרת לא הגיעה אל יעדה או אבדה בדרך היא תישלח שוב, ואף אם הטיימר פקע ועדיין לא התקבל אישור שהמסגרת הגיע ליעדה, מכונת היעד תשלח את המסגרת פעם נוספת, מה שיגרום למס’ מסגרות זהות שיגיעו אל היעד (ומכונת היעד פשוט “תזרוק” אותן) דבר הגורם לבזבוז רוחב הפס. לשירות זה יש 3 שלבים: הראשון הוא הקמת החיבור ע”י כך ששני הצדדים מאתחלים את המשתנים והמונים הדרושים כדי לעקוב אחר המסגרות והאישורים. בשלב השני מסגרת אחת או יותר מעוברת למכונת היעד. ובשלב השלישי והאחרון הקשר משוחרר, והמשאבים (משתנים, חוצצים – Buffers, וכ’ו) משתחררים.

Unacknowledged connectionless service.

2. Acknowledged connectionless service.

3. Acknowledged connection-oriented service.

&nbsp;

**מסגור**

כעי
42 changes: 42 additions & 0 deletions _work/2020-06-17-pen-testing-part-2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
title: Pen Testing - Part 2
author: nirgn
layout: post
summary: "Pentestingבפוסט נמשיך ללמוד על נושא האנונימיות לעומק. בנוסף, אציין כי החלק הזה הינו המשך ישיר לחלק הקודם, נמשיך מאותו המקום, עם אותן דוגמאות וכד’. הסדרה מהווה סוג של יומן מסע המתעד את תהליך הלמידה שלי את עולם ה Pen Testing ממקום שאינו פורמלי ומתבצע דרך חיפוש באינטרנט, קריאת ספרים ומאמרים, צפייה ב Youtube, וחקירה אישית."
category: Pen Testing
---

Pentestingבפוסט נמשיך ללמוד על נושא האנונימיות לעומק. בנוסף, אציין כי החלק הזה הינו המשך ישיר לחלק הקודם, נמשיך מאותו המקום, עם אותן דוגמאות וכד’. הסדרה מהווה סוג של יומן מסע המתעד את תהליך הלמידה שלי את עולם ה Pen Testing ממקום שאינו פורמלי ומתבצע דרך חיפוש באינטרנט, קריאת ספרים ומאמרים, צפייה ב Youtube, וחקירה אישית.

**תוכן עיניינים:**

1. Proxy Chain
2. VPN
3. שלוש
4. ארבע
5. חמש

&nbsp;

<!--more-->

### Proxy Chain
שרשרת פרוקסי (Proxy Chain) היא הפעולה של הגדרת התעבורה דרך מספר שרתי פרוקסי, וזאת על מנת לחזק את האנונימיות שלנו (הרי אף פעם לא ניהיה אנונימיים ב 100%, ואסור לנו לסמוך על כך. לכן עלינו להפוך את פעולת האיתור לקשה יותר במידה ומישהו ינסה לבצע זאת). לכן כעת נגדיר שרשרת פרוקסי (Proxy Chain) שתעבוד ביחד עם Tor. יש לציין כי נגדיר את המערכת כך שכל התעבורה תעבור דרך שרשרת הפרוקסי ולא רק התעבורה של הדפדפן (Browser) שלנו.

proxychains-confנבצע את שרשור הפרוקסים עם תוכנה בשם Proxifier המגיעה כבר עם Kali, וכדי לעשות זאת נערוך את קובץ ההגדרות שלה, הנקרא proxychains ע”י כתיבת הפקודה `sudo nano /etc/proxychains.conf` בטרמינל (Terminal) עם עורך טקסט בשם Nano (המגיע גם הוא מותקן עם Kali, והאמת שעם רוב הפצות ה Linux) (בגלל שכתבנו sudo לפני הפקודה תידרשו להכניס את הסיסמה שלכם ורק אז יפתח הקובץ, עשינו זאת בשביל לקבל הרשאות Root כדי שנוכל לערוך את הקובץ). התוכנה יכולה לבצע את התקשורת עם פרוטוקול HTTP, SOCKS4, SOCKS5 ומומלץ להשתמש ב SOCKS5 בלבד. HTTP זה הפרוטוקול המוכר לכולם (אם לא, [Wikipedia is your friend](https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol)) ומיועד לתעבורת HTTP, פרוטוקול SOCKS מבצע תעבורה של חבילות מידע בין שרת ללקוח דרך שרת פרוקסי, גרסה 5 של אותו פרוטוקול מוסיפה את האפשרות לאימות, ל IPv6, ול QDP (ולכן נשתמש בגרסה זו).

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

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

random_chain אומר שכל חיבור עם proxy chain יעשה באופן רדנומלי ולא על פי הסדר של הפרוקסים שנקבעו ברשימה. ז”א שאם כתבו את הפרוקסים a,b,c. בחיבור אחד השרשור יהיה a->b->c ובחיבור שני השרשור יכול להיות c->a->b. ומתחתיו אפשר גם לשנות את אורך השרשור (chain_len) כך שאם כתבנו ברשימה 5 פרוקסים, והאורך שהגבלנו את המערכת הוא 3 אז חיבור אחד יכול להיות a->b->d. וחיבור שני יהיה c->b->e.

לאחר מכן יש את quiet_mode שלצערי לא הצלחתי להבין מהו. ואת proxy_dns שמגן עלינו מפני הדלפות מידע משרתי DNS (או [DNS leak](https://www.dnsleaktest.com/what-is-a-dns-leak.html)) וצריך להיות פעיל (לא בהערה). הדלפות DNS אומר שגם אם הצלחנו להסתיר את הכתובת ה IP שלנו עדיין יש את כתובת ה IP של שרת ה DNS שאנו משתמשים ומשם אפשר לאתר את כתובת ה IP שלנו (למי שרוצה לקרוא יותר על כיצד פותרים את הבעיה הזו לחצו כאן. בגודל פשוט משתמשים בשרתי DNS אנונימיים, הם אולי יותר איטיים אבל לא שומרים log-ים). לאחר מכן יש הגדרת זמן ל Timeout, ואז דוגמאות לכיצד לכתוב את רשימת הפרוקסים.

> click here: https://www.dnsleaktest.com/how-to-fix-a-dns-leak.html

d-cain_terminalכפי שניתן לראות בדוגמאות, בעמודה הראשונה אנו מכניסים את סוג הפרוטוקול, לאחר מכן את כתובת ה IP שלו, אחר כך את מספר הפורט ששרת הפרוקסי מאזין לו (דרכו אנו מתחברים לשרת הפרוקסי), ולבסוף את שם המשתמש (אם יש) ואז את הסיסמה (אם יש). כשנירד קצת מתחת אנו רואים את שרת הפרקוסי הראשון שלנו, הדיפולטיבי שהוגדר ע”י Tor. הוא משתמש בפרוטוקול socks4, כתובת ה IP המקומית (local loop – 127.0.0.1), ודרך פורט 9050. ז”א שכל התעבורה במחשב שלנו עוברת דרך הפורט הזה שאליו Tor מאזין. אני אוסיף בדיוק את אותם פרטים רק עם socks5 מתחתיו, כדי שהתעבורה תעבור דרך Tor אך בפרוטול socks5 (בדקתי באינטרנט לפני כן ש Tor אכן תומך בפרוטוקול הזה), ונלחץ ctrl+o כדי לשמור, ואז ctrl+x כדי לצאת.

לאחר מכן נבדוק את הסטטוס של tor עם הפקודה `service tor status`, נקבל תשובה שהוא לא פועל (‘!tor is not running … failed’), ואז נפעיל את tor עם הפקודה `service tor start`. הדבר הבא שאנחנו צריכים לעשות הוא להשתמש בשרשור פרוקסי עם tor ודפדפן האינטרנט הקיים ב kali. dns_leak_testנבצע זאת עם הפקודה `proxychains firefox www.duckduckgo.com` (אנו כותבים firefox כי זה דפדפן ברירת המחדל של kali, כן למרות שכתוב Iceweasel, מכיוון שהוא פוצל מפרוייקט Firefox, ובמקום הכתובת של duckduckgo אתם יכולים לשים איזה כתובת שתבחרו – זה רק למטרות בדיקה, שוב, לא נגלוש דרך root). יפתח לנו הדפדפן, ובשורת החיפוש נכתוב “check for dns leak” וניכנס לאתר בשם “DNS leak test”. שם נוכל לראות את כתובת ה IP של שרת ה DNS, ואכן לראות שהוא לא מדויק (במקרה שלי, צרפת) (אם תשימו לב בטרמינל, תראו שאנו משתמשים ב D-chain ועוברים דרך כמה כתובת IP, מחלקן אנו מקבלים denied ומחלקן OK).

> project split from firefox: https://en.wikipedia.org/wiki/Mozilla_Corporation_software_rebranded_by_the_Debian_project
25 changes: 25 additions & 0 deletions files/lenses.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
age of the patient,spectacle prescription,astigmatic,tear production rate,Lense Type
1,1,1,1,3
1,1,1,2,2
1,1,2,1,3
1,1,2,2,1
1,2,1,1,3
1,2,1,2,2
1,2,2,1,3
1,2,2,2,1
2,1,1,1,3
2,1,1,2,2
2,1,2,1,3
2,1,2,2,1
2,2,1,1,3
2,2,1,2,2
2,2,2,1,3
2,2,2,2,3
3,1,1,1,3
3,1,1,2,3
3,1,2,1,3
3,1,2,2,1
3,2,1,1,3
3,2,1,2,2
3,2,2,1,3
3,2,2,2,3
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/posts/building-decision-trees/InfoAD.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/posts/building-decision-trees/InfoD.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/posts/pen-testing-part-2/Pentesting.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/posts/preparation-the-data/Data_Mining.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/posts/preparation-the-data/ErrTest.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/posts/preparation-the-data/Histogram.png
Binary file added images/posts/preparation-the-data/ROC_Curves.png
Binary file added images/posts/preparation-the-data/Weka.png
Binary file added images/posts/the-data-link-layer/ZeroAndOnes.png