SUMARIZAREA Ș I VIZUALIZAREA CAPTURILOR DE [611659]
FACULTATEA DE AUTOMATICĂ ȘI CALCULATOARE
DEPARTAMENTUL C ALCULATOARE
SUMARIZAREA Ș I VIZUALIZAREA CAPTURILOR DE
TRAFIC DIN REȚEA PENTRU ANALIZA SECURITĂȚII
LUCRARE DE LICENȚĂ
Absolvent: [anonimizat]ő Emmánuel BÁN
Coordonator
științific: S.l.dr.ing. Ciprian Pavel OPRIȘA
2020
FACULTATEA DE AUTOMATICĂ ȘI CALCULATOARE
DEPARTAMENTUL C ALCULATOARE
DECAN, DIRECTOR DEPARTAMENT,
Prof. dr. ing. Liviu MICLEA Prof. dr. ing. Rodica POTOLEA
Absolvent: [anonimizat]ő E mmá nuel BÁN
SUMARIZAREA Ș I VIZUALIZAREA CAPTURI LOR DE TRAFIC DIN REȚEA
PENTRU ANALIZA SECURITĂȚII
Enunțul temei: Analizarea datelor dintr -o captură de rețea și
sumarizarea lor, încât acestea să fie ușoare de citit pentru orice utilizator
Conținutul lucrării: Introducere, Obiectivele proiectului, Studiu
bibliografic, Analiză și fundamentare teoretică, Proiectare de detaliu și
implementare,Testare si validare, Manual de instalare și utilizare,
Concluzii, Bibliografie, Anexa .
Locul documentării : Universitatea Tehnică din Cluj -Napoca,
Departamentul Ca lculatoare
Consultanți :
Data emiterii temei: 1 noiembrie 201 9
Data predării: 8 iulie 2020
Absolvent: [anonimizat]:
FACULTATEA DE AUTOMATICĂ ȘI CALCULATOARE
DEPARTAMENTUL C ALCULATOARE
FACULTATEA DE AUTOMATICĂ ȘI CALCULATOARE
DEPARTAMENTUL C ALCULATOARE
Declarație pe proprie răspundere privind
autenticitatea lucrării de licență
Subsemnatul Ernő Emmánuel BÁN , legitimat cu CI seria MM nr. 955193
CNP [anonimizat] , autorul lucrării SUMARIZAREA ȘI VIZUALIZAREA
CAPTURILOR DE TRAFIC DIN REȚEA PENTRU ANALIZA SECURITĂȚII
elaborată în vederea susținerii examenului de finalizare a studiilor de licență l a Facultatea
de Automatică și Calculatoare, Specializarea Tehnologia Informației din cadrul
Universității Tehnice din Cluj -Napoca, sesiunea Iulie a anului universitar 2019/2020 ,
declar pe proprie răspundere, că această lucrare este rezultatul propriei acti vități
intelectuale, pe baza cercetărilor mele și pe baza informațiilor obținute din surse care au
fost citate, în textul lucrării, și în bibliografie.
Declar, că această lucrare nu conține porțiuni plagiate, iar sursele bibliografice au
fost folosite cu r espectarea legislației române și a convențiilor internaționale privind
drepturile de autor.
Declar, de asemenea, că această lucrare nu a mai fost prezentată în fața unei alte
comisii de examen de licență.
In cazul constatării ulterioare a unor declarații f alse, voi suporta sancțiunile
administrative, respectiv, anularea examenului de licență .
Data
8 iulie 2020 Nume, Prenume
Ernő Emmánuel BÁN
Semnătura
i
Cuprins
Capitolul 1. Introdu cere – Contextul proiectului ………………………….. …….. 1
Capitolul 2. Obiectivele Proiectului ………………………….. …………………………. 3
2.1. Obiective ………………………….. ………………………….. ………………………….. ……….. 3
2.2. Specificații ………………………….. ………………………….. ………………………….. ……… 3
2.3. Proiectare ………………………….. ………………………….. ………………………….. ………. 4
Capitolul 3. Studiu Bibliografic ………………………….. ………………………….. …… 5
3.1. Wireshark ………………………….. ………………………….. ………………………….. ………. 5
3.2. Networkminer ………………………….. ………………………….. ………………………….. …. 6
3.3. Tcpdump ………………………….. ………………………….. ………………………….. ……….. 7
3.4. Comparație cu a plicația mea ………………………….. ………………………….. ………….. 9
Capitolul 4. Analiză și Fundamentare Teoretică ………………………….. ……. 11
4.1. Rețelele de calculatoare ………………………….. ………………………….. ………………. 11
4.2. Capturi de trafic din rețea ………………………….. ………………………….. …………….. 15
4.3. Wireshark ………………………….. ………………………….. ………………………….. …….. 16
4.4. TShark ………………………….. ………………………….. ………………………….. …………. 17
4.5. PyShark ………………………….. ………………………….. ………………………….. ……….. 17
4.6. Python ………………………….. ………………………….. ………………………….. …………. 18
4.6.1. Python vs Java ………………………….. ………………………….. …………………….. 19
4.6.2. Python vs JavaScript ………………………….. ………………………….. …………….. 19
4.6.3. Python vs Perl ………………………….. ………………………….. ……………………… 19
4.6.4. Python vs Tcl ………………………….. ………………………….. ………………………. 19
4.7. Qt și Pyside2 ………………………….. ………………………….. ………………………….. …. 20
4.8. Porturile dispozitivelor din rețea ………………………….. ………………………….. …… 21
4.9. Protocoalele de comunicare in rețea ………………………….. ………………………….. . 23
4.9.1. Modelul OSI ………………………….. ………………………….. ……………………….. 23
4.9.2. Modelul TCP/IP ………………………….. ………………………….. …………………… 25
4.9.3. Protocoale diver se ………………………….. ………………………….. ………………… 26
4.10. Adresele IP ………………………….. ………………………….. ………………………….. …… 27
Capitolul 5. Proiectare de Detaliu si Implementare ………………………….. .. 30
5.1. Diagrama cazurilor de utilizare ………………………….. ………………………….. …….. 30
5.2. Diagrame de activitate ………………………….. ………………………….. ………………… 31
5.2.1. Rapoarte generale ………………………….. ………………………….. ………………… 31
ii
5.2.2. Rapoarte despre detecții ………………………….. ………………………….. ………… 32
5.2.3. Schema completă ………………………….. ………………………….. …………………. 33
5.2.4. Schema simplificată ………………………….. ………………………….. ……………… 34
5.2.5. Statistici ………………………….. ………………………….. ………………………….. …. 35
5.2.6. Închidere ………………………….. ………………………….. ………………………….. … 36
5.3. Diagrama de clase ………………………….. ………………………….. ………………………. 36
5.3.1. Diagrama de clase pentru scheme ………………………….. ………………………… 38
5.3.2. Diagrama de clase pentru rapoarte ………………………….. ………………………. 39
5.4. Diagrame de secvență ………………………….. ………………………….. …………………. 40
5.4.1. Diagrama de secvență pentru afișarea schemei rețelei …………………………. 40
5.4.2. Diagrama de secvență pentru afisarea p orturilor unei perechi de adrese IP 41
5.5. Detalii de implementare ………………………….. ………………………….. ………………. 42
Capitolul 6. Testare și Validare ………………………….. ………………………….. …. 44
6.1. Testarea rapoartelor pe date de dimensiuni mici ………………………….. …………… 44
6.2. Testarea rapoartelor pe date de dimensiuni mari ………………………….. …………… 45
6.3. Testarea detecțiilor ………………………….. ………………………….. ……………………… 47
6.4. Concluzii ………………………….. ………………………….. ………………………….. ……… 48
Capitolul 7. Manual de Instalare si Utilizare ………………………….. …………. 49
Capitolul 8. Concluzii ………………………….. ………………………….. ………………… 54
8.1. Contribuții personale în dezvoltarea soluției ………………………….. ………………… 54
8.2. Analiză critică a rezultat elor obținute ………………………….. …………………………. 54
8.3. Dezvoltări și îmbunătățiri ulterioare ………………………….. ………………………….. . 54
Bibliografie ………………………….. ………………………….. ………………………….. ……. 57
Anexa 1 59
Capitolul 1
1
Capitolul 1. Introducere – Contextul proiectului
În articolul [20] sunt explicate unele aspecte legate de securitatea în rețea. De
acolo reiese c ă securitatea în rețea este practica preven ției și protecției împotri va
accesului neautorizat și a intrușilor în interiorul re țelei unei companii. Securitatea în
rețea, într-un fel, completeaz ă securitatea dispozitivelor terminale, adic ă securitatea
dispozitivelor individuale ale utilizatorilor. În schimb, securitatea în rețea se concentreaz ă
pe interac țiunea dintre acele dispozitive, pe țesuturile conective prezente în rețea între
acestea. Prin securitate în rețea se urm ărește procesul prin care se iau m ăsuri preventive
fizice și software pentru protejarea infrastructurii r ețelei de către accesul neautorizat,
defecțiuni, folosirea gre șita, distrugeri, modific ări, sau de dezv ăluirea improprie a
datelor, astfel cre ând o platform ă securizată pentru dispozitivele, utilizatorii și
programele care au inten ția de a o folosi în exec utarea acțiunilor care le sunt permise în
intermediul acestui mediu securizat.
În concluzie, securitatea în rețea este implementat ă cu ajutorul uneltelor care sunt
folosite și în prevenția accesării rețelei sau a dispozitivelor care sunt conectate la ea de
către persoane sau programe neautorizate. În esență, dispozitivul unui utilizator care face
parte dintr -o rețea nu poate fi accesat de c ătre un atacator dac ă atacatorul nu poate nici
măcar să pătrundă în rețea. Securitatea unei re țele se poate simplifica în trei categorii:
Protecție – sistemele și rețelele trebuie configurate la un grad maxim de
corectitudine
Detecție – trebuie să fie posibil ă detectarea schimb ărilor în configura ția
inițială și a problemelor indicate în traficul din re țea
Reacție – după identificarea rapid ă a problemelor care au ap ărut în rețea,
este necesar ă returnarea ei într-o stare sigur ă prin remedierea c ât mai
rapidă a problemelor
Această strategie este una de ap ărare. Totu și, niciodat ă nu ar trebui ca securitatea
unei rețele să se ba zeze doar pe o singur ă linie defensiv ă, deoarece este periculos.
Oricare sistem defensiv poate c ădea în cazul atacului din partea persoanei potrivite.
Rețeaua nu este o linie, ci o topologie, deci este un întreg teritoriu. În concluzie, chiar
dacă o parte din ea a fost invadat ă de către un atacator, este posibil ă regruparea
dispozitivelor care nu au fost corupte și alungarea atacatorului, în cazul în care defensiva
rețelei a fost organizat ă corespunz ător.
Există o mulțime de tehnici și tipuri de securit ate în rețea interesante. În modelul
Cisco, o companie care se ocup ă cu infrastructura re țelelor, se folose ște următoarea
schemă de spargere a diverselor tipuri de securitate pentru re țele: Controlul Accesului,
Anti Malware, Securitatea Aplica țiilor, Anali tici Comportamentale, Preven ția Pierderii
Datelor, Securitatea Emailurilor, Firewalluri, Detec ția și Preven ția Intruziunilor,
Securitatea dispozitivelor mobile și Wireless, Segmentarea Re țelelor, Securitatea
Informațiilor și Managementul Evenimentelor, VPN , Securitate Web.
Acest proiect are la baz ă necesitatea unei metode de analiz ă a unei capturi de
trafic din re țea, care s ă poată avea și considerente legate de securitate. Datele prezente în
Capitolul 1
2
capturi vor fi analizate și apoi, datele rezultate din analiza vo r fi interpretate astfel încât
un utilizator care nu cunoa ște prea bine conceptele legate de re țele să poată înțelege ce
conține captura respectiv ă. Avantajul fa ță de restul programelor care au ca scop
analizarea traficului dintr -o captură de trafic din re țea este ca va fi mult mai simplist,
axându-se strict pe o analiza general ă și o analiz ă din punct de vedere al securit ății. Cu
ajutorul acestei aplica ții, utilizatorul va fi capabil s ă vizualizeze statistici generale din
punct de vedere al pachetelor trim ise între adresele IP, porturile pe care s -a făcut
comunicarea și protocoalele utilizate pentru trimiterea datelor. De asemenea, acesta va
putea vizualiza schema complet ă a rețelei din captura de trafic din re țea, aceasta fiind
separată în două părți: rețeaua locală și internetul. Nu în ultimul r ând, partea legat ă de
securitate poate fi vizualizat ă tot ca un raport, acolo specific ându-se acțiunile interesante
din interiorul pachetelor, care pot reprezenta o problem ă de securitate pentru dispozitivul
în cauz a sau pentru toat ă rețeaua.
Capitolul 2
3
Capitolul 2. Obiectivele Proiectului
2.1. Obiective
În cadrul re țelelor de calculatoare exist ă multe necesit ăți din punctul de vedere al
securității. Obiectivele lucr ării curente sunt practic o însumare a unor probleme de
securitate abordate. Accentul este pus pe extragerea și analizarea datelor din capturi de
trafic din re țea și reprezentarea rapoartelor rezultate într-un mod u șor de citit. În
concluzie, obiectivele acestei lucr ări pot fi urm ătoarele:
1. Analizarea programelor asem ănătoare cu apl icația propusă spre dezvoltare
și determinarea punctelor importante pe care ar trebui s ă le conțină. De
asemenea, analizarea aspectelor negative și ale func ționalităților grele de
utilizat din fiecare program și încercarea remedierii lor într-o manier ă
simplistă.
2. Analizarea datelor primite din fi șierul de intrare, care este de forma unei
capturi de trafic din re țea. În urma pars ării acestuia, se vor returna c âteva
structuri de date care s ă încorporeze informa țiile esențiale și rezultatele
analizei datelor.
3. Reprezentarea grafic ă și tabelară a datelor g ăsite. În urma analizei
fișierului de intrare, utilizatorul trebuie s ă fie capabil de vizualizarea cu
ușurință a rezultatelor, astfel încât se va crea o interfa ță destinată lui în
care va putea vizualiza diverse le aspecte extrase din captura de trafic din
rețea.
2.2. Specificații
Soluția implementat ă ar trebui s ă aibă următoarele caracteristici:
Să poată determina c âte pachete sunt prezente în captura de trafic din re țea
pentru fiecare port în parte.
Să poată determi na c âte pachete sunt prezente în captura de trafic din re țea
pentru fiecare protocol în parte.
Să poată determina c âte pachete sunt prezente în captura de trafic din re țea
pentru fiecare pereche de adrese IP în parte.
Să se reprezinte grafic dispozitivele care comunic ă între ele și opțiunea de
reducere a zgomotului, adic ă eliminarea tuturor dispozitivelor care trimit și
primesc un num ăr mic de pachete și eliminarea tuturor muchiilor care se
leagă de ele.
Să se implementeze func ția de vizualizare a amenin țărilor posibile, adic ă
extragerea unor caracteristici neuzuale din captura de trafic din re țea și
interpretarea lor ulterioar ă. De asemenea, s ă se specifice num ărul total de
detecții pentru fiecare caz în parte și să se asocieze cu un tip și nume de
detecție.
Capitolul 2
4
2.3. Proiectare
Având în vedere obiectivele și specifica țiile prezente pentru proiect, abordarea
aleasă va fi împărțirea rezultatelor ob ținute după analiza în mai multe categorii:
Rapoarte
Reprezent ări ale rețelei
Statistici
După caz, pentru fiecare dintre a ceste categorii vor exista subcategorii, în felul
descris mai jos:
Rapoarte
o Rapoarte Generale
o Rapoarte cu Detec ții
Reprezent ări ale rețelei
o Reprezentarea complet ă a rețelei
o Reprezentarea simplificat ă a rețelei
De asemenea, va exista și o categorie pentru c erințele care nu țin de
funcționalitățile proiectului, ci de modul lui de func ționare (de exemplu ie șirea din
proiect).
Capitolul 6
5
Capitolul 3. Studiu Bibliografic
3.1. Wireshark
Având în vedere contextul proiectului actual nu putem omite discuția despre o
unealtă foarte populară p e partea de monitorizare a traficului de date cunoscută drept
Wireshark. Wireshark este descris la referinț a [10] că este cunoscut ca fiind un program
care analizează traficul din rețea, aceasta nu poate lipsi din lista de aplicații folosite de
către orice specialist în securitate sau administrator de rețea. Faptul că este o aplicație
care permite monitorizarea în timp real a traficului care trece printr -o rețea constitui e un
mare plus. În general este una din cele mai folosite soluții software în depistare a
problemelor care pot să apară într -o rețea, aici putem aminti ajutorul pentru depistarea
problemelor de latență, depistarea dropped packets, sau interceptarea unei activități rău
intenționate în rețea, cauzate de persoane din exterior despre care nu se c unoaște că ar fi
de încredere. De asemenea Wireshark permite filtrarea traficului de date și oferă sprijinul
necesar soluționării problemei sursă. Se știe că este un software puternic, dar pentru a
putea fi folosit utilizatorul trebuie să aibă cunoștințe e lementare despre modul de
funcționare al rețelelor, cum ar fi înțelegerea utilitatea și modul de funcționare al stivei
TCP/IP, DHCP, port forwarding și cum se modul în care se face rutarea.
Ca și mod de funcționare Wireshark interceptează traficul de date din rețea și face
o conversie a datelor din binar într -un format care poate fi mai ușor de citit de către om,
acest lucru ușurează foarte mult munca utilizatorului și face mai ușor modul de
identificare de către utilizator a traficului care tranzitea ză rețeaua din punct de vedere al
frecvenței, al latenței și al altor aspecte. De asemenea Wireshark suportă mult peste două
Figura 3.1 [17] Exemplu de captură de trafic din rețea în programul Wireshark
Capitolul 6
6
mii de protocoale de rețea, lucru foarte util pentru un specialist în securitatea care
analizează pachetele IP în primă fază atunci când depistează o problemă.
Ceea ce îl face pe Wireshark cu adevărat un program realmente folositor este
existența unor unelte care ajută la filtrarea traficului, trafic care conține un volum
consistent de date. Filtrele de captură permit colectarea doa r a tipurilor de trafic care sunt
importante și contează pentru utilizator, permițând filtrarea și inspectarea doar a datelor
semnificative. Analizatorul de rețea conține unelte de căutare care conțin expresii
regulate și evidențiere colorata , ușurând astfel procesul de căutare a informațiilor
importante.
Pentru a depista anomaliile din funcționarea rețelei trebui e, mai întâi , să se
cunoască cum arată și cum se comportă rețeaua într -o situație normală, în acest sens
programul oferă facilități de creare a unor statistici elementare. Pentru statistică există și
o facilitate care ajută la vizualizarea statisticilor, acest aspect poate fi folositor atunci
când se dorește prezentarea unei situații unor persoane care au puține cunoștințe tehnice.
Dacă se dorește se poate folosi ca și un interceptor și analizator al traficului criptat TLS.
Cheile simetrice se stochează în browser, iar cu o anumită setare administratorul poate
încărca aceste chei în Wireshark și să examineze traficul.
3.2. Networkminer
Un alt software util este Networkerminer. Aceast ă aplicație poate fi folosit ă pentru
a extrage și verifica pachetele din re țea, astfel ajut ând la detectarea sistemului de operare,
sesiunile, numele host -urilor, poturile disponibile. Acesta este disponibil pentru
Windows, dar poate fi integrat și pe Linux, sau Mac OS X. A devenit tot mai popular din
2007 încoace, de c ând a apărut, ajung ând să fie folosit de c ătre companii și instituții din
mai multe țări. De asemenea poate parsa fi șiere de tip PCAP din analize și să
reasamb leze informa țiile transmise în fișiere și certificatele aflate în fișierele PCAP.
Networkminer u șurează realizarea NTA avansate prin punerea la dispozi ția
utilizatorului a unor artefacte extrase în interfață. De asemenea software -ul permite
utilizatorul ui posibilitatea de a insera un string care trebuie s ă fie căutat, func ționalitatea
de căutare dup ă niște cuvinte cheie. Dac ă utilizatorul dore ște se poate instala varianta
Networker Professional disponibil ă pe USB flash drive. Exist ă posibilitatea de a se rula
aplicația de Networkminer direct de pe USB drive, deoarece este o aplica ție care nu
necesită instalarea, fiind portabila. Totu și se recomanda copierea acestui program pe
memoria intern ă a computerului pentru a ob ține performan țe mai bune. Aceast ă aplicație
este g ândită să afișeze doar cele mai importante informa ții căutate de c ătre utilizator
ajutându-l astfel să verifice și să monitorizeze acele fi șiere care con țin intenții rele,
venite din partea unor surse nesigure din exterior. Un alt avantaj îl constituie posibilitatea
de examinare a traficului în timp real.
Ca și mod de func ționare, programul cere utilizatorului s ă încarce un fi șier PCAP.
După această încărcare în program vor ap ărea niște taburi care sunt legate de con ținutul
traficului.
Capitolul 6
7
A ceste taburi pot con ține informa ții legate de parametrii din HTTP trimi și către
serverele web ca o parte a sesiunii, fi șiere schimbate dintre hosturi pe parcursul perioadei
în care se face monitorizarea, hosturile observate care con țin și numele lor de DNS,
adresele IP, împreună cu porturile care apar atunci c ând se face monitorizarea și alte
informații importante.
Networkminer extrage în mod automat fi șierele din streamul de date de pe re țea și
le stocheaz ă local într-un director. Acest lucru poate fi pericu los deoarece dac ă nu se are
mare grijă cu manevrarea acestor fi șiere se poate produce o infectare a sistemului, în caz
că se găsesc fișiere infectate, cu scop r ău intenționat, de aceea se recomand ă folosirea
unui laborator dedicat ca sistem. Ca și avantaje al acestui software putem reg ăsi
posibilitatea de parsare a fi șierelor PcapNG, support IPV6, facilitatea de a extragere a
fișierelor din FTP, TFTP, HTTP, SMB, SMTP, POP3, FTPS, aceste avantaje se pot g ăsi
în ambele versiuni ale proiectului, at ât în cea gr atis c ât și în ce Professional. Alte avantaje
găsite exclusiv doar în varianta Professional pot fi posibilitatea de extragere audio a
apelurilor VoIP, Port Independent Protocol Identification (PIPI), posibilitatea de
exportare c ătre fișiere de tip CSV, Exc el, XML, JSON -LD, posibilitatea de a configura
timpul și locația(UTC), localizare Geo IP, suport pentru colorarea gazdei, suport pentru
scripting prin intermediul liniei de comand ă, prin intermediul NetworkMinerCLI .
3.3. Tcpdump
Tcpdump este o unealtă gratuită responsabilă de analizarea pachetelor de date din rețea și
pune la dispoziție o interfață de tip linie de comandă ca și în cazul Networkminer. Acest
Figure 3.2 [18] Exemplu de captur ă de trafic din rețea î n programul Networkminer
Capitolul 6
8
software a fost creat în anul 1988, iar pe la finalul anilor 90’ existau o mulțime de
versiuni ale softw are-lui. Ca și funcționalitate principala proiectul permite afișarea
pach etelor TCP/IP sau a altor pachete, pachete care circulă prin rețea și trebuie
monitorizate de către utilizator. Ca și platforme, acesta poate rula pe cele mai importante
sisteme de op erare de tip Unix, din care putem aminti Linux, Solaris, FreeBSD, macOS.
Pentru a putea face extra gerea pachetelor de date din reț ea, programul folose ște biblioteca
libpcap, iar pe Windows se foloseș te WinPcap.
Ca și mod de func ționare, Tcpdump efectue ază afișarea conținutului pachetelor din re țea,
are posibilitatea de citire a pachetelor dintr -un card de interfa ță de rețea și poate efectua
scrierea pachetelor într-un fișier. De asemenea utilizatorul poate aplica un filtru op țional
bazat pe BPF pentru a limita num ărul de pachete percepute de c ătre Tcpdump, acest lucru
este aplicabil mai ales în cazul re țelelor cu un trafic destul de mare. Pentru a depana și a
analiza pachetele, programul are nevoie de permisiuni privilegiate a șa că este necesar ă
folosire a comenzii sudo înainte de comenzile dorite. De exemplu, pentru a observa care
interfețe sunt disponibile pentru a fi capturate se folose ște comanda “sudo tcpdump -D”.
Pentru a captura în interfata any spre exemplu se va folosi comanda “sudo tcpdump -i
any”. Este indicat, de asemenea, s ă se captureze doar anumite pachete specifice, de aceea
este recomandat s ă se aplice ni ște filtre, de exemplu s ă se facă filtrarea dup ă adresa IP
sau numerele portului. Un alt avantaj este posibilitatea de a captura și decodi fica o
Figure 3.3 [19] Exemplu de captură de trafic din rețea î n programul Tcpdump
Capitolul 6
9
varietate larg ă de protocoale precum TCP, UDP, ICMP și multe altele. Se recomand ă
consultarea manualului de utilizare pentru ca formatele pachetelor pot s ă difere.
La capitolul de filtrare a pachete aminteam și în rândurile de mai sus c ă acest
software poate captura foarte multe pachete, acest lucru este benefic în prima faz ă, dar
trebuie să privim și aspectele negative. De exemplu, este foarte probabil s ă avem și
pachete de care s ă nu avem nevoie, acestea oferindu -ne indicii în depanarea unei
probl eme. Dac ă se dorește, de exemplu, depanarea unor probleme de conectivitate cu un
server web, cel mai probabil nu va exista nevoia de informa ții legate de traficul de SSH,
drept urmare aceste tipuri de pachete pot fi filtrate, acest tip de filtrare poate aj uta la
citirea și depanarea situa țiilor și depistarea sursei problemei. Filtrarea în sine constituie
un avantaj major, filtrare care permite eliminarea unor pachete baz ându-se pe niște
parametrii precum adresa IP sursa sau adresa IP destina ție, porturile, protocoalele și
altele. De asemenea, la nevoie se pot compune și expresii complexe prin combinarea
filtrelor de baz ă și utiliz ând operatori de baz ă cum sunt “and” sau “or”.
Se poate face o filtrare a pachetelor dup ă headere, fiind suficiente doar unele
informații precum gazda, porturile sau sursa, de exemplu. Dar uneori nu este suficient
acest lucru, se poate s ă fie nevoie de verificarea con ținutului pachetelor pentru a se
verifica dac ă ceea ce prime ște este și ceea ce se a șteaptă, în acest sens exist ă două flag-
uri care se pot ad ăuga în mod arbitrar -X pentru a afi șa conținutul în hexa, sau -A daca se
dorește printarea con ținutul utiliz ând caractere ASCII.
La capitolul salvare, Tcpdump ofer ă posibilitatea de capturare și de salvare în
fișier. De exemplu, se pot captura pachete în mod batch peste noapte, iar în decursul zilei
să se facă verificarea propriu -zisă. Un alt beneficiu este în situația în care se captureaz ă o
cantitate mare de pachete în timp real și este destul de dificil de urm ărit, datorit ă apariției
pachetelor repede.
3.4. Comparație cu aplicația mea
Toate aceste unelte software sunt foarte utile, fiecare având propriile avantaje și
dezavantaje. Se poate afirma că Wireshark este cel mai complex program pentru analiza
traficului din rețea, având cel e mai multe funcții, fie ele pentru analiza în timp real a
traficului, sau chiar pentru analiza traficului găsit într -o captură de trafic din rețea. Totuși,
datorită complexității devine dificil de utilizat. În schimb, nici programele bazate pe linia
de co mandă nu sunt cele mai ușoare de utilizat. Aplicația proiectată de mine va furniza o
analiză de baza a capturilor de trafic din rețea iar pentru vizualizarea raportului,
utilizatorul va avea parte de o interfață de unde va putea comunica cu ușurință cu
aplicația. Într -adevăr, soluția abordată de mine nu are foarte multe funcționalități, precum
Wireshark, de exemplu, însă scopul ei este, de fapt, oferirea posibilității de a analiza o
captură de trafic din rețea cu ușurință și vast, nu intrarea în detaliu asu pra tuturor
detaliilor din captură. În cazul în care aplicația nu oferă detaliile necesare, sau este nevoie
de a observa mai în detaliu unele rapoarte expuse, există posibilitatea analizării capturii în
Capitolul 6
10
oricare dintre programele enumerate mai sus, sau chia r și altele. Această aplicație unește
mai multe aspecte care pot fi importante pentru un analist din domeniul securității. Pe
lângă rapoartele pe care le expune în interfață, utilizatorul aplicației poate vizualiza
schema completa a rețelei, ba chiar, poat e opta și pentru eliminarea dispozitivelor care
comunică puțin, în comparație cu altele, caz în care se vor elimina si legăturile lor cu
celelalte dispozitive. De asemenea, există și posibilitatea vizualizării mult mai intuitive a
rapoartelor prin intermed iul diagramelor. Nu în ultimul rând, detectarea pachetelor cu
potențialul de a fi rău intenționate este încă o funcționalitate interesantă, care poate
simplifica extrem de mult munca unui analist de rețea, prin furnizarea directă a
informației către el. Fu ncția de detectare a pachetelor rău intenționate sau anomalice și
funcția de afișare a statisticilor sub formă grafică sunt doua funcționalități care acceptă
încă multă dezvoltare și, în cazul continuării dezvoltării proiectului, acestea se pot
îmbogăți și perfecționa.
Capitolul 6
11
Capitolul 4. Analiză și Fundamentare Teoretică
În acest proiect am abordat o modalitate de analizare și sumarizare a traficului
prezent într -o captură de trafic din rețea. După analiza datelor prezente în captură scopul
este afișarea detaliilor important e într -un mod cât mai prietenos pentru un utilizator care
are nevoie de informații legate de securitate.
4.1. Rețelele de calculatoare
Pentru abordarea acestei soluții am avut nevoie de cunoștințe din mai multe
domenii. Un prim aspect crucial pentru rezolvarea acestui proiect este cunoașterea
elementelor legate de componența și modul de funcționare al rețelelor de calculatoare. Ce
este o rețea de calculatoare?
Sursa [1] explică pe larg necesitatea și modul de apariție al rețelelor de
calculatoare. Societățile a veau un anumit număr de calculatoare, care lucrau independent.
Cu timpul, a apărut nevoia partajării datelor și a componentelor hardware între utilizatori.
Conectarea calculatoarelor între ele, cu ajutorul unor dispozitive auxiliare a dat naștere
rețelelor de calculatoare.
La sursa [2] se găsește următoarea definiție: ”O rețea de calculatoare (engleză:
computer network) leagă între ele o mulțime mai mică sau mai mare de calculatoare,
astfel încât un calculator poate accesa datele, programele și facilitățil e sau resursele unui
alt calculator conectat la aceeași rețea. De obicei este nevoie de restricție/siguranță a
accesului.”
Calculatoarele componente dintr -o rețea trebuie să fie legate între ele. Pentru asta
s-au inventat diferite metode de conectare a di spozitivelor între ele și, încă se continuă
dezvoltarea acestui aspect crucial din rețelele de calculatoare. Legarea dispozitivelor,
după cum spune și numele, se poate face fizic, însă au fost inventate și metode de
conectare a dispozitivelor fără a folosi fire. Cablurile metalice și fibra optică sunt
principalele modalități de legare fizică a dispozitivelor prezente într -o rețea. Tehnologia a
avansat mult, ajungându chiar la cablări submarine cu viteze foarte mari. A doua
categorie de conectare a dispoziti velor este cea fără fir. Acest tip de legătură se poate
realiza cu ajutorul undelor radio (exemplu Bluetooth, Wi -Fi, WiMax), razelor infraroșii
(exemplu IrDA) sau cu ajutorul sateliților.
Cel mai uzual tip de rețea este rețeaua stea, în care există un calc ulator performant
(server), care are sarcina de a transfera datele în interiorul rețelei, dar și în afara ei.
Dispozitivele se pot conecta la rețea cu ajutorul unui router sau switch. Server -ele au o
metodă de identificare unica bazată pe adrese ip.
După d imensiunea rețelelor, acestea se pot clasifica în trei tipuri; LAN, WAN,
MAN și PAN. PAN (Personal Area Network) înseamnă o rețea de întindere foarte mică,
de maxim câțiva metri, compus din aparate interconectabile, portabile de către o persoană
(exemplu t elefon mobil, aparat de navigație etc. ). Rețelele mici de calculatoare, care se
află in aceeași clădire si sunt legate direct intre ele se numesc LAN. Rețelele LAN pot fi
si fără fir ( de exemplu prin unde radio ), iar in acest caz, acestea devin rețele d e tip
WLAN. Dacă o rețea este pe o întindere mai mare, cum ar fi între orașe, pe o țară, pe un
întreg continent, sau chiar pe toată lumea, atunci se numește WAN. Aceste rețele au ajuns
Capitolul 6
12
să nu mai fie așa costisitoare cum erau inițial, deoarece, la ora actua lă, multe rețele de tip
WAN folosesc Internetul ca și mijloc de comunicație. Deoarece internetul este universal
și public, acesta nu este foarte controlabil de către un utilizator, însă din punct de vedere
al prețului este foarte convenabil.
Cea mai dezvo ltată rețea din internet este rețeaua World Wide Web, prescurtată
ca Web sau WWW. Fondată în 1989 la centrul European de cercetare nucleară, se
bazează pe limbajul de marcare HTML ( Hypertext Markup Language ). Se pot accesa cu
ușurință documente scrise in limbajul HTML, care poartă numele de pagini web. Acestea
prezintă suport pentru a vizualiza text, poze, videoclipuri etc.
Majoritatea re țelelor de calculatoare moderne utilizeaz ă protocoale bazate pe
transmisia de pachete. Un pachet este o unitate formata tă de date, care este manipulat ă
într-o rețea bazată pe schimbul de pachete. MTU (Maximum Transmission Limit)
reprezintă limitarea dimensiunii pachetelor în intermediul re țelelor bazate pe pachete la
tehnologiile de legare fizic ă. Dacă un mesaj este mai lu ng de at ât, pachetul este
fragmentat și trimis în acel mod. Odat ă ajunse fragmentele, acestea sunt reasamblate și
vechiul pachet este disponibil în forma lui pur ă. În interiorul pachetelor exist ă două tipuri
de date:
Informatii de Control – Acestea furnize ază informațiile de baz ă care
caracterizeaz ă pachetul. Cu ajutorul acestor informa ții se va ști unde
trebuie trimise datele. Aceste informa ții pot fi de exemplu adresele de
rețea a sursei și a destina ției, coduri de detec ție a erorilor, informa ții de
secve nțe. Informa țiile de control se g ăsesc de obicei în antetele și
subsolurile pachetelor.
Datele utilizatorului (Payload) – Datele propriu zise pe care utilizatorul
intenționează să le trimită prin intermediul pachetului. Aceste date ar fi
nesemnificative f ără ajutorul informa țiilor de control, deoarece, în cazul în
care ar lipsi acele informa ții, ar fi imposibil ă trimiterea pachetului c ătre
destinație.
Cu ajutorul pachetelor, l ățimea de band ă a mediului de transmisii poate fi mai
bună printre utilizatori dec ât dacă se merge pe abordarea re țelei cu întreruperea de
circuit. În cazul în care un utilizator nu trimite pachete, leg ătura poate fi populat ă cu
pachete care vin de la al ți utilizatori, deci, în acest fel, costurile re țelei pot fi împărțite. În
caz că legătura nu este suprasolicitat ă, interferen țele vor fi relativ mici. În unele cazuri
ruta pe care un pachet trebuie s ă meargă nu este disponibil ă chiar în acel moment. În
cazuri de acest gen, pachetul care trebuie trimis se pune în așteptare în interiorul u nei
cozi, iar în momentul în care se elibereaz ă ruta, se va lua primul pachet prezent în coadă
de așteptare.
Topologia re țelelor este de fapt modelul, schema, sau ierarhia organiza țională a
interconect ării gazdelor prezente în rețea, în contrast cu loca țiile lor fizice sau geografice.
In general, diagramele care descriu re țelele sunt aranjate în funcție de topologie.
Topologia re țelei poate afecta tranzi ția, însă siguranța unei re țele este de obicei mai
critică. Din moment ce exist ă multiple tehnologii, cu m ar fi re țelele bus, o singur ă
problemă care duce la un e șec poate cauza c ăderea întregii re țele. Regula general ă a
siguranței într-o rețea este caracterizat ă de numărul de conexiuni de care dispune în
Capitolul 6
13
raport cu num ărul total de dispozitive pe care le g ăzduiește. Cu c ât numărul de leg ături
este mai mare, cu at ât rețeaua este mai sigur ă la căderi, însă, ea devine din ce în ce mai
scumpă de instalat.
Topologiile comune de re țele sunt urm ătoarele:
Topologia Bus (Magistrala) – Toate nodurile prezente în rețea sunt
conectate la un mediu comun. Are viteza mare de transmisie și fiabilitate.
Ethernet -ul original a folosit aceast ă abordare pe nume 10BASE2 și
10BASE5. Aceast ă topologie încă este o op țiune comun ă în cadrul
nivelului leg ătură de date.
Topologia Star (S tea) – Există un nod central la care se conecteaz ă toate
nodurile din re țea. Majoritatea re țelelor de tip Wireless Local Area
Network (WLAN) utilizeaz ă acest model, deoarece fiecare client care
dorește să se conecteze, va face asta direct, la o sta ție cent rală. Un
exemplu de sta ție central ă în topologia star poate fi routerul. În această
topologie se poate ca toate dispozitivele conectate s ă aibă aceleași drepturi
și funcțiuni.
Topologia Ring (Inel) – În acest model fiecare nod este conectat de
vecinul său din dreapta și stânga, deci într-un final se ob ține o structur ă
circulară în care oricare nod poate ajunge la oric âre alt nod prin
traversarea nodurilor în direcția st ânga sau dreapta. Datorit ă vitezei mari
de comunicare pe care o ofer ă, această topologie este des utilizat ă în
cadrul aplica țiilor în timp real. Aceast ă topologie este utilizat ă în FDDI
(Fiber Distribited Data Interface).
Topologia Mesh (Plasa) – În această topologie fiecare nod este direct
conectat la un num ăr arbitrar de vecini, astfel încât să existe mereu minim
o cale de trecere de la un anumit nod prezent în rețea p ână la oricare alt
nod.
Topologia total conectat ă – Fiecare nod prezent în rețea este direct
conectat la toate celelalte noduri.
Topologia copac – În această topologie fiecare n od este așezat ierarhic în
rețea.
Modelul fizic al nodurilor într-o rețea nu trebuie neap ărat să reflecte topologia
rețelei. În cazul utiliz ării FDDI, topologia re țelei este inel, însă, topologia fizic ă este de
obicei stea, deoarece toate conexiunile cu ve cinii pot fi rutate prin intermediul unei loca ții
fizice centrale. Nu este complet nesemnificativ ă nici schema fizic ă, deoarece loca țiile
fizice care con țin echipamente sunt vulnerabile la factori fizici precum arderile,
problemele de încărcare, sau supras olicitarea. În aceste cazuri, loca țiile fizice ale
echipamentelor pot reprezenta puncte de e șec.
Rețelele acoperitoare sunt re țele care sunt construite peste alte re țele. Nodurile
din aceste re țele sunt conectate între ele prin leg ături virtuale sau logice . Fiecare leg ătură
corespunde unei c ăi, care trece prin c âteva legături fizice în interiorul re țelei de sub
aceasta. Topologia unei re țele de suprapunere difer ă de obicei de cea a re țelei pe care o
acoperă. În general, re țelele peer -to-peer sunt re țele de suprapunere. Acestea sunt
organizate ca noduri într-un sistem virtual de leg ături, care se afl ă în partea de top a
Capitolul 6
14
internetului. Re țelele de acoperire exist ă încă de c ând a fost inventat ă rețealistica, atunci
când sistemele de calcul erau conectate prin ca bluri de telefonie, folosind modem -uri,
înainte ca orice re țea de date s ă existe. Cel mai uimitor exemplu de re țea suprapus ă este
însuși internetul. Acesta a fost construit ă inițial peste liniile de telefonie. Rutarea și
rezoluția adreselor sunt func țional itățile care permit conectarea unei re țele IP suprapuse
peste o alt ă rețea deja existent ă. Un alt exemplu de re țea suprapus ă este un hash table
distribuit prin maparea cheilor pe noduri în rețea. În acest caz, re țeaua de jos este o re țea
IP, iar cea suprap usă este o tabel ă indexată prin chei. Re țelele suprapuse au fost luate în
calcul chiar și pentru îmbunătățirea rutării pe internet, în ideea ob ținerii transmiterii mai
calitative a fi șierelor media. În contextul propunerilor IntServ, DiffServ și IP Multica st nu
a fost acceptat ă schimbarea la nivel înalt, deoarece era nevoie de modificarea tuturor
routerelor din re țea. Pe de alt ă parte, rețelele suprapuse pot fi integrate incremental cu
gazde terminale care ruleaz ă un software cu protocoale de suprapunere, f ără a fi nevoie
de cooperare din partea furnizorului de servicii de internet. Re țeaua suprapus ă nu are
niciun control asupra cum sunt rutate pachetele în rețeaua de jos, între două noduri. În
schimb, aceasta poate controla secven ța nodurilor suprapuse prin care trece un mesaj
înainte să ajungă la destina ție.
Nodurile prezente într -o reț ea de calculatoare pot fi mai multe tipuri de
dispozitive. Fiecare este capabil de a efectua diverse acțiuni, deoarece conț ine mai mu lte
componente. Nodurile din reț ea pot f i: interfe țe de reț ea, relee și hub -uri, punț i,
comutatoare, routere, modemuri sau firewall -uri.
Capitolul 6
15
4.2. Capturi de trafic din reț ea
Având în vedere că este nevoie de analizarea unor capturi de trafic din rețea, era
nevoie ca datele de intrare să coincidă cu ace st criteriu. La sursa [3] găsim următoarele
informații: captura de trafic din rețea este un termen folosit în rețealistică pentru a
intercepta pachete care trec printr -o anumită rețea. Un pachet, odată capturat este salvat
temporar pentru a putea fi analiz at ulterior. Inspecția pachetelor este utilă din mai multe
puncte de vedere, în principal în diagnosticarea problemelor din rețea, sau pentru
verificarea respectării securității impuse la nivel de rețea. Atacatorii pot folosi capturarea
de pachete pentru a intercepta și fura datele care sunt transmise la nivelul rețelei de
calculatoare.
Există multiple tehnici pentru capturarea de pachete. Principala tehnică este
filtrarea pachetelor, unde se stabilesc diverse filtre, care se aplică asupra nodurilor sau
dispozitivelor din rețea de la care se capturează pachetele. De obicei, filtrele sunt niște
structuri condiționale, pe urma cărora se decide dacă se capturează sau nu pachetul. De
asemenea, în loc să se filtreze doar o porțiune din pachet, pot fi capturate ș i pachetele
întregi. Un pachet complet este compus din două părți. În tehnologia informației și a
comunicațiilor, încărcătura (payload) este partea propriu zisă de date, adică mesajul în
sine, care trebuie să fie trimis. Aceasta reprezintă prima componentă a pachetului
complet, iar a doua parte o reprezintă antelele (headers), care oferă practic identitatea
încărcăturii, cum ar fi sursa și destinația pachetului.
Există diferite metode de aplicare și utilizare a capturării pachetelor. În securitate
se pot identifica unele probleme prin aflarea locului intruziunii. Analiza și monitorizarea
pachetelor ajută la determinarea punctelor unde au loc scurgeri de date. Se poate depana
capturarea de date în ideea detectării evenimentelor nedorite într -o rețea și rezo lvarea
ulterioară a lor. În cazul pierderii sau furtului de date, acestea se pot recupera cu ușurință
cu ajutorul capturilor de pachete. În cazul detectării unor amenințări, viruși în interiorul
calculatoarelor, administratorul de rețea poate determina su rsa problemei și opri
răspândirea/reinfectarea prin blocarea unor segmente din pachet.
Fișierele cu extensia ”.pcap” sunt descrise pe scurt la sursa [4]. Acestea sunt
asociate cu Wireshark, un program utilizat pentru analizarea rețelelor de calculatoare.
Fișierele pcap sunt fișiere de date, create cu ajutorul programului de mai sus și conțin
datele pachetelor din rețea. În concluzie, am folosit fișiere de tip ”pcap” pentru datele de
intrate, din moment ce acestea se potrivesc exact cu tipul de date de intr are de care am
nevoie.
Capitolul 6
16
4.3. Wireshark
Odată ce traficul este salvat într -un fișier de tip pcap, este nevoie și de un program
pentru analiza acestuia. Există o multitudine de soluții disponibile, fiecare cu avantaje și
dezavantajele proprii. La sursa [5] găsi m că Wireshark este o unealtă foarte populară
open -source, care este capabilă să recunoască și să decodeze sute de protocoale. Pe lângă
acestea, dispune și de câteva funcții mai particulare, utile în analiza și inspecția avansată
a pachetelor, cum ar fi fi ltrarea, reconstruirea conexiunilor TCP sau a apelurilor,
decriptarea traficului, sau extragerea datelor. De asemenea, există o comunitate wasta pe
internet care folosește Wireshark, deci se găsesc și multe cursuri online, manuale și seturi
de date. În ciu da acestor beneficii, este necesară o cunoaștere avansată și în detaliu a
protocoalelor TCP/IP, principiilor în rețele și este nevoie și de câteva calități analitice din
partea utilizatorilor programului.
Figura 4.1 [6] Exemplu de captur ă de trafic din reț ea in Wireshark
Capitolul 6
17
4.4. TShark
După ce scrie la sursa [7], la fel ca și Wireshark, TShark este o unealtă de analiză
la nivel de rețea. Printre altele, facilitățile de bază sunt posibilitatea de a captura datele
dintr -o rețea, dar și de a citi pachetele dintr -o captură deja salvată. Se aseamănă cu
Wireshark, dar și cu tcpdump, iar în cazul rulării fără argumente, va funcționa exact ca și
a doua unealtă menționată, capturând traficul din prima int erfață de rețea disponibilă, și
afișând un sumar în metoda standard pentru output .
4.5. PyShark
Acum este timpul să trag concluziile. Dacă Wireshark este un tool cu interfața de
utilizator și destul de prietenos, TShark nu mai este așa, deoarece se poate folo si prin
comenzi. Cum, pentru ușurință, Python a tins să înlocuiască Bash, așa și PyShark are de
gând să ușureze utilizarea TShark. PyShark este un strat învelitor peste TShark, astfel
încât îi simplifica mult modul de utilizare, permițându -i integrarea și în Python. Dintre
toate modulele care se ocupă cu parsare de pachete, acesta este printre cele mai bune,
deoarece nu parsează la propriu niciun pachet, ci, după cum am spus și mai sus, pur și
simplu folosește TShark pentru a exporta fișiere XML. Modulul pe rmite utilizarea tuturor
facilitaților Wireshark, de la înregistrarea traficului, până la analizarea lui. Principiul de
funcționare al PyShark este pe baza creării unui obiect de tip ”Capture”, unde acesta
poate fi în timp real, local, sau de la distanță, sau un fișier de tipul capturii de rețea. Se
face citirea din sursa datelor de intrare, iar apoi se poate itera printre pachetele rezultate.
De asemenea, se pot defini filtre pe pachete, astfel încât să iasă doar unele dintre ele din
etapa de prelucrare, s au să fie salvate doar o parte dintre ele în cazul analizei traficului în
timp real.
Figura 4.2 [8] Exemplu de ca ptură de trafic din reț ea cu TShark
Capitolul 6
18
4.6. Python
Cartea [11] descrie destul de bine Python, spunând că este un limbaj de
programare interpretat, de nivel superior orientat pe obiecte și are o semantică dinamică.
În 1991 Guido van Rossum a inventat acest limbaj, primind numele după grupul
umoristic “Monty Python” din Marea Britanie. Este foarte ușor de utilizat în dezvoltarea
rapidă a diferitelor aplicații datorită structurilor de date de calitate înaltă, scrierea
dinamică și legarea acestora. De asemenea, este foarte flexibil, de aceea permite
obținerea multor rezultate, fie ele mici sau mari. Python poate fi utilizat pentru scrierea
programelor simple, însă este capabil și de crearea operațiilor complexe, utilizate de
companiile de la nivel global. Acest limbaj poate fi combinat și cu limbaje de scripting.
Codul scris în Python poate fi întreținut cu ușurință, datorită lizibilității codului. Există
suport și pentru tehnici de modularizare a proiectelor, astfel este facilitată reutilizarea
codului scris. Oferă un nivel ridicat de productivitate și, iar ciclul de scriere -testare –
depanare este cât se poate de eficient și rapid. La ora actuală, Pyton este foarte răspândit
în lume, reușind să fie aplicat cu succes în rân dul multor domenii, cum ar fi matematica,
dezvoltarea jocurilor și a aplicațiilor desktop, analiza complexă a datelor, dezvoltarea
internetului etc.
De asemenea, Python este un pachet software gratuit, pe care îl suportă
majoritatea sistemelor de operare p rincipale, cum ar fi Windows, Linux, Mac. Acest
limbaj de programare vine în două versiuni (2 și 3), respectiv toate subversiunile lor.
Diferența dintre acestea este minimală, adică mici diferențe sintactice, motiv pentru care
se poate realiza cu ușurință trecerea între versiuni, fără mari bătăi de cap. Versiunea
recomandată este, totuși, cea mai recentă, adică 3, deoarece, începând din 2020, versiunea
2 nu mai primește suport și actualizări. În general cele mai noi versiuni sunt si cele mai
bune, având în vedere că au la mijloc muncă în plus pentru a fi dezvoltate, ceea ce
include funcții suplimentare, corecții de erori si bug -uri etc.
Pe pagina web [12] se găsesc câțiva statistici interesante despre acest limbaj de
programare. De doi ani la rând Python est e în top cele mai populare limbaje de
programare din lume, având o creștere foarte mare, în unele rapoarte ajungând chiar pe
locul unu ca cel mai dorit limbaj de programare. Există extrem de multe locuri de muncă,
datorită faptului că Python este un limbaj de programare universal, fiind capabil să se
descurce cu foarte multe lucruri. Aceste locuri de muncă sunt sș foarte bine plătite. Pe
platforma Goro (o platforma care se ocupa cu analitizarea tehnologiei și salariilor,
limbajul de programare Python este p e locul doi în Statele Unite ale Americii din punct
de vedere al salariilor oferite programatorilor. Salariul mediu pe care îl primește un
expert Python este 103.492 dolari pe an, iar în altă ordine de idei, lunar sunt publicate în
medie 7.732 anunțuri pri n care se dorește găsirea unor experți Python. Influențele au
ajuns și în România, unde din ce în ce mai multe firme de programare caută persoane
care să cunoască cât mai bine posibil limbajul de programare Python. În comparație cu
alte limbaje de programa re, Python se descurcă foarte bine ca și performante. Totuși, de
obicei, alegerea limbajului de programare se face de către conducerea firmei, având in
vedere unele limitări care sunt impuse de către costuri, disponibilitate, pregătirea echipei
sau investi țiile. Python, comparativ cu alte limbaje de programare se descurcă în felul
următor:
Capitolul 6
19
4.6.1. Python vs Java
Programele care sunt scrise în Python sunt în general mai lente decât acelea care
sunt scrise în Java, în schimb, timpul necesar dezvoltării codului respec tiv este mult mai
redus în cazul limbajului de programare Python. Pentru a scrie același cod în Python
versus Java, timpul de dezvoltare este aproximativ de la trei până la cinci ori mai redus în
favoarea lui Python. Sunt mai multe avantaje datorită cărora Python câștigă teren din
punct de vedere al vitezei de dezvoltare a unui proiect, printre care se enumeră pe prima
poziție tipurile de date încorporate de nivelul superior și scrierea dinamică. Programatorii
Python nu trebuie să piardă timpul selectând ti purile de date ale variabilelor din programe
sau ale argumentelor din funcții. În același timp, Python dispune și de liste și dicționarele
polimorfice și suport sintactic puternic. Toate acestea fiind gata incluse în limbaj. Chiar
dacă aceste două limbaje de programare sunt într -un fel rivale, ele pot alcătui împreună
un duo strălucit în ideea implementării unui proiect mai complex. Componentele pot fi
dezvoltate în Java, iar legarea lor se poate face cu ușurința în Python.
4.6.2. Python vs JavaScript
În Python și JavaScript sunt echivalente subseturile care sunt bazate pe obiecte.
Încă un aspect comun este acela că ambele limbaje susțin o metodă de programare cu
funcții și variabile simpliste, fără a fi nevoie de definirea unor clase. Totuși, pentru
proiecte mai m ari se poate că Python să fie mai potrivit, deoarece clasele și reutilizarea
codului sunt deja importante în această situație, iar Python este puțin peste JavaScript din
acest punct de vedere.
4.6.3. Python vs Perl
Ca și fundal și caracteristici, aceste două limb aje sunt destul de asemănătoare, fără
a fi mari diferențe între ele. Pe de altă parte, filosofia lor este total diferită. Cât timp
Python se axează pe suportul pentru metodologiile comune în programare și tinde să ajute
programatorii să dezvolte un cod cât se poate de lizibil, datorită oferirii notațiilor
elegante, dar nu exagerate, Perl se axează pe suportul oferit taskurilor destinate
aplicațiilor obișnuite, cum ar fi acelea cu expresii regulate care trebuie să fie încorporate,
scanarea de fișiere și meto de de generare de rapoarte. În concluzie, Python este mai ușor
de utilizat decât Perl, motiv pentru care am ales să îl folosesc în proiect.
4.6.4. Python vs Tcl
Tcl se poate folosi ca și limbaj de programare pentru dezvoltarea de aplicații, dar
nu este exclusă ni ci utilizarea lui ca și limbaj de programare independent. Python poate fi
folosit în același mod, deci din acest punct de vedere cele două se aseamănă. Tcl își
depozitează datele sub forma unor șiruri, iar acest aspect poate duce la o execuție mai
lentă a codului și o structură mai slabă a acestuia, raportat la Python. În același timp, Tcl
nu este prea fezabil cu dezvoltarea unor proiecte mari, deoarece nu are un set complet de
date, ci doar componentele din limbajul C++, ceea ce duce la un cod mai complica t, nu la
fel de curat cum s -ar scrie în Python. În concluzie, în Python ar fi mai ușoară dezvoltarea
unei aplicații decât în Tcl.
Capitolul 6
20
4.7. Qt și Pyside2
În cartea [10] este prezentat Qt ca fiind un framework pentru dezvoltarea
aplicațiilor desktop, mobile si embe dded. Platformele suportate sunt destul de multe,
printre care putem găsi Linux, OS X, Windows, Android, Blackberry, iOS și multe altele.
Fiind un framework, nu este un limbaj de programare, ci are nevoie de un limbaj de
programare cu ajutorul căruia să fu ncționeze. Qt este scris în C++, însă a fost adaptat la
mai multe limbaje, cum ar fi și Python. Preprocesorul este MOC (Meta Object Compiler)
și se folosește la extinderea limbajului C++ cu alte caracteristici, precum semnale și
sloturi. Înainte de compila re, MOC analizează fișierul C++ extins cu Qt și unde este
nevoie auto -generează codul necesar în C++. Compilarea se poate face cu orice
compilator standard pentru C++, cum ar fi GCC, MinGW și altele. Dezvoltarea Qt a
început în 1990 de către doi programato ri norvegieni pe nume Eirik Chambe -Eng și
Haavard Nord.
La ora actuală, Qt este dezvoltat în continuare de că tre ”The Qt Company ”, o
companie publică înregistrată și de că tre ”Qt Project”, care este un proiect de tip open –
source. Qt Project implică mai mul ți dezvoltatori software ind ividuali și cateva
organizații care lucrează împreună î n scopul de a face Qt m ai avansat. Qt este disponibil
și pe bază de licență de le The Qt Company, dar ș i pe b aza de proiect open -source de
către Qt Project.
Acest framework vine cu o serie de avantaje, printre care se enumeră viteza și
încrederea în dezvoltarea interfețelor. De asemenea, Qt este cel mai simplu framework
din această categorie. Qt este cross -platform, adică codul scris pe Linux este compatibil și
cu Windows sau Mac OS X, iar portarea lui nu ar trebui sa reprezinte problemă.
Utilizarea mai multor librării și framework -uri în dezvoltarea unei interfețe poate cauza
instabilitate și complicații, însă Qt este capabil să facă multe lucruri, deși este doar un
framework .
PySide2 este un wrapper peste unealta de proiectare grafică Qt, deci are rolul de a
face legătura între acestea două. De asemenea, PySide2 este dezvoltat de către The Qt
Company prin proiectul Qt for Python și are ca scop portarea de la Qt4 la Qt5 pentr u
PySide. Este o alternativă pentru pachetul de librării Tkinter. Ca și Qt original, PySide2
este de asemenea o soluție gratuită. În ultimele versiuni se folosește un generator de
legături pe nume Shiboken, pentru a reduce dimensiunile fișierelor binare. P ySide a
început în august 2009, fiind lansat de către Nokia. Sunt suportate multe sisteme de
operare, precum Linux, OS X, Windows, Android etc.
Capitolul 6
21
4.8. Porturile dispozitivelor din reț ea
Pe pagina web [14] porturile sunt descrise ca fiind niște terminale de comu nicații
în domeniul rețealisticii. Pe de altă parte, în domeniul sistemelor de operare, porturile
sunt caracterizate ca niște construcții logice, capabile să identifice unele procese anume
sau sunt tip de serviciu de pe rețea. Porturile sunt identificate p entru fiecare protocol și
combinație de adresa printr -un șir de 16 biți fără semn. Acești 16 biți se numesc și
numărul portului. Principalele protocoale de transmisie de date, adică TCP (Transmission
Control Protocol) și UDP (User Datagram Protocol) utiliz ează numarul portului. De
asemenea, acest număr este întotdeauna asociat cu o adresă IP care aparține gazdei și un
protocol prin care se dorește să se realizeze comunicarea. Unele numere de porturi sunt
deja rezervate pentru diferite servicii, astfel încât să se faciliteze comunicarea cu o
anumită aplicație care folosește protocoalele des întâlnite. Primele 1024 numere sunt
rezervate pentru aceste servicii populare și intră la categoria numerelor porturilor bine
cunoscute. În schimb, porturile cu un număr m ai mare decât 1024 se numesc porturi
efemere și sunt permise pentru uz general în diferite aplicații. În momentul utilizării unui
serviciu, are loc o etapă de multiplexare a porturilor, astfel încât, în funcție de portul pe
care se face comunicarea, se poa te redirecționa utilizatorul către serviciul aferent, chiar
dacă toate serviciile dintre care se alege cel dorit sunt pe aceeași adresă de rețea. Pe
modelul aplicației pentru latura utilizatorilor, pot rula multiple sesiuni de comunicații
pentru același se rviciu.
După cum am descris mai sus numărul portului, acesta este un șir de 16 biți, care
formează un întreg fără semn, deci limita lui de valori se întinde de la 0 până la 65535. În
cazul valorii 0 pentru numărul portului, pentru protocolul TCP valoarea e ste rezervată,
însă, pentru protocolul UDP valoarea 0 înseamnă că nu este specificat portul, deoarece, în
acest caz, este opțională specificarea lui. Canalele de intrare sau ieșire sunt asociate cu un
proces cu autorul unui socket pe internet. Socket -ul es te un tip de descriptor pentru
fișiere, care are în compoziție un protocol de transport, o adresă IP și un număr de port.
Aceasta este metoda de legare, deci, în concluzie, procesul va avea posibilitatea de
transmisie de date prin rețea. Componenta softwa re a sistemului de operare care se ocupa
de rețea are atribuția de a trimite către rețea datele de pe toate porturile aplicațiilor și,
când sosesc răspunsuri la pachetele trimise, să le distribuie în funcție de IP și număr de
port procesului căruia i -au fo st trimise. În cazul protocolului TCP este permisă cuplarea
unui singur proces pe combinația unei adrese IP și un port specific. Uneori apar conflicte
chiar din această cauza, deoarece mai multe procese încearcă sa se conecteze la portul cu
același număr, pe aceeași adresă IP, folosind același protocol. De obicei, aplicațiile care
implementează servicii comune, utilizează porturi cu valori bine cunoscute, pentru a avea
facilitatea primirii cererilor de servicii de la clienți. Practic, acest proces se numeșt e
”ascultare” și implică primirea pachetelor pe porturi bine cunoscute, ca pe urmă să se
poată stabili o conexiune unu la unu cu clientul, utilizând același port local. Între timp, se
mai pot conecta și alți clienți la portul pe care asculta procesul, dar nu vor interveni
conflicte totuși. Asta se întâmplă deoarece conexiunile TCP au structura unei tuple cu 4
elemente: adresa locală, portul local, adresa destinației și portul destinației. Serviciile de
bază din rețea de obicei, cum ar fi de exemplu WWW (Wo rld Wide Web), folosesc
porturi bine cunoscute. Deseori, pentru conectarea unei aplicații la porturi bine cunoscute
este nevoie de privilegii speciale, deoarece în majoritatea timpului, acestea sunt foarte
Capitolul 6
22
importante pentru buna funcționare a internetului, iar orice modificare ar avea loc la
modul lor de funcționare, ar putea avea rezultate critice asupra rețelei. În general clienții
sunt redirectați către niște porturi cu valoare mare, alocate pentru un timp relativ scurt.
Acestea se numesc porturi efemere , după cum le -am descris și mai sus pe scurt.
Dacă porturile bine cunoscute sunt între 0 și 1023, există printre ele unele porturi
care sunt foarte imp ortante ș i folosite uzual. Printre cele m ai importante porturi se
enumeră urmatoarele:
20 – Se utilizează pentru protocolu l FTP (File Transfer Protocol) î n ideea
transmisiei de date.
21 – Se utilizează tot î n cadrul protocolului FTP (File Transfer Protocol ),
dar în ideea controlului comenzilor.
22 – Se utilizează î n cadrul protocolului SSH (Secure She ll) pent ru
conectarea securizată a unui calculator l a un alt calculator printr -o rețea
nesecurizată .
23 – Se utilizează pentru protocolul Telnet î n ideea deschiderii unui p roces
de tipul liniei de comandă sau terminal pe un calculator aflat la distanță .
25 – Se ut ilizează î n cadrul protocolului SMTP (Simp le Mail Transfer
Protocol) de că tre majoritatea sistemelor pentru a transfera un mesaj de tip
mail de la un utilizator la altul.
53 – Se utilizează pentru protoc olul DNS (Domain Name Servers) în
procesul translatării numelui de domeniu în adresă IP.
80 – Este utilizat de că tre protocolul HTTP (Hypertext Transfer Protocol)
în procesul transferă rii datelor prin web.
110 – Se utilizează pentru protocolul P OP3 (Post O ffice Protocol) de către
clienții unei mesagerii de tip mail în ideea obț inerii mailurilor de la server.
119 – Se utilizează in cadrul NNTP (N etwork News Transfer Protocol) î n
ideea transportului articol elor între serverele de știri și pentru citirea ș i
postarea articolelor.
123 – Se utilizează pentru protocolul NTP (Network Time Protocol) în
ideea sincronizării ceasurilor prezente în dispozitive în funcție de o
referinț a de timp.
143 – Este folosit î n cadrul protocolului IMAP (Internet Message Access
Proto col) pentru accesarea mailurilor d e pe un server aflat la distanță de
către un client local.
443 – Se utilizează pentru protocolul HTTPS (Hyper text Transfer Protocol
Secure) î n ideea transmiretii mesajelor HTTP securizat, cu ajutorul
TLS/SSL.
Capitolul 6
23
4.9. Protocoalele de comunicare in reț ea
Pe pagina web [15] este o descriere a protocoalelor din rețea. Un protocol este un
set de reguli care orchestrează comunicațiile dintre dispozitive într -o rețea. Regulile
includ și niște ghiduri pentru următoarele caracteristici din tr-o rețea: metoda de acces,
topologii fizice permise, tipuri de cablare, viteza de transfer a datelor. Exemplul primar
pentru modelul de comunicare între calculatoare, utilizând protocoale pe diferite straturi
este OSI (Open Systems Interconnection). OSI este un model de referință care este în
folosință din anul 1983 și conține un set de nivele standard și protocoale pentru
comunicarea între mai multe calculatoare plasate oriunde în lume. Chiar dacă nu este
adoptat la nivel internațional, mare parte din OS I este considerat standard și este utilizat
în masă. Nivelele sunt împărțite după împărțirea sarcinilor într -o rețea. Rețelele sunt
divizate într -o ierarhie de protocoale, deci sarcina comunicării prin rețea este spartă în
mai multe straturi. Un protocol e ste un set de reguli pentru facilitarea comunicării în
interiorul unui nivel. Un serviciu este ceea ce un nivel îi trimite nivelului de asupra lui
prin intermediul unei interfețe. Protocoalele de la un anumit nivel nu sunt conștiente de
problemele de la al t nivel.
4.9.1. Modelul OSI
Modelul de referin ță OSI organizeaz ă o rețea în șapte nivele. Acestea se mai
numesc și stivă de protocoale. Aceste nivele au rolul de a defini cum trebuie
componentele hardware și software s ă transmită datele în interiorul re țelei. Atu nci c ând
între stivele de protocoale a dou ă dispozitive diferite exist ă compatibilitate, apare
interoperabilitatea, practice scopul definirii unui model standard de protocoale. Fiecare
nivel este capabil de a comunica cu nivelul corespunz ător din component a altui
dispozitiv.
Nivelele componente modelului de referin ță OSI, dup ă cum ziceam și mai sus,
sunt șapte la num ăr și sunt urm ătoarele:
Physical Layer (Nivelul Fizic) – Acest nivel are de a face, dup ă cum îi
spune și numele, cu componentele fizice, adic ă hardware. În această
categorie intr ă elemente precum voltajele, rata de bi ți, frecven țele etc. În
concluzie, nu este vorba propriu zis de componentele fizice din mediu,
cum ar fi firele metalice și de fibra optic ă. Aceste componente nu au un
nivel propriu zis, deoarece sunt sub componentele nivelului fizic. Regulile
nivelului pot fi înregistrate în cardul interfe ței de rețea a calculatorului
(NIC – Network Interface Card), adic ă locul unde se face conexiunea cu
firele. În concluzie, cardurile interfe ței de rețea, rețelele și hub -urile
operează primar în nivelul fizic al modelului.
Data -Link Layer (Nivelul Leg ătură de Date) – În interiorul acestui nivel
are loc comunicarea prin cadre. Cadrele sunt buc ăți cu dimensiune
limitată care conțin date. Nivelul Leg ătură de Date are posibilitatea de a
efectua verific ări împotriva erorilor și de a controla rata transmisiei
informațiilor. În general, acest nivel poate fi asociat cu un cablu care are
două capete, un emi țător și un receptor. O excep ție are loc atunci c ând
Capitolul 6
24
este folosit și un subnivel pe nume MAS (Medium Access Sublayer). Este
nevoie de acest subnivel în cazurile în care cadrele au coliziuni din cauza
că mai multe entit ăți încearcă să acceseze mediul în același timp.
Subnivelul MAS orchestreaz ă coliziunile pen tru a cerea c âteva cadre noi,
pe care restul nivelului Leg ătură de Date le poate folosi. La acest nivel se
întâlnesc switch -urile și punțile.
Network Layer (Nivelul Re țea) – Nivelul Re țea are de a face cu adresele,
iar rolul lui este de a da mai departe me sajele sau s ă ruteze pachetele. Din
moment ce nu toate dispozitivele sunt conectate direct unul la cel ălalt, în
cazul unor pachete este nevoie de c âteva hop -uri p ână să ajungă de la
sursă la destina ție. Găsirea unei rute ideale într-o rețea schimb ătoare și de
dimensiuni mari este treaba nivelului re țea. IP este un protocol la nivelul
rețelei, iar adresele IP sunt ceea ce folose ște IP pentru a determina direc ția
încotro trebuie s ă fie trimis un pachet. Adresarea logic ă la nivelul re țelei și
rutarea au loc în nivelul re țea, iar dispozitivele prezente în Nivelul Re țea
sunt routerele și switch -urile de nivelul al treilea.
Transport Layer (Nivelul Transport) – Nivelul Transport ofer ă transfer de
date de încredere și transparent între dispozitivele prezente într-o retea.
Acesta este ultimul nivel la care exist ă posibilitatea unei inspec ții de la un
capăt la altul complete a comunic ării. Nivelul de transport are rolul de a
sparge datele în pachete pentru nivelul re țea. De asemenea, are obliga ția și
de a se asigura că pachetele sunt reasamblate în ordinea corect ă, mai apoi.
Probabil cea mai critic ă utilitate în această ierarhie o reprezint ă
interacțiunea dintre metoda de inspec ție de la un cap ăt la celălalt, prezent
în acest nivel și metoda de inspec ție mașină – mașină, prezent în nivelul
rețea. TCP este un protocol de transport. TCP și IP sunt componente ale
modelului TCP/IP, nu OSI, însă despre asta voi scrie în ceea ce urmeaz ă
mai jos. Modelul TCP/IP are succes datorit ă acestor dou ă protocoale, dup ă
care este și denumit, în ciuda faptului c ă alte nivele sunt mai slabe dec ât
cele din modelul OSI. Protocoalele TCP/IP și IPX/SPX sunt cele dou ă
protocoale care sunt active în nivelul transport.
Session Layer (Nivelul Sesiune) – Nivelul Sesiune furnizeaz ă conexiuni
între aplicații. Este un nivel nu prea important, iar rolul lui poate fi
implementat direct în aplicații. Unele sisteme de operare pentru re țele,
cum ar fi WindowsNT, Novell, utilizeaz ă acest nivel în alte scopuri, dec ât
cele pe care le are.
Presentation Layer ( Nivelul Prezentare) – Nivelul Prezentare este și el un
nivel care deseori este evitat. Rolul lui este de a traduce informa țiile
trimise între aplica ții, folosind compresii și criptări. De exemplu, dac ă
datele de la un spreadsheep trebuie convertite la form a datelor de care are
nevoie o baz ă de date, se poate ocupa nivelul de prezentare de aceast ă
operație.
Application Layer (Nivelul Aplica ție) – Nivelul Aplica ție conține servicii
de comunicare care include transferul de fi șiere și lucrul cu mesaje, cum ar
Capitolul 6
25
fi Telnet, FTP și email. Poate fi privit ca o interfa ță cu utilizatorul, sau cu
aplicațiile. Reprezint ă în principal o interfa ța de lucru în care utilizatorul
este actorul și are rolul de a gestiona comunica ția între aplica ții. Nu
trebuie să fie confundat c u o aplica ție stand alone, ci este doar o interfa ță
între componentele dispozitivului și aplicații.
4.9.2. Modelul TCP/IP
Suita de protocoale în internet este unic ă, alcătuită din protocoale comune. Aceste
protocoale nu apar țin de nicio companie, deci oricine est e liber să le utilizeze gratuit.
Dacă e să comparăm cele dou ă modele, se poate observa c ă modelul internet nu acoper ă
în totalitate cele dou ă nivele ale modelului OSI. În concluzie, se poate observa c ă modelul
TCP/IP este independent de hardware. Din momen t ce modelul TCP/IP nu dispune de
protocoale de nivel mai jos, voi începe cu protocoalele de mijloc.
Protocoalele de nivel de mijloc
o Nivelele de re țea și transport din modelul OSI au rolul de a
transporta pachetele în interiorul internetului. În TCP/IP și în alte
protocoale de internet se folosesc trei tipuri de adrese pentru
adresarea în rețea.
o Adrese fizice sau hardware, utilizate în nivelul leg ătură de
date și nivelul fizic.
o Adresele IP, care sunt ID -uri pentru nodurile logice. Aceste
adrese sunt unice, asignate de c ătre un administrator, în
concordan ță cu niște reguli.
o Nume de noduri logice, care pot fi asignate de c ătre un
administrator.
o IP (Internet Protocol) func ționează la nivelul re țea și se ocupă de
adresări, selecția rutelor, comutarea pachetelor și controlul erorilor
pentru comunicare.
o TCP (Transmission Control Protocol) este protocolul principal de
transport de date pe internet. De asemenea, este capabil și să ofere
servicii de adresare la nivelul re țea.
o DNS (Domain Name System) este un sistem d istribuit de baze de
date care func ționează la nivelul transport. Are ca scop oferirea
mapărilor nume – adresă pentru clien ții aplicației. Serverele DNS
mențin baze de date care consist ă în structuri ierarhice de nume
pentru gama larga de domenii, în scopu l de a utiliza nume logice
pentru identificarea dispozitivelor.
Protocoalele de nivel înalt
o FTP (File Transfer Protocol) este utilizat pentru transferul de
fișiere între nodurile din internet. De asemenea, permite
utilizatorilor s ă inițieze procese pe un sistem gazd ă aflat la
distanță. Acesta func ționează în cadrul primelor trei nivele din
modelul OSI. În primul r ând, în cadrul nivelului sesiune, FTP
furnizează administrarea sesiunii. În cadrul nivelului prezentare,
Capitolul 6
26
FTP se ocup ă cu transla ția, utiliz ând o metodă de transla ție
independent de ma șină. Nu în ultimul r ând, în cadrul nivelului
aplicație, FTP administreaz ă servicii în rețea, cum ar fi serviciile
pentru fișiere.
o Telnet este utilizat pentru emularea terminalelor la distant ă. Acesta
permite utiliza torilor accesarea aplica țiilor de pe sistemul gazdei
prin emularea unui terminal de pe sistemul gazdei. Telnet are
posibilitatea de oferire a conectivit ății chiar și daca cele dou ă
dispoz itive au sisteme de operare diferite. În cadrul nivelului
sesiune tel net oferă control asupra dialogului, în cadrul nivelului
prezentare telnet ofer ă translație cu ajutorul ordon ării biților și în
funcție de codurile caracterelor, iar în cadrul nivelului aplica ție
telnet ofer ă suport pentru opera țiile de la distanta asupra unui
dispozitiv.
o SMPT (Simple Mail Transfer Protocol) este un protocol utilizat
pentru rutarea mesajelor de tip email. Func ționează în cadrul
nivelului aplica ție și are rolul oferirii serviciului de mesagerie
email .
4.9.3. Protocoale diverse
Printre cele mai pop ulare protocoale diverse se g ăsesc următoarele:
SLIP (Serial Line Internet Protocol) – este un protocol care se
administreaz ă conexiunii dial -up către internet. Func ționează exclusiv în
cadrul nivelului fizic al modelului OSI. Este, totu și, un protocol vec hi, dar
a fost îmbunătățit și noua variant ă al lui este PPP.
PPP (Point -to-Point Protocol) este un protocol în mare parte cu acelea și
caracteristici ca și SLIP. Acesta se ocup ă cu furnizarea conexiunilor dial –
up către internet. Opereaz ă în cadrul nivelului fizic și legătura de date al
modelului OSI. De asemenea, ofer ă și adresare fizic ă pentru dispozitive și
controlul erorilor. Este varianta îmbunătățită a protocolului men ționat mai
sus, SLIP.
ISDN (Integrated Services Digital Network) este un set de standa rde care
au ca scop furnizarea transmisiilor de date, voce și video prin intermediul
liniilor digitale de telefonie. ISDN opereaz ă în cadrul nivelului fizic,
legătură de date, re țea și transport, toate din cadrul modelului OSI.
Capitolul 6
27
4.10. Adresele IP
Articolul [16] descrie ce sunt și cum au arhitectura adresele IP. Conceptul de adres ă
IP semnific ă un număr asociat cu dispozitivul utilizatorului pentru a putea fi identificat în
cardul rețelei. Numele ”adresă IP” se împarte în două părți. Termenul de ”adresă”, după
cum am scris și mai sus, se refer ă la un num ăr unic prin care dispozitivul se poate lega la
toată activitatea de pe internet. Adresa este asem ănătoare ca și cu cea a expeditorului de
pe o scrisoare care se trimite unei persoane, at ât că trimiterea datelor pri n internet se
întâmplă în câteva milisecunde. Termenul ”IP” provine de la Internet Protocol. În zilele
de astăzi, oamenii utilizeaz ă din ce în ce mai mult facilit ățile oferite de internet, fiind
conectați când cu un telefon, c ând cu un calculator, c ând cu un laptop sau alte dispozitive
care au aceast ă funcție. Chiar și fără ca multă lume să știe, de fiecare dat ă când se
conecteaz ă la internet, primesc o adres ă IP care se asociaz ă cu dispozitivul lor.
Dispozitivele de pe care se acceseaz ă internetul trebuie să fie legate de internet. În
cazul trimiterii unui request prin accesarea mail -urilor, vizualizarea unui magazin online
sau conectare la o aplica ție de chat, va fi nevoie s ă se primeasc ă un răspuns, care, trebuie
să revină la dispozitiv. Acest lucru este posibil doar dac ă se marcheaz ă într-un fel
dispozitivul. Adresa IP are un rol crucial în acest proces. Exist ă două metode de
conectare la internet:
Conectarea la o re țea care are acces la internet
Conectarea la o re țea care ofer ă utilizatorului acces la i nternet
Rețeaua men ționata mai sus în multe cazuri este furnizorul serviciilor de internet
(ISP) în cazul uzului personal acas ă, rețeaua companiei în cazul utiliz ării internetului la
locul de munc ă, sau un router amplasat într-o cafenea sau într-un hotel, în cazul
călătoriilor. Totu și, milioane de dispozitive se conecteaz ă zilnic la internet, iar aceasta
este partea unde intervin adresele ip, pentru a permite propriului dispozitiv accesul rapid
la un anumit serviciu prezent pe internet.
Pentru a eficientiza și securiza conexiunea unui utilizator la internet, software -ul
de pe dispozitivul lui, care se ocup ă de rețea este programat s ă respecte o list ă de reguli și
standarde universale de conectare la internet, încât să fie capabil de a schimba date cu
alte di spozitive. Aceste standarde și reguli se numesc protocoale. Unul dintre aceste
protocoale este însăși partea a doua a numelui, adic ă IP (Internet Protocol). Acesta este
responsabil pentru adresare, trimiterea și rutarea precisa a request -urilor din mediul
online. De asemenea, acesta ata șează o adresă de întoarcere tuturor pachetelor trimise în
mediul online. Aceast ă adresă atașată este însăși adresa IP primit ă de către dispozitivul
utilizatorului.
În cazul utiliz ării personale a internetului, de exemplu de acasă, se desemneaz ă o
adresă IP de către furnizorii serviciilor de internet, care va fi num ărul de identificare a
utilizatorului în cadrul internetului. Din moment ce ISP ofer ă utilizatorilor internetul, este
datorită lor să aloce o adres ă IP. Toate datel e transmise prin internet trec prin serverul
lor, iar la întoarcere, ei se ocup ă de rutarea pachetelor, în funcție de adresa IP. Aceast ă
adresă IP, care este alocat ă de către ISP este volatil ă, adică se poate schimba în cazul
repornirii routerului personal de exemplu. Se mai poate schimba adresa IP și prin
contactarea furnizorului serviciilor de internet.
Capitolul 6
28
În cazul părăsirii locuin ței personale, adresa IP nu r ămâne aceeași pentru laptop.
Dacă se utilizeaz ă un dispozitiv din alt ă parte dec ât de acasă, acestui a i se va aloca o alt ă
adresă IP, pur și simplu din motivul c ă acesta acceseaz ă internetul din alt ă rețea. Deci în
cazul acces ării unor servicii prezente prin internet de pe un alt router dec ât cel de acas ă,
adresa IP a dispozitivului în cauză va fi diferi tă, iar comunicarea datelor trimise se va
realiza prin furnizorii serviciilor de internet ai localului de unde are loc conectarea. Toate
aceste schimb ări au loc datorit ă proiectării inteligente din spatele internetului, ale
rețelelor fără fir și protocoale lor pe care dispozitivele le au încorporate. Deci f ără ca
măcar să știe utilizatorul, aceste schimb ări au loc de la sine. Adresa IP alocat ă din
interiorul oric ărei rețele poate fi aflat ă prin diferite metode, ba chiar, exist ă și pagini web
care pot spune u tilizatorilor adresa lor IP.
Exista doua standarde pentru adresele IP:
IPv4 – In acest caz se folosesc pe 32 biti pentru a crea o adresa unica d
retea. IPv4 este exprimata prin 4 grupuri de cate 8 biti, acestea fiind
separate prin cate un punct. Valorile g uparilor sunt echivalente cu
reprezentarile decimale a valorilor numerelor binare pe 8 biti, altfel spus si
octet.
IPv6 – In acest caz se folosessc 128 biti pentru crearea unei adrese unice
de retea. IPv6 dispune de opt gurpari a cate 16 biti, fiecare din tre ele fiind
separate cu ajutorul simbolului ”doua puncte”. In cazul in care o grupare
contine doar valori de 0, se poate omite ruparea, iar marcarea se va face
printr -o combinatie de doua caractere ”doua puncte”.
Toate dispozitivele care se conecteaza la internet au o adresa IPv4, insa, recent, s-
a inceput si utilizarea adreselor IPv6. Este nevoie de acest lucru deoarece in perioada
inventarii sistemului IPv4, internetul era de dimensiuni mici, majoritatea retelelor erau
private, deci ascunse de celelalte retele din lume. Insa, cu timpul, internetul a explodat in
intindere, fiind nevoie de din ce in ce mai multe adrese IP. Prezenta a numai 32 biti
pentru identificarea unei adrese IP unice a inceput sa starneasca panica in randul lumii, in
ideea saturarii t uturor adreselor posibile. Sistemul IPv4 ofera doar aproximativ 4,3
miliarde de adrese unice, cat timp sistemul IPv6 are capacitati enorme in comparatie cu
acesta.
Adresele IP v4 sunt compuse din două părț i. Prima parte prezentă în adresă
reprezintă reț eaua din care face parte adresa, câ t timp, partea a doua vine de la gazda
propriu zis ă. Se poate determina care parte din adresă este cea de rețea și care este cea de
gazdă cu ajutorul măștii de reț ea. În cazul î n care un pachet are o d estinație cu adresa de
rețea diferită de adresa de reț ea a sursei, acesta va fi redirecționat sau rerutat către rețeaua
aferentă. Pachetul, odată ajuns în rețeaua corectă, se va face livrarea lui către gazda
aferentă adresei gazdei destinatarului pachetului.
În concluzie, o adres ă IP conține și o adresă de rețea, dar și o interfață unică din
rețeaua aferentă celei din adresa de rețea. O mască de subnet poate fi scrisă prin numere
zecimale cu puncte , iar aceasta determină unde se termină adresa de reț ea din adresa IP a
unui dispozi tiv. De asemenea, m asca de subnet poate fi folosită și pentru determinarea
poziției de la care î ncepe adresa gazdei din cadru l adresei IP a dispozitivului. În cazul
scrierii măș tii de subnet in binar, toate poziț iile marcate cu val oarea 1 semnifică prezenț a
acelei poziții î n cadrul adresei de rețea. În rest, toți biții setați pe 0 marchează că acea
poziț ie face parte din adresa gazdei. Biții care marchează o mască de subnet trebuie să fie
Capitolul 6
29
consecutivi . Măș tile de subnet , de obicei , vor î ncepe cu valoarea 255 , deci vor fi de forma
255.x.x.x.
Adresele IPv4 au fost împarț ite in cinci categorii:
Clasa A – primii opti biți reprezintă adresa de rețea a adresei IP, î nsa, chiar
primul bit este mereu setat pe 0. În concluzie, î n cadrul clasei A de adres e
IP, prima val oare zecimală din adresă poate varia între valorile 1 ș i 127,
fiind urmat de orice valori.
Clasa B – primii 16 biți reprezintă adresa de rețea a adresei IP, însa, primii
doi biț i trebuie să fie setați mereu pe valoarea 10 în binar. În conclu zie,
adresele c lasei B variază între 128.0.x.x ș i 19 1.255.x.x cu masca
255.255.x.x î n general.
Clasa C – primii 24 biți reprezintă adresa de rețea a adresei IP, însa, primii
trei biți din adresă trebuie să fie mereu setați pe valoarea 110 în binar. Î n
concluzie, adr esele IP din clasa C pot varia între valorile 192.0.0.x ș i
223.25 5.255.x cu masca 255.255.255.x î n general.
Clasa D – primii patru biț i din cadrul adresei trebuie mereu să fie setați pe
valoarea 1110 în binar. Î n concluzie, gama de valori posibil ă este între
valorile 224.0.0.0 și 239.255.255.255. Această clasa de adrese IP este
rezervată pentru multicast.
Clasa E – aceasta este doar o clasă experimentală , în care primii patru biți
trebuie să aibă valoarea 1111 în binar. În concluzie, adresele var iază între
240.0.0.0 ș i 255.255.255.254. Adre sa 255.255.255.255 este folosită ca
adresă de broadcast, deci nu intră in această categorie. La fel ca și î n cazul
clasei D, nu exista o mască de subnet.
Capitolul 6
30
Capitolul 5. Proiectare de Detaliu si Implementare
5.1. Diagrama cazurilor de utilizare
Diagrama cazurilor de utilizare a aplicației conține fiecare operație pe care
utilizatorul o poate efectua în interiorul aplicației. Următoarea schemă reprezintă
diagrama cazurilor de utilizare pentru aplicația dezvoltată .
Figura 5.1 Diagrama cazurilor de utilizare
După cum se poate observa în diagrama anterioară, utilizatorul poate efectua una
dintre următoarele operații. În primul rând, poate vizualiza diferite rapoarte (General și
Detecții), care vor f i detaliate în diagrama de activitate. În al doilea rând, poate vizualiza
diferite scheme ale rețelei (Schema completă și Schema simplificată), care, de asemenea,
vor fi detaliate în diagramele de activitate. Pe lângă acestea, utilizatorul aplicației poate
vizualiza statistici privind traficul prezent în captura de trafic din rețea, care este de forma
unui „pie chart”. Nu în ultimul rând, utilizatorul poate încheia sesiunea de folosire a
aplicației prin operația de ieșire .
Capitolul 6
31
5.2. Diagrame de activitate
Diagrama d e activitate este o diagramă care descrie comportamentul și aspectele
dinamice ale sistemului. Acest tip de diagramă modelează trecerea de la o activitate la
alta. Scopul diagramei este acela de a descrie coordonarea acțiunilor necesare pentru a
ajunge la un serviciu dorit, care poate fi prezent la diferite nivele de abstractizare în
cadrul aplicației.
5.2.1. Rapoarte general e
Această diagramă descrie pașii pe care utilizatorul aplicației trebuie să îi urmeze
pentru vizualizarea rapoa rtelor generale. Așadar, acesta trebuie să selecteze opțiunea
„Reports” din bara de meniu, urmând să aleagă opțiunea „General” din dropdown -ul care
apare la selectarea opțiunii menționate anterior. După acționarea funcției butonului
menționat mai sus, va a părea rezultatul așteptat și utilizatorul va fi capabil să vizualizeze
acest tip de raport.
Figura 5.2 Diagrama de activitate pentru rapoarte generale
Capitolul 6
32
5.2.2. Rapoarte despre detecț ii
Această diagramă descrie pașii pe care utilizatorul aplicației trebuie să îi urmeze
pentru vizualizarea rapoartelor care țin de detecții. Așadar, acesta trebuie să selecteze
opțiunea „Reports” din bara de meniu, urmând să aleagă opțiunea „Detections” din
dropdown -ul care apare la selectarea opțiunii menționate anterior. După acționarea
funcției butonului men ționat mai sus, va apărea rezultatul așteptat și utilizatorul va fi
capabil să vizualizeze acest tip de raport.
Figura 5.3 Diagrama de activitate pentru rapoarte despre detecții
Capitolul 6
33
5.2.3. Schema complet ă
Această diagramă descrie pașii pe care utilizatorul aplicației trebuie să îi urmeze
pentru vi zualizarea schemei complete a rețelei. Așadar, acesta trebuie să selecteze
opțiunea „Scheme” din bara de meniu, urmând să aleagă opțiunea „Network Layout” din
dropdown -ul care apare la selectarea opțiunii menționate anterior. După acționarea
funcției buton ului menționat mai sus, vor apărea două butoane dintre care va fi nevoie să
fie selectat cel cu titlul ”Show Network”. După apăsarea acestui ultim buton, va apărea pe
ecran rezultatul așteptat și utilizatorul va fi capabil să vizualizeze schema.
Figura 5.4 Diagrama de activitate pentru schema completă a rețelei
Capitolul 6
34
5.2.4. Schema si mplificată
Această diagramă descrie pașii pe care utilizatorul aplicației trebuie să îi urmeze
pentru vizualizarea schemei simplificate a rețelei. Așadar, acesta trebuie să selecteze
opțiunea „Scheme” din bara de meniu, u rmând să aleagă opțiunea „Network Layout” din
dropdown -ul care apare la selectarea opțiunii menționate anterior. După acționarea
funcției butonului menționat mai sus, vor apărea două butoane dintre care va fi nevoie să
fie selectat cel cu titlul ”Noise Red uction”. După apăsarea acestui ultim buton, va apărea
pe ecran rezultatul așteptat și utilizatorul va fi capabil să vizualizeze schema.
Figura 5.5 Diagrama de activitate pentru schema simplificată a rețelei
Capitolul 6
35
5.2.5. Statistici
Această diagramă descrie pașii pe care utilizatorul aplicației trebuie să î i urmeze
pentru vizualizarea statisticii pachetelor din captura traficului de rețea, sub forma unui
”pie-chart”. Așadar, acesta trebuie să selecteze opțiunea ”Charts” din bara de meniu,
urmând să aleagă opțiunea ”Traffic chart” din dropdown -ul care apare l a selectarea
opțiunii menționate anterior. După acționarea funcției butonului menționat mai sus, va
apărea rezultatul așteptat și utilizatorul va fi capabil să vizualizeze statisticile, împreună
cu legenda aferentă.
Figura 5.6 Diagrama de activitate pentru statistici
Capitolul 6
36
5.2.6. Închidere
Această diagramă descrie pașii pe care utilizatorul aplicației trebuie să îi urmeze
pentru a ieși din aplicație. Așadar, acesta trebuie să selecteze opțiunea ”Files” din bara
de meniu, urmând să aleagă opțiunea ”Exit” din dropdown -ul care apare la selectarea
opțiunii menționate anterior. După acționarea funcției butonului menționat mai sus,
aplicația se va închide cu succes. Alternativ, utilizatorul poate ieși din aplicație pur și
simplu prin acționarea simultană a combinației tastelor ”Control” și ”Q”. Aceas tă acțiune
va avea același efect ca și cea descrisă mai sus, iar aplicația va urma să se închidă cu
succes.
5.3. Diagrama de clase
În ciuda faptului că aplicația nu este în procent de 100% bazată pe clase și
interacțiunea dintre ele, am folosit în implement area proiectului și clase, pentru a ușura
procesul de dezvoltare. În continuare voi prezenta diagrama de clase a aplicației.
Figura 5.7 Diagrama de activitate pentru înciderea aplicației
Capitolul 6
37
Figura 5.8 Diagrama de clase a aplicației
Capitolul 6
38
Clasa Endpoint este clasa în care se salvează elementele parsate la rularea progr amului.
Aceasta este o clasa simplă, cu doar câteva câmpuri și o metodă. De asemenea, după cum
se poate observa, în interiorul aplicației se găsesc clasele celor trei tipuri de widget:
Reports, Schemes și Charts. Cât timp clasa widget -ului pentru statistic i nu este una
complexă, se poate observa că celelalte două nu sunt tocmai simple.
5.3.1. Diagrama de clase pentru scheme
Clasa WidgetScheme este fereastra principală a funcționalității de reprezentare a
rețelei. Această clasă este in stanțiată direct din fereastra principală MainWindow în
momentul în care utilizatorul aplicației dorește să vadă reprezentarea rețelei prin
selectarea butoanelor necesare acestei opțiuni, mai exact, Schemes – Show Network sau
Schemes – Noise Reduction. În cazul oricărei opțiuni alese, aplicație va prelucra datele
de care dispune în conformitate cu alegerea utilizatorului și va trimite rezultatul către
constructorul clasei SchemeWindow, astfel, se va instanția un obiect nou al acestei clase.
Clasa SchemeWind ow, pe baza informațiilor primite în constructor, va cerea o nouă
fereastră care va conține reprezentarea propriu zisă a rețel ei. Această reprezentare ia
naștere din prelucrarea datelor mai sus menționate și cu ajutorul funcționalității de
desenare pe car e o expune framework -ul Qt.
Figura 5.10 Diagrama pentru clasa
WidgetScheme Figure 5.9 Diagrama pentru clasa
SchemeWindow
Capitolul 6
39
5.3.2. Diagrama de clase pentru rapoarte
Clasa WidgetTable încorporează un tabel de tipul QtableWidget, acesta urmând să
fie afișat după populare. În funcție de opțiunea de vizualizare selectată de către utilizator
din bara de me niu, secțiunea Reports, se va instanția clasa corespunzătoare opțiunii. Dacă
utilizatorul selectează opțiunea de vizualizare a raportului general, va fi instanțială clasa
WidgetReportsGeneral, iar popularea tabelului se va efectua cu datele aferente. În ca z
contrar, în urma selecției opțiunii de vizualizare a detecțiilor, se va instanția clasa
WidgetReportsDetections, iar tabelul va conține detecțiile găsite în captura de trafic de
rețea. Aceste două instanțe, în funcție de selecție, sunt legate direct de c lasa
MainWindow, care are rolul să le creeze, iar ca urmare a acestei acțiuni, să le afișeze.
Figura 5.11 Diagrama pentru subclasele WidgetReports
Capitolul 6
40
5.4. Diagrame de secvență
Diagramele de secvență sunt diagrame UML de interacțiune care detaliază cum
sunt tratate operațiile. Prin intermediul acestora sunt captura te interacțiunile care au loc
între obiecte în contextual colaborării lor. Pe axa verticală este prezentă axa timpului,
ceea ce necesită ordonarea operațiilor cronologic. Prin intermediul acestor diagrame se
poate observa vizual ordinea operațiilor care au loc în executarea unei acțiuni care are
sens pentru utilizatorul aplicației. Durata de viată a instanțelor claselor reprezentate în
diagrama de secvență sunt limitate la durata de utilizare a acestora. Durata de viată a
instanțelor nu trebuie confundate c u actorii, deoarece, actorii au rolul de a vedea
sistemul din afara acestuia, cât timp, durata de viată este caracterizata prin portretizarea
internă a obiectului, adică din interiorul sistemului.
5.4.1. Diagrama de secvență pentru afișarea schemei rețelei
Din ce se poate observa, această diagramă de secvență este una simplă, în care au
loc doar câteva operații. Prin executarea acestor operații va fi afișată schema rețelei, fie
ea cea completă sau simplificată. Varianta completă sau simpli ficată poate fi selectată din
WidgetScheme, iar, în funcție de această preferință, vor fi furnizate datele de intrare
pentru crearea obiectului de tip SchemeWindow, urmând ca schema rețelei să fie creată
în funcție de aceste date. După crearea ferestrei no i pentru afișarea schemei rețelei,
aceasta va fi returnată către instanța clasei WidgetScheme, de altfel, locul de unde este și
creată, iar în ceea ce urmează, are loc afișarea ferestrei nou create. După crearea widget –
ului care reprezintă schema, obiectul corespunzător, tocmai creat, va fi returnat către
obiectul de tipul MainWindow, unde se va realiza afișarea lui pe ecran.
Figura 5.12 Diagrama de secvență pentru afișarea schemei rețelei
Capitolul 6
41
5.4.2. Diagrama de secvență pentru afisarea porturilor unei perechi de
adrese IP
În comparație cu diagrama de secvență anterioară, acea stă diagramă se poate
observa că este una mai complexă din punct de vedere al claselor instanțiale și ale
acțiunilor prezente între ele. În urmarea executării pașilor prezentați în diagramă, va fi
afișat un tabel care conține detaliile relevante din captur a de trafic din rețea. Această
diagramă poate fi reprezentarea fie pentru un tabel care să conțină toate porturile, fie
toate protocoalele prezente în captură. În cazul accesării reprezentării generale ale
informațiilor conținute în pcap din meniul aplicaț iei, tabelul afișat va conține un contor,
adresa IP a sursei, adresa IP a destinației, numărul de pachete trimise de la sursă la
destinație, porturile pe care s -a făcut comunicarea și protocoalele prin intermediul cărora
s-a comunicat. În cazul porturilor și protocoalelor, lista este expandabilă, pur și simplu,
prin apăsarea căsuței care se dorește să fie detaliată. În momentul accesării căsuței dorite,
se va instanția clasa widgetGeneral, care este, de asemenea, o clasă care moștenește clasa
WidgetTable, e xact la fel ca și WidgetReportsGeneral. Prin această operație, se va crea o
nouă fereastră, care va conține un nou tabel care urmează să fie populat cu datele trimise
către constructorul clasei. În cazul ieșirii din fereastra secundară, destinată pentru
reprezentarea tuturor porturilor sau protocoalelor prin care comunică o anumită pereche
de adrese IP, instanța creată pentru această fereastră va fi ștearsă.
Figura 5.13 Diagrama de secv ență pentru afișarea porturilor unei perechi de
adrese IP
Capitolul 6
42
5.5. Detalii de implementare
Pe partea de implementare, proiectul este scris foarte frumos di n punct de vedere
al convenț iilor de scriere al c odului. Proiectul este separat în mai multe fișiere, fiecare
conținănd diferite funcționalităț i. Din punct de vedere al modularității codului, se pot
enumera urmă toarele fisiere:
config.py – Acesta este fi șierul care e ste responsabil de configurarea
aplicației. Acest proces inseamn ă legarea ei cu dispozitivul de pe care se
va rula proiectului. Fi șierul de configurare con ține un număr limitat de
variabile care necesit ă setarea valorii înaintea rul ării, astfel încât, proi ectul
să poată utiliza valorile setate. În cazul dorinței importării imaginilor ori a
capturilor de trafic din re țea folosind alte loca ții din memorie, nu cele
două directoare con ținute în folderul proiectului, se poate seta valoarea
variabilei dorite pe c alea către directorul dorit. Altfel, în cele dou ă
variabile pur și simplu trebuie setat ă calea către directoarele locale. În
variabila PCAP_PATH se specific ă folderul din care se dore ște prel uarea
capturii de trafic din re țea și numele ei.
processor.py – Acesta este fișierul în care are loc extragerea și filtrarea
propriu zisă a datelor. Calea către fișierul care conține captura de trafic din
rețea este setată în fiș ierul de configurare , aceasta fiind preluată de că tre
procesorul de capturi, urm ând să fie e xtrase informaț iile din el.
gui.py – Acesta este fiș ierul pri ncipal al proiectului, el pune î n rulare tot
proie ctul. Are rolul de a apela funcț ia de extragere a datelor din procesor,
iar după asta de a inițializa fereastra pentru interfaț a grafică cu utili zatorul
și o populează. De asemenea, are rolul și de a manipula acț iunile care au
loc în cadrul interfeț ei.
chartsWidgets.py – Acesta este fiș ierul responsabil pentru repre zentarea
statisticilor grafice în cadrul interfeț ei cu utilizatorul. În momen tul
acționării acestei funcționalități, clasa este instanțiată î n cadrul ferestrei
principale din gui.py.
reportsWidgets.py – Acesta este fiș ierul responsabil pe ntru reprezentarea
rapoartelor în cadrul interfeței cu utilizatorul. În momentul acționă rii
acestei fu ncționalități, clasa este instanțiată î n cadrul ferestrei principale
din gui.py.
schemeWidgets.py – Acesta este fiș ierul responsa bil pentru reprezentarea
grafică a rețelei într -o fereastră secundara. În momentul acționării acestei
funcționalităț i, clasa es te instanțiată î n cadrul ferestrei principale din
gui.py. De aici încolo, în funcție de butonul apă sat, se vor trimite datele
necesare constructorului noii ferestre.
networkScheme.py – Acesta este fiș ierul responsab il pentru desenarea
propriu zisă a rețele i într -o fereastră nouă. Î n constructo rul acestei clase
este nevoie să fie furnizate structurile de date responsabile de
repreze ntarea dispozitivelor prezente în rețea și de legăturile prezente
dintre ele. În momentul acționă rii unui buton care este legat de această
Capitolul 6
43
funcționalitate, clasa este instanțiată î n cadrul clasei de widget din fișierul
schemeWidgets.py .
Capitolul 6
44
Capitolul 6. Testare și Validare
6.1. Testarea rapoartelor pe date de dimensiuni mici
Figura 6.2 Captură de ecran din aplicație pentru testarea rapoartelor pe date de
dimensiuni mici
Figura 6.1 Captură de ecran din programul Wireshark pentru testarea rapoartelor pe date
de dimensiuni mici
Capitolul 6
45
În imaginile de mai sus sunt reprezentate datele din aplicație, respectiv din
Wireshark. Se poate observa că în Wireshark sunt transmise 35 pachete (coloana No), iar
în aplicație sunt numărate în total tot 35 pachete (coloana Count), 21 dintre ele fiind
transmise de la sursă la destinație, iar celelalte 14 sunt transmise de la destinație la sursă.
Pentru datele de test, adresa IP a sursei este 192.160.0.15, iar pentru destinație
11.12.19.168. De asemenea, se observă în aplicație, la rubrica de protocoale, că se
realizează comunicarea folosind protocolul de transmisie a datelor T CP. Așadar, se poate
observa că datele prezente în aplicație coincid cu cele din Wireshark, deci aplicația
funcționează corect din acest punct de vedere.
6.2. Testarea rapoartelor pe date de dimensiuni mari
Figura 6.3 Captură de ecran din aplicație pentru testarea rapoartelor pe date de
dimensiuni mari
Figura 6.4 Captură de ecran din Wireshark pentru testarea rapoartelor pe date de
dimensiuni mari
Capitolul 6
46
În imaginea 6.4 din aplicație se vede câte r equest -uri se fac de la o adresă la alta, 1031,
respectiv 996. De asemenea, putem observa pe ce porturi au loc și ce protocoale se
folosesc. În acest caz se foloseș te NMAP cu un UDP scan. Pentru acesta se poate observa
în imaginea din aplicație ca dispozit ivul cu IP -ul 192.168.1.10 vrea să exploateze
dispozitivul cu IP -ul 192.168.1.25. Contorul este corect pentru ambele, după cum se
observă și în captura din WireShark din figura 6.3, valorile din coloanele de pachete Tx
Packets și Rx Packets (pachete trimis e și primite) corespund cu cele din aplicație. Așadar
calculatorul cu IP -ul 192.168.1.10 trimite 1031 pachete, iar celălalt calculator primește un
număr de pachete egal cu cel trimis. Similar și pentru comunicarea inversă.
Figure 6.5 Captură de ecran din Wireshark pentru testarea rapoartelor pe porturi
Capitolul 6
47
Să ne îndreptăm puțin atenț ia și către porturi, deoarece este o scanare de porturi,
folosind NMAP prin protocolul UDP. Se poate observa ca pe UDP sunt multe request -uri
singulare, după cum se vede clar și în captura din Wireshark. În concluzie, nu se văd
absolut toate porturile, deo arece sunt extrem de multe, însă se obține ceea ce se
urmărește.
6.3. Testarea detecț iilor
Figura 6.6 Captură de ecran din aplicatie pentru testarea rapoartelor pe porturi
Figure 6.7 Captură de ecran din wireshark pentru testarea detecțiilo r
Capitolul 6
48
Aceste imagini conțin informațiile necesare pentru partea de detecții, informațiile
prezente in programul Wireshark și cele din aplicație. Din punct de vedere a l detecțiilor,
se poate observa că există comunicare de la un singur IP, adică sursa (209.137.3.15),
către un alt IP, destinația (192.168.0.49). În pachet, dispozitivul cu adresa IP
209.137.3.15 trimite un request către dispozitivul cu adresa IP locală 192 .168.0.49, adică
destinația. Printr -un request HTTP se trimite un URL, care are în interiorul său un
comanda ”chmod”. Se detectează prezența acestuia și astfel se poate clasifica ca fiind de
tip Exploit. În Wireshark se vede cum se realizează comunicarea între cele două adrese
IP, iar dacă ne uitam în aplicație o sa vedem aceeași structură la secțiunea de Reports –
Detections . Aici însă nu urmărim corectitudinea rapoartelor, deoarece nu suntem pe
sectiunea generală, ci dacă se afișează bine detecțiile. În acest caz se afișează bine
detecția în aplicație, deoarece găsește un chmo d în URL -ul de la request -ul HTTP.
6.4. Concluzii
Datele testate sunt cele care rezultă din analiza capturii de trafic din rețea. Cele trei
cazuri de test acoperă cu succes verificarea c orectitudinii datelor. Nu este necesară
testarea statisticilor și a schemei la nivel de rețea, deoarece acestea funcționează pe baza
acelorași date ca și cazurile testate mai sus. În concluzie, se obține ceea ce se urmărește în
toate cele 3 cazuri, aplicaț ia funcționând atât pe capturi de trafic din rețea mai mici, cât și
pe unele mai mari . În cazul în care nu se gă sesc informații corecte în capturi, aplicația știe
să trateze excepțiile și să nu dea erori utilizatorului, sau chiar mai rău, să se blocheze di n
cauza inconsistenței datelor.
Figure 6.8 Captură de ecran din aplicație pentru testarea detecțiilor
Capitolul 6
49
Capitolul 7. Manual de Instalare si Utilizare
În primul r ând este nevoie de instalarea limbajului de programare Python. Pentru
a face asta, se poate descarc ă pur și simplu de pe pagina web [13], sau în caz că se obiține
eroare, se poate căuta o solu ție pe internet.
După instalarea Python este nevoie de instalarea unor module care sunt esen țiale
pentru func ționarea aplica ției. Aceste module sunt urmato ărele:
PySide2
collections
pyshark
După ce toate aceste cerin țe sunt îndeplinite, trebui e copiat proiectul pe sistemul
pe care se dore ște rularea lui. Dup ă ce proiectul a ajuns pe sistem, se poate observa
structura lui.
Din ce se poate observa din structura de fi șiere a proiectului, exist ă patru
directoare. Primul director c onține diagramele relevante UML ale proiectului. Al doilea
director con ține o scurt ă descriere func țională a soluției dezvoltate. În al treilea folder se
găsesc imaginile utilizate în cadrul proiectului, ulterior, exist ând posibilitatea de ad ăugare
a imagi nilor suplimentare și înlocuirea celor existente cu cele noi. Al patrulea director
este alcătuit din capturi de trafic din re țea, care sunt esen țiale pentru proiect, deoarece pe
baza lor func ționează aplicația.
În același timp, se pot observa și fișierele cu extensia ”.py”. Acestea sunt fi șierele
care conțin cod scris în limbajul de programare Python și care sunt responsabile de
funcționarea corect ă a proiectului. Se poate observa c ă în listă există un fișier pe nume
”config.py ”. Acesta este fi șierul respo nsabil cu configurarea aplica ției, adică integrarea ei
pe sistemul de calcul de pe care se dore ște rularea proiectului. Acest fi șier conține c âteva
variabile la care le trebuie setat ă valoarea, astfel încât, codul Python s ă poată folosi acele
valori în con tinuare. În cazul în care se dore ște importarea imaginilor sau a capturilor de
trafic din re țea din alte locuri dec ât directoarele con ținute în directorul proiectului, se
Figura 7.1 Structura de fișiere a proiectului
Capitolul 6
50
poate instan ția valoarea variabilei dorite cu calea c ătre noul directorul dorit. În caz
contrar, cele dou ă variabile trebuie setate cu calea c ătre directoarele locale. În variabila
PCAP_PATH trebuie specificat ă calea către pcap -ul din care trebuie extrase informa ții.
Datorită librăriei ”os”, se poate seta cu u șurință calea către captura de trafic din re țea
care trebuie scanat ă, deoarece putem folosi metoda join() cu prefixul os.path.
După setarea cu succes a acestor variabile, aplica ția este preg ătită pentru a fi
rulata. Se poate deschide pur și simplu un terminal în directorul proiectul ui și, prin
rularea comenzii ”python3 gui.py ” aplicația va începe să ruleze, exact cum se poate
observa în următoarele capturi de ecran.
Figura 7.3 Pagina de pornire a aplicaț iei
Figura 7.2 Comanda pentru rularea aplicației
Capitolul 6
51
În prima captur ă de ecra n este prezent ă comanda necesar ă pentru rularea
aplicației. După rularea acelei comanzi, aplica ția va începe să ruleze și să proceseze
captura de trafic din re țea. C ând această procesare s -a încheiat, interfa ța pentru utilizator
va porni și va arată ca și a doua captur ă de ecran.
După cum spuneam și mai sus, a doua captur ă de ecran reprezint ă pagina de
pornire a aplica ției. După cum se poate observa, în partea de sus a aplica ției este prezent ă
bara de meniu. De aici utilizatorul poate selecta ac țiunile pe c are dorește să le execute.
Pentru a accesa o c ăsuță din bara de meniu, utilizatorul trebuie s ă se deplaseze cu mouse –
ul pe ea și să dea click, ca și în captura de ecran de mai jos.
În continuare, pentru accesa o nou ă pagină, utilizatorul trebuie s ă selecteze una
din opțiunile care apar în dropdown. În cazul în care ac țiunea dorit ă este ieșirea din
aplicație, utilizatorul trebuie s ă selecteze butonul ”Files” din bara de meniu, iar mai apoi,
să apese opțiunea numit ă ”Exit”. Aplicația dispune și de posibil itatea comenzilor prin
intermediul tastelor. Momentan exist ă o singură combinație de taste implementat ă, însă
pot fi adăugate multe altele cu u șurință. Acțiunea de ie șire din intermediul aplica ției are
o asemenea combina ție de taste, mai exact ac ționarea în paralel a tastelor ”Ctrl” și ”Q”.
Pentru ca utilizatorul s ă selecteze o ac țiune din dropdown, trebuie s ă se deplaseze
cu mouse -ul în dropdown -ul care apare în urma selec ției unui buton din meniu pe
opțiunea dorit ă și să dea click, ca și în următoarea cap tură de ecran.
Figura 7.4 Exemplu de accesare a unei componente din meniul aplicației
Capitolul 6
52
Într-un final, va apărea opțiunea dorită spre vizualizare de către utilizatorul
aplicației. Acest proces de accesare a opțiunilor poate fi repetată de oricâte ori este
nevoie.
Figura 7.5 Exemplu de accesare a unei componente din dropdown
Figura 7.6 Exemplu de accesare a unei metode de reprezentare a rețelei
Capitolul 6
53
Pentru a accesa schemele de rețea, treb uie efectuate acțiunile descrise până acum,
atât că pentru combinaț ia Schemes – Network layout. Dupa aceasta vor apărea î n
fereas tra principală doua butoane, ca și în figura de mai sus. Prin selectarea butonului
”Show Network” se va afișa întreaga rețea pr in desenarea tuturor dispozitivelor și a
legăturilor dintre ele. În caz contrar, la selectarea butonului ”Noise Reduction”, rețeaua
va fi simplificată, dispozitivele care nu comunică mult în comparație cu celelalte vor
dispărea, iar legăturile care au de a face cu ele vor avea aceeași soartă.
Capitolul 8
54
Capitolul 8. Concluzii
8.1. Contribuții personale în dezvoltarea soluției
Contribuțiile personale î n dezvoltare a acestui proiect nu au fost puț ine. Pentru a
simplifica procesul de analiză a capturii de trafic din reț ea, am fol osit o librarie scrisă î n
limbajul de programare Python, acest aspect fiind singura parte din proiect unde am fost
ajutat de ceva gata implementat în ideea dezvoltării aplicației de analiză a capturilor de
trafic din rețea. La această decizie voi reveni î n subca pitolul de ”Dezvoltări și
imbunătăț iri ulterioare”, unde vo i explica de ce este o idee bună înlocuirea acestei librării
cu o soluț ie proprie pentru parsa rea capturilor de trafic din rețea. În afară de acest aspect,
am îmbinat funcț iile expuse de fram ework -ul de Qt PySide2 cu funcț ional itatea de
analizare a capturii și am reușit să obțin o aplicație care să dispună de o interfață pentru
utilizatori, cu ajutorul că reia se poat e simplifica procesul de analiză a unei capturi de
trafic din reț ea.
8.2. Analiză critic ă a rezultatelor obținute
Având în vedere timpul alocat dezvoltării aplicației, am reușit să acopăr mare
parte din obiective. Aș fi dorit ș i implemetarea unei metode de detecție î n ideea unui set
de pachete care se leagă între ele, adică un atac de tip ”br uteforce”, unde este nevoie de a
analiza mai multe re quest -uri pentru a fi capabil să determin dacă este sau nu o acțiune
rău intenționată. În afară de acest aspect, am reușit să implementez toate funcționalitățile
propuse și aplicaț ia ruleaza conform aste ptarilor.
8.3. Dezvoltări și îmbunătățiri ulterioare
Posibilitățile de dezvoltă ri ulterioare pe tema acestui proiect sunt o tema foarte
vastă. Soluția software poate fi integrată și aplicată în foa rte mul te subdomenii ale
informaticii ș i dezvoltarea ei po ate c ontinua într -un numar mare de puncte de vedere.
Printre posibilitățile de dezvoltare ulterioară se enumeră urmatoarele aspecte principale:
Prima posibilitate de îmbunătăț ire ar fi d in punct de vedere al reprezentării grafice
a reț elei. La momentul act ual, având in vedere timpul limitat dis ponibil pentru
dezvoltarea soluției, este permis doar un număr limitat de dispositive în
reprezentarea grafică a rețelei prezente în captura de trafic din rețea. Acest aspect
lasă de dorit î n cazul capturilor cu mult e disp ositive care comunică între ele.
Această vizualizare a rețelei poate fi îmbunătățită prin mărirea spaț iului de
reprezentare, convertirea soluț iei de calculare a coordonatelor u nde sunt plasate
dispozitivele într -o soluție dinamică, care să țină cont și de aspectele legate de
mărimea ferestrei în care se întamplă vizualizarea. Pe de altă parte , se poate
optimiza algiritmul încat iconițele dispozitivelor să se micșoreze sau sa se
mărească dinamic, în funcție de numă rul total de dispositive prezente î n
comunic are. Un alt aspect important ar fi d efinirea tipului de dispozitiv în cazul
fiecă ruia dintre ele. Este un process mai comp lex, sunt solicitate multe cunoștințe
și niște timp pentru cercetare, însă, este posibilă implementarea unei soluț ii care
Capitolul 8
55
să determine tipul dispozitivului, iar reprezentarea lui pe schema rețelei să fie cu o
iconiță reprezentativă . De asemene a, se poate implementa un design mai modern
și elevat pentru toată schema, astfel încât, în momentul î n care un utilizator are
contact cu ea, să aibă plă cere în timpul analizării schemei. Nu în ultimul rând, se
pot integra funcționalităț i suplimen tare pe dispozitivele prezente în schemă, încât
acestea să răspundă la interacțiuni. Cea mai simplă dezvoltare î n acest sens ar fi
interceptarea interac țiunii mouse -ului cu dispozitivul și afișarea unei căsuț e cu
detaliile despre dispozitiv, nu doar adresa IP a lui deasupra iconiț ei.
O altă posibilitate de dezvoltare ar fi din punct de vedere al detecțiilor. Această
operatiune necesită extrem de multă muncă de cercetare, încât să se găsească noi
metode de a da detecț ii pe diferite secvenț e de text din URL, user agent , sau alte
anomalii care pot apărea. Aplicația dispune doar de cinci detecții, acestea
bazându-se toate pe textul din interiorul URL -ului. Un ele a tacuri, î n schimb, au
loc prin compuner ea a mai multe pachete, iar dacă textul unui pachet se poate
determina din url, o alta posibilitate de dezvoltare ar putea fi prinderea unor
atacuri compuse din mai multe pachete prezente î n captura de trafic din rețea. De
asemenea, dinamic, se pot găsi noi metode de a ataca un dispozitiv și se poate
implementa o metodă de a le prinde.
O alta metodă de dezvoltare este tot din punc t de vedere al reprezentării rețelei,
însă nu se poate lega de cealaltă idee. Proiectu l s-ar putea asocia cu o unealtă de
analiză în timp real a traficului din rețea în ideea reprezentării configurației rețelei
în timp real. Pe măsură ce se primesc pach etele de la programul de analiză a
traficului, noi dispozitive se pot reprezenta î n inte rioru l spațiului de desenare din
aplicație. În același timp, se pot crea și noi conexiuni î ntre dispozitive. Desigur,
unele elemente din reprezentarea traficului tr ebuiesc și șterse, altfel se
suprapopulează fereastra cu r eprezentarea traficului. Această problemă se poate
rezolva pur ș i simplu prin setarea unui tresho ld si tot ce este mai vechi decât
timpul actual, din care scădem treshold -ul, să fie ș ters. Desig ur, aici este nevoie
de o metodă de manipulare dinamică a obiectelor reprezentate și, pe lângă asta,
trebuie dezvoltat și un algoritm care să se ocupe cu realocarea obiectelor în poziții
cât mai bune în funcție de importanța lor în cadrul comunicaț iei.
Nu în ultimul rând, o idee importantă pentru eficientizarea aplicaț iei din punct de
vedere al timpul ui petrecut în etapa de procesare. După cum am descris situația și
în cadrul subcapitolului de ” Contribuții personale în dezvoltare a soluției”, am
utilizat o librărie gata implementată pentru extragerea informațiilor din captura de
trafic din reț ea. Cu sig uranță această librărie este una eficientă și bine optimizată
din toate punctele de vedere, însa, în cazul aplicației curente oferă prea multe
funcționalităț i, de care nu este nevoie. Această libră rie are ca scop extragerea
completă a datelor din captură , însă aplicaț ia are nevoie doar de o parte mică din
acele date, pentru a fi capabilă să funcționeze. În această situație, dezvoltarea
propusă este implementarea unei soluții care să fie capabilă de extragerea
informaț iilor din captura de trafic din rețea, însă select iv, doar ceea ce este
relevant în cadrul aplicației. În acest fel, consider că aplicația ar deveni mult mai
eficientă din punct de vedere al timpulu i, deoarece nu este nevoie să își seteze
fiecare câmp în parte în procesul extragerii informaț iilor. U n alt aspect important
este că ar deveni m ai eficientă si din punct de vedere al memoriei utilizate. Din
Capitolul 8
56
moment ce nu este nevoie de toată structura de date a unui pac het, care se extrage
din captură , foarte multă memorie s -ar elibera î n comparaț ie cu util izarea libră riei
PyShark. Variabilele de car e este nevoie ar fi mult mai puț ine, deci rezultă ca s-ar
folosi mai putină memorie pentru pă strarea lor.
Bibliografie
57
Bibliografie
[
1] J. M. Zelle, „Python Programming,” în An Introduction to Computer Science ,
Franklin, Beedle & Associates, Inc., 2004, p. 517.
[
2] T. L. Y. Rekhter, „An Architecture for IP Address Allocation with CIDR,”
September 1993.
[
3] M. Summerfield, „Rapid GUI Programming with Python and Qt,” în The
Definitive Guide to PyQt Programming (pa perback) , Pearson Education, 2007, p.
648.
[
4] sites.google.com, „Rețele de calculatoare,” [Interactiv]. Available:
https://sites.google.com/site/materialdidacpentruelevidi11m/retele -de-calculatoare.
[
5] G. R. J. B. Angela Orebaugh, în Wireshark & Ethe real Network Protocol
Analyzer Toolkit , Elsevier, 2006, p. 448.
[
6] Wireshark, „TShark,” [Interactiv]. Available:
https://www.wireshark.org/docs/man -pages/tshark.html.
[
7] Wikipedia, „Rețea de calculatoare,” [Interactiv]. Available:
https://ro.wikipedi a.org/wiki/Re%C8%9Bea_de_calculatoare.
[
8] Wikipedia, „Tcpdump,” [Interactiv]. Available:
https://en.wikipedia.org/wiki/Tcpdump.
[
9] Zeltser, „Networkminer for analyzing network traffic,” [Interactiv].
Available: https://zeltser.com/networkminer -for-analyzing -network -traffic/.
[
10] Wikipedia, „Wireshark,” [Interactiv]. Available:
https://ro.wikipedia.org/wiki/Wireshark.
[
11] southeastern.edu, „Protocols,” [Interactiv]. Available:
http://www2.southeastern.edu/Academics/Faculty/nadams/etec650/Protocol s.html.
[
12] Wikipedia, „Port (computer networking),” [Interactiv]. Available:
https://en.wikipedia.org/wiki/Port_(computer_networking).
[
13] Python, „Downloads,” [Interactiv]. Available:
https://www.python.org/downloads/.
[
14] A. C. Measures, „Blog tshar examples for extracting ip fields,” [Interactiv].
Available: https://www.activecountermeasures.com/blog -tshark -examples -for-
extracting -ip-fields/.
[
15] Reviversoft, „Pcap file extensions,” [Interactiv]. Available:
https://www.reviversoft.com/file -extensions/pcap.
[
16] L. Academy, „Cursul Python,” [Interactiv]. Available: https://www.link –
academy.com/cursul -python -limbaj -de-programare.
[
17] Techopedia, „Packet Capture,” [Interactiv]. Available:
https://www.techopedia.com/definition/25333/packet -capture.
[
18] Flowmon, „Full packet capture and analysis,” [Interactiv]. Available:
https://www.flowmon.com/getattachment/e3ffda01 -93c2 -4c07 -bda6 –
ed1a8a9bdafa/full -packet -capture -and-analysis.aspx.
Bibliografie
58
[
19] Wireshark, „Wsung,” [Interactiv]. Available:
https ://www.wireshark.org/docs/wsug_html/.
[
20] G. A. F. A. Stoneburner G, „Risk management guide for information
technology systems.,” National Institute of Standards and Technology Special
Publication, 2001.
Anexa 1
59
Anexa 1
Printre liniile de cod se gasesc ca teva secvente decizionale, care reprezinta logica
din spatele unor parti ale aplicatiei.
Figura 0.1 Structura decizională pentru desenarea legăturilor dintre dispozitive î n
reprezentarea re țelei
Figura 0.2 Metoda utilizată pentru filtrarea datelor în reprezentarea simplificată a rețelei
Anexa 1
60
Figura 0.3 Met oda utilizată pentru determinarea daca o adresă IP este sau nu locală
Figura 0.4 Datele utilizate pentru a detecta pachete rău intenționate
Figure 0.5 Metoda utilizată pentru separarea setului de dispozitive în funcție de tipul de
adresă IP (publică sau privată)
Figure 0.6 Exemplu de programare modulară prin reprezentarea funcției main, care are
abia 5 linii de cod
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: SUMARIZAREA Ș I VIZUALIZAREA CAPTURILOR DE [611659] (ID: 611659)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
