domingo, 5 de diciembre de 2010

Simulando una llamada SIP con scapy

Intro:

Scapy: Es una libreria escrita en Python para la manipulación, sniffing y mas de paquetes de red.

SIP: Protocolo masivamente usado para VoIP

Requisitos:

2 PCs con un cliente SIP debidamente registrado.

Instalar Scapy

Paso 1

Obtener un paquete válido como ejemplo para reproducirlo nuevamente pero desde scapy y con ciertos valores modificados:



sudo ipython

from scapy.all import *

pkt = sniff(count=1, filter='udp and dst port 5060')




En este punto realizamos una llamada desde un softphone en nuestra PC hacia otro cliente SIP en alguna otra PC, así capturamos el paquete INVITE


ipdata = pkt[IP][0]



Con esto ya tenemos un paquete legitimo de una llamada para reproducirla, se puede verificar los campos de la siguiente manera:



ipdata.show()



Construyendo la llamada falsa

PC1:
IP => 172.16.0.2 SIP=>201

Telefono IP:

IP => 172.16.0.199 SIP=>202



call = IP(src='172.16.0.2',dst='172.16.0.199')/UDP(dport=5060)/Raw(load = 'INVITE sip:201@127.0.0.1 SIP/2.0\r\nVia: SIP/2.0/UDP 127.0.0.1:5061;rport;branch=z9hG4bKachcujse\r\nMax-Forwards: 70\r\nTo: \r\nFrom: "Hacker" ;tag=nickz\r\nCall-ID: nfoarzphbqcrmwv@battlefield\r\nCSeq: 983 INVITE\r\nContact: \r\nContent-Type: application/sdp\r\nAllow: INVITE,ACK,BYE,CANCEL,OPTIONS,PRACK,REFER,NOTIFY,SUBSCRIBE,INFO,MESSAGE\r\nOrganization: HOME\r\nSupported: replaces,norefersub,100rel\r\nUser-Agent: Twinkle/1.4.2\r\nContent-Length: 303\r\n\r\nv=0\r\no=twinkle 1592958298 1545391068 IN IP4 127.0.0.1\r\ns=-\r\nc=IN IP4 127.0.0.1\r\nt=0 0\r\nm=audio 8000 RTP/AVP 98 97 8 0 3 101\r\na=rtpmap:98 speex/16000\r\na=rtpmap:97 speex/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:3 GSM/8000\r\na=rtpmap:101 telephone-event/8000\r\na=fmtp:101 0-15\r\na=ptime:20\r\n')



Con esto ya podemos enviar el paquete y el teléfono IP debería timbrar !!



send(call)

viernes, 8 de octubre de 2010

Botones en Ubuntu a la Derecha

Yo no me termino de acostumbrar a tener los botones de las ventanas en Ubuntu a la izquierda, asi que asi es como he leído que se cambian de nuevo a la derecha:

En una terminal o con Alt+F2

gconf-editor



Luego nos vamos a:


apps/metacity/general/button_layout


Y cambiamos


close,minimize,maximize:


por:

menu:maximize,minimize,close

jueves, 7 de octubre de 2010

VLC en Ubuntu puertos < 1024

En Ubuntu puede que existan problemas para hacer un "bind" con ciertas aplicaciones y con tu cuenta de usuario normal, por ejemplo al unirse a un Stream udp de la siguiente manera:


udp://@239.255.1.1:1001



La solución:

privbind

Con este paquete podemos unirnos al stream de la siguiente manera:


sudo privbind -u celord vlc udp://@239.255.1.1:1001


Y con esto ya no da el problema de:


[0x8722334] main access error: socket bind error (Permission denied)
[0x8722334] access_udp access error: cannot open socket
[0x847d244] main input error: open of `udp://@239.255.1.1:1001' failed: (null)

miércoles, 6 de octubre de 2010

Script de Linux Magazine

Este script lo hizo la gente de Linux Magazine para descargar todos los archivos PDF de su sitio, claro esta para los que no están suscritos, no les descargará todo.


#!/bin/bash

lm_user=$1
shift
lm_pass=$1
shift

for issue
do
mkdir $issue
cd $issue
if wget --spider --http-user=$lm_user --http-password=$lm_pass http://www.linux-magazine.es/digital/issue/$issue/
then
wget -nd -r -H -l1 -erobots=off -A.pdf --http-user=$lm_user --http-password=$lm_pass http://www.linux-magazine.es/digital/issue/$issue/
elif wget --spider http://www.linux-magazine.es/issue/$issue/
then
wget -nd -r -H -l1 -erobots=off -A.pdf http://www.linux-magazine.es/issue/$issue/
fi
cd ..
done

lunes, 5 de abril de 2010

python cx_Oracle en Debian Lenny

Intro

cx_Oracle es una librería que permite el acceso desde python a bases de datos Oracle, la manera de como usar cx_Oracle esta fuera de esta guía, en lo personal no lo he usado directamente, solamente lo he necesitado cuando utilizo SQLAlchemy



Requsistos


1. Tener el instant client en alguna carpeta de nuestro debian ej: /home/usuario

NOTA: es necesario bajar tanto el basic como el sdk para que compile bien

2. Descargar y descomprimir las fuentes de cx_Oracle de acá



Instalación

1. Definir la siguiente variables de entorno:




export ORACLE_HOME=/home/usuario/instantclient_11_2
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME


2. Ir al directorio:


cd $ORACLE_HOME
ln -s libclntsh.so.11.1 libclntsh.so



3. Luego:

cd cx_Oracle-5.0.3

python setup.py build
python setup.py install

Python 2.5.2 (r252:60911, Jan 24 2010, 14:53:14)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cx_Oracle
>>>
>>>


Eso es todo: a utilizar sqlalchemy : )

miércoles, 31 de marzo de 2010

Python MySQLdb en Solaris 10

Introducción:

Este post va para todos aquellos que tengan problemas con la instalación de MySQLdb la librería para acceder a bases de Datos MySQL desde Python

Requisitos

Tener instalada la herramienta pkgutil de Blastwave

*Tener instalado python2.6

*Tener instalado gcc

*Tener instalado y funcionando correctamente MySQL

* Esto se puede realizar facilmente con la herramienta pkgutil

Antecedentes

Todo usuario curioso vera que existe en el repo de blastwave un paquete llamado algo asi como "pymysql", pues este es nuestro MySQLdb, entonces, Porque no usar ese ??

Pues la verdad no se, : ) , bueno al menos no se porque la gente de blastwave, a mi muy humilde opinión tiene tan descuidados los paquetes que conciernen a python, he tenido problema con la libreria para que apache lea archivos .py ( mod_python ) y con MySQL, lo que he notado es que python se instala en:

/opt/csw/lib/python2.6/
javascript:void(0)
Por consiguiente todas las librerias python deberian estar en:

/opt/csw/lib/python2.6/site-packages

Pues no es así, los paquetes se instalan en:

/opt/csw/lib/python/site-packages

El porque de esto, no los se, y la gente de blastwave no me dio mucha pelota en el IRC, así que ni modo.
No crean tampoco que no agregue dichas carptetas al PYTHONPATH, si lo hice pero creo que me dio errores...

COMPILANDO MySQLdb EN SOLARIS 10

Bueno es muy fácil, bueno ya que te sale lo ves muy fácil:

1. Descargan y descomprimen MySQLdb desde acá


2. Dentro de MySQLdb editan el archivo setup_posix.py

vi setup_posix.py

2.1 Ahi cambian esto:

removable_compile_args = [ compiler_flag(f) for f in "ILl" ]

Por esto:

removable_compile_args = [ compiler_flag(f) for f in "ILlmf" ]


Con esto ya debe compilar e instalar de forma correcta:


python setup.py build
python setup.py install


3. Agregando variables de entorno necesarias


LD_LIBRARY_PATH=/opt/csw/lib
export LD_LIBRARY_PATH


Esto lo deberán agregar a su archivo .profile para evitar futuros problemas

Eso es todo:


Python 2.6.2 (r262:71600, Aug 11 2009, 07:00:48)
[GCC 4.0.2] on sunos5
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
>>> MySQLdb.__version__
'1.2.3c1'
>>>