Pesquisar este blog

quinta-feira, 19 de março de 2015

Usando o nmap para pegar o IP e MAC Address


Fiz um script para pegar o IP e o MAC de um range de IPs, é necessário quando você quer saber todos os Set-Top-Box que estão na rede, e enviar comandos de atualização, ou se comunicar com um Set-Top-Box específico.


Nesse primeiro script quero pegar um IP através de um MAC específico em um range de ips:

# Importa a api do NMAP
import nmap

# Instancia o objeto nmap.PortScanner.
nm = nmap.PortScanner()

# host 127.0.0.1, portas de 1 a 255
cidr2='127.0.0.1-255'

# insere os argumentos ao objeto nm usando a funcao scan.
a=nm.scan(hosts=cidr2, arguments='-sP')

# Trata os dados
for k,v in a['scan'].iteritems():
    if str(v['status']['state']) == 'up':

        try:
            if (str(v['addresses']['mac'])=="68:15:90:78:F7:23"):
                    print "IP: " + str(v['addresses']['ipv4'])
        except:
            pass


-------------------------------------------------------------------------------------------------------------------
# Nesse script vai listar todos os dados encontrados.
# Pode remover print str(v), nesse caso vai exibir a lista de ips e macs da rede.
import nmap

nm = nmap.PortScanner()
cidr2='192.168.1.99/24'

a=nm.scan(hosts=cidr2, arguments='-sP')

for k,v in a['scan'].iteritems():
    if str(v['status']['state']) == 'up':
        print str(v)
        try:    print str(v['addresses']['ipv4']) + ' => ' + str(v['addresses']['mac'])
        except: print str(v['addresses']['ipv4'])





Links Relacionados:

http://searchsecurity.techtarget.com/tip/How-to-install-and-configure-Nmap-for-Windows
http://pydoc.net/Python/python-libnmap/0.6.2/
https://pypi.python.org/pypi/python-libnmap/


Install
 Você pode instalar via pip:
  • pip install libnmap
 
ou via git:
  • $ git clone https://github.com/savon-noir/python-libnmap.git
    $ cd python-libnmap
    $ python setup.py install
    

É necessário instalar o nmap no sistema operacional:
https://nmap.org/download.html

sexta-feira, 6 de fevereiro de 2015

Instalando o Python e o Pydev no Linux.


Criei um Passo a passo para instalação do Python e Pydev para iniciar o desenvolvimento de Script automatizados em python, uma linguagem super simples e prática de programar, como é orientado a indentação o código fica super arrumado.

Segue os passos para Instalação do Python no Linux:

1. Primeiro Instale as dependências, insira os comandos no Terminal (Shell) do Linux:
  • 1.1 -> sudo apt-get install build-essential



  • 1.2 -> sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

2. Faça o download do Python, recomendo a versão estável - Lista de versões no link https://www.python.org/ftp/python/

Comandos:
  • 2.1 -> cd ~/Downloads/
  • 2.2 -> wget http://python.org/ftp/python/2.7.5/Python-2.7.5.tgz

** Observação mude a url no passo 2.2 pra versão que deseja.


3. Extrair o arquivo:3.1 -> tar -xvf Python-2.7.5.tgz 3.2 -> cd Python-2.7.5

4. Agora fazer a instalação:comandos:

  • 4.1 -> ./configure 4.2 -> make 4.3 -> sudo make install


 
Passos para Instalação PyDev:

1. Baixar o eclipse (Recomendo a última versão mais estável).
Passo a Passo no site abaixo:
http://www.vivaolinux.com.br/dica/Eclipse-42-Instalacao-no-Ubuntu-e-derivados

2. Abra o Eclipse.
3. Menu Help - Install New Software

4. Seleciona o Botão "ADD"

5. Insira um Nome no campo name.
6. Insira a URL do pydev no campo location: http://pydev.org/updates
7. Clique no botão "Ok" em seguida click em "Select ALL".

8. Agora é só confirmar clique em seguir ou next e por fim finalizar.

- Caso no eclipse não queira seguir a mesma ordenação de pastas, você pode associar ao seu projeto, basta criar um novo projeto vazio e associar ao local no computador.
Exemplo:

/home/reinaldo/workspace/PastaDoProjeto
1. Para fazer a associação siga o caminho no eclipse abaixo:
Properties-Resource-Linked Resources-NEW

2. Adicionar os dados do seu projeto:
Adicionar Name: PROJECT_LOC
Adicionar em location: <O caminho do projeto>.



quarta-feira, 10 de dezembro de 2014

TestLink + Python - Reportando os testes realizados.


Nesse post vamos fazer uma classe genérica para reportar o resultado do teste realizado para o TestLink.

Vamos listar as coisas que devemos fazer primeiro para criar o reporte no testlink.

1. Precisamos criar primeiro os seguinte itens:  Test Project Management Test Plan Management.
  • Como estes dois Itens não mudam todo tempo, recomendo fazer manualmente no inicio do projeto, caso você queira fazer, já digo que a ultima versão do TestLink 1.9.12 esta com um bug quando você tenta fazer várias vezes o Test Plan Management, a tela fica em branco, pode ser problema de memória, mas não perdi muito tempo com isso.
2. Necessário criar o Builds / Releases.
  • Criamos uma função para criar o Build - create_build(self, newBuildID, buildName, buildNotes), passamos como paramêtro ID do build, nome do build, descrição do mesmo.
3.  Pegar o ID do Test Case passando o Nome como parâmetro para a função testCaseIDByName(self, TESTCASE).

4.  Pegar o ID do Test Plan passando o Nome do Test Plan como parâmetro para a função getTestPlanId(self, NEWTESTPLAN).

5. Agora vamos realizar o reporte do teste realizado, passando os dados (id do caso de teste, id do plano de teste, buildname, resultado do teste -> PASSED=p , FAILED=f , BLOCKED=b, descrição do teste realizado) para a função reportTCResult(self, tcid, tpid, buildname, Result, notes).

Exemplo:

"""
Class Testlink to connection with server TestLink
Author: Reinaldo M.R.J
Date: 10-12-2014 - Version: 0.X
"""
import testlink

class class_Testlink(object):

    def __init__(self):

        # Endereço do Servidor xmlrpc
        TESTLINK_SERVER_URL = '.../lib/api/xmlrpc/v1/xmlrpc.php'
        # Chave gerada pelo TestLink
        TESTLINK_DEVKEY = 'bdcc743a0cd80052bf8c28XXXXXXXX'
        tlh = testlink.TestLinkHelper(TESTLINK_SERVER_URL, TESTLINK_DEVKEY)
        self.myTestLink = tlh.connect(testlink.TestlinkAPIClient)
        # Nome do Projeto, caso você tenha vários poderia enviar como parâmetro para classe.
        self.Project = "XXXXXXXX"

    def reportTCResult(self, tcid, tpid, buildname, Result, notes):

        return self.myTestLink.reportTCResult(tcid, tpid, buildname, Result, notes)

    def testCaseIDByName(self, TESTCASE):
            
        response = self.myTestLink.getTestCaseIDByName(TESTCASE, testprojectname=self.Project)
        print response
        response = response[0].get("id")
        return response


    def getTestPlanId(self, NEWTESTPLAN):

        response = self.myTestLink.getTestPlanByName(self.Project, NEWTESTPLAN)
        print "getTestPlanByName", response
        response = response[0].get("id")
        return response


    def create_build(self, newBuildID, buildName, buildNotes):

        newBuild = self.myTestLink.createBuild(newBuildID, buildName, buildNotes)
        isOk = newBuild[0]['message']
        if isOk == "Success!":
            newBuildID = newBuild[0]['id']
            print "New Test Build '%s' - id: %s" % (buildName, newBuildID)
        else:
            print "Error creating the Test Build '%s': %s " % (buildName, isOk)
            return




quarta-feira, 19 de novembro de 2014

Instalando o TestLink-API-Python-client (TestLink + Python)

Nesse post vamos fazer a conexão dos scripts em python com o TestLink, é uma ótima solução para reportar o resultado dos seus testes automatizados.

A forma mais fácil de instalar via Python, é pelo comando abaixo:

pip install TestLink-API-Python-client



No link abaixo temos como instalar o PIP:
http://reinaldorossetti.blogspot.com.br/2014/01/instalando-o-selenium-no-python-na.html

Fizemos um código para realizar a conexão com o Servidor, segue o código abaixo:

import testlink
TESTLINK_API_PYTHON_SERVER_URL='<server_web_do_teste_link>/lib/api/xmlrpc/v1/xmlrpc.php'
TESTLINK_API_PYTHON_DEVKEY='Sua Chave gerada no TestLink'

testlink.TestLinkHelper(TESTLINK_API_PYTHON_SERVER_URL,TESTLINK_API_PYTHON_DEVKEY)
myTestLink = tlh.connect(testlink.TestlinkAPIClient)
print myTestLink.whatArgs('createTestPlan')

print ""
print "Number of Projects in TestLink: %s " % myTestLink.countProjects()
print "Number of Platforms (in TestPlans): %s " % myTestLink.countPlatforms()
print "Number of Builds : %s " % myTestLink.countBuilds()
print "Number of TestPlans : %s " % myTestLink.countTestPlans()
print "Number of TestSuites : %s " % myTestLink.countTestSuites()
print "Number of TestCases (in TestSuites): %s " % myTestLink.countTestCasesTS()
print "Number of TestCases (in TestPlans) : %s " % myTestLink.countTestCasesTP()
print ""


** Caso der algum erro tente os seguintes passos:
1. Cria o arquivo __init__.py no diretório dos seus arquivos;
2. Verifique a sua chave gerada, se for o caso gerar uma nova como admin;


3. Verifique a URL, que é o caminho do servidor xmlrpc dependendo da versão o caminho é diferente;
4. Verifique a Indentação do código.
5. Verifique versão do Python a versão compatível 2.7.8, com versões 3.3 tive problemas.

No Tutorial da API diz para criar as variáveis  de ambiente, no caso fiz processo pelo Windows não funcionou como esperado, então passei essas informações como parâmetro para a classe de conexão "TestLinkHelper" e funcionou bem, assim não precisa configurar a variável de Ambiente no Windows, agora é feito direto no código.

# precondition a)
# SERVER_URL and KEY are defined in environment
# TESTLINK_API_PYTHON_SERVER_URL=http://YOURSERVER/testlink/lib/api/xmlrpc.php
# TESTLINK_API_PYTHON_DEVKEY=7ec252ab966ce88fd92c25d08635672b
#
# alternative precondition b)
# SERVEUR_URL and KEY are defined as command line arguments
# python TestLinkExample.py --server_url http://YOURSERVER/testlink/lib/api/xmlrpc.php
# --devKey 7ec252ab966ce88fd92c25d08635672b
#
# ATTENTION: With TestLink 1.9.7, cause of the new REST API, the SERVER_URL
# has changed from
# (old) http://YOURSERVER/testlink/lib/api/xmlrpc.php
# to
# (new) http://YOURSERVER/testlink/lib/api/xmlrpc/v1/xmlrpc.php