Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para...

66
Universidade Federal Fluminense Escola de Engenharia Curso de Gradua¸ c ˜ ao em Engenharia de Telecomunica¸ c ˜ oes Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto WiFind - software de monitoramento para redes Wi-Fi Niter´ oi – RJ

Transcript of Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para...

Page 1: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

Universidade Federal Fluminense

Escola de Engenharia

Curso de Graduacao em Engenharia de

Telecomunicacoes

Bruno Rodrigues Pacheco

Gentil Gomes da Silveira Neto

WiFind - software de monitoramento para redes Wi-Fi

Niteroi – RJ

Page 2: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

i

Bruno Rodrigues Pacheco

Gentil Gomes da Silveira Neto

WiFind - software de monitoramento para redes Wi-Fi

Trabalho de Conclusao de Curso apresentado ao

Curso de Graduacao em Engenharia de Teleco-

municacoes da Universidade Federal Fluminense,

como requisito parcial para obtencao do Grau de

Engenheiro de Telecomunicacoes.

Orientador: Prof. Dr. Luiz Claudio Schara Magalhaes

Niteroi – RJ

2017

Page 3: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

ii

.

.

Page 4: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

iii

Bruno Rodrigues Pacheco

Gentil Gomes da Silveira Neto

WiFind - software de monitoramento para redes Wi-Fi

Trabalho de Conclusao de Curso apresentado ao

Curso de Graduacao em Engenharia de Teleco-

municacoes da Universidade Federal Fluminense,

como requisito parcial para obtencao do Grau de

Engenheiro de Telecomunicacoes.

Aprovado em 14 de Dezembro de 2017.

BANCA EXAMINADORA

Prof. Dr. Luiz Claudio Schara Magalhaes - Orientador

Universidade Federal Fluminese - UFF

Prof. Dr. Natalia Castro Fernandes

Universidade Federal Fluminense - UFF

Prof. Dr. Ricardo Campanha Carrano

Universidade Federal Fluminense - UFF

Niteroi – RJ

2017

Page 5: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

iv

Resumo

Este projeto descreve o desenvolvimento de um software que serve como ferramenta

de analise e monitoramento de redes Wi-Fi na banda de 2,4 GHz. Com a funcao de analisar

as potencias recebidas de todas as redes sem fio do ambiente de todos os pontos de acesso,

o software pode auxiliar no dimensionamento de novas redes, alem de ajudar a identificar

possıveis melhorias nas configuracoes atuais, a fim de conseguir um melhor desempenho

da rede. Para facilitar a analise do ambientes, o software ainda e capaz de gerar um

arquivo em PDF com os graficos de potencias recebidas que foram gerados dos diferentes

pontos de acesso ao longo do tempo.

Palavras-chave: Wi-Fi. Rede sem fio. Software. Graficos em Tempo Real. RSSI.

Potencia Recebida. Python.

Page 6: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

v

Abstract

This project describes the development of a Wi-Fi analyzer software witch works

in 2.4GHz band. The main feature is analyzing received power of all wireless environment

Acess Points. The sotware can assistance, therefore, besides dimensioning new Wi-Fi

networks projects, pinpoint improvements in the current settings for better network per-

formance. In order to facilitate the environment analysis, the software is still capable of

generating a PDF file with the received power graphs of the differents acces points, over

time.

Keywords: Wi-Fi. Wireless. Software. Real Time Plotting. RSSI. Received Power.

Python.

Page 7: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

vi

A tecnologia como ferramenta social, que jus-

tifique seu avanco agregando pessoas e des-

centralizando oportunidades. Por um futuro

menos desigual.

Page 8: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

vii

Agradecimentos

A Deus, no qual estao escondidos todos os tesouros da sabedoria, que nos permite

contemplar e entender fragmentos de sua infinita criacao atraves da ciencia.

As nossas famılias, pelo carinho, apoio e educacao nos dada apesar das dificuldades.

As nossas namoradas, pela forca e incetivo natural que sao, afinal, e por um futuro

com elas que batalhamos.

Ao professo Luiz Claudio Schara, pelos ensinamentos que nos deram base para

elaboracao deste trabalho.

A professora Natalia, pelas dicas e pela disponibilidade quando precisamos.

Aos nossos amigos, por tornarem o dia a dia mais agradavel, facilitando nosso

desempenho.

A empresa Nimal Tecnologia, por ceder o espaco em horario comercial, para os

testes do nosso software.

Page 9: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

viii

Lista de Figuras

1.1 Comparacao de usuarios Wi-Fi x telefonia movel.[2] . . . . . . . . . . . . . 2

2.1 Quadro Beacon, capturado pelo software Wireshkark. . . . . . . . . . . . . 5

2.2 Conceito de BSS e ESS.[4] . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.3 Processos de Autenticacao e Associacao.[5] . . . . . . . . . . . . . . . . . . 8

2.4 Roaming.[6] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.5 Potencia x Taxa de Associacao, Data Sheet do ponto de acesso 7522 da

Extreme Networks.[7] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.6 Canais Wi-Fi em operacao Brasil.[8] . . . . . . . . . . . . . . . . . . . . . . 14

2.7 Canais da tecnologia DSSS.[9] . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.8 Canais de largura 20 MHz e 40 MHz da tecnologia OFDM.[10] . . . . . . . 15

3.1 Probe-request, Probe-response. Grafico Espacial . . . . . . . . . . . . . . . 17

3.2 Probe-request, Probe-response.Grafico Temporal [11] . . . . . . . . . . . . 18

4.1 Saıda do Comando iwlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

4.2 Arquivo Gnuplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.3 Widgets na Interface Grafica . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.4 Menu de Opcoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

4.5 Apresentacao da Interface Grafica com a Captura dos Dados . . . . . . . . 42

4.6 Grafico do Arquivo em PDF . . . . . . . . . . . . . . . . . . . . . . . . . . 44

6.1 Scan Geral de Todos os BSSIDs do ambiente . . . . . . . . . . . . . . . . . 49

6.2 Potencia recebida em todo ambiente analisado . . . . . . . . . . . . . . . . 50

6.3 Potencia recebida em ao longo do tempo em PDF, ponto de acesso 1 . . . 50

6.4 Potencia recebida em ao longo do tempo em PDF, ponto de acesso 2 . . . 51

6.5 Potencia recebida em ao longo do tempo em PDF, ponto de acesso 3 . . . 51

Page 10: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

Sumario

Resumo iv

Abstract v

Agradecimentos vii

Lista de Figuras viii

1 Introducao 1

2 Padrao IEEE 802.11 3

2.1 Elementos de uma WLAN . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.1.1 Ponto de Acesso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.1.2 Estacoes Moveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.2 Operacoes de uma WLAN . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.2.1 Deteccao do Sinal das Redes Sem Fio de Forma Passiva . . . . . . . 4

2.2.2 Processos de Associacao e Desassociacao . . . . . . . . . . . . . . . 6

2.3 Potencia de Recepcao x Taxa de Associacao . . . . . . . . . . . . . . . . . 9

2.3.1 RSSI e Potencia de Recepcao . . . . . . . . . . . . . . . . . . . . . 10

2.3.2 Taxa de Associacao . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.4 Banda ISM de 2,4 GHz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.4.1 Especificacoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3 Probe-request, Probe-response 16

4 Desenvolvimento do Software 19

4.1 Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4.1.1 Programa iwlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

ix

Page 11: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

x

4.1.2 O Programa gnuplot . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.2 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.2.1 Descricao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.2.2 Bibliotecas Utilizadas . . . . . . . . . . . . . . . . . . . . . . . . . . 23

4.3 Explicacao do Codigo Fonte . . . . . . . . . . . . . . . . . . . . . . . . . . 26

4.3.1 Utilizacao de Orientacao a Objetos . . . . . . . . . . . . . . . . . . 27

4.3.2 Construcao da Interface . . . . . . . . . . . . . . . . . . . . . . . . 27

4.3.3 Captura dos Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

4.3.4 Plotagem dos Graficos . . . . . . . . . . . . . . . . . . . . . . . . . 38

4.3.5 Geracao do Relatorio . . . . . . . . . . . . . . . . . . . . . . . . . . 42

5 Aplicacoes 45

5.1 Aplicacoes do Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

6 Testes em Ambiente Operacional 47

6.1 Descricao do Teste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

6.2 Resultados dos Testes e Possıveis melhorias . . . . . . . . . . . . . . . . . . 48

7 Conclusao e Trabalhos Futuros 52

7.1 Conclusao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

7.2 Sugestoes para Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . 53

Referencias Bibliograficas 54

Page 12: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

Capıtulo 1

Introducao

A demanda por mobilidade dos equipamentos de comunicacao e crescente e tais

equipamentos fixos e robustos estao cada vez menos presentes na sociedade, dando lugar

a outros que podem ser transitados dinamicamente mantendo a mesma conectividade.

Esses equipamentos exercem papeis fundamentais para a sociedade de hoje, seja

como ferramenta de trabalho, como meio de comunicacao, ou apenas para lazer.

Presente hoje em nosso dia a dia, essa mobilidade so foi alcancada com o desen-

volvimento de tecnologias que conseguiram fazer com que o espaco livre e compartilhado

fosse capaz de ser menos desigual em relacao aos meios confinados e exclusivos. Dentre

essas tecnologias que impulsionaram a mobilidade, podemos destacar: o 3G e o 4G da

telefonia movel, e as redes Wi-Fi. Estas tecnologias sao os principais responsaveis por

estas mudancas.

De acordo com pequisa realizada pela Cetic.br, o Wi-fi passou, em 2015, a ser a

rede de conexao preferida dos brasileiros, como pode ser vista no grafico da Figura 1.1.

Tendo em vista essa crescente demanda pela rede Wi-Fi, o presente trabalho visa

a elaboracao de um software que serve de ferramenta para o estudo dos ambientes que

recebem ou receberao esta rede. Ao longo deste, serao abordados todos os temas julgados

necessarios, o desenvolvimento e a aplicacao do software.

Nos Capıtulos 2 e 3, toda a parte teorica que embasa e justifica o desenvolvimento

do software e abordada. Protocolos, meios fısicos e praticas da comunicacao da rede sem

fio sao detalhados, dedicando um unico capıtulo a abordagem do mecanismo de Probe-

request, Probe-response, que age como objeto principal para o estudo do ambiente Wi-Fi

e e a principal ferramenta do protocolo IEEE 802.11 utilizada no desenvolvimento do

Page 13: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

2

Figura 1.1: Comparacao de usuarios Wi-Fi x telefonia movel.[2]

software.

O Capıtulo 4 discorre sobre o programa em si. No inıcio do capıtulo, sao descritos:

a linguagem utilizada com suas bibliotecas e modulos; o Sistema Operacional para o qual

o software foi desenvolvido e as ferramentas que o mesmo proporciona para o desenvolvi-

mento. Na parte central do capıtulo, descrevemos a construcao do software e algoritmos

utilizados. No fim, sao descritas as situacoes em que o software pode ser aplicado.

O Capıtulo 5 descreve as aplicacoes que justificaram a criacao do software.

O Capıtulo 6 descreve e apresenta o resultado de um teste realizado com o software

para o estudo de um ambiente que ja possui redes Wi-Fi operantes.

Por fim, o Capıtulo 7 apresenta a conclusao do trabalho e faz sugestoes para tra-

balhos futuros que possam ser acrescentados no escopo desta ferramenta.

Page 14: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

Capıtulo 2

Padrao IEEE 802.11

O IEEE (Institute of Electrial and Eletronics Engineers) e uma entidade nao-

governamental que une profissionais de diversas areas das engenharias eletrica e eletronica

para o desenvolvimento de padroes. O objetivo e criar e incentivar a interoperabilidade

dos equipamentos e dispositivos. Dentro do IEEE sao criados grupos de trabalho para

estudar e desenvolver padroes para um tipo de tecnologia.[3]

O grupo de trabalho IEEE 802.11 e responsavel por estabelecer os padroes da

entidade IEEE que regulamenta a base da comunicacao sem fio em WLANs (Wireless

Local Area Network) e de todos os equipamento que operam neste tipo de rede. Este

grupo desenvolveu um padrao que e conhecido pelo mesmo nome do grupo de trabalho.

Neste trabalho e tido como referencia o padrao lancado pelo IEEE em 2012, co-

nhecido como IEEE 802.11-2012. Todas as vezes que o padrao IEEE 802.11 for citado no

texto, estara fazendo referencia ao padrao de 2012, pois e a versao em vigor.

Vasto em todo o seu conteudo, ele e subdividido em diversas partes e geracoes, que

suprem toda a abordagem atual de padronizacao para a melhor compatibilidade entre

diferentes fabricantes. Espera-se, com essa padronizacao, que diferentes dispositivos, de

diferentes fabricantes possam utilizar a mesma rede sem fio.

Alem disso o protocolo foi criado para ser totalmente compatıvel a tecnologia Ether-

net, utilizada nas redes com fio atuais. Ou seja, o padrao 802.11 e uma tentativa de criar

uma Ethernet sem fio.

Page 15: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

4

2.1 Elementos de uma WLAN

Antes de entender os conceitos que serao abordados, e necessario identificar os

dispositivos basicos que compoem uma WLAN.

2.1.1 Ponto de Acesso

O Ponto de Acesso e o dispositivo que faz a conexao da infraestrutura de rede

cabeada, como por exemplo a Ethernet, com os dispositivos sem fio.

2.1.2 Estacoes Moveis

As estacoes, ou dispositivos moveis, sao os ”nos”finais da rede e desejam obter o

acesso a infraestrutura. E onde ocorre a interacao com o usuario final. Como exemplos

de estacoes moveis, temos os notebooks, smartphones, tablets, cameras, etc.

2.2 Operacoes de uma WLAN

Nesta abordagem, e preciso entender como e feito o processo de deteccao de sinal

pelo dispositivo movel, processos de associacao e desassociacao dos dispositivos pela po-

tencia associada e fatores fısicos, como os canais da banda de 2.4 GHz e suas interferencias

naturais.

O mecanismo de Probe Request - Probe Response, feito por meio dos quadros Wi-

Fi de mesmo nome, e um dos responsaveis por informar ao equipamento quais sao as

redes Wi-Fi no ambiente e algumas de suas caracterısticas e, portanto, e o principal

procedimento a ser entendido, visto que e atraves desses quadros que o software fara a

leitura do ambiente. Portanto, sera dedicado um capıtulo inteiro para a sua abordagem.

2.2.1 Deteccao do Sinal das Redes Sem Fio de Forma Passiva

Os dispositivos podem detectar as redes sem fio de duas maneiras, passiva ou ati-

vamente. Nesta secao, abordaremos a deteccao passiva, que e utilizada pelos dispositivos

moveis para identificar e utilizar as redes sem fio disponıveis naquele ambiente sem execu-

tar nenhuma atividade.. No proximo capıtulo abordaremos a deteccao ativa, que e feita

atraves do mecanismo Probe Request - Probe Response.

Page 16: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

5

Os dispositivos identificam as diferentes redes sem fio de forma passiva atraves dos

Beacons, que sao quadros enviados pelos pontos de acesso com frequencia, geralmente,

de dez vezes por segundo, com informacoes referentes as configuracoes de suas redes sem

fio ou SSIDs (Services Set Identifier). Estes quadros sao enviados em Broadcast e sem

criptografia a fim de que todos os dispositivos, associados ou nao, identifiquem a rede e

suas configuracoes necessarias como taxas de transmissao e recepcao basicas e requeridas,

e tipo de criptografia, por exemplo.

Dentro desses quadros e nos cabecalhos de quadros IEEE 802.11 encontra-se o BS-

SID (Basic Service Set Identifier), uma sequencia de 6 bytes representados por meio de

algarismos hexadecimais que identifica uma WLAN da interface de radio de um ponto de

acesso. Ou seja, o BSSID identifica o SSID e o ponto de acesso cujo BSS ele pertence.

Este conceito e importante em um ambiente onde ha mais de um ponto de acesso traba-

lhando com o mesmo SSID. Na Figura 2.1 segue o exemplo de um Beacon com o campo

informacao do seu BSSID.

Figura 2.1: Quadro Beacon, capturado pelo software Wireshkark.

Page 17: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

6

Quanto ao processo de identificar a potencia de recepcao dos quadros dos BSSIDs,

existem dois casos a serem analisados: quando os dispositivos estao associados ao BSSID

e quando os dispositivos estao analisando a potencia recebida de BSSIDs aos quais nao

estao associados.

Quando estao associados ao BSSID, os dispositivos verificam a potencia em todos os

quadros que sao recebidos do ponto de acesso em questao, sejam esses quadros destinados

somente a ele ou os quadros de Broadcast.

Quando nao estao associados a eles, os dispositivos analisam as potencias atraves

dos Beacons que recebem dos diferentes BSSIDs, ou por meio do mecanismo de Probe-

Request, Probe-Response. O mecanismo Probe-Request, Probe-Response sera analisado

com mais detalhes no proximo capıtulo.

2.2.2 Processos de Associacao e Desassociacao

O conceito de associacao e desassociacao dentro do IEEE 802.11 e melhor entendido

quando abordado junto ao conceito de autenticacao e desautenticacao. Alem desses, ainda

serao abordados os conceitos de Roaming e Reassociacao.

Para entender esses processos, e necessario separar dois cenarios distintos: quando

ha um unico BSS, ou seja, apenas um ponto de acesso para um SSID ; e quando ha um

ESS (Extended Service Set), ou seja, mais de um ponto de acesso para um unico SSID.

Na Figura 2.2, segue a ilustracao do BSS e do ESS.

Nesta figura, identifica-se que um ESS e um conjunto de BSSs, ou seja, sempre

que ha um ESS havera, no mınimo, dois BSSs.

Se houver um unico BSS, haverao apenas os processos de autenticacao e desauten-

ticacao, junto ao processo de associacao e desassociacao.

O processo de associacao do dispositivo movel com o ponto de acesso sempre se da

depois da autenticacao. Esta ocorre de duas maneiras distintas, de acordo com o primeiro

padrao IEEE 802.11: Open System Authentication, que e a autenticacao mais basica, onde

so ocorre uma troca de quadros de identificacao entre ponto de acesso e dispositivo final; e

o Shared Key Authentication, que so sera bem sucedida se os dois dispositivos envolvidos

tiverem um tipo de chave de seguranca configurada neles. Esta ultima nao e mais utilizada

nas novas geracoes do IEEE 802.11, portanto nao seguira nos nossos estudos.

Depois do sucesso da autenticacao dos dispositivos comeca o processo de associacao.

Page 18: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

7

Figura 2.2: Conceito de BSS e ESS.[4]

Este so tera sucesso se preencher alguns requisitos: o dispositivo movel conseguir alcancar

a taxa mınima requerida pelo ponto de acesso; e no caso de uma rede com criptografia,

fornecer a senha correta do SSID em questao. So a partir da associacao, o dispositivo

esta pronto para, entao, utilizar a infraestrutura do BSS em questao.

O processo de desassociacao se da atraves de uma notificacao, que varia de sen-

tido de acordo com quem decide pela desassociacao. Podera ocorrer quando o ponto de

acesso for retirado da rede por algum motivo, quando o dispositivo movel nao conseguir

uma potencia que garanta um taxa mınima de associacao, quando o dispositivo movel se

desassociar ao desligar o sistema operacional ou quando houver um processo de desau-

tenticacao, lembrando que, para estar associado e necessario que haja uma autenticacao

anterior.

Na Figura 2.3, observa-se a ordem dos processos de Autenticacao e Associacao,

assim como a Desautenticacao e a Desassociacao.

No caso do ESS, alem de entender os processos que ocorrem no caso anterior,

tambem e necessario atentar-se ao Roaming e ao processo de Reassociacao.

Estes processos estao estritamente ligados, visto que um processo so acontece apos

a ocorrencia do outro, da seguinte maneira:

O Roaming e o processo que fornece a capacidade dos dispositivos moveis de tro-

Page 19: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

8

Figura 2.3: Processos de Autenticacao e Associacao.[5]

carem de BSSID sem trocarem de SSID, ou seja, o dispositivo movel consegue se associar

a outro ponto de acesso que contenha a mesma rede sem fio, de forma automatica, e a

essa nova associacao a um mesmo SSID e chamada de Reassociacao.

Por esse motivo, so faz sentido abordadar esse conceito quando se trata de ESSs,

pois sao necessarios diferentes BSSIDs com um mesmo SSID.

Essa decisao de troca de BSSIDs ocorre, normalmente, por uma decisao do dis-

positivo movel, que leva em conta para sua decisao, a potencia recebida dos pontos de

acesso, assim como, o nıvel de ruıdo e a taxa de erro de bits. Os valores destes requisitos

variam de acordo com as especificacoes do fabricante.

Durante este processo de Reassociacao, o futuro ponto de acesso envia uma noti-

ficacao ao atual, para que este envie os dados de Buffer referentes ao dispositivo movel

que esta se reassociando. So depois dessa informacao retornar ao futuro ponto de acesso

que a Reassociacao pode ser concluıda. Este processo de comunicacao entre os pontos de

acesso se da via DSM (Distribution System Medium), que e o Backbone que conecta os

pontos de acesso fisicamente. A maneira que ocorre esse processo nao esta definida no

Page 20: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

9

protocolo IEEE 802.11. Os fabricantes estao livres para criar e implementar protocolos

que realizam esta funcao.

Existem tambem algumas praticas que nao estao definidas no protocolo IEEE

802.11 utilizadas pelos fabricantes dos pontos de acesso, que forcam os dispositivos finais

a mudarem de ponto de acesso manipulando valores de potencia de recepcao em Beacons,

por exemplo.

Na Figura 2.4, a seguir, ilustra-se um processo de Roaming.

Figura 2.4: Roaming.[6]

Esta demonstrada na Figura 2.4 uma troca de BSSs, por um dispositivo movel,

sem trocar o SSID ao qual esta associado. Esta troca pode ter sido feita pelo aumento

da potencia recebida do sinal de um BSS em relacao ao outro, por exemplo.

2.3 Potencia de Recepcao x Taxa de Associacao

A relacao potencia x taxa de associacao esta diretamente ligada a tecnologia apli-

cada no enlace (IEEE 802.11b, IEEE 802.11g, IEEE 802.11n, IEEE 802.11ac, entre outras)

assim como as especificacoes do fabricante das antenas, dos ponto de acessos e ate mesmo

dos dispositivos finais. Essa ligacao com a tecnologia provem do fato de que a cada nova

”versao”do IEEE 802.11, novos metodos de criptografia, codificacao, correcao de erros, etc.

sao lancados e, a partir disso, consegue-se um melhor aproveitamento da banda utilizada.

Page 21: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

10

2.3.1 RSSI e Potencia de Recepcao

E interessante ressaltar que deteccao do sinal feita pela interface Wi-Fi e a con-

versao do nıvel de sinal recebido para a unidade ”dBm”pelos dispositivos Wi-Fi e muito

deficiente em questoes de precisao e nao possui um padrao definido. A interface realiza a

medicao do sinal pelo nıvel de energia recebido em cada quadro e da a isso o nome de RSSI

(Receive Signal Strenght Indicator). A partir do RSSI, cada fabricante pode decidir como

relacionar isso a um nıvel de potencia. Essa conversao, entretanto, nao e mandatoria.[14].

Tambem e importante observar que um equipamento que realiza medicoes com

alta precisao tem um custo muito elevado e necessita constantemente de calibracao. Os

dispositivos Wi-Fi, geralmente, nao tem um aparelho de medicao precisa e muito menos

passa por algum tipo de calibracao ao longo do tempo de uso do mesmo. Pode-se concluir,

portanto, que existe um alto nıvel de erro associado as medicoes realizadas por esses

dispositivos.

2.3.2 Taxa de Associacao

Antes de tentar analisar essa relacao ”Potencia x Taxa de Associacao”, e necessario

identificar as tecnologias e suas taxas especificadas por protocolo, que serao abordadas no

software.

O protocolo IEEE 802.11b, publicado no ano de 1999, contem dois tipos de tecno-

logias, a DSSS (Direct Sequence Spread Spectrum), que especifica taxas de 1 e 2 Mbps,

e a HR-DSSS (High-Rate DSSS ), que especifica taxas de 5,5 e 11 Mbps. Este protocolo

continuou compatıvel com o legado dos dispositivos que usavam IEEE 802.11 com tec-

nologia DSSS. Estas tecnologias requerem um largura de banda de canal igual a 22MHz,

devido as suas caracterısticas de codificacao de bits e a largura das suas subportadoras.

O protocolo IEEE 802.11g, que foi publicado no ano de 2003, veio com uma nova

tecnologia denominada ERP (Extended Rate Physical), com duas formas mandatorias de

organizarem suas informacoes na banda de 2,4GHz: o ERP-OFDM (Extended Rate Phy-

sical - Ortogonal Frequency Division Multiplexing), que utiliza a tecnologia OFDM, criada

para o protocolo IEEE 802.11a aplicada na banda de 5GHz, e fixa as taxas mandatorias

6, 12 e 24 Mbps; e o ERP-DSSS para manter a compatibilidade com as tecnologias DSSSs

das geracoes anteriores que fixam as taxas de 1, 2, 5,5 e 11 Mbps. Alem dessas tecnologias

mandatorias ERP, ainda existem mais duas opcionais, alem das taxas tambem suportadas

Page 22: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

11

de 9, 18, 36 e 54 Mbps.

O protocolo IEEE 802.11n, que foi publicado no ano de 2009, estabelece normas

para as duas bandas alocadas para as redes sem fio, 2,4 e 5 GHz. Este protocolo esta-

belece o conceito HT (High Throughput, que utiliza a tecnologia MIMO (Multiple-input,

Multiple-output e, junto com a tecnologia OFDM, conseguiu estabelecer taxas ainda maio-

res paras as comunicacoes de rede sem fio. Para manter a compatibilidade com as geracoes

anteriores estao definidas as taxas de 6 Mbps a 54Mbps, porem, de acordo com a modu-

lacao, codificacao, entre outros fatores, sao capazes de chegar a taxas de 600 Mbps em

condicoes ideais.

Tendo conhecimento dessas taxas e necessario entender que a analise da potencia,

sem levar em conta o ruıdo do ambiente, podera dar uma ideia erronea da taxa com a qual

o dispositivo final estara associado ao ponto de acesso. Isso se da pois o ruıdo do ambiente

podera contribuir com a queda da taxa de transmissao/recepcao, pois a integridade dos

quadros podera estar comprometida.

Portanto, nao e possıvel estabelecer com precisao uma potencia associada a uma

taxa, mas atraves da especificacao de um fabricante, como segue na Figura 2.5, pode-se

ter uma ideia de quais valores de potencia em dBm conseguem as taxas de transmissao/-

recepcao que sao utilizada nos enlaces estudados.

Entender esses valores e importante para a compreensao das informacoes que serao

retiradas do software. Quais numeros sao ideais, quais sao suficientes e quais sao insus-

tentaveis, de acordo com o projeto. Alem de entender, com a ausencia de um analisador

de ruıdo, ate onde vai a eficiencia do software para a elaboracao ou analise do ambiente

Wi-Fi.

Page 23: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

12

Figura 2.5: Potencia x Taxa de Associacao, Data Sheet do ponto de acesso 7522 da

Extreme Networks.[7]

Page 24: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

13

Nesta imagem verificar-se as taxa que o ponto de acesso consegue se comunicar

com os dispositivos, de acordo com a potencia de recepcao relacionada.

Este valores indexados de MCS (Modulation ande Coding Scheme) dizem quais

taxas sao alcancadas de acordo com a modulacao, largura de canal, codificacao, intervalo

de guarda e o numero de fluxos espaciais. Os valores desses ındices sao identificados em

tabelas de MCS, definidas por este protocolo e o IEEE 802.11ac.

Estas tabela pode ser consultada publicamente no site www.mcsindex.com.

2.4 Banda ISM de 2,4 GHz

A ISM Band (Industrial, Scientifc and Medical Radio Bands) e uma banda no

espectro de radio que esta reservada, para o uso da Industria, Ciencia e Medicina, alem

de outras aplicacoes de Telecomunicacoes. As redes IEEE 802.11 estao planejadas para

ocuparem duas faixas distintas da ISM Band: a banda de 2,4 GHz, que vem sendo utilizada

desde o inıcio da aplicacao das redes sem fio, e a banda de 5 GHz, que foi incluıda

posteriormente.

Muitos dispositivos ainda nao operam na banda de 5GHz, portanto, nos aprofun-

daremos na faixa de 2,4GHz.

2.4.1 Especificacoes

A banda de 2,4 GHz ISM tem um largura de 83,5 MHz, entre 2,4 e 2,4835 GHz,

divididos em 14 canais, sendo os 13 primeiros espacados de 5 MHz de suas frequencias

centrais e o ultimo canal espacado de 8 MHz do penultimo. Entretanto, nem todos estes

canais estao legalizados para serem utilizados pelas redes sem fio em todos os paıses. No

Brasil, estao em operacao os canais ilustrados na Figura 2.6.

A largura desses canais utilizados varia de acordo com a tecnologia empregada. A

tecnologia DSSS, como pode ser verificado na Figura 2.7, utiliza uma largura de banda

de 22MHz a partir do protocolo IEEE 802.11b. A tecnologia OFDM utiliza a largura

de 20MHz por canal a partir dos protocolos IEEE 802.11g e IEEE 802.11n. Este ultimo

tambem especifica uma largura de 40 MHz. A ilustracao desses canais pode ser verificada

na Figura 2.8

Page 25: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

14

Figura 2.6: Canais Wi-Fi em operacao Brasil.[8]

Figura 2.7: Canais da tecnologia DSSS.[9]

Analisando as figuras anteriores, independente da tecnologia utilizada, com largura

de canal de 20 ou 22MHz, os canais 1, 6 e 11 nao se sobrepoem. Portanto, sao os canais

mais aconselhaveis para utilizacao, visto que canais que se sobrepoem acrescentam e sofrem

de ruıdos dos demais canais.

Verifica-se ainda que na banda de 2,4 GHz, quando utilizada uma largura de canal

de 40 MHz, pode-se alocar apenas um canal, visto que qualquer outro canal de 40 MHz

ira se sobrepor a ele.

Dessa forma, estudos de canais sao importantes para conseguir um ambiente mais

propıcio para taxas mais elevadas nas comunicacoes das redes sem fio.

Page 26: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

15

Figura 2.8: Canais de largura 20 MHz e 40 MHz da tecnologia OFDM.[10]

Page 27: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

Capıtulo 3

Probe-request, Probe-response

Como foi dito no capıtulo anterior, os dispositivos moveis identificam as redes sem

fio do ambiente de duas maneiras distintas: de forma passiva (atraves dos quadros de

Beacons), ou de forma ativa (quadros de Probe-request e Probe-response).

No desenvolvimento do software foi avaliado que a melhor maneira de analisar

o ambiente Wi-Fi seria atraves do mecanismo de Probe-request e Probe-response pois o

proprio hardware, que rodara a aplicacao, enviara estes quadros para colher as informacoes

do ambiente, tendo a analise de forma mais rapida em relacao a forma passiva, que precisa

esperar os beacons dos pontos de acesso para colher essas mesmas informacoes.

Portanto, este capıtulo discorrera mais sobre a deteccao ativa que e o mecanismo

base do software.

Os quadros de Probe-request sao classificados como quadros de gerenciamento e sao

enviados pelos dispositivos moveis a fim de identificar as redes sem fio disponıveis e todas

as suas caraterısticas a partir dos quadros que sao enviados, como forma de resposta,

pelos pontos de acesso, os Probe-response. Estes quadros podem ser enviados tanto para

um especıfico SSID (direct probe request), como para qualquer SSID (null probe request)

que contenha no ambiente.

Quando o dispositivo quer descobrir outros pontos de acesso que contenham o SSID

ao qual esta associado, ele envia um quadro de Probre-request com o campo referente a

identificacao do SSID preenchido. Quando o dispositivo quer descobrir todas as redes

do ambiente, ele envia o Probe-request com o campo reservado para o SSID vazio. Este

procedimento pode ser visualizado na Figura 3.1.

Estes quadros sao enviados em Broadcast em todos os canais disponıveis no disposi-

Page 28: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

17

Figura 3.1: Probe-request, Probe-response. Grafico Espacial

tivo final. Ele pode ser feito sem estar associado a nenhum ponto de acesso, ou associado

a algum. A frequencia com que isso e feito varia de acordo com o fabricante e o tipo

de dispositivo, uma vez que este procedimento facilita o Roaming, e dispositivos como

notebooks ou smartphones tem dinamicas diferentes de circulacao no ambiente.

A Figura 3.2 ilustra o procedimento de deteccao ativa de sinal (Probe-request,

Probe-response), seguido por uma autenticacao da rede de um ponto de acesso e a asso-

ciacao, ate a troca de dados.

Page 29: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

18

Figura 3.2: Probe-request, Probe-response.Grafico Temporal [11]

Page 30: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

Capıtulo 4

Desenvolvimento do Software

O software desenvolvido e uma ferramenta de analise de ambientes Wi-Fi. Proprio

para redes que trabalham na faixa de 2,4 GHz, ele analisa as WLANs que utilizam esta

banda, tanto para ajudar na elaboracao de um novo projeto de cobertura Wi-Fi, quanto

para o estudo da uma WLAN existente. Atraves de seus graficos dinamicos e relatorios e

capaz de identificar problemas e possıveis melhorias relativo a rede analisada.

Antes de explicar o funcionamento e a elaboracao do software, e necessaria uma

pequena abordagem sobre as ferramentas que tornaram possıvel o seu desenvolvimento,

o que sera feito nos itens a seguir.

4.1 Linux

Mais do que uma ferramenta, o Linux e um Sistema Operacional, capaz de gerenciar

todos os recursos de hardware presentes em sua maquina.

O Linux e a base para diferentes distribuicoes, como Ubuntu e Fedora. Com o

codigo aberto, possibilita que milhares de desenvolvedores ao redor do mundo contribuam

para a sua melhoria. Possui, tambem, grande quantidade de ferramentas que facilitam o

gerenciamento de redes com e sem fio.[12]

Devido a essas caracterısticas, foi utilizado o Linux, mais precisamente a distribui-

cao Ubuntu versao 16.04.3 LTS, e suas ferramentas proprias para o desenvolvimento do

software. Neste processo, foi de fundamental importancia, dentre as ferramentas utiliza-

das, o programa iwlist.

Page 31: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

20

4.1.1 Programa iwlist

Programa utilizado para apresentar os dados que serao estudados no software, o

iwlist e proprio do Linux, sendo responsavel por recolher informacoes sobre as redes Wi-Fi

do ambiente. Seu uso foi feito por meio do comando iwlist <interface> scanning e a saıda

do mesmo esta ilustrada na Figura 4.1.

Utilizando o mecanismo probe-request, probe-response, que foi explicado neste tra-

balho, o iwlist foi essencial para gerar os valores das potencias de recepcao dos sinais das

redes Wi-Fi do ambiente. O iwlist fornece uma gama de informacoes sobre os BSSs que

estao operando, como potencia de recepcao, tipo de criptografia, BSSID, SSID, etc.

Figura 4.1: Saıda do Comando iwlist

O comando precisa ser executado com privilegios de administrador para que todas

as informacoes sejam adquiridas. Cada vez que o comando e executado, a interface Wi-

Fi envia quadros Probe-Request para todos os canais permitidos e espera os quadros

Probe-Response com as informacoes de cada BSS. Caso o comando seja executado sem os

Page 32: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

21

privilegios de administrador, ele captura informacoes antigas que nao sao uteis no escopo

do software.

4.1.2 O Programa gnuplot

O gnuplot e um programa do Linux para geracao de graficos 2D e 3D, exportando-

os nos mais variados arquivos. Possui uma interface de linha de comando, na qual e

possıvel determinar parametros para a geracao dos graficos e quais sao as fontes de dados

para a plotagem dos mesmos.

Segue um exemplo de determinacao de parametros e geracao de um grafico a partir

do gnuplot :

Figura 4.2: Arquivo Gnuplot

4.2 Python

4.2.1 Descricao

A linguagem de programacao utilizada para escrever o codigo do software e Python.

E uma linguagem de alto nıvel, por ter sintaxe e nıvel de abstracao muito semelhantes

a linguagem humana, permitindo que o codigo fique mais facil de ser entendido e mais

simples de ser elaborado. Outra caracterıstica importante e o fato de mesclar paradigmas

de programacao estruturada e orientacao a objetos, o que permite ao programador utiliza-

la tanto para simples tarefas que sao executadas em sua propria linha de comando, quanto

para elaborar grandes classes para projetos complexos.[13]

Foi utilizada a versao 2.7 do Python para a elaboracao do programa.

Page 33: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

22

Sintaxe

Python possui uma sintaxe simples, moderna e clara, facilmente entendida, como

pode-se observar no pedaco de codigo adiante:

1 de f 10 porcento ( va lordaconta ) :

2 re turn va lordaconta ∗1 .1

3

4 p r in t ”O va lo r da conta f o i : ” + s t r (10 porcento (50) )

Nele e criada uma funcao chamada 10porcento que calcula o valor da final da

conta com os 10% do garcom acrescidos. Pode-se observar que a organizacao das su-

bordinacoes do codigo e feita diretamente por nıveis de tabulacao, sem a necessidade de

insercao de caracteres especiais.

Estruturas

Python tambem possui excelentes estruturas para analise de dados cientıficos, ope-

racao que e base do software - entre elas estao seus dicionarios e suas listas. Segue exemplo

de codigo:

1 l i s t a 1 = [10 , 20 , 30 , 50 , 60 ]

2 l i s t a 2 = [ ’ amarelo ’ , ’ branco ’ , ’ vermelho ’ , ’ azu l ’ ]

3 l i s t a 3 = [ 2 . 5 , 7 . 899 , 6 . 3 325 ]

4

5 d ic1 = { ’ l i s t a i n t e i r o s ’ : l i s t a 1 , ’ l i s t a c o r e s ’ : l i s t a 2 , ’ l i s t a r e a i s ’ : l i s t a 3 }

6

7 p r in t d ic1 [ ’ l i s t a i n t e i r o s ’ ]

Nele, sao criadas 3 listas, cada uma com um tipo: a primeira com inteiros, a

segunda com strings e a terceira com numeros reais. E interessante ressaltar que nao e

necessario informar o tipo de variavel a ser declarada, nem declara-la anteriormente. Em

seguida, e criado um dicionario. Este tipo de estrutura recebe como elemento qualquer

outro tipo de dado, desde que imutavel, e os elementos sao reconhecidos por sua string

chave. No exemplo acima, a linha 7 imprime os elementos da lista1. A estrutura de

dicionarios e um elemento chave para a analise e tratamento de dados do software.

Page 34: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

23

Orientacao a Objetos

A orientacao a objeto faz parte da espinha dorsal do software por proporcionar

a referencia a um atributo da classe principal em qualquer um de seus metodos e em

qualquer parte do codigo a partir da instanciacao de um objeto desta classe. O codigo

abaixo exemplifica essa caracterıstica:

1 c l a s s Complexo :

2 de f i n i t ( s e l f , pa r t e r ea l , parteimag ) :

3 s e l f . r = pa r t e r e a l

4 s e l f . i = parteimag

5

6 x = Complexo ( 3 . 0 , −4.5)

7 x . r , x . i

8 ( 3 . 0 , −4.5)

Neste codigo, e definida uma classe chamada Complexo na linha 1 e seu construtor

na linha 2. A classe recebe duas variaveis como entrada na sua construcao: partereal e

parteimag e associa as duas a seus atributos self.r e self.i, respectivamente. A utilizacao

do operador self e necessaria para ajudar na compreensao de que as variaveis que o seguem

sao atributos da classe.

Depois da definicao, o objeto x e instanciado como um objeto da classe Complexo.

Com isso, pode-se referenciar os atributos, agora do objeto x, em qualquer parte do codigo

escrevendo x. seguido do atributo.

Instalador pip

O Python possui uma ferramenta para instalacao de suas bibliotecas, conhecida

como pip. Para instalar bibliotecas a partir do pip, e utilizado o comando abaixo:

pip install <biblioteca>

4.2.2 Bibliotecas Utilizadas

Inumeras bibliotecas da linguagem Python sao utilizadas no codigo do software cujo

desenvolvimento e o objetivo principal deste trabalho. Apesar disso, somente algumas

delas, cujas caracterısticas sao mais relevantes, serao descritas nesta subsecao. Sao elas:

Page 35: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

24

• os : Execucao de comandos do SO Linux dentro do codigo Python

• Tkinter : Construcao da interface grafica

• matplotlib: Contrucao e atualizacao dos graficos dinamicos

• Gnuplot : Construcao dos graficos dos relatorios em PDF

os

A biblioteca os, mais especificamente o metodo os.popen(”comando”), permite que

o desenvolvedor execute comandos do shell do Sistema Operacional no qual o Python esta

instalado e copie a saıda destes comandos para uma variavel/arquivo dentro do Python.

Para trabalhar com a saıda deste comando, e necessario executar uma leitura nesta

variavel de saıda e armazenar esta informacao como string em outra variavel.

No contexto do software desenvolvido, este metodo tem a funcao de executar o

comando iwlist e receber a sua saıda para que seja feito o tratamento de dados.

Na descricao do desenvolvimento do software, e detalhado o procedimento de ad-

quirir e tratar esses dados.

Tkinter

A biblioteca Tkinter foi utilizada para a construcao da interface grafica do software.

E nativa do Python, ou seja, ao instala-lo, a biblioteca Tkinter tambem sera instalada.

Basta que a biblioteca seja importada no codigo para que se possa trabalhar com ela.

O Tkinter possui alguns elementos comuns a toda interface grafica. Sao eles:

• Containers: e analogo a uma caixa onde sao colocados outros elementos graficos

dentro. Um container pode ser uma janela, ou uma divisao interna dela.

• Widgets: sao os elementos que sao colocados ”dentro” de um container, geralmente

fornecendo informacoes ou interacao com o usuario. Exemplos: botoes, textos,

graficos, etc.

• Event Handler: e a funcao que trata um evento. Ao clicar um botao, um evento e

acionado; o event handler determina o que sera feito a partir desse momento.

• Event Loop: loop que aguarda o acionamento de um evento e aciona o event handler

Page 36: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

25

Toda a interface grafica e construıda a partir da instanciacao da janela principal.

Essa janela e criada usando o metodo Tk(). Apos a criacao da janela principal, comecam

a ser criados os outros elementos: containers e widgets. Por fim, e executado o metodo

mainloop() que inicia o event loop da janela principal. Somente apos o fechamento da

janela, o codigo abaixo do metodo mainloop e executado. Segue exemplo:

1 import Tkinter

2

3 root = Tkinter .Tk( )

4 root . mainloop ( )

Tambem e possıvel associar elementos do Tkinter a classes. Essa ferramenta foi

usada no desenvolvimento do software para facilitar a referencia aos atributos da interface

grafica.[15]

matplotlib

O matplotlib e uma biblioteca usada para a criacao de graficos 2D. Essa biblioteca

e baseada no software MATLAB e muitos dos seus metodos e elementos sao os mesmos

do MATLAB.

No trabalho em questao, foi usada para a plotagem dos graficos dinamicos de RSSI

versus Tempo.

Foi feita uma integracao do Tkinter com o matplotlib para poder usar suas figuras

dentro dos containers e widgets do Tkinter.

Gnuplot

Foi utilizada a biblioteca Gnuplot para a geracao dos relatorios em PDF. Ela per-

mite que sejam executados comandos e determinados parametros do gnuplot (programa

de geracao de graficos do Linux) dentro do Python.

Segue um exemplo de script Python para a geracao de um grafico:

1 import Gnuplot

2

3 g = Gnuplot . Gnuplot ( )

4 g . t i t l e ( ”TESTE”)

Page 37: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

26

5

6 g . x l ab e l ( ”x ”)

7 g . y l ab e l ( ”y ”)

8

9 g ( ” s e t g r id ”)

10 g ( ” s e t x t i c 10 ”)

11 g ( ” s e t y t i c 1 ”)

12

13 x = [ 1 , 2 , 3 , 4 , 5 , 6 ]

14

15 y1 = [ 1 , 2 , 3 , 4 , 5 , 6 ]

16

17 d1 = Gnuplot . Data (x , y1 , with =” l i n e s ”)

18

19 g ( ” s e t te rmina l pdf monochrome enhanced s i z e 30cm,15cm”)

20 g ( ” s e t output ’/home/devbru ubuntu/Dropbox/TCC/ t e s t e . pdf ’ ”)

21 g . p l o t ( d1 )

22

23 de l g

Como dados de entrada do Gnuplot utilizou-se listas do Python e foram setados os

parametros atraves de strings.

Deve-se criar uma instancia do Gnuplot com o metodo tambem chamado de Gnu-

plot e, entao, alterar os parametros para a geracao dos graficos. O metodo Data e

responsavel por receber os dados como uma lista e o metodo plot gera o grafico em si.

4.3 Explicacao do Codigo Fonte

O Software foi construıdo utilizando a linguagem Python e fez uso de varios recursos

da mesma, alem de ferramentas do Sistema Operacional Linux.

O objetivo desta secao e descrever algumas partes relevantes do codigo fonte que

proporcionam todas as funcionalidades e o seu consideravel desempenho. Tal descricao,

entretanto, nao sera exatamente fiel ao codigo fonte para nao sobrecarregar o leitor, uma

vez que serao utilizadas adaptacoes mais didaticas para facilitar a compreensao. Alem

disso, nem todas as linhas do codigo serao descritas aqui pelo mesmo motivo.

Page 38: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

27

4.3.1 Utilizacao de Orientacao a Objetos

Para facilitar a construcao e manter a coesao e organizacao do codigo fonte, foi

utilizado o paradigma de Orientacao a Objeto, caracterıstica importante da linguagem

Python.

Foi criada uma classe WiFind que possui diversos atributos e metodos. Esta classe

tem, como argumento de entrada de seu construtor, a variavel que recebeu o metodo Tk()

do Tkinter. Esta variavel possui, portanto, uma referencia a janela principal da interface

grafica.

O codigo a seguir mostra como essa criacao e a instanciacao do objeto sao feitas:

1 de f i n i c i a i n t e r f g r a f i c a ( ) :

2 root = tk .Tk( )

3 o b j e t o p r i n c i p a l = WiFind ( root )

4 root . mainloop ( )

5

6 # Classe P r i n c i pa l

7 c l a s s WiFind :

8 de f i n i t ( s e l f , top=None ) :

A funcao inicia interf grafica() e responsavel por instanciar o objeto principal

que e da classe WiFind. Ele passa como argumento a variavel root que e a janela

principal.

No construtor da classe WiFind observa-se as variaveis self e top. A variavel

self e utilizada para fazer referencia a atributos e metodos da propria classe e a variavel

top faz referencia a janela principal.

Os metodos e atributos da classe WiFind serao explicados nas proximas subsecoes.

4.3.2 Construcao da Interface

Conforme citado na secao 4.3.1, a construcao da interface grafica foi realizada por

meio da biblioteca Tkinter. Para isso, e necessario importa-la no inıcio do codigo, e nao e

necessaria a instalacao desta biblioteca na versao do Linux que foi utilizada. A biblioteca

e uma ferramenta nativa da instalacao do Python.

Page 39: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

28

Importacao da Biblioteca

A biblioteca e importada da seguinte forma:

1 ## Bib i o t e ca s do Tkinter para i n t e r f a c e g r a f i c a

2 import Tkinter as tk

3

4 ## Themed Tkinter

5 import t tk

A biblioteca e importada usando a variavel tk para facilitar sua referencia futura-

mente. Tambem foi importada a biblioteca ttk, uma versao com alguns recursos a mais

do Tkinter.

A criacao da janela principal foi explicada na secao anterior. Nela serao colocados

os containers e widgets da interface grafica do software.

Criacao dos Frames/Containers

O software tem dois Frames (ou containers) principais: O container das Abas, que

e um Notebook e o Frame do Tıtulo. Esses Frames sao os containers que receberao os

widgets de Label (Texto), botoes, caixas de selecao, imagens e os graficos. Segue o codigo

da criacao do Frame do Tıtulo:

1 #Criacao do Frame do t i t u l o

2 s e l f . Frame Titulo = tk . Frame( top ) # cr iando frame

3 s e l f . Frame Titulo . p lace ( r e l x =0.0 , r e l y =0.0 , r e l h e i g h t =1.0 , r e lw id th =0.2) #

dimensoes

4 s e l f . Frame Titulo . c on f i gu r e ( r e l i e f=tk .GROOVE)

5 s e l f . Frame Titulo . c on f i gu r e ( borderwidth=”2 ”)

6 s e l f . Frame Titulo . c on f i gu r e ( background=”#f fbd4a ”)

7

8 # Criacao do Container Abas

9 s e l f . Container Abas = ttk . Notebook ( top )

10 s e l f . Container Abas . p lace ( r e l x =0.2 , r e l y =0.0 , r e l h e i g h t =1.0 , r e lw id th =0.8)

11 s e l f . Container Abas . c on f i gu r e ( take f o cus=””)

12

13 #Criacao do frame da Aba SSID

14 s e l f . Aba SSID = tk . Frame( s e l f . Container Abas )

Page 40: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

29

15 s e l f . Aba SSID . c on f i gu r e ( background = ”#666666 ”)

16 s e l f . Container Abas . add ( s e l f . Aba SSID , padding=3)

17 s e l f . Container Abas . tab (0 , t ex t=”Scan por SSID” , unde r l i n e=”−1” , )

18

19 #Craicao do frame da Aba Geral

20 s e l f . Aba Geral = tk . Frame( s e l f . Container Abas , background=”#666666 ” , )

21 s e l f . Aba Geral . c on f i gu r e ( background = ”#666666 ”)

22 s e l f . Container Abas . add ( s e l f . Aba Geral , padding=3)

23 s e l f . Container Abas . tab (1 , t ex t=”Scan Geral ” , unde r l i n e=”−1” , )

O Frame do tıtulo e criado com o metodo tk.Frame. Tambem e passado como

parametro a variavel que faz referencia a janela principal, pois o Frame esta subordinado

diretamente a ela. A janela, a qual um Frame ou Widget e subordinado, e chamada de

mestre.

Na segunda linha pode-se observar o metodo place, metodo que insere o widget na

posicao delejada. As variaveis relx e rely sao as posicoes relativas do Frame no sistema

de coordenadas em relacao ao seu mestre, que e a janela principal. relheight e relwidth

seguem o mesmo raciocınio, mas em relacao a altura e largura, respectivamente. Na

terceira linha, e decidido como sera a borda do Frame. No caso em questao, foi escolhida

a borda com modo destacado e na quarta linha a largura da borda e configurada para ter 2

pixels. Na quinta linha, e escolhida a cor de fundo do Frame com um codigo hexadecimal

de cores.

No Frame do Tıtulo, sao inseridos widgets que estao relacionados ao tıtulo, aos

autores e a legenda do grafico.

Outro container criado e o self.Container Abas. Este container nao e um Frame,

mas sim um Notebook. O Notebook e criado com o metodo ttk.Notebook. E um widget

da biblioteca ttk. Nele e possıvel criar abas para que o usuario selecione qual aba estara

em destaque.

Cada aba do Notebook e um Frame e e criado da mesma forma que o Frame do

tıtulo. Foram criadas duas abas: self.Aba SSID, onde serao plotados os graficos de RSSI

para um SSID unicamente; e a aba self.Aba Geral onde serao plotados os graficos de

RSSI de todos os SSIDs encontrados de uma so vez.

Page 41: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

30

Criacao de Outros Widgets Basicos

Os botoes, labels e listas ”dropdown”sao widgets simples que estao presentes nos

dois Frames principais do software. O codigo a seguir mostra a insercao deles:

1 #Inse r cao de Label

2 s e l f . Label EscolherSSID = tk . Label ( s e l f . Aba SSID)

3 s e l f . Label EscolherSSID . p lace ( r e l x =0.1 , r e l y =0.008 , r e l h e i g h t =0.04 ,

r e lw id th =0.3)

4 s e l f . Label EscolherSSID . c on f i gu r e ( act ivebackground=”#666666 ”)

5 s e l f . Label EscolherSSID . c on f i gu r e ( background=”#666666 ”)

6 s e l f . Label EscolherSSID . c on f i gu r e ( foreground=”white ”)

7 s e l f . Label EscolherSSID . c on f i gu r e ( t ex t= ’ ’ ’ Escolha o SSID : ’ ’ ’ )

8

9 #Inse r cao de dropdown l i s t

10 s e l f . dropdownSSID = ttk . Combobox( s e l f . Aba SSID , t e x t v a r i a b l e=s e l f . va r i ab l e ,

s t a t e=”readonly ” , va lue s=s e l f . DICSSIDs . keys ( ) )

11 s e l f . dropdownSSID . p lace ( r e l x =0.1 , r e l y =0.05 , r e l h e i g h t =0.04 , r e lw id th =0.3)

12

13 #Inse r cao de botao

14 s e l f . Button PlotarSSID = tk . Button ( s e l f . Aba SSID , image=s e l f .

Imagem BotaoSSID , j u s t i f y=tk .LEFT,

15 command = lambda

16 arg1 = ”Button PlotarSSID ” ,

17 arg2 = 1 ,

18 arg3 = ”Opcao por SSID e s c o l h i d a ! ” :

19 s e l f . buttonHandler ( arg1 , arg2 , arg3 ) ) # Faz a imagem aparecer no lugar

do botao Plotar . No caso , o botao eh a propr ia imagem

20 s e l f . Button PlotarSSID . p lace ( r e l x =0.4 , r e l y =0.03 , r e lw id th =0.2)

21 # Para f a z e r com que soh a imgagem s e j a v i s ta , prec i samos co l o c a r o botao

com borda nula , e cor de fundo i gua l a cor de fundo do conta ine r onde

e l e e s ta

22 s e l f . Button PlotarSSID . c on f i gu r e ( act ivebackground=”#666666 ”)

23 s e l f . Button PlotarSSID . c on f i gu r e ( background=”#666666 ”)

24 s e l f . Button PlotarSSID . c on f i gu r e ( d i s ab l ed fo r eg round=”#666666 ”)

25 s e l f . Button PlotarSSID . c on f i gu r e ( h igh l ightbackground=”#666666 ”)

26 s e l f . Button PlotarSSID . c on f i gu r e (bd=0)

A insercao de um Label e semelhante a insercao de um Frame, com algumas diferen-

Page 42: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

31

cas: o mestre nao e a janela principal, e sim, no caso do label self.Label EscolherSSID,

o Frame self.Aba SSID. Na linha 7 e escolhido o texto a ser apresentado no label.

A dropdown list e criada com o metodo ttk.Combobox. Como parametros sao

passados: seu mestre; o estado, que diz se sera possıvel editar a lista ou nao; e os valores

que popularao a lista. No caso em questao, os valores que popularao a lista sao as keys

do dicionario self.DICSSIDs. Essas keys sao os nomes dos SSIDs encontrados.

O botao para plotar um unico SSID (self.Button PlotarSSID e criado na linha

14 com o metodo tk.Button. Esse botao tem a particularidade de ser mostrado com

uma imagem. A imagem foi passada como parametro tambem. O pressionamento deste

botao aciona a funcao self.buttonHandler e passa como parametro os argumentos arg1,

arg2 e arg3. Para passar estes parametros e usado o comando lambda, uma ferramenta

especial do Python que nao sera descrita aqui. Segue a rotina do self.buttonHandler:

1 de f buttonHandler ( s e l f , argument1 , argument2 , argument3 ) :

2 # A funcao buttonHandler tem um ob j e t i v o : a l imentar os eventos dos

botoes apertados .

3 # Ao aper ta r o botao ”Plotar ” em qualquer uma das abas e l a eh

acionada . A d i f e r e n c a e s ta nos argumentos passados .

4

5 i f argument1 == ”Button PlotarGera l ” :

6 s e l f . d e c i s a o g e r a l = 1

7

8

9 i f argument1 == ”Button PlotarSSID ” :

10 s e l f . d e c i s a o s s i d = 1

Quando esse botao e acionado, dependendo de qual botao tenha sido apertado,

ele altera o valor de uma das variaveis self.decisao geral ou self.decisao ssid. Essas

variaveis sao responsaveis por permitir que o loop de atualizacao do grafico seja executado.

Este loop sera explicado mais a frente nesta secao.

Segue a imagem da interface grafica com esses widgets inseridos:

Figura 4.3: Widgets na Interface Grafica

Page 43: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

32

Menu de Opcoes

E criado tambem um menu de opcoes como mostra a figura a seguir:

Figura 4.4: Menu de Opcoes

que e construıdo pelo seguinte codigo:

1 # Conf iguracoes do menu supe r i o r da j an e l a p r i n c i p a l

2

3 s e l f . menubar = tk .Menu( s e l f . top , f ont=”TkMenuFont” , bg= bgco lor , f g=

f g c o l o r )

4 s e l f . top . c on f i gu r e (menu = s e l f . menubar )

5

6 s e l f . opcoes = tk .Menu( s e l f . top , t e a r o f f =0)

7 s e l f . menubar . add cascade (menu=s e l f . opcoes ,

8 act ivebackground=”#d9d9d9 ” ,

9 ac t i v e f o r eg round=”#000000 ” ,

10 background=”#d9d9d9 ” ,

11 font=”TkMenuFont” ,

12 foreground=”#000000 ” ,

13 l a b e l=” O p e s s ”)

14 s e l f . opcoes . add command(

15 act ivebackground=”#d8d8d8 ” ,

16 ac t i v e f o r eg round=”#000000 ” ,

17 background=”#d9d9d9 ” ,

18 font=”TkMenuFont” ,

19 foreground=”#000000 ” ,

20 l a b e l=”Gerar R e l a t r i o em PDF” ,

21 command=s e l f . gerarPDF )

22 s e l f . ajuda = tk .Menu( s e l f . top , t e a r o f f =0)

23 s e l f . menubar . add cascade (menu=s e l f . ajuda ,

24 act ivebackground=”#d9d9d9 ” ,

25 ac t i v e f o r eg round=”#000000 ” ,

26 background=”#d9d9d9 ” ,

Page 44: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

33

27 font=”TkMenuFont” ,

28 foreground=”#000000 ” ,

29 l a b e l=”Ajuda ”)

30 s e l f . ajuda . add command(

31 act ivebackground=”#d8d8d8 ” ,

32 ac t i v e f o r eg round=”#000000 ” ,

33 background=”#d9d9d9 ” ,

34 font=”TkMenuFont” ,

35 foreground=”#000000 ” ,

36 l a b e l=”Sobre ” ,

37 command = s e l f . abre sobre )

38 s e l f . ajuda . add command(

39 act ivebackground=”#d8d8d8 ” ,

40 ac t i v e f o r eg round=”#000000 ” ,

41 background=”#d9d9d9 ” ,

42 #command=t e s t e t e l a 4 suppo r t ,

43 font=”TkMenuFont” ,

44 foreground=”#000000 ” ,

45 l a b e l=”Como Usar ” ,

46 command=s e l f . abre comousar )

O metodo utilizado e tk.Menu e o menu e associado a janela principal.

Cada item do menu tem parametros graficos a serem configurados e os itens da

lista chamam funcoes que abrem novas janelas. Isso e feito na opcao command. As

janelas abertas falam sobre como usar o software e informacoes sobre o mesmo.

4.3.3 Captura dos Dados

A captura dos dados e feita por meio da seguinte funcao:

1 s e l f . DICSSIDs = {}

2 s e l f . executathread = True

3 s e l f . threada l imenta = th ( t a r g e t=s e l f . a l im en t a l i s t a )

4 s e l f . threada l imenta . s t a r t ( )

5

6 de f a l im en t a l i s t a ( s e l f ) :

7 whi l e s e l f . executathread :

8 whi l e 1 :

Page 45: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

34

9 s e l f . s a i d a i w l i s t = os . popen ( ’ i w l i s t wlp3s0 scanning | grep −A

5 Address ’ )

10 s e l f . s t r s a i d a i w l i s t = s e l f . s a i d a i w l i s t . read ( )

11 i f l en ( s e l f . s t r s a i d a i w l i s t ) != 0 :

12 break

13 time . s l e e p ( 0 . 1 )

14

15 s e l f . l i s t s t r s a i d a i w l i s t = s e l f . s t r s a i d a i w l i s t . s p l i t ( ’ \n ’ )

16 s e l f . q t d e c e l l s = len ( s e l f . l i s t s t r s a i d a i w l i s t ) /7

17

18 f o r s e l f . k in range (1 , s e l f . q t d e c e l l s +1) :

19 s e l f . s t r i n g c e l l a t u a l = s e l f . l i s t s t r s a i d a i w l i s t [ ( ( s e l f . k−1)∗7)

: ( ( s e l f . k∗7)−1) ]

20 s e l f . tamss idatua l = len ( s e l f . s t r i n g c e l l a t u a l [ 5 ] )

21 s e l f . s s i d a t u a l = s e l f . s t r i n g c e l l a t u a l [ 5 ] [ 2 7 : ( s e l f .

tamss idatua l −1) ] ;

22 s e l f . b s s i d a tua l = s e l f . s t r i n g c e l l a t u a l [ 0 ] [ 2 9 : 4 6 ]

23 s e l f . r s s i a t u a l = in t ( s e l f . s t r i n g c e l l a t u a l [ 3 ] [ 4 8 : 5 1 ] )

24 s e l f . c a n a l c e l l a t u a l = s e l f . s t r i n g c e l l a t u a l [ 1 ] [ 2 8 ]

25

26 i f not s e l f . s s i d a t u a l in s e l f . DICSSIDs :

27 s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] = {}

28

29 i f not s e l f . b s s i d a tua l in s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] :

30 s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] = {}

31 s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’ cana l ’ ] =

s e l f . c a n a l c e l l a t u a l

32 s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’ r s s i ’ ] =

range (0 ,60 )

33 s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’ epoch ’ ] =

range (0 ,60 )

34 s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’ med ia r s s i

’ ] = s e l f . r s s i a t u a l

35

36 i f s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’ cana l ’

] == ’ 1 ’ :

37 s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’ cor ’ ]

= ’ red ’

38

Page 46: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

35

39 e l i f s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’

cana l ’ ] == ’ 6 ’ :

40 s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’ cor ’ ]

= ’ blue ’

41

42 e l i f s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’

cana l ’ ] == ’ 11 ’ :

43 s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’ cor ’ ]

= ’ green ’

44

45 e l s e :

46 s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’ cor ’ ]

= ’ b lack ’

47

48 f o r ind i c e , va l o r in enumerate ( s e l f . DICSSIDs [ s e l f .

s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’ r s s i ’ ] ) :

49 s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’ r s s i ’

] [ i n d i c e ] = None

50 s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’ epoch

’ ] [ i n d i c e ] = None

51

52 s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’ r s s i ’ ] . append

( s e l f . r s s i a t u a l )

53 s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’ epoch ’ ] .

append ( i n t ( time . time ( ) ) )

54 s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’ med ia r s s i ’ ] =

f l o a t (sum( s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’ r s s i ’ ] [ 6 0 :

l en ( s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’ r s s i ’ ] ) −1]) / ( l en (

s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’ r s s i ’ ] ) −60) )

55

56

57 s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’ e x i s t e ’ ] = 0

58 f o r s e l f . a in s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [

’ r s s i ’ ] [ l en ( s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’ r s s i ’ ] ) −10:

l en ( s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’ r s s i ’ ] ) ] :

59 i f s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’ r s s i ’

] [ l en ( s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’ r s s i ’ ] ) −1] != s e l f

. a :

60 s e l f . DICSSIDs [ s e l f . s s i d a t u a l ] [ s e l f . b s s i d a tua l ] [ ’

Page 47: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

36

e x i s t e ’ ] = 1

61 break

62 return

Na linha 1 foi criado o dicionario self.DICSSIDs. Este dicionario e o mais impor-

tante do codigo, pois ele guardara as informacoes de todos os BSSIDs e de seus respectivos

SSIDs.

A variavel self.executathread e uma variavel booleana e sera responsavel por

determinar se o thread criado na linha seguinte continuara a ser executado ou nao. Essa

variavel recebera False quando a janela principal do software for fechada.

O thread self.threadalimenta executa a funcao self.alimentalista paralelamente

ao thread principal do programa. Essa forma permite que a interface grafica do software

nao sofra interrupcoes quando for feito o scan na interface Wi-Fi. Esse scan leva entre 2

e 3 segundos para ser executado. Caso o scan fizesse parte do fluxo principal do codigo,

ele causaria uma interrupcao no mesmo. Este thread e iniciado na linha 4.

Funcao self.alimentalista

Esta funcao inicia sua execucao verificando a situacao da variavel self.executathread.

Caso a variavel seja verdadeira, ela continua sua execucao, caso nao seja, a funcao e fina-

lizada e, por sua vez, o thread tambem.

O loop da linha 8 e responsavel por verificar se os dados foram extraıdos correta-

mente na linha 9. A linha 9 armazena a saıda do comando iwlist executado por meio do

metodo os.popen na variavel self.saidaiwlist. Esta saıda e um arquivo que e lido para

a variavel string self.strsaidaiwlist. Caso esta variavel seja nula, ou seja, nao tenha

conteudo, indicando que o comando nao foi bem sucedido, o loop da linha 8 recomeca.

Na linha 15 e feito um split da string extraıda para que seja criada uma lista com

cada linha de saıda do comando. O resultado e armazenado na lista self.liststrsaidaiwlist

Foi concluıdo a partir de testes que cada celula (BSSID) extraıda ocupa 7 linhas

de saıda do comando, portanto, o tamanho da lista com as linhas de saıda e dividido por

7 para saber a quantidade de celulas capturadas.

O loop da linha 18 e feito para cada celula (BSSID) capturada. Na linha 19,

sao selecionados os elementos da lista self.liststrsaidaiwlist correspondentes ao BSSID

atual. Comeca entao o parse das informacoes do referido BSSID.

Page 48: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

37

As informacoes capturadas sao:

• SSID

• BSSID

• RSSI

• Canal

Comeca, entao, a insercao dessas informacoes no dicionario self.DICSSIDs.

Funciona da seguinte forma:

• Dentro do dicionario self.DICSSIDs foram colocados outros dicionarios referentes

aos SSIDs encontrados no scan da interface Wi-Fi do notebook usado. As keys

desses dicionarios sao os nomes do SSIDs encontrados. No codigo, isso e feito na

linha 26 e 27. Caso o SSID do loop atual nao esteja no dicionario self.DICSSIDs,

ele e inserido.

• Dentro de cada dicionario correspondente a um SSID, sao colocados outros diciona-

rios correspondentes aos BSSIDs que tem o mesmo SSID. Isso e feito nas linhas 29

e 30.

• Na linha 31 o canal do BSSID do loop atual e colocado dentro do dicionario do

BSSID.

• Nas linhas 32 e 33, o RSSI e o epoch time sao criados como listas de tamanho 60 para

que, na ocasiao da plotagem, eles tenham o tamanho correspondente as posicoes do

grafico. Para cada RSSI, um epoch time e calculado, para saber qual foi o momento

da captura daquela informacao.

• As linhas 36 a 46 determinam a cor com a qual aquele BSSID sera plotado no grafico

de acordo com o seu canal.

• Na linha 48 inicia um loop que coloca em todas as posicoes das listas de RSSI e

epoch time o valor None, para que, na ocasiao do inıcio da plotagem, somente tenha

informacao no extremo direito do grafico.

• Apos este loop, os valores atuais de RSSI e epoch time sao colocados no fim da lista

como primeiros valores reais. Isso acontece nas linhas 52 e 53.

Page 49: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

38

• Calcula-se entao, a media de RSSI daquele BSSID, tomando somente os valores

reais como entrada do calculo.

• Na linha 57 e iniciado um processo que verifica se o referido BSSID ainda esta sendo

capturado pela interface Wi-Fi. Isso e verificado observando as ultimas insercoes na

lista de RSSI. Caso existam mais de 10 insercoes iguais, foi inferido por testes, que

o BSSID nao esta mais sendo capturado e ele recebe o valor 0 no campo existe.

Essa funcao e executada ininterruptamente e alimenta o dicionario self.DICSSIDs

com as informacoes obtidas.

4.3.4 Plotagem dos Graficos

Os graficos sao plotados com auxilio da biblioteca matplotlib. A importacao da

biblioteca e de alguns de seus metodos e feita da seguinte forma:

1 ## Importar b i b l i o t e c a s para o g r a f i c o tempo r e a l

2 import matp lo t l i b # B ib l i o t e c a usada para ge ra r g r a f i c o s do e s t i l o do

matlab

3 matp lo t l i b . use ( ”TkAgg”)

4 from matp lo t l i b . backends . backend tkagg import FigureCanvasTkAgg

5 from matp lo t l i b . f i g u r e import Figure

6 from matp lo t l i b import s t y l e

7 s t y l e . use ( ’ ggp lo t ’ )

8 import matp lo t l i b . animation as animation

A biblioteca geral e importada na linha 2.

Na linha 3, e utilizado um metodo desconhecido pelos autores do trabalho.

Na linha 4 e importado um metodo para a criacao de um Canvas especial para

receber o grafico dinamico da biblioteca.

Na linha 8 e importado o metodo matplotlib.animation. Essa funcao e respon-

savel por atualizar o grafico em intervalos regulares definidos pelo usuario. Essas atuali-

zacoes serao responsaveis por mostrar o RSSI do referido BSSID ”avancando”no grafico

conforme novas medidas sao feitas pelo comando iwlist e colocadas nos dicionarios.

A parte do codigo que constroi o grafico e feita em conjunto com o Tkinter e sera

mostrada a seguir. Esse codigo se refere ao grafico que mostra somente um SSID e seus

BSSIDs. O grafico que mostra todos os SSIDs e feito de forma analoga.

Page 50: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

39

1 # Criacao do canvas onde se ra mostrado o g r a f i c o

2 # Uti l i zamos a b i b l i o t e c a do matp lo t l i b para mostrar um g r a f i c o que

s e ra a tua l i z ado em tempo r e a l .

3 # Primeiro cr iamos uma f i g u r a onde o g r a f i c o s e ra mostrado

4

5 s e l f . Figura SSID = Figure ( f i g s i z e =(10 ,8) , dpi=100)

6 s e l f . Graf ico SSID = s e l f . Figura SSID . add subplot (111)

7

8 # Criacao do Canvas SSID , onde s e ra co locada a f i g u r a do g r a f i c o

9 s e l f . Canvas SSID = FigureCanvasTkAgg ( s e l f . Figura SSID , s e l f . Aba SSID)

10 s e l f . Canvas SSID . show ( )

11 s e l f . Canvas SSIDMAT = s e l f . Canvas SSID . ge t tk w idge t ( )

12 s e l f . Canvas SSIDMAT . p lace ( r e l x =0.05 , r e l y =0.1 , r e l h e i g h t =0.85 , r e lw id th

=0.9)

13 s e l f . Canvas SSIDMAT . con f i gu r e ( background=”white ”)

14 s e l f . Canvas SSIDMAT . con f i gu r e ( borderwidth=”2 ”)

15 s e l f . Canvas SSIDMAT . con f i gu r e ( r e l i e f=tk .RIDGE)

16 s e l f . Canvas SSIDMAT . con f i gu r e ( se l ec tbackground=”#c4c4c4 ”)

17 s e l f . Canvas SSIDMAT . con f i gu r e ( take f o cus=”0 ”)

18 s e l f . Canvas SSIDMAT . con f i gu r e ( width=744)

19 s e l f . d e c i s a o s s i d = 0

20 s e l f . a n i s s i d = animation . FuncAnimation ( s e l f . Figura SSID , s e l f .

an imate ss id , i n t e r v a l =500)

E criada uma figura a partir do metodo Figure importado do matplotlib com

algumas caracterısticas. A esta figura e associado um grafico de estilo subplot, assim como

no MATLAB. Para realizar esta operacao o metodo add subplot() e utilizado.

E criado, entao, um widget Canvas especial para o matplotlib com o metodo Fi-

gureCanvasTkAgg(). Sao passados como parametros a figura que possui o subplot e o

Frame no qual serao colocados estes widgets. Este Canvas e especial, mas internamente,

cria um Canvas normal do Tkinter. E com esse Canvas do Tkinter que as operacoes

graficas serao feitas.

O metodo place e utilizado para posiciona-lo no seu Frame mestre.

Ao fim das configuracoes do Frame, a variavel self.decisao ssid e criada para ser

usada na funcao self.buttonHandler explicada anteriormente.

Apos isso, o metodo animation.FuncAnimation() e utilizado. Ele aponta para

Page 51: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

40

uma funcao chamada self.animate ssid passando como parametros a figura onde esta o

grafico e a variavel interval. Esta variavel determina o intervalo, em milissegundos, entre

as atualizacoes do grafico. O intevalo escolhido foi 500 milissegundos.

A funcao self.animate ssid e feita da seguinte forma:

1 de f an imate s s id ( s e l f , i ) :

2 s e l f . dropdownSSID [ ’ va lue s ’ ] = s e l f . DICSSIDs . keys ( )

3 i f s e l f . d e c i s a o s s i d :

4 s e l f . Graf ico SSID . c l e a r ( )

5 s e l f . horaatua l = time . s t r f t ime ( ”%H:%M:%S”)

6 s e l f . horamenos15 = datet ime . datet ime . s t rpt ime ( s e l f . horaatual , ’%H

:%M:%S ’ ) − datet ime . t imede l ta (0 ,15 )

7 s e l f . horamenos30 = datet ime . datet ime . s t rpt ime ( s e l f . horaatual , ’%H

:%M:%S ’ ) − datet ime . t imede l ta (0 ,30 )

8 s e l f . horamenos45 = datet ime . datet ime . s t rpt ime ( s e l f . horaatual , ’%H

:%M:%S ’ ) − datet ime . t imede l ta (0 ,45 )

9 s e l f . horamenos60 = datet ime . datet ime . s t rpt ime ( s e l f . horaatual , ’%H

:%M:%S ’ ) − datet ime . t imede l ta (0 ,60 )

10

11 f o r s e l f . b s s i d in s e l f . DICSSIDs [ s e l f . v a r i a b l e . get ( ) ] . keys ( ) :

12 i f s e l f . DICSSIDs [ s e l f . v a r i a b l e . get ( ) ] [ s e l f . b s s i d ] [ ’ e x i s t e ’ ]

== 0 :

13 cont inue

14

15 ## Rotina para nao p l o t a r c e l u l a s (BSSIDs ) que somem

16 # Por padrao do software , quando um BSSID some , o programa

repe t e o ult imo r s s i por 13 vezes antes de parar de a t u a l i z a r . Ess

r o t i na t e s t a i s s o e se os u l t imos 10 r s s i foram igua i s , param o p l o t a r a

c e l u l a

17

18 s e l f . Graf ico SSID . p l o t ( s e l f . DICSSIDs [ s e l f . v a r i ab l e . get ( ) ] [

s e l f . b s s i d ] [ ’ r s s i ’ ] [ l en ( s e l f . DICSSIDs [ s e l f . v a r i a b l e . get ( ) ] [ s e l f . b s s i d ] [ ’

r s s i ’ ] ) −60: l en ( s e l f . DICSSIDs [ s e l f . v a r i ab l e . get ( ) ] [ s e l f . b s s i d ] [ ’ r s s i ’ ] ) ] ,

s e l f . DICSSIDs [ s e l f . v a r i ab l e . get ( ) ] [ s e l f . b s s i d ] [ ’ cor ’ ] )

19 s e l f . Graf ico SSID . t ext (57 , s e l f . DICSSIDs [ s e l f . v a r i a b l e . get ( )

] [ s e l f . b s s i d ] [ ’ r s s i ’ ] [ l en ( s e l f . DICSSIDs [ s e l f . v a r i a b l e . get ( ) ] [ s e l f . b s s i d

] [ ’ r s s i ’ ] ) −1] , s e l f . bss id , bbox=d i c t ( f a c e c o l o r=s e l f . DICSSIDs [ s e l f .

v a r i a b l e . get ( ) ] [ s e l f . b s s i d ] [ ’ cor ’ ] , a lpha =0.5) )

20 s e l f . Graf ico SSID . s e t x t i c k s ( [ 0 , 15 , 30 , 45 , 6 0 ] )

Page 52: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

41

21 s e l f . Graf ico SSID . s e t x t i c k l a b e l s ( [ s t r ( s e l f . horamenos60 . time

( ) ) , s t r ( s e l f . horamenos45 . time ( ) ) , s t r ( s e l f . horamenos30 . time ( ) ) , s t r (

s e l f . horamenos15 . time ( ) ) , s e l f . horaatua l ] )

22

23 s e l f . Graf ico SSID . s e t x l a b e l ( ’Tempo ’ )

24 s e l f . Graf ico SSID . s e t y l a b e l ( ’RSSI em dBm’ )

25 s e l f . Graf ico SSID . s e t t i t l e ( ’ Gra f i co por SSID ’ )

No inıcio da funcao, a lista de SSIDs e atualizada pra ser mostrada na drop down

list, pois a cada vez que o programa captura dados, pode ser encontrado um novo SSID

e isso precisa ser mostrado na lista de SSIDs disponıveis.

Na linha 3 e efetuado o teste da variavel self.decisao ssid que determina se o

grafico vai ser atualizado ou nao.

O metodo clear() limpa o grafico para a nova disposicao dos dados.

Da linha 5 a linha 9 e feito um calculo para determinar a hora atual e valores de

intervalos que serao utilizados para o eixo horizontal do grafico. Intervalos de 15 segundos

sao calculados.

Na linha 11, e iniciado um loop em todos os BSSIDs do SSID escolhido. Ele esta

armazenado na variavel self.variable e para recebe-lo como uma string, o metodo get()

foi utilizado.

Na linha 12 e feito um teste para saber se aquele BSSID ainda esta ativo e sendo

detectado pelo notebook. A key existe foi explicada na secao de captura de dados.

Na linha 18 e feita insercao dos dados no grafico por meio do metodo plot. Este

metodo recebe como parametros os valores do eixo vertical e a cor com a qual o BSSID

sera plotado.

E passado como parametro a lista que contem o RSSI recebido do BSSID em

questao ao longo do tempo, mas somente os ultimos 60 valores, para que seja plotado 1

minuto de capturas.

E mostrado tambem, na extrema direita do grafico, logo em cima da ultima me-

dicao, o BSSID em questao em sua forma hexadecimal para facilitar a compreensao do

grafico. Isso e feito na linha 19 por meio do metodo text que recebe como parametro a

posicao do grafico na qual a caixa de texto sera inserida e qual sera sua cor.

As linhas 20 e 21 determinam em que posicoes do eixo horizontal, os instantes de

tempo serao mostrados e quais os seus valores.

Page 53: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

42

As linhas 23, 24 e 25 determinam os tıtulos dos eixos horizontal, vertical e do

grafico por meio dos metodos set xlabel, set ylabel e set title.

Segue o resultado da interacao entre a captura de dados e construcao da interface:

Figura 4.5: Apresentacao da Interface Grafica com a Captura dos Dados

4.3.5 Geracao do Relatorio

Este software tem a possibilidade de gerar um grafico em PDF com os dados

capturados ate o momento da geracao. Esta possibilidade e dada por meio da biblioteca

Gnuplot.

O relatorio e gerado com o seguinte codigo:

1 de f gerarPDF ( s e l f ) :

2 f o r s e l f . s s i dpd f in s e l f . DICSSIDs . keys ( ) :

3 s e l f . g = Gnuplot . Gnuplot ( )

4 s e l f . g ( ” s e t te rmina l pdf monochrome enhanced s i z e 30cm,15cm”)

5 s e l f . g ( ” s e t output ’/home/devbru ubuntu/Dropbox/TCC/ r s s i py thon /

WiFindv20112017/ ”+s e l f . s s i dpd f+” . pdf ’ ”)

6 f o r s e l f . b s s idpd f in s e l f . DICSSIDs [ s e l f . s s i dpd f ] . keys ( ) :

7 s e l f . g . t i t l e ( ’Dados do BSSID ’+s e l f . b s s idpd f )

Page 54: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

43

8 s e l f . g . x l ab e l ( ”Epoch Time (H:M: S) ”)

9 s e l f . g . y l ab e l ( ”RSSI em dBm”)

10 s e l f . g ( ” s e t g r id ”)

11 s e l f . t empo in i c i o = s e l f . DICSSIDs [ s e l f . s s i dpd f ] [ s e l f . b s s idpd f

] [ ’ epoch ’ ] [ 6 1 ] − 5

12 s e l f . tempofim = s e l f . DICSSIDs [ s e l f . s s i dpd f ] [ s e l f . b s s idpd f ] [ ’

epoch ’ ] [ l en ( s e l f . DICSSIDs [ s e l f . s s i dpd f ] [ s e l f . b s s idpd f ] [ ’ epoch ’ ] ) −1] + 5

13 s e l f . g ( ” s e t xdata time ”)

14 s e l f . g ( ’ s e t timefmt ”%s ” ’ )

15 s e l f . g ( ’ s e t format x ”%m/%d/%Y %H:%M:%S” ’ )

16 exec ( ” s e l f . g ( ’ s e t xrange [%s :%s ] ’ ) ” % ( s e l f . t empoin ic io , s e l f

. tempofim ) ) in l o c a l s ( )

17 s e l f . g ( ” s e t yrange [−90:−15] ”)

18 s e l f . g ( ” s e t y t i c 20 ”)

19 s e l f . g ( ” s e t x t i c s r o t a t e by −45”)

20 s e l f . g ( ’ s e t key noenhanced ’ )

21

22 s e l f . y r s s i = s e l f . DICSSIDs [ s e l f . s s i dpd f ] [ s e l f . b s s idpd f ] [ ’ r s s i

’ ] [ 6 1 : l en ( s e l f . DICSSIDs [ s e l f . s s i dpd f ] [ s e l f . b s s idpd f ] [ ’ r s s i ’ ] ) −1]

23

24 s e l f . x r s s i = s e l f . DICSSIDs [ s e l f . s s i dpd f ] [ s e l f . b s s idpd f ] [ ’

epoch ’ ] [ 6 1 : l en ( s e l f . DICSSIDs [ s e l f . s s i dpd f ] [ s e l f . b s s idpd f ] [ ’ epoch ’ ] ) −1]

25

26 s e l f . d ado s r s s i = Gnuplot . Data (numpy . array ( s e l f . x r s s i , dtype =

numpy . f l o a t 6 4 ) , numpy . array ( s e l f . y r s s i , dtype = numpy . f l o a t 6 4 ) , t i t l e=”

RSSI do BSSID : ”+s e l f . bss idpdf , with =” l i n e s ” , us ing=’ 1 :2 ’ )

27 s e l f . g . p l o t ( s e l f . d ado s r s s i )

28 de l s e l f . g

O software gera um PDF para cada SSID encontrado e um grafico, dentro do PDF

para cada BSSID.

Na linha 2 e iniciado um loop em todos os SSIDs encontrados pela interface Wi-Fi

do notebook e armazenados no dicionario self.DICSSIDs.

Para cada SSID e criada uma instancia do Gnuplot chamada self.g. O metodo

tambem chamado Gnuplot realiza ese operacao. Ele permite que sejam executados co-

mandos do programa Gnuplot dentro do Python.

Nas linhas 4 e 5 o formato do arquivo de saıda e escolhido como PDF e seu endereco

Page 55: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

44

e nome sao informados como uma concatenacao de strings para que cada SSID tenha um

arquivo de saıda diferente.

Na linha 6 e iniciado um loop em todos os BSSIDs do SSID em questao. Para

cada BSSID, entao, e criado um grafico.

Existem diversos parametros para configurar um grafico e os mesmos nao serao

detalhados aqui.

Na linha 22 os dados referentes ao eixo vertical sao colocados na variavel self.yrssi

como sendo a lista de RSSI do BSSID em questao comecando pela posicao 61, pois as

primeiras 60 posicoes estao marcadas com None conforme explicado na secao de captura

de dados.

Na linha 24, os dados referentes ao eixo horizontal sao colocados na variavel

self.xrssi como sendo a lista de epoch time, tambem comecando pela posicao 61.

Na linha 26, foi usado o metodo Gnuplot.Data para associar estas duas listas

como sendo entrada de um arquivo de dados que serao plotadas no grafico a partir do

metodo plot na linha 27. Tambem sao escolhidos, neste metodo Gnuplot.Data a forma

da linha e o tıtulo do gradfico.

Por fim, a instancia self.g e deletada e o arquivo PDF e criado.

Segue foto referente a um arquivo PDF resultante desta operacao:

Figura 4.6: Grafico do Arquivo em PDF

Page 56: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

Capıtulo 5

Aplicacoes

5.1 Aplicacoes do Software

O software criado funciona como uma ferramenta de estudo de ambientes Wi-Fi.

Este estudo e dimensionamento e tambem conhecido como Site Survey.

Um Site Survey realizado com qualidade impactara positivamente na distribuicao

de sinal da WLAN, com isso melhorando as taxas de comunicacao dos enlaces ponto de

acesso - clientes.

O software e capaz de auxiliar os Sites Surveys tanto para dimensionar novos

ambientes, quanto para estudar possıveis melhorias em ambientes Wi-Fi ja existentes.

Para dimensionamento de novos ambiente Wi-Fi, o software pode ser utilizado

para determinar o tamanho das celulas, indicando a quantidade e a posicao dos pontos

de acesso. Este objetivo sera alcancado atraves de uma potencia mınima de recepcao de

sinal pre estabelecida, que varia de acordo com a necessidade do enlace de alcancar taxas

mınimas que garantirao o funcionamento de suas aplicacoes.

A partir de um ponto inicial, que sera imediatamente ao lado do ponto de acesso,

o agente caminha com o notebook, que estara executando o software, ate o ponto em que

for alcancada a potencia mınima de recepcao, estabelecendo assim o tamanho daquela

celula e seguindo consecutivamente, dimensionara a quantidade de pontos de acesso no

ambiente.

Para um estudo de possıveis melhorias de ambientes Wi-Fi, o software podera

identificar areas de sombras da cobertura atual e identificar possıveis realocacoes de canais

de respectivos BSSIDs.

45

Page 57: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

46

As areas de sombra poderao ser identificadas atraves dos graficos do nosso soft-

ware que indicarao os pontos onde a potencia recebida esta menor do que a mınima pre

estabelecida.

Como o software identifica os canais em que se encontram os BSSIDs, atraves dele,

identifica-se possıveis BSSIDs de terceiros causando interferencia na WLAN estudada,

nao estando alocados em canais ortogonais aos 1, 6 e 11, ou causando super lotacao em

um desses canais ortogonais fazendo com que seja necessario uma realocacao de alguns

BSSIDs nos canais da banda de 2,4 GHz.

Afim de documentar estas analises das redes e para ter estes dados colhidos para

analises futuras, o software ainda conta com a geracao do PDF s para estas finalidades.

Alem de servir como ferramenta para os Site Surveys, como foi pensado, ele tambem

pode servir para analisar o desempenho do roaming dos dispositivos finais.

Colocando este dispositivo final do lado do notebook que executara o software, esta

analise pode ser feita comparando o ponto de acesso que o dispositivo esta conectado em

relacao a potencia de recepcao que o software estara mostrando de outros BSSIDs da

mesma rede, de acordo com a movimentacao dos equipamentos ao longo da area, sendo

possıvel identificar a eficiencia com a qual o dispositivo realiza o roaming.

Page 58: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

Capıtulo 6

Testes em Ambiente Operacional

Para fim de demonstracao do software, sera descrito e apresentado o resultado de

um teste realizado em um ambiente Wi-Fi operacional, dentro do escritorio da empresa

Nimal Tecnologia, no Centro de Niteroi-RJ, que se encontra em algumas salas de um

predio comercial.

Este teste foi realizado em uma quinta-feira, dentro do horario comercial.

6.1 Descricao do Teste

O teste foi realizado no seguinte notebook e suas configuracoes:

• Fabricante: Acer

• Modelo: Aspire E1-571

• Processador: Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz

• RAM: 6 GB

• HD: 500 GB

• Sistema Operacional: Ubuntu 16.04.3 LTS

O teste foi dividido em duas analises: uma analise estatica para verificar a quanti-

dade de BSSIDs que cobriam o ambiente; e uma analise dinamica, percorrendo o ambiente,

para verificar a distribuicao do sinal em toda area do escritorio da empresa.

47

Page 59: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

48

• A analise estatica consistiu na coleta de dados de potencia recebida de todos os BS-

SIDs. O notebook que utilizava o software estava em um ponto central do escritorio

e, entao, foi tirada uma foto do grafico com todos os BSSIDs presentes no ambiente

naquele momento.

• A analise dinamica foi feita movendo o notebook, no qual o software estava sendo

executado, por todo o ambiente estudado, passando proximo dos tres pontos de

acesso da empresa, para verificar a flutuacao das potencias recebidas pelo software,

e pelos pontos mais distantes de todos os pontos de acesso, para verificar a qualidade

da cobertura.

Para facilitar a leitura do grafico, os tres pontos de acesso foram colocados em canais

diferentes, distribuıdos nos canais 1, 6 e 11.

O SSID que serviu para estudar a cobertura foi o ”Nimal”, um dos SSIDs da empresa

que estao nos tes pontos de acesso.

6.2 Resultados dos Testes e Possıveis melhorias

A partir dos testes descritos nas secoes anteriores, foram recolhidos imagens para

analisar cada proposta.

• No analise estatica, a imagem a seguir mostra a quantidade de BSSIDs no ponto

analisado e os canais que ocupam.

Pode-se analisar, com a imagem gerada pelo grafico, a quantidade de BSSIDs alo-

cados no canal 6. Devido a estas caracterısticas, deve-se evitar este canal, para que

se alcance maiores taxas de comunicacao entre o ponto de acesso e o cliente.

Foram verificados, tambem, alguns BSSIDs em canais que nao sao ortogonais, que

causaram interferencia na rede. Para evitar estas interferencias sera necessario ve-

rificar quais canais sao esses e evitar seus vizinhos. Alem disso, pode-se entrar em

contato com os responsaveis dos pontos de acesso que estao irradiando estas redes

e explicar o motivo de nao ser adequada a operacao nos canais nao-ortogonais.

• Na analise dinamica, a imagem a seguir mostra a potencia de recepcao em todo o

ambiente analisado, apenas do SSID ”Nimal”, para estudo da cobertura dos tres

pontos de acesso da Empresa.

Page 60: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

49

Figura 6.1: Scan Geral de Todos os BSSIDs do ambiente

E importante informar que as coletas dos dados foram feitas em uma velocidade

justa, em acordo com o tempo em que o software demora para colher os dados,

garantindo a melhor leitura possıvel do ambiente.

Como este teste foi feito movendo o notebook por todo o ambiente, verifica-se que o

mesmo recebe, em instante diferentes, uma potencia maior de diferentes pontos de

acesso, conforme passa mais proximo a um deles.

Para analisar a cobertura em todo o escritorio da empresa, leva-se em conta o ponto

em que se obteve a menor potencia de recepcao, do ponto de acesso com a maior

potencia. Como verifica-se na Figura 6.2, neste ponto verifica-se uma potencia de

recepcao maior do que -70dBm.

Como os pontos de acesso da empresa contem a tecnologia IEEE 802.11n, estima-

se que dentro dessas mınimas potencia recebidas no ambiente e a quantidade de

usuarios medios por ponto de acesso, ainda se consegue uma taxa de comunicacao,

cliente - ponto de acesso, suficiente para as aplicacoes utilizadas.

A relacao qualidade do link x potencia de recepcao e fundamentada pela tabela

mostrada na Figura 2.5.

Page 61: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

50

Figura 6.2: Potencia recebida em todo ambiente analisado

Para registro desse estudo, o programa gerou um PDF para cada ponto de acesso,

o primeiro ponto de acesso, na Figura 6.3, o segundo, na Figura 6.4, e o terceiro,

na Figura 6.5.

Figura 6.3: Potencia recebida em ao longo do tempo em PDF, ponto de acesso 1

Page 62: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

51

Figura 6.4: Potencia recebida em ao longo do tempo em PDF, ponto de acesso 2

Figura 6.5: Potencia recebida em ao longo do tempo em PDF, ponto de acesso 3

Page 63: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

Capıtulo 7

Conclusao e Trabalhos Futuros

7.1 Conclusao

A proposta do inıcio desse trabalho foi elaborar uma ferramenta que ajudasse

a estudar um ambiente Wi-Fi, capaz de dimensionar novas redes e identificar possıveis

melhorias para redes ja existentes.

Durante o decorrer do processo de criacao desta ferramenta foram abordados con-

ceitos importantes, que dao o suporte para que as redes IEEE 802.11 possam ter o desem-

penho que tem hoje. Este estudo possibilitou a elaboracao do software para servir como

a ferramenta desejada.

No processo de criacao do software, depois de todos os conceitos entendidos,

abordou-se sobre o comando iwlist do Linux, que possibilitou adquirir os dados neces-

sarios do ambiente para um estudo adequado. Depois da ideia formada, foi necessario

dominar melhor a linguagem de programacao, Phyton, que possibilitou a criacao do soft-

ware.

Apos a conclusao do software, algumas limitacoes fısicas foram encontradas no que

tange a coleta de dados que, apesar de ser mais lenta do que se esperava, nao limitou o

estudo do ambiente como era desejado. Esperavamos que o comando iwlist apresentasse

sua saıda com um intervalo da ordem de microssegundos, mas o mesmo tem uma duracao

de 2s aproximadamente.

Para comprovar a utilidade do software criado como ferramenta de estudo de ambi-

entes Wi-Fi, foram realizados alguns testes em um ambiente corporativo, que conseguiram

identificar as caracterısticas de RF do escritorio no que diz respeito as WLANs desejadas

Page 64: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

e as outras que atrapalhavam o seu desempenho.

Pode-se, enfim, concluir que foi obtido um resultado satisfatorio tanto para o soft-

ware quanto para o conhecimento adquirido.

7.2 Sugestoes para Trabalhos Futuros

O software encontra-se operacional para os objetivos pretendidos, entretanto, sem-

pre existem possıveis melhorias que podem ser feitas e novas funcionalidades a se incor-

porar ao trabalho.

Tendo isso em vista, algumas dessas ideias serao listadas aqui como possıveis tra-

balhos futuros. Sao eles:

• Banda de 5 GHz

O software opera na banda de 2,4GHz, pois e a faixa de operacao mais usada e a

unica suportada pela interface WiFi do notebook. Entretanto, a faixa de 5GHz vem

crescendo em numero de usuarios e equipamentos suportados por diversos fatores.

Por isso, incorporar o suporte a essa faixa ao software e interessante. A aquisicao

de uma nova interface WiFi que opere em 5GHz sera necessaria para adicionar tal

funcionalidade.

• Classificacao dos Canais Nao-Ortogonais aos Canais 1, 6 e 11

Na versao atual do software, somente os canais 1, 6 e 11 possuem cores para

diferencia-los. Todos os outros sao mostrados com a cor preta. A identificacao

de todos os canais trara mais fidelidade aos dados obtidos, permitindo uma melhor

alocacao dos pontos de acesso estudados.

• Grafico da Ocupacao dos Canais

Outro grafico interessante a ser adicionado ao software de acordo com os dados que

sao colhidos pelo comando iwlist e o grafico de ocupacao dos canais. Este grafico

mostrara barras com a quantidade de BSSIDs por canal. Isso permitira ao usuario

verificar quais canais estao mais ocupados.

Page 65: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

54

Referencias Bibliograficas

[1] Abreu, Estela dos Santos e Teixeira, Jose Carlos Abreu. Apresentacao de Trabalhos

Monograficos de Conclusao de Curso, 8a. edicao revisada, EdUFF, 2005.

[2] (Wi-Fi bate 3G e 4G na preferencia do brasileiro para se conectar

pelo celular), http://g1.globo.com/tecnologia/noticia/2016/09/wi-fi-bate-3g-e-4g-na-

preferencia-do-brasileiro-para-se-conectar-pelo-celular.html, Acessado em 10 de outu-

bro de 2017

[3] (About IEEE), https://www.ieee.org/about/index.html

[4] (WiFi Overview), http://www.blacklabssecurity.info/wifi-overview.html

[5] (Cisco Prime Network Control System Configuration Guide, Re-

lease 1.0), https://www.cisco.com/c/en/us/td/docs/wireless/ncs/1-

0/configuration/guide/NCS10cg/wipsench.html

[6] (Wireless Clients Roaming), https://supportforums.cisco.com/t5/getting-started-

with-wireless/wireless-clients-roaming/td-p/1932596

[7] (ExtremeWireless™ WiNG 7522 802.11ac Access Point), https://kapost-files-

prod.s3.amazonaws.com/kapost/55ba7c9e07003d9aab000394/studio/content/581c9a5332dbdb91bc000243/published/ap-

7522-data-sheet-1.pdf?kui=WFm8j4 zUcaLgcrDc5 iJg

[8] (Canais Wi-Fi 2.4 GHz), https://www.palpitedigital.com/wp-

content/uploads/2012/03/canais-wifi-frequencias.png

[9] (Canais da Tecnologia DSSS), http://netsthpks.com/pics/wifi-s.gif

[10] (Channel Bonding In WiFi: Rules And Regulations),

https://www.networkcomputing.com/wireless/channel-bonding-wifi-rules-and-

regulations/199326059

Page 66: Bruno Rodrigues Pacheco Gentil Gomes da Silveira Neto · WiFind - software de monitoramento para redes Wi-Fi Trabalho de Conclus~ao de Curso apresentado ao Curso de Gradua˘cao em

55

[11] (Probe Request - Probe Response), https://documentation.meraki.com/@api/deki/files/1853/3d40e28a-

8813-4b79-8ddb-fb395d1e1fba?revision=1

[12] (What is Linux ), https://www.linux.com/what-is-linux

[13] (The Making of Python), http://www.artima.com/intv/pythonP.html

[14] (Converting Signal Strength Percentage to dBm Values),

http://www.ieee802.org/16/tgd/contrib/C80216d-03 92.pdf

[15] (Tkinter: Interfaces graficas em Python), https://www.devmedia.com.br/tkinter-

interfaces-graficas-em-python/33956

[16] GAST, Matthew, 802.11® Wireless Networks The Definitive Guide, O’REILLY,

2005.

[17] COLEMAN, David D. and WESTCOTT, David A., CWNA: Certified Wireless

Network Administrator - Official Study Guide - Fourth Edition, Sybex, 2014.