Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - WHK

#761
Hola, te pego acá la respuesta: http://pastebin.com/LrgsS3fA porque el firewall de cloudflare no me deja postearlo.

Saludos.
#762
Programación C/C++ / Re: funcion reconocer emails
5 Septiembre 2016, 18:23 PM
Mira: https://www.owasp.org/index.php/OWASP_Validation_Regex_Repository

Código (xml) [Seleccionar]
  <regex>
  <name>e-mail</name>
  <pattern><![CDATA[^[a-zA-Z0-9+&*-]+(?:\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,7}$]]></pattern>
  <description>A valid e-mail address</description>
  </regex>
#763
Todos los días hay mas de un ataque al foro.
#764
Hola amigo, te daré unos tips:

Cuando te aparezca un error fijate en que línea te aparece, por lo general los errores dicen el nombre del archivo mas el número de la línea, con eso te podrás dar mas cuenta del problema que debieras tener.

if(response.status) {

Fijate que en una parte del código dice "response.status", realmente existe "status"?. PHP retorna un valor no? pues ese valor es un array o un objeto, en tu caso cuando envías la petición post desde tu javascript estás enviando el valor "keystrokes : id" y estás escribiendo el mismo resultado desde php, por lo tanto no tienes la variable "status" declarada en ningún lado, por eso dice undefined porque status no está definido.

"response" equivale a lo que php entregó, en este caso no es un objeto

$resultado = ( is_array($resultado) ? $resultado : array($resultado) );
die(json_encode($resultado, true));


Lo único que haces en es alínea es entregar el resultado como array. Digamos que $resultado equivale a "hola", entonces el resultado que entrega php queda así:

["hola"]

Para solucionar esto, desde php debes crear la variable llamada status y otro donde lleve el valor que desees entregar, por ejemplo:

die(json_encode(array('status' => 1, 'resultado' => $resultado)), true);

Entonces tendrás un resultado así:

{ "status": 1, "resultado": "hola" }

Ahora desde javascript debes procesar "status" y también "resultado".

Prueba con esto:

Código (php) [Seleccionar]
<?php
if(isset($_POST) && isset($_POST['keystrokes'])){

    
// Headers
    
header('Content-Type: application/json');

    
$resultado = (string)$_POST['keystrokes'];
    echo 
json_encode(array(
        
'status' => 1,
        
'result' => $resultado
    
), true);
    exit;
}
?>
<!DOCTYPE html>
<html>
    <head>
        <title>login</title>
        <script src="jquery-3.1.0.js" type="text/javascript"></script>
        <script type="text/javascript">
           
            var id = 'idUsuario';

            // Bind the form
            $('.formulario').submit(function(event) {

                // Prevent sent the form
                event.preventDefault();
               
                var request = $.ajax({
                    url  : 'login.php',
                    type : 'POST',
                    data : {
                        keystrokes : id
                    },
                    dataType    : 'json',
                    contentType :'application/json',
                });

                request.done(function(response) {

                    if(response.status) {
                        alert('Success: ' + response.message);
                        window.location.href = 'login.php';
                    }
                    else {
                        alert('Error: ' + response.message);
                        window.location.href = window.location.href;
                    }
                });

                request.fail(function(jqXHR, textStatus) {
                    alert("Server request failed: " + textStatus);
                    window.location.href = '';
                });

                request.error(function(result, sts,err) {
                    alert(err+":"+sts);

                });
            });
        </script>
    </head>
    <body>
        <form class="formulario">
            <p><input type="text "id="clickme"  value="n o m b r e"></p>
            <p><input type="text "id="pass"  value=" c o n t r a s e n a"></p>
            <input type="submit" id="botonEnviar" value="enviar">
        </form>
    </body>
</html>


Saludos.
#765
Hola, hace poco tuve que hacer un script que quiero compartir.

Este script lo que hace es tomar un archivo pdf llamado "input.pdf" y le agrega una imagen de fondo a la portada (llamada bg-cover.png), claramente la portada debe tener transparencia para que esto funcione. Se necesita tener instalado image magic.

Saludos.

Código (bash) [Seleccionar]
#!/bin/bash

# Dependencies
# sudo apt-get install imagemagick

# Merge pdf and background image

# Split pdf into images
echo "Spliting pdf to images ..."
convert -density 150 input.pdf -quality 90 output.png

# Merge first page with background image
echo "join background image with cover ...";
composite -compose over -alpha On output-0.png bg-cover.png output-0.png

# Convert images to PDF
echo "Join images to out pdf file ...";
convert -compress jpeg `ls output-*.png` output.pdf

# Clean files
echo "Clean files ...";
rm -f output-*.png

echo "Done!";

#766
Hola, desde hace un tiempo he tenido un problema bastante específico con el aranque de Ubuntu y es que despues de actualizar de versión ya no arranca el modo gráfico pero cuando inicia el menú del grub (antes del arranque del sistema operativo) y elijes el kernel con opción "(upstart) arranca sin problemas.

En este post explicaré como solucionar algunos problemas más comunes que se tienen cuando actualizas tu distribución, todo lo que explicaré es una recopilación de muchas fuentes, muchas preguntas y muchas pruebas en mi pc que finalmente he logrado que todo funcione como reloj sin la necesidad de tener que formatear y reinstalar todo nuevamente.

Resumen
En resumen para los que no quieran leer todo el post debo decir que el problema es una combinación de muchos otros problemas:

* Librerías de Virtualbox no se eliminan al ser desinstalado
* Módulos del kernel de Virtualbox dejan de ser compatibles con la version del kernel actualizada junto a la nueva distribución.
* Montaje automático de discos NTFS o ExFat

Esto desencadena otra serie de problemas como por ejemplo que el arranque del kernel no finalice debido a que el módulo de virtualbox no existe y tampoco es capaz de automontar un disco con problemas de arranque (inicio rápido de windows)

Detalles

El primer problema que vemos es que no inicia ubuntu en modo gráfico sino que solo inicia en modo terminal (tty1):



Para comprender porque sucede esto lo que haremos es simplemente reiniciar el sistema y observar los mensajes de errores de carga:



En base a esto comenzaremos a solucionar de manera muy fácil cada uno de estos problemas.

Problema 1: Error al cargar los módulos del kernel de linux

El error de la carga del sistema nos dice:

Citar[FAILED] Failed to start Load Kernel Modules. See 'systemctl status systemd-modules-load.service' for details.



Cuando dejamos que inicie normalmente el sistema operativo este por lo menos iniciará en modo terminal y esto es bueno porque podremos observar los problemas que hubo en la carga, si iniciamos con upstart no veremos estos logs.

Despues que iniciamos sesión en modo terminal ejecutaremos el comando que nos recomendó el sistema:

Citarsystemctl status systemd-modules-load.service



El sistema nos dice que la carga de un módulo falló y si nos fijamos bien el comando específico que falló fue:

/lib/systemd/systemd-modules-load

Por lo tanto probamos aver que nos arroja:

$ sudo /lib/systemd/systemd-modules-load
Failed to insert 'vboxvideo': No such device


Ajamm! el módulo que nos da el problema es el video de Virtualbox, asi que trataremos de solucionarlo:

$ sudo  dpkg-reconfigure virtualbox
* Unloading VirtualBox kernel modules...   [ OK ]
* Loading VirtualBox kernel modules...      * No suitable module for running kernel found
                                                             [fail]
invoke-rc.d: initscript virtualbox, action "restart" failed.


Como falló intentaremos solucionar esto de otra manera:

$ sudo modprobe vboxdrv
modprobe: FATAL: Module vboxdrv not found in directory /lib/modules/4.4.0-34-generic


Entonces comprendí que claramente el módulo instalado por Virtualbox era compatible hasta ese momento para la versión del kernel cuando se instaló y por lo tanto claramente no es compatible con el nuevo kernel por lo cual las opciones a seguir son varias: reinstalar o eliminar virtualbox.

En mi caso para evitar problemas y asegurarme  que todo ande bien procedí a desinstalar virtualbox :

$ sudo apt-get purge virtualbox
$ sudo apt-get autoremove
$ sudo apt-get autoclean


Ahora probamos reiniciar el sistema y nos encontramos que el sistema continúa con el mismo problema y es porque el sistema aun está intentando cargar el mismo módulo de virtualbox a pesar de ya haber sido desinstalado, asi que procedemos a purgar manualmente virtualbox:

Editamos el archivo "/etc/modules" con cualquier editor, yo usé nano:
$ sudo nano -w /etc/modules

Buscamos y eliminamos la línea donde dice "vboxvideo", guardamos y cerramos el editor. Debiera quedar masomenos así el archivo final:

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

lp
# vboxvideo


Nótese que vboxvideo está comentado con un signo gato.

Ahora si volvemos a reiniciar y ya no veremos el mismo error de la carga de módulos del kernel :D


Problema 2: journal falla porque no es capaz de crear el archivo de logs

El error de la carga del sistema nos dice:

Citar[FAILED] Failed to start Create Volatile Files and Directories. See 'systemctl status systemd-tmpfiles-setup.services'



La solución es tan fácil como eliminar el directorio de logs de journal service para que este vuelva a crearlos con sus nuevos permisos correspondientes:

$ rm -rf /var/log/journal
$ rm -rf /run/log/journal


Luego de esto reinicias el sistema y ya no debiera volver a aparecer ese mensaje de error.


Problema 3: Error al iniciar el servicio pNFS

El error de la carga del sistema nos dice:

Citar[DEPEND] Dependency failed for pNFS block layout mapping daemon.



Esto se soluciona creando una mascara del servicio:

$ sudo systemctl mask nfs-blkmap.service

Con esto ya no debiera volver a aparecer ese error.


Problema 4: No se monta el directorio raiz en modo de escritura

Todo lo que hemos solucionado hacia atrás era solo parte del problema, aun nos daremos cuenta que no podemos ingresar al modo gráfico.

Lo que haremos para ver que sucede es iniciar manualmente el modo gráfico y ver que nos arroja:

$ startx



Este error es muy común y se debe porque no tenemos montado el directorio raiz en modo de escritura, solo está en modo lectura y eso se debe a una configuración del mismo grub.

Hagamos una prueba, remontaremos la partición del directorio raiz del sistema y luego de eso iniciaremos el gestor gráfico:

$ sudo mount -o remount,rw /
$ startx


Al hacer esto nos daremos cuenta que nos apareció el login de ubuntu y podremos acceder normalmente al sistema.

Ahora, haremos que esto se haga de manera automática reparando el archivo de inicio:

Lo que haremos es editar el archivo "/etc/default/grub" con permisos de root, podemos hacerlo por ejemplo:

sudo gedit /etc/default/grub

O también usando vi o nano desde el terminal.

Buscamos las siguientes líneas:

CitarEOF
 fi
 if test -d /sys/firmware/efi && test -e "${linux}.efi.signed"; then
   sed "s/^/$submenu_indentation/" << EOF
   linux   ${rel_dirname}/${basename}.efi.signed root=${linux_root_device_thisversion} ro ${args}
EOF
 else
   sed "s/^/$submenu_indentation/" << EOF
   linux   ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}

Pueden haber mas lineas que sean similares pero lo importante es encontrar las que digan "ro", estas hay que reemplazarlas por "rw" (read write), guardas cambios y actualizamos el grub:

$ sudo update-grub

Luego reiniciamos el sistema (puedes reiniciar con el comando "reboot") y listo! ahora nuestro sistema inicia sin problemas.


Recomendaciones adicionales

Adicionalmente a esto también es recomendable realizar una serie de pasos y mantenciones para asegurarnos que tenemos todo en regla y que no nos aparecerán otros problemas adicionales que impidan iniciar normalmente el sistema:


1: Limpiar el sistema, actualizar todo y buscar dependencias no instaladas:
Hay algunos problemas conocidos en que el sistema no arranca despues de una actualización porque no se instalaron correctamente algunas dependencias.

$ sudo apt-get update
$ sudo dpkg --configure -a
$ sudo apt-get dist-upgrade
$ sudo apt-get -f install



2. Reinstalar "systemd-sysv"
Hay algunos problemas con "systemd-sysv" que impiden que el sistema arranque despues de una actualización, por este motivo procedemos a realizar una reinstalación:

$ sudo apt-cache policy systemd-sysv
$ sudo apt-get install --reinstall systemd-sysv


3. Eliminando los mimetypes
Hay algunos problemas cuando quieres hacer cambios específicos en algunos softwares que modifican el mimetype del sistema y arrojan una cantidad infinta de warnings de tipo "Unknown media type in type ...", esto se soluciona desinstalando el paquete con problemas:

$ sudo mv -vi /usr/share/mime/packages/kde.xml /usr/share/mime/packages/kde.xml.bak
$ sudo update-mime-database /usr/share/mime
$ sudo apt-get remove chemical-mime-data



¿Otros problemas similares al actualizar la distribución?, recomendaciones

Cuando actualizas una distribucin debes tener mucho cuidado, antes de hacerlo debes deshabilitar tus drivers privativos como los de nvidia, intel, etc ya que cuando actualizas y tienes un nuevo kernel estos drivers dejan de ser compatibles, por lo tanto cuando terminas y reinicias el sistema puedes terminar con un kernel panic:



Por esto cuando puedes iniciar por lo menos con "upstart" lo primero que debes hacer es deshabilitar tus drivers privativos desde el gestor de actualizaciones en la pestaña que dice "controladores restringidos":



Otro problema muy común es la actualización de componentes gráficos que en muchas ocasiones arrojan problemas debido a configuraciones antiguas, para evitar esto basta con reinstalar cada componente o purgar y luego instalar, por ejemplo en mi caso al actualizar "libgdk-pixbuf" a traves de las actualizaciones automáticas mi sistema dejó de dar video, por lo cual tuve que iniciar en modo tty1 (presionando Alt+Control+F1 después de loguearse sin importar que no se vea nada), esto iniciará el modo consola y luego procedemos a reinstalar el paquete afectado:

apt-get -y reinstall libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common libgdk-pixbuf2.0-common && reboot

Reiniciamos y solucionado!. Ahora, ¿cómo podemos saber exactamente que version estamos utilizando?:

whk@machine:~$ sudo apt list --installed | grep libgdk
[sudo] password for whk:

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

libgdk-pixbuf2.0-0/xenial-updates,xenial-security,now 2.32.2-1ubuntu1.4 amd64 [instalado]
libgdk-pixbuf2.0-common/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.32.2-1ubuntu1.4 all [instalado]
libgdk-pixbuf2.0-dev/xenial-updates,xenial-security,now 2.32.2-1ubuntu1.4 amd64 [instalado, automático]


Este problema se viene arrastrando desde hace muchos años y me ha sucedido hoy (2018). Esto es parte de un largo bug de ubuntu.

Otro problema muy común es que la tarjeta de red deja de ser compatible por lo cual cuando terminas la actualización y te encuentras con que solo puedes acceder al terminal tambien te das cuenta que no le puedes hacer ping a google, entonces ejecutas "ifconfig" para ver la configuración de red y no aparece "eth0", cuando eso sucede es porque tu driver de la tarjeta de red ya no es compatible.

Entonces, ¿que puedo hacer?: que tu tarjeta de red no le funcione el driver no quiere decir que tu chip de wifi tampoco lo sea, en muchas ocasiones si pero no siempre, en ese caso debes buscar documentación sobre como habilitar tu wifi manualmente desde "iwconfig".

Cuando no puedes habilitar ninguno de los dos lo que yo hago es buscar el modelo del notebook (laptop) o pc y le busco el driver oficial y se lo paso via usb pendrive, para esto debo montar manualmente la partición del usb y luego acceder al archivo e instalarlo, si es un .deb lo instalo con "dpkg -i archivo".

También es recomendable mantener siempre la última versión del kernel instalado y eliminar las versiones viejas. Cuando actualizas la distribución de tu sistema operativo este por lo general viene con nuevas versiones del kernel pero estas no se eliminan de manera automática, para esto puedes usar "Ubuntu Tweak" en la sección de limpieza:



Esto es bueno porque también eliminarás problemas de carga de módulos con otros kernels.

Otro punto a considerar es que si no tienes problemas con virtualbox si los puedes tener con algún otro sistema de virtualización como kvm, en este sentido desinstala y luego lo vuelves a instalar cuando tengas todo funcionando, tus configuraciones y maquinas virtuales al igual que con virtualbox no serán eliminados.

Si usas Java, después de actualizar tu sistema operativo debes reconfigurar la ruta por defecto:
$ sudo update-alternatives --config java

Y seleccionar la versión que estás usando, en mi caso es Java7:
root@machine:/# sudo update-alternatives --config java
Existen 3 opciones para la alternativa java (que provee /usr/bin/java).

 Selección   Ruta                                     Prioridad  Estado
------------------------------------------------------------
* 0            /usr/bin/gij-5                            1050      modo automático
 1            /usr/bin/gij-4.8                          1048      modo manual
 2            /usr/bin/gij-5                            1050      modo manual
 3            /usr/lib/jvm/java-7-oracle/jre/bin/java   1049      modo manual

Press <enter> to keep the current choice[*], or type selection number: 3
update-alternatives: utilizando /usr/lib/jvm/java-7-oracle/jre/bin/java para proveer /usr/bin/java (java) en modo manual
root@machine:/#


Si no lo haces entonces las aplicaciones que usaban java (como android studio) dejarán de funcionar o darán errores comunes de compatibilidad, como por ejemplo:

whk@machine:/opt/android-studio/bin$ ./studio.sh
java version "1.5.0"
gij (GNU libgcj) version 5.4.0 20160609

Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Start Failed: Internal Error. Please report to https://https://code.google.com/p/android/issues

java.lang.reflect.InvocationTargetException
  ...
Caused by: java.lang.RuntimeException: Could not find 'theUnsafe' field in the class sun.misc.Unsafe
  at com.intellij.util.concurrency.AtomicFieldUpdater.getUnsafe(AtomicFieldUpdater.java:44)
  ...14 more



Algunas fuentes

Algunas fuentes desde donde recopilé la información:


Espero que todo esto les pueda dar algunas luces sobre el problema que tengan cuando terminan de actualizar Ubuntu. Si no quieren pasar un buen rato sentado en el escritorio tratando de hacer arrancar ubuntu despues de una actualización entonces descarguen el iso de la nueva versión de ubuntu, respalden y formateen, instalen el SO de cero.

Saludos.
#767
En firefox si me anda, ese bug ya tiene su CVE id asignado asi que probablemente en algunas versiones de algunos navegadores ya lo esten parchando.
#768
Nivel Web / Re: GitHub como vector de ataque
23 Agosto 2016, 03:38 AM
Cita de: berz3k en 23 Agosto 2016, 02:01 AM
@WHK mediate querys en Google ? que me parece esta de moda hacer busquedas OSINT? aunque realmente es una  busqueda para encontrar rastros de tu ofsensor

-berz3k

Asi es, usando dorks, buscando por trozos de códigos, urls, credenciales, dominios, ip, etc
#769
Lo he logrado con php BC Math xD

http://php.net/manual/en/book.bc.php

Creo que gmp tiene un bug que no permite calcular la diferencia y resto de numeros mayores a 50 cifras, pero con bc math si pude :)

http://php.net/manual/en/function.bcmod.php
#770
Hola, alguien sabe de algún método para calcular el resto de un numero natural de 200 digitos?, he intentado con gmp pero no me da la longitud.

Saludos.