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ú

Temas - kid_goth

#1
Buenas tardes/noches/días,

En este tema voy a empezar a publicar los tutoriales del framework ya mencionado en otro post (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta). La idea es que cada que pueda los publico todos en este mismo hilo (como respuesta), cambiando solo el título para no crear tantos temas, de igual forma los publico en mi blog por si quisieran pasarse, pero no es necesario, tal cual lo que publico allá lo pego acá jeje. Así que comencemos:


iniciamos con los tutoriales de PHP Simple Framework, en este tutorial, vamos a a prender a instalar el proyecto y poner la configuración inicial para así poder continuar con nuestra aplicación.

voy a hacer uso de muchos gif (bueno o imágenes normales ejejjeje) para mostrar los pasos a seguir de una forma más entendible, que grabando me aburro D:

Así que empecemos pues:
Primero que todo y antes que nada, estoy seguro que ya tienes tu servidor web configurado, ya sea en gnu/linux, windows o mac (bsd, sun, etc.) y por lo tanto eso no lo detallo. Inicia servicios por favor (en tu wampp, xampp, mampp, con tu consola sudo service o como sea en tu sistema operativo).

Una vez iniciado tenemos 3 opciones:

1. Descargar el archivo zip del repositorio.

Para esto debes dirigirte a la siguiente URL No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y descargar el archivo ya sea ZIP o TAR.GZ de la v0.2.

Luego, creas el directorio destino de tu aplicación y descomprimes el archivo allí.

2. Por git, desde la terminal simplemente pones:

Código: bash
git clone https://github.com/bssanchez/PHP-Simple-Framework.git directorio_app



3. Si tienes instalado composer, pues creas el proyecto así:

Código: bash
$ composer create-project grafikamos/phpsfw


Nuestro siguiente paso es más sencillo aún, abrimos el archivo configuración.json con el editor que más queramos y seteamos los parámetros necesarios para la app.


Entre ellos los importantes son los de sitio, psfw y bd... para obtener una descripción más detallada referirse al No tienes permitido ver los links. Registrarse o Entrar a mi cuenta del framework (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Guardamos el archivo y nuevamente desde la terminal ejecutamos el composer install. Ubicados en el directorio del proyecto, ejecutamos el siguiente comando (no te preocupes si no tienes composer instalado, el framework se lleva una copia del mismo para evitar estos problemas):

Código: bash
php composer.phar install



Por último para ver el proyecto andando, con el demos de usuarios, cargamos la base de datos llamada test.sql con tu administrador de bases de datos preferido, ya sea phpmyadmin o desde la terminal o navicat o mysql workbench, etc. Recuerda que los parámetros de bd deben estar configurados bien para que todo salga como debe.

Y ya solo queda crear el directorio de cache de las vistas, debe ser el mismo que se configuró en la configuración (configuracion.json) en psfw->dir_cache. En mi caso cache/raintpl/ entonces lanzamos estos 2 comandos:

Código: bash
$ mkdir cache/raintpl
$ chmod 777 -R cache


El segundo es para los permisos, seguramente en windows no es necesario este último y en vez de mkdir usar md.

Nota: Si eres usuario windows, debes realizar este paso para su correcto funcionamiento, el error proviene del uso de DIRECTORY_SEPARATOR en la liberia de RainTPL, ya que no lo han arreglado en la última versión stable (3.1.0) que es la que usamos actualmente, lo vamos a arreglar manualmente.

Entonces vamos a abrir el siguiente archivo: extras/rain/raintpl/library/Rain/Tpl.php y en la linea 241, puede variar la linea, para estar seguros, busca la función llamada checkTemplate y cambia la siguiente linea:

esto:

Código: php
$templateBasedir = strpos($template, DIRECTORY_SEPARATOR) !== false ? dirname($template) . DIRECTORY_SEPARATOR : null;


por esto:

Código: php
$templateBasedir = strpos($template, '/') !== false ? dirname($template) . '/' : null;


Luego vamos a este archivo: extras/rain/raintpl/library/Rain/Tpl/Parser.php y en la linea 663 (o en el caso de que cambie en la funcion reducePath, que en estos momentos es la última función del archivo), cambiamos lo siguiente:

Esto:

Código: php
$path = str_replace("/", DIRECTORY_SEPARATOR, $path);


Por esto:

Código: php
//$path = str_replace("/", DIRECTORY_SEPARATOR, $path);


o si desean, directamente la borramos. Puede que a futuro a partir de la publicación de este post no sea necesario hacer estos pasos ya que el pull request del arreglo ya fue enviado y solo falta que lo agreguen a la versión. Entonces si no ves esas lineas que menciono así como las menciono, no toques nada jejejej.

Y ya está, podemos ver nuestro proyecto en la web:


Si ocurre algún problema no dudes en escribirlo en los comentarios, así como poner el debug en 1 en la configuración para ver que problemas surgieron.

Quedo atento y muchas gracias por leer, los saluda kid_goth.
#2
Buenas tardes/días/noches,

Tengo un ligero problemilla, a ver si alguien me puede echar una mano.

Tengo una (ni se como llamarlo) base de datos (un archivo) que contiene un montón de datos, el archivo en cuestión es creado con una aplicación realizada en Cobol y sus cabeceras me muestran RKMF (como en la imagen que dejo adenlante). La info está, porque la abro con vim y ahí se ve (mal pero se ve, ahí se ve en la misma imagen) pero la necesito limpia para migrarla a una base de datos descente.


Encontré un software llamada DataViewer de Siber (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta), funciona bien, solo que en el Trial me muestra hasta 50 registros, no más, y la "base de datos" tiene por lo menos 3000 registros y la versión full de la aplicación vale 4900 dólares (dinero que no tengo D: soy pobre jeje)...

Entonces no veo más solución que pediros ayuda para encontrar si no una solución gratis, por lo menos más asequible a mi bolsillo, o programandola mí mismo, sin embargo, necesito idea de por donde empezar (a parte de aprender a programar en cobol, que en ello ya estoy jejeje solo que lo que enseñan es a manipular ficheros planos).

De momento tengo los .EXE del programa echo en cobol que funciona con esa "base de datos" y el cual crea, actualiza, busca, lista y elimina registros. Y tengo un archivo CBL con el que venia el programa que no logro entender del todo pero parece tener mucho que ver con este software (hasta creo que son las fuentes, si no de todo, de alguna parte sí) el cual dejo aquí también por si alguien lo entiende y me guía sobre que parte puede ser la que estoy necesitando.

El código del cobol lo dejo en pastebin que es muy largo : No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Sin más de antemano muchísimas gracias y espero encontrar esa ayuda :) saludos.
#3
Back-end / PHP Simple Framework v0.2
Junio 09, 2016, 02:07:43 AM
Buenas noches,

hace tiempo hice un mini framework, bien simple (casi que vanilla pero con algunas cosillas claro jejej), y ese lo vine usando en multiples proyectos y me ha ido bien, sin embargo, esto de estar actualizado y todas esas cosillas lo fui mejorando poco a poco hasta que me quedo una versión mucho más pulida y funcional.

Aqui la versión 0.1: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Pues bueno ahora se viene la 0.2, entre lo más destacado de esta actualización viene:


  • Uso de RainTPL3 en vez de smarty
  • Uso de composer para librerías extras
  • Uso de namespaces
  • Cambio de esquema de la aplicación
  • Ya no es necesario tener una base de datos para lanzar el proyecto
  • Implementado sistema Multi-idioma
  • Implementado sistema de urls amigables
  • Implementado sistema de multi sitio (me refiero a si se desean vistas diferentes por dispositivo)
  • Entre otras mejoras


Voy a llevar de a poco pequeños manuales de como hacer un módulo y estas cosillas en mi blog, para que si le sirve a alguien, al menos haya una guía rápida. Sin embargo cuando descarguen el framework notarán que hay un test.sql el framework ya viene co un modulo que tiene varias funcionalidades, como generar un pdf, crear un usuario (nombre, contraseña, imagen [por upload]), listado de usuarios, vistas de menú, etc.

Bueno ya está en sí el framework y así se puede usar. sin embargo, hay varias cosas que voy a ir implementando, así que lo que se viene ahora es:


  • PHPMailer funcional con el framework
  • Un sistema de base de datos más sencillo e intuitivo (ya lo tengo pensado)
  • Sistema de seguridad por roles
  • Script cliente por terminal para crear módulos de manera rápida
  • Funciones extras de scripts que he creado y pueden servir

Cualquier dudilla no duden en preguntar y aquí estoy para cualquier sugerencia.

El proyecto esta en bitbucket, y se puede acceder a través de la siguiente URL, hay ya 2 tags creados, el v0.1 y v0.2-alpha.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Editado* Movido a GitHub para mayor comodidad
#4
Seguridad / Acerca de Kali Linux o Similares
Noviembre 05, 2015, 02:41:28 PM


Buenos días/tardes/noches,

Debido a que hay muchísimas preguntas mediocres acerca de el uso de Kali Linux (o similares, al cuál me referiré de ahora en más para no nombrar todas las que existen, aunque lo mismo vaya para Bugtraq, Blackarch, Backbox, etc.), con el tipo de preguntas:

* ¿Cómo aprendo a usar kali linux?
* o ¿Cómo aprendo a jakiar, ya tengo kali linux?
* etc, etc, etc...

Quiero aclarar algunos puntos a ver si dejamos en claro que es lo que realmente deben o no aprender acerca de estas distribuciones... En lo personal las detesto, si bien es cierto facilitan algunas cosillas, también vuelven perezosos y "lammercillos" en cierta forma a todo aquel que no tiene ni idea de informática y se mete de llano a la seguridad informática.

Entonces, para aclarar:

1. Por tener Kali linux no te haces hacker

Esto es algo muy importante, Kali no te hace ni más ni menos en el mundo de la seguridad informática, y (aunque odie esto que voy a decir) hasta con un windows xp muchas personas llegan a más que alguien con esta distro.

2. No debes aprender kali linux

No hay forma, no hay por qué, a ti no te interesa Kali Linux,  a ti te interesa la seguridad informática, si bien es cierto es una distribución con la mayoría de herramientas, no creas que por tenerla lo tienes todo. Aprende primero, y aprende sobre sus herramientas que es lo realmente importante, peeero claro si ni sabes que es un gestor de paquetes, ni que es eso de servicios, ni siquiera sabes de que va eso de que es derivada de Debian, ¿Cómo pretendes manejarla?

3. ¿Qué es realmente Kali Linux?

Kali Linux es solamente una iso GNU/Linux basada en Debian (y/o ubuntu, ya no recuerdo esto jejeje si mantienen las dos versiones o solo la de Debian), que le pusieron un bonito wallpaper, un tema de iconos y de entorno (bueno varios entornos) y muchas aplicaciones para automatizar labores de (no solo) seguridad informática pre-instaladas; de las cuales solo usas 10 o 20... ¿entonces?, ¿para qué tanto si puedes desde tu Distribución preferida hacerte de tus paquetes y suites para lo que realmente necesitas?

4. ¿Que debes aprender?

Es muy sencillo, aprende a buscar, leer, investigar, cuestionar, practicar, aprender... Debes dejar de buscar como "aprender" Kali Linux, porque realmente, no lo aprendes. Más bien, aprende a manejar una distribución de GNU/Linux o bueno, en su defecto el sistema operativo que más te guste, manejalo bien, aprende a instalar cosillas, aprende a hacer las cosas manualmente; AH!!!! que te dijeron que con SQLMAP te sacas toda la información de una base de datos en unos cuantos minutillos y que kali linux la tiene, entonces, ¿te vas a descargar y aprender kali por ello?, NO...!!!!, aprende lo que hace, aprende de SQL Injection, lograla manualmente, luego de practicar y practicar y practicar, verás mejores metodos y te haces tu propio script para automatizar estas labores, verás la satisfacción que se obtiene, o en su defecto aprende Python y te metes a ver como lo hace el SQLMAP... Aprende a hacer las cosas por ti mismo y a entenderlas... Quieres "aprender" Kali Linux?, NO...!!! Aprende a manejar GNU/Linux y luego ya puedes instalar, manejar, entender y "apropiarte" de las herramientas que realmente necesitas. ¿Quieres cambiar tus calificaciones en la universidad? (ojo esto es solo una idea jejeje no lo hagáis xD), tu respuesta seguro lanzar un Scanner de vulnerabilidades y lanzar exploits como loco con Metasploit (y peor aún, armitage u.u), Pues NO...!!!, ¿al menos sabes que es un sitio web o como funciona?, ¿de donde salen esas vulnerabilidades?, APRENDE ESO....!!!!, eso es lo realmente importante...

5. Pero todos la usan y me la recomiendan

Claro, puedes usarla pero no a lo idiota por favor, si ya has aprendido lo que deseas hacer es una buena herramienta si sales de casa y no llevas tu computador personal, pues entonces es válido, pero por favor trata antes... Te reto a que hagas esto, ¿Kali Linux es Debian no?, pues descargate Debian, instalalo aprende a configurarlo, ponte una meta de verdad, aprende a realizar esa meta por tus medios, cerebro y manos, no necesitas más (hay muchísimas formas para practicar esto, Wargames, Aplicaciones como DVWA y con esta de paso aprendes a montar tu servidor web y entenderlo, CTF's, etc), ya luego aprende a crear una herramienta que te ayude a automatizar lo que has hecho manualmente, pero hazlo por ti mismo y luego sí, si te parece, puedes usar una hecha por otros más completa, pero, sabrás como funciona y eso es realmente lo importante.

6. Para Finalizar

No solo existe Kali Linux, la menciono y la "ataco" a ella por se la más conocida, pero hay multiples soluciones como las que he mencionado arriba, y cuando digo Kali Linux en este texto, me refiero a todas estas. Aprende en sí sus herramientas, y aprende lo que va de fondo, Metasploit tan usado, y ¿Sabes lo que es postgrest y/o por qué es necesario iniciar ese servicio?, al menos sabes que es un servicio?... Te invito en serio a investigar más allá, hay muchas más cosas y opciones más interesantes que una distribución para "Hackers", incluso Google es más que ello (o cualquier buscador que uses), tu mente y manos dan más si no las sabes usar no importa cuantas herramientas tengas instaladas en tu computador, no servirán de nada.

Saludos y espero haya quedado algo claro jejeje los ama kid_goth
#5
Buenas a todos,

no suelo molestar mucho con este tipo de preguntas, ya que suelo usar buscadores y leer de diferentes lugares, sin embargo para este caso si que necesito un poco de vuestra ayuda ya que lo que he encontrado no se enfoca mucho a lo que quiero por lo tanto no terminan de convencerme.

Bueno al grano, he estado desarrollando web apps ya hace tiempo, y siempre he usado JQuery, me gusta la verdad, me siento cómodo peeeero, en estos últimos desarrollos me ha dado unas bajas muy penosas, por ejemplo el hecho de que para algo especifico deba incluir montón de librerías, o de que deba repetir código o simplemente cargar un archivo con 1000 funciones de las cuales usaré solo una y el resultante será una demora considerable en la carga de la página. Entonces me decidí a buscar algo mas "compacto y completo" y me puse a ver tantas librerías que ya leyendo (varias de ellas, las mas populares en si) me he quedado con las dudas que os plantearé a continuación. Entonces, quisiera que me colaboraran a decidir que librería me serviría mas para el siguiente caso de tipo de desarrollo que es el que mas manejo en mi diario comun:


  • Aplicativos web, donde el diseño no es principal, sin embargo no descuidarlo.
  • Uso constante de AJAX y del DOM.
  • Operaciones de paginado.
  • Manejo de datos en cantidades moderadas (en varios formatos [json, xml, html, texto plano, yml, etc]).
  • Y por último (y no menos importante) que a futuro si puedo usarla en desarrollos netamente apartes a la web (como por ejemplo desarrollo móvil)

NOTA: Si conoce alguno a parte de los "populares" agradezco la mención, en mi caso me han llamado la atención el Angular JS, NodeJS (aunque este es demasiado extenso), React js, backbone, mustache... y en los que no estoy para nada interesado son extjs y vanilla js ¬¬
#6
Wargames y retos / [Reto] Forense y Multiples tecnicas...
Septiembre 25, 2014, 12:58:16 PM
Hola,

tenia un reto de tiempo atrás jeje y recuerdo que es algo entretenido :) así que se los publico:

==========================
Se ha capturado a un sospechoso de andar por ahi con fotos de niños. En el momento de su captura le encontramos un disquette el cual contenia 3 archivos y le generamos la imagen bit bit pero no hemos logrado encontrar nada que lo incrimine directamente, tu mision descargar la imagen y analizarla ahi deben estar las fotos estamos seguros ya que se encontraria con uno de sus clientes y al parecer se entregan todo en un modo de cifrado que han planeado. Nuestro archivo sospechoso es 'images' pero no logramos obtener nada. Ayudanos de la siguiente forma....

Para este reto debes darnos el md5 de la combinación de los MD5sum de las fotos que encuentres casi:         
                                                                                                 
Si hay 2 fotos (foto1.jpg y foto2.jpg) debes sacar el MD5sum de foto1.jpg y el md5sum     
de foto2.jpg, suponiendo que para la primera es abcdef123456789abcfde123985461bc y para la     
segunda fde123abc985461bcabcdef123456789 debes unirlos así:                                   
                                                                                               
abcdef123456789abcfde123985461bcfde123abc985461bcabcdef123456789 y sacar el md5 de ese texto. 
f947f54f485ced81e4a7f12811c86792 siendo esta la respuesta del reto (para este caso)...         

Saludos y Buena suerteeeeee!!!!

=========================================

Descarga:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

PD: Respuesta por MP jeje cuando acaba yo que se xDD si algo al final doy la solución y los pasos
#7
Off Topic / Postea tu mobile
Septiembre 12, 2014, 02:31:29 PM
Wola, ya que se han creado temas como postea tu desktop, que tal si ahora en lugar del desktop lo hacemos con el mobile a ver si encontramos algo interesante y que nos guste. Personalmente me gusta tomarme un poquito de tiempo para personalizar mi cel y mi pc y pues aqui posteo el mio:

Como lo tenia antes:


* Es solo el atom launcher tal cual como viene xD

y asi ahora:


* Launcher: Nova Launcher Prime
* Iconos: Minimalico Icon Pack Theme
* Configuraciones Nova: Removi el dock del nova y las multiples escritorios, abre el menu con gesto hacia arriba
* Widget: Solo el del reloj digital propio del motorola

Saludos
#8
Back-end / [SOURCE] Convertir numero a texto con PHP (Class)
Septiembre 09, 2014, 04:15:46 PM
Hola,

Necesitaba convertir los valores que se ingresaban en formato numero a texto por ejemplo 1000 -> mil y pues estaba por empezar a hacer la clase y que se me da por buscar y encontré una clase en stackoverflow pero en ingles entonces pues la traduje y le cambié algunas cosas como que por ejemplo allá dicen one thousand y aca puel mil y ya (mas no un mil) o que en muchas partes de habla inglesa llaman a los miles de millones como billones etc... Ademas de que lo dejej como una clase ya que estaban en funciones sueltas... sin mas les comparto ambos códigos (de paso el link pastebin) y la fuente :D

Ingles: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Código: php
<?php

/**
* English Number Converter - Collection of PHP functions to convert a number
*                            into English text.
*
* This exact code is licensed under CC-Wiki on Stackoverflow.
* http://creativecommons.org/licenses/by-sa/3.0/
*
* @link     http://stackoverflow.com/q/277569/367456
* @question Is there an easy way to convert a number to a word in PHP?
*
* This file incorporates work covered by the following copyright and
* permission notice:
*
*   Copyright 2007-2008 Brenton Fletcher. http://bloople.net/num2text
*   You can use this freely and modify it however you want.
*
* Class for POO by kid_goth
*/
class Num2TextEng {

    public function convertNumber($number) {
        $output = "";

        if (preg_match('/\./', $number)) {
            list($integer, $fraction) = explode(".", (string) $number);
        } else {
            $integer = (string) $number;
            $fraction = NULL;
        }

        if ($integer{0} == "-") {
            $output = "negative ";
            $integer = ltrim($integer, "-");
        } else if ($integer{0} == "+") {
            $output = "positive ";
            $integer = ltrim($integer, "+");
        }

        if ($integer{0} == "0") {
            $output .= "zero";
        } else {
            $integer = str_pad($integer, 36, "0", STR_PAD_LEFT);
            $group = rtrim(chunk_split($integer, 3, " "), " ");
            $groups = explode(" ", $group);

            $groups2 = array();
            foreach ($groups as $g) {
                $groups2[] = $this->convertThreeDigit($g{0}, $g{1}, $g{2});
            }

            for ($z = 0; $z < count($groups2); $z++) {
                if ($groups2[$z] != "") {
                    $output .= $groups2[$z] . $this->convertGroup(11 - $z) . (
                            $z < 11 && !array_search('', array_slice($groups2, $z + 1, -1)) && $groups2[11] != '' && $groups[11]{0} == '0' ? " and " : ", "
                            );
                }
            }

            $output = rtrim($output, ", ");
        }

        if ($fraction > 0) {
            $output .= " point";
            for ($i = 0; $i < strlen($fraction); $i++) {
                $output .= " " . $this->convertDigit($fraction{$i});
            }
        }

        return $output;
    }

    private function convertGroup($index) {
        switch ($index) {
            case 11:
                return " decillion";
            case 10:
                return " nonillion";
            case 9:
                return " octillion";
            case 8:
                return " septillion";
            case 7:
                return " sextillion";
            case 6:
                return " quintrillion";
            case 5:
                return " quadrillion";
            case 4:
                return " trillion";
            case 3:
                return " billion";
            case 2:
                return " million";
            case 1:
                return " thousand";
            case 0:
                return "";
        }
    }

    private function convertThreeDigit($digit1, $digit2, $digit3) {
        $buffer = "";

        if ($digit1 == "0" && $digit2 == "0" && $digit3 == "0") {
            return "";
        }

        if ($digit1 != "0") {
            $buffer .= $this->convertDigit($digit1) . " hundred";
            if ($digit2 != "0" || $digit3 != "0") {
                $buffer .= " and ";
            }
        }

        if ($digit2 != "0") {
            $buffer .= $this->convertTwoDigit($digit2, $digit3);
        } else if ($digit3 != "0") {
            $buffer .= $this->convertDigit($digit3);
        }

        return $buffer;
    }

    private function convertTwoDigit($digit1, $digit2) {
        if ($digit2 == "0") {
            switch ($digit1) {
                case "1":
                    return "ten";
                case "2":
                    return "twenty";
                case "3":
                    return "thirty";
                case "4":
                    return "forty";
                case "5":
                    return "fifty";
                case "6":
                    return "sixty";
                case "7":
                    return "seventy";
                case "8":
                    return "eighty";
                case "9":
                    return "ninety";
            }
        } else if ($digit1 == "1") {
            switch ($digit2) {
                case "1":
                    return "eleven";
                case "2":
                    return "twelve";
                case "3":
                    return "thirteen";
                case "4":
                    return "fourteen";
                case "5":
                    return "fifteen";
                case "6":
                    return "sixteen";
                case "7":
                    return "seventeen";
                case "8":
                    return "eighteen";
                case "9":
                    return "nineteen";
            }
        } else {
            $temp = $this->convertDigit($digit2);
            switch ($digit1) {
                case "2":
                    return "twenty-$temp";
                case "3":
                    return "thirty-$temp";
                case "4":
                    return "forty-$temp";
                case "5":
                    return "fifty-$temp";
                case "6":
                    return "sixty-$temp";
                case "7":
                    return "seventy-$temp";
                case "8":
                    return "eighty-$temp";
                case "9":
                    return "ninety-$temp";
            }
        }
    }

    private function convertDigit($digit) {
        switch ($digit) {
            case "0":
                return "zero";
            case "1":
                return "one";
            case "2":
                return "two";
            case "3":
                return "three";
            case "4":
                return "four";
            case "5":
                return "five";
            case "6":
                return "six";
            case "7":
                return "seven";
            case "8":
                return "eight";
            case "9":
                return "nine";
        }
    }

}

/**
* Example of use:
*
* http://localhost/Num2TextEng.php?n=1000
* */
$objNum2TextEng = new Num2TextEng();
$_G = filter_input(INPUT_GET, 'n');
echo $objNum2TextEng->convertNumber($_G);

// Output: one thousand



Español: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Código: php
<?php

/**
* Tomado de:
*  Copyright 2007-2008 Brenton Fletcher. http://bloople.net/num2text
*  @link     http://stackoverflow.com/q/277569/367456
*  @question Is there an easy way to convert a number to a word in PHP?
*
* Bajo la licencia de CC-Wiki on Stackoverflow.
* http://creativecommons.org/licenses/by-sa/3.0/
*
*
* Modificado por kid_goth para uso en regiones de habla española
* En donde se 1.000.000.000 es igual a Mil millones y no a un
* billon como se usa en las regiones de habla inglesa. Ademas de agregar
* POO a la programacion.
*
*  @contact Twitter: @_kid_goth
*/
class Num2Text {

    public function convertNumber($number) {
        $output = "";

        if (preg_match('/\./', $number)) {
            list($integer, $fraction) = explode(".", (string) $number);
        } else {
            $integer = (string) $number;
            $fraction = NULL;
        }

        if ($integer{0} == "-") {
            $output = "negativo ";
            $integer = ltrim($integer, "-");
        } else if ($integer{0} == "+") {
            $output = "positivo ";
            $integer = ltrim($integer, "+");
        }

        if ($integer{0} == "0") {
            $output .= "cero";
        } else {
            $integer = str_pad($integer, 36, "0", STR_PAD_LEFT);
            $group = rtrim(chunk_split($integer, 3, " "), " ");
            $groups = explode(" ", $group);

            $groups2 = array();
            foreach ($groups as $g) {
                $groups2[] = $this->convertThreeDigit($g{0}, $g{1}, $g{2});
            }

            for ($z = 0; $z < count($groups2); $z++) {
                if ($groups2[$z] != "") {
                    $rtnGroup = $this->convertGroup(11 - $z, $groups2[$z]);
                    $output = preg_replace("/" . $rtnGroup . " /", "", $output);
                    $output .= $groups2[$z] . $rtnGroup . (
                            $z < 11 && !array_search('', array_slice($groups2, $z + 1, -1)) && $groups2[11] != '' && $groups[11]{0} == '0' ? " " : " "
//$z < 11 && !array_search('', array_slice($groups2, $z + 1, -1)) && $groups2[11] != '' && $groups[11]{0} == '0' ? " and " : ", "
                            );
                }
            }

            $output = rtrim($output, ", ");
        }

        if ($fraction > 0) {
            $output .= " punto";
            for ($i = 0; $i < strlen($fraction); $i++) {
                $output .= " " . $this->convertDigit($fraction{$i});
            }
        }

        return preg_replace('/un mil\b/', 'mil', $output);
    }

    private function convertGroup($index, $valor = '') {
        switch ($index) {
            case 12:
                if ($valor != 'un') {
                    return " sextillones";
                } else {
                    return " sextillon";
                }
            case 11:
                return " mil quintillones";
            case 10:
                if ($valor != 'un') {
                    return " quintillones";
                } else {
                    return " quintillon";
                }
            case 9:
                return " mil cuadrillones";
            case 8:
                if ($valor != 'un') {
                    return " cuadrillones";
                } else {
                    return " cuadrillon";
                }
            case 7:
                return " mil trillones";
            case 6:
                if ($valor != 'un') {
                    return " trillones";
                } else {
                    return " trillon";
                }
            case 5:
                return " mil billones";
            case 4:
                if ($valor != 'un') {
                    return " billones";
                } else {
                    return " billon";
                }
            case 3:
                return " mil millones";
            case 2:
                if ($valor != 'un') {
                    return " millones";
                } else {
                    return " millon";
                }
            case 1:
                return " mil";
            case 0:
                return "";
        }
    }

    private function convertThreeDigit($digit1, $digit2, $digit3) {
        $buffer = "";

        if ($digit1 == "0" && $digit2 == "0" && $digit3 == "0") {
            return "";
        }

        if ($digit1 != "0") {
            $buffer .= $this->convertCientos($digit1);
            if ($digit2 != "0" || $digit3 != "0") {
                $buffer .= " ";
            }
        }

        if ($digit2 != "0") {
            $buffer .= $this->convertTwoDigit($digit2, $digit3);
        } else if ($digit3 != "0") {
            $buffer .= $this->convertDigit($digit3);
        }

        return $buffer;
    }

    private function convertTwoDigit($digit1, $digit2) {
        if ($digit2 == "0") {
            switch ($digit1) {
                case "1":
                    return "diez";
                case "2":
                    return "veinte";
                case "3":
                    return "treinta";
                case "4":
                    return "cuarenta";
                case "5":
                    return "cincuenta";
                case "6":
                    return "sesenta";
                case "7":
                    return "setenta";
                case "8":
                    return "ochenta";
                case "9":
                    return "noventa";
            }
        } else if ($digit1 == "1") {
            switch ($digit2) {
                case "1":
                    return "once";
                case "2":
                    return "doce";
                case "3":
                    return "trece";
                case "4":
                    return "catorce";
                case "5":
                    return "quince";
                case "6":
                    return "diez y seis";
                case "7":
                    return "diez y siete";
                case "8":
                    return "diez y ocho";
                case "9":
                    return "diez y nueve";
            }
        } else {
            $temp = $this->convertDigit($digit2);
            switch ($digit1) {
                case "2":
                    return "veinti$temp";
                case "3":
                    return "treinta y $temp";
                case "4":
                    return "cuarenta y $temp";
                case "5":
                    return "cincuenta y $temp";
                case "6":
                    return "sesenta y $temp";
                case "7":
                    return "setenta y $temp";
                case "8":
                    return "ochenta y $temp";
                case "9":
                    return "noventa y $temp";
            }
        }
    }

    private function convertCientos($digit) {
        switch ($digit) {
            case "0":
                return "cero";
            case "1":
                return "ciento";
            case "2":
                return "docientos";
            case "3":
                return "trecientos";
            case "4":
                return "cuatrocientos";
            case "5":
                return "quinientos";
            case "6":
                return "seicientos";
            case "7":
                return "setecientos";
            case "8":
                return "ochocientos";
            case "9":
                return "novecientos";
        }
    }

    private function convertDigit($digit) {
        switch ($digit) {
            case "0":
                return "cero";
            case "1":
                return "un";
            case "2":
                return "dos";
            case "3":
                return "tres";
            case "4":
                return "cuatro";
            case "5":
                return "cinco";
            case "6":
                return "seis";
            case "7":
                return "siete";
            case "8":
                return "ocho";
            case "9":
                return "nueve";
        }
    }

}

/**
* Ejemplo de Uso:
*
* http://localhost/Num2Text.php?n=1000
**/

$objNum2Text = new Num2Text();
$_G = filter_input(INPUT_GET, 'n');
echo $objNum2Text->convertNumber($_G);

// Salida: mil


Fuente: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#9
Hi,

en esta ocasión les vengo a compartir el source de una pagina de wargames que realice hace algunos años para este sitio, el diseño de la plantilla recuerdo me ayudaron varias personas a mejorarla nombrando que me acuerde kyr4_bl4ck, mrobles y los otros xDD... que como saben soy pésimo pal diseño :/.

El proyecto no esta codeado de la mejor forma :( lo hice ya hace varios años (diría unos 2 o 3) y cuando eso la verdad no conocía muy bien sobre programación limpia o como debe hacerse sin embargo hice un intento por crearlo MVC (ya se reirán de mi ¬¬) y combinaba mucho en ese entonces PHP, HTML, CSS y/o Javascript en un mismo documento :o que horros xDDDD al menos me doy el pro de que esta codeado bajo los estrictos estándares de la w3c xD...

sin mas os dejo una captura, a quien le sirva que lo use claro esta pueden mejorarlo jejeje y les dejo el link con el repositorio, ahí encontrarán un archivo SQL que tiene la base de datos en estructura y vacía sin embargo con registro de los wargames que ya existían (excepto los de SQLi esos los quité) y pueden ser usados pero de esos si pido se respete el origen del creador, ya que gastaron su tiempo y esas cosas :), tambien ahi una tabla de tutoriales que pueden implementar y dejé ahi varios links hacia tutoriales registrados y como no la grandiosa carpeta __p4dm1n__ que es un pequeño panel de administracion (a lo matrix xDDD ya lo verán) para la creación de retos, eliminar usuarios, desactivar retos por si acaso etc etc etc :) espero les sirva y pues tomen algunas cosillas de ahí que aun son muy utiles incluso hoy dia....

PD: El padmin no usa usuarios en DB, estan directamente en el index.php D: si lo se no me maten :(
PD2: Si no entienden algo me cuentan que seguro me acuerdo
PD3: Si ya se uso MD5 para varias cosas y no se debe pero como dije fue hace tiempo ya xDD
PD4: Disfrutenlo

LINK
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#10
Hola a todos :)

hace tiempo no publico, y debo decir que en breve comparto la versión 2 de PHP Simple Framwerok tomando algunos consejos y sobre cosas que he leido :) gracias a quienes me han aportado jeej.

Bueno este "edPDF" es una clase que creé la cual se instancia de 2 librerías FPDF y FPDI :) ya dirás buuu jejejej pero bueno la gracia es que te facilita la vida ya que el FPDI pide algunas cosas fundamentales para trabajar, esta clase las ejecuta en seguida y puedes enviar parámetros de forma mas fácil he insertar textos mas rápido eso si recuerden que tiene, tan facil como hacer esto:

Código: php

<?php
    require_once 'edPDF/edpdf.php';
    $edpdf = new edPDF();

    $edpdf->edPdfAddPage('miplantilla.pdf', 1);    
    $this->edpdf->insertar("Texto que desea insertar", 14, 49, 'BIU', 26);
    $this->edpdf->generarPDF('NombrePDF_Salida.pdf', 'I');


A peticion de ANTRAX dejo una captura con la plantilla, el codigo y lo que se genera en navegador :)


y Bueno aqui en esta url pueden leer el README.txt que trae la explicacion y su ejemplo :), que se puede mejorar claro que si, puedes mejorarla todo lo que quieras :) y de paso recuerda que pueden usar directamente las funciones de FPDI y FPDF si lo requirieras :)

Saludos y aqui el link:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#11
Back-end / PHP Simple Framework
Noviembre 27, 2013, 07:34:28 PM
Hola a todos jejeje,

hace tiempo no me paso casi que por ningun foro :/ por cuestiones de trabajo... sin embargo en el trabajo he logrado crear por cuestiones de velocidad y/o eficacia un "framework" (mal nombrado por cierto xDDDD ya les explico el porque), es cual me ha ayudado a tener una estructura y un avance de tiempo en desarrollos a la medida.

Les comento, en realidad no es un framework como tal sino la union de varios de estos, con librerias y cosillas que nos facilitaran la creacion de sitios web desde 0, que contiene:

Servidor:

* Smarty -> Gestor de plantillas para PHP, muy bueno y practico :D

* PHP DataObject (PDO) -> cree una clase abstracta con algunas funciones predefinidas que pueden digamos automatizar las funciones basicas como ejecucion de SQL simples y recepcion de datos de una tabla.

* mPDF -> es una libreria de PHP para generar pdf con php, sin embargo en la estructura he fusionado esta con Smarty para asi hacer mas sencillo el asunto de enviar algun HTML con datos dinamicos, dinamico etc...

Cliente:

* Twitter Bootstrap -> De seguro ya lo habran escuchado :D y en si es un gran aporte y/o apoyo a la hora de maquetar :), ademas que por esto de la "nueva era" del diseño responsable para linux, creo cae de perlas :D.

* JQuery -> Obviamente tambien habran escuchado del mismo jeejejjejee excelente y pues ya lo saben JS es muy bueno y jQuery es Poder jejeje

* JQuery UI -> Muchos widgets jejeej que trae esta cosa me gusta mucho para calendars, spinners, etc....

Ahora explicándolo un poco el "framework" esta estructurado de forma modular, usando el esquema Modelo Vista Controlador, y dejando de lado un poco el típico uso de mysql_*... para llevar a cabo el uso de PDO :D.... Un archivo de configuracion (típico xDDD) y digamos que me centre en que la seguridad no fuera tan baja :D si me pase de algo agradezco me lo digan :)...

Mi ideología

Me encanta programar y por ello no voy a dejar de hacerlo sin embargo tengo mi forma de hacer las cosas y mi organizacion y DETESTO que me forcen a hacerlo asi y punto ¬¬, por eso no quiero que vean como que uffff este framework va a hacerme todo el trabajo, pues no, no es un Zend ni un Codeigniter, es muy sencillo pero de eso se trata, programo porque me gusta, y hago lo que quiero...., asi que nada es automatico, solo te presento una estructura y una forma de hacer las cosas pero TU decides que hacer y como hacerlo :D.....

Sin mas dejo el link del git, si desean apoyar al proyecto con mucho gusto, esta alojado en Bitbucket y pues espero les sea de Ayuda :)

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#12
Back-end / Juego de BlackJack en PHP CommandLine
Abril 21, 2013, 09:59:50 PM
Hola a todos me inspire hoy en la tarde y me puse a programar el juego del BlackJack en php, es por consola, para ejecutar ya saben php blackjack.php,
espero qeu a alguien le sirva el codigo y como siempre ya saben miren, corrijan, dañen y vuelvan a arreglar y sobre todo COMPARTAN..!!...

se que puede mejorarse muchisimo mas pero la verdad es algo sencillo para seguir con la practica no es algo serio asi que no le meto tantas ganas jejejej, bueno aca una imagen y enseguida el codigo.


Código: php
<?php

/*
* Juego de blackjack en consola
* programado en php
*
* @author The Bolivar Team
*/
class blackjack
{
    private $mazo = array();
    protected $cartas_jug;
    protected $carta_lanzar;
    protected $jugador = array("cartas" => array(), "puntos_c" => array(), "puntos_p" => 0, "puntos_t" => 0);
    protected $tallador = array("cartas" => array(), "carta_1", "puntos_c" => array(), "puntos_p" => 0, "puntos_t" => 0);


    function __construct() {
        $this->iniciar();
    }
   
    private function iniciar() {
        $this->jugador = array("cartas" => array(), "puntos_c" => array(), "puntos_p" => 0, "puntos_t" => 0);
        $this->tallador = array("cartas" => array(), "carta_1", "puntos_c" => array(), "puntos_p" => 0, "puntos_t" => 0);
        $this->cargarCartas();
       
        $rand = rand(0, (count($this->mazo) - 1));
        $this->jugador['cartas'][] = $this->mazo[$rand];
        $this->jugador['puntos_c'][] = $this->puntos($this->mazo[$rand]);
        unset($this->mazo[$rand]);$this->barajar();
       
        $rand = rand(0, (count($this->mazo) - 1));
        $this->tallador['carta_1'] = $this->mazo[$rand];
        $this->tallador['puntos_c'][] = $this->puntos($this->mazo[$rand]);
        unset($this->mazo[$rand]);$this->barajar();
       
        $this->lanzarCarta('jugador');
        $this->lanzarCarta('tallador');
       
        $this->imprimir();
        $this->jugador();
    }
   
    private function lanzarCarta($player) {
        $rand = rand(0, (count($this->mazo) - 1));
        if($player == 'jugador')
        {
            $this->jugador['cartas'][] = $this->mazo[$rand];
            $this->jugador['puntos_c'][] = (int)($this->puntos($this->mazo[$rand]));
        }
        else if($player == 'tallador')
        {
            $this->tallador['cartas'][] = $this->mazo[$rand];
            $this->tallador['puntos_c'][] = (int)($this->puntos($this->mazo[$rand]));
        }
       
        $this->comprobar_ases($player);
        $this->comprobar($player);
        unset($this->mazo[$rand]);
       
        $this->barajar();
    }
   
    private function comprobar_ases($player) {
        $ases = array();
        $puntos = 0;
        if($player == 'tallador')
        {
            $datos = $this->tallador['puntos_c'];
           
            foreach($datos as $key => $valor)
            {
                if($valor == 11)
                {
                    $ases[] = $key;
                }
                else
                {
                    $puntos += $valor;
                }
            }
           
            foreach ($ases as $pos) {
                if(($puntos + 11) > 21)
                {
                    $this->tallador['puntos_c'][$pos] = 1;
                    $puntos += 1;
                }
                else
                {
                    $this->tallador['puntos_c'][$pos] = 11;
                    $puntos += 11;
                }
            }
            $this->tallador['puntos_t'] = $puntos;
            $this->tallador['puntos_p'] = $puntos - $datos[0];
        }
        else if ($player == 'jugador')
        {
            $datos = $this->jugador['puntos_c'];
           
            foreach($datos as $key => $valor)
            {
                if($valor == 11)
                {
                    $ases[] = $key;
                }
                else
                {
                    $puntos += $valor;
                }
            }
           
            foreach ($ases as $pos) {
                if(($puntos + 11) > 21)
                {
                    $this->jugador['puntos_c'][$pos] = 1;
                    $puntos += 1;
                }
                else
                {
                    $this->jugador['puntos_c'][$pos] = 11;
                    $puntos += 11;
                }
            }
            $this->jugador['puntos_t'] = $puntos;
            $this->jugador['puntos_p'] = $puntos - $datos[0];
            //print_r($datos);die();
        }
    }
   
    private function comprobar($player) {
        if($player == 'tallador')
        {
            if($this->tallador['puntos_t'] > 21)
            {
                $this->fin('jugador');
            }
        }
        else if ($player == 'jugador')
        {
            if($this->jugador['puntos_t'] > 21)
            {
                $this->fin('tallador');
            }
        }
        else
        {
           $this->fin();
        }
    }

    private function fin($jug = '') {
        print "\n\n+============================FIN DEL JUEGO=====================================+\n";
        print '';
        print "[[ JUGADOR ]]\n";
        print 'Cartas : ' . implode(', ', $this->jugador['cartas']) . "\n";
        print 'Puntos totales : ' . $this->jugador['puntos_t'] . "\n";

        print "\n";
        print "[[ TALLADOR ]]\n";
        print 'Cartas : ' . $this->tallador['carta_1'] . ', ' . implode(', ', $this->tallador['cartas']) . "\n";
        print 'Puntos del tallador : ' . $this->tallador['puntos_t'] . "\n";
       
        if($jug != '')
        {
            if($jug == 'tallador')
            {
                 print "\n[TALLADOR] GANA..!! Intenta de nuevo";
            }
            else
            {
                print "\n[JUGADOR] GANA..!! Felicidades..!!";
            }
        }
        else if($this->tallador['puntos_t'] > $this->jugador['puntos_t'] && $this->tallador['puntos_t'] <= 21)
        {
            print "\n[TALLADOR] GANA..!! Intenta de nuevo";
        }
        else if($this->tallador['puntos_t'] < $this->jugador['puntos_t'] && $this->jugador['puntos_t'] <= 21)
        {
            print "\n[JUGADOR] GANA..!! Felicidades..!!";
        }
        else if($this->tallador['puntos_t'] == $this->jugador['puntos_t'] && $this->tallador['puntos_t'] == 21)
        {
            if(count($this->tallador['cartas']) == 1)
            {
                print "\n[TALLADOR] GANA..!! Intenta de nuevo";
            }
            else if($this->jugador['cartas'])
            {
                print "\n[JUGADOR] GANA..!! Felicidades..!!";
            }
        }
        else
        {
            print "\n[JUGADOR] GANA..!! Felicidades..!!";
        }
       
        print "\n\nby bssanchez (kid_goth), cbriceno -> The Bolivar Team";
        die();
    }

    private function puntos($carta)
    {
        $puntos = 0;
        $carta = explode("_", $carta);
        $carta = $carta[0];
       
        switch ($carta) {
            case "K":
            case "Q":
            case "J":
                $puntos = 10;
                break;
            case "A":
                $puntos = 11;
                break;
            default:
                $puntos = (int)$carta;
                break;
        }
       
        return $puntos;
    }


    private function jugador() {
        do
        {
            if (PHP_OS == 'WINNT') {
                print 'Otra [S/N]? [S]: ';
                $otra = stream_get_line(STDIN, 1);
            }
            else
            {
                $otra = readline('Otra [S/N]? [S]: ');
            }
            $otra = strtolower($otra);
           
            if($otra == 's')
            {
                $this->lanzarCarta('jugador');
                print "\n\n+==============================================================================+\n";
                print '';
                print "[[ JUGADOR ]]\n";
                print 'Cartas : ' . implode(', ', $this->jugador['cartas']) . "\n";
                print 'Puntos vistos por el tallador : ' . $this->jugador['puntos_p'] . "\n";
                print 'Puntos totales : ' . $this->jugador['puntos_t'] . "\n";

                print "\n";
                print "[[ TALLADOR ]]\n";
                print 'Cartas : [?_/_?], ' . implode(', ', $this->tallador['cartas']) . "\n";
                print 'Puntos del tallador : ' . $this->tallador['puntos_p'] . "\n";
            }
        }while($otra != "n");
       
        $this->tallador();
    }
   
    private function tallador()
    {
        while(true)
        {
            if($this->tallador['puntos_t'] == 21)
            {
                break;
            }
            else if($this->tallador['puntos_t'] < $this->jugador['puntos_p'] || $this->tallador['puntos_t'] <= 13)
            {
                $this->lanzarCarta('tallador');
            }
            else if($this->tallador['puntos_t'] >= 16 && $this->tallador['puntos_t'] <= 18)
            {
                $rand = rand(0,1);
                if($rand)
                {
                    $this->lanzarCarta('tallador');
                    print "\n\n+==============================================================================+\n";
                    print '';
                    print "[[ JUGADOR ]]\n";
                    print 'Cartas : ' . implode(', ', $this->jugador['cartas']) . "\n";
                    print 'Puntos vistos por el tallador : ' . $this->jugador['puntos_p'] . "\n";
                    print 'Puntos totales : ' . $this->jugador['puntos_t'] . "\n";

                    print "\n";
                    print "[[ TALLADOR ]]\n";
                    print 'Cartas : [?_/_?], ' . implode(', ', $this->tallador['cartas']) . "\n";
                    print 'Puntos del tallador : ' . $this->tallador['puntos_p'] . "\n";
                }
                break;
            }
            else
            {
                $rand = rand(0,1);
                if($rand)
                {
                    $this->lanzarCarta('tallador');
                    print "\n\n+==============================================================================+\n";
                    print '';
                    print "[[ JUGADOR ]]\n";
                    print 'Cartas : ' . implode(', ', $this->jugador['cartas']) . "\n";
                    print 'Puntos vistos por el tallador : ' . $this->jugador['puntos_p'] . "\n";
                    print 'Puntos totales : ' . $this->jugador['puntos_t'] . "\n";

                    print "\n";
                    print "[[ TALLADOR ]]\n";
                    print 'Cartas : [?_/_?], ' . implode(', ', $this->tallador['cartas']) . "\n";
                    print 'Puntos del tallador : ' . $this->tallador['puntos_p'] . "\n";
                }
                else
                {
                    break;
                }
            }
           
            $this->comprobar('fin');
        }       
    }


    private function barajar()
    {
        $nuevas_cartas = array();
       
        foreach ($this->mazo as $value) {
            $nuevas_cartas[] = $value;
        }
       
        $this->mazo = $nuevas_cartas;
    }


    private function cargarCartas() {
       
        $mazo = array();
       
        for ($i = 1; $i <= 13; $i++)
        {
            switch ($i)
            {
                case 1:
                    $carta = "A";
                    break;
                case 11:
                    $carta = "J";
                    break;
                case 12:
                    $carta = "Q";
                    break;
                case 13:
                    $carta = "K";
                    break;
                default :
                    $carta = $i;
                    break;
            }
            $cartas = array("C" => $carta, "P" => $carta, "D" => $carta, "T" => $carta);
           
            array_push($mazo, $cartas);
        }
       
        foreach ($mazo as $num => $array) {
            foreach ($array as $key => $value) {
                $this->mazo[] = $value . "_/_" . $key;
            }
        }
    }
   
    private function imprimir()
    {
        print "+==============================================================================+";
        print "|                                                        |                     |";
        print "|       BBBBBB    LL          A        CCCCC  KK    KK   |  BOLIVAR TEAM       |";
        print "|       B     B   LL         A A      C       KK   KK    |  2013               |";
        print "|       B    B    LL        A   A    C        KK  KK     |                     |";
        print "|       B  BBB    LL       AAAAAAA   C        KKKKK      |  ENJOY IT           |";
        print "|       B     B   LL       A     A   C        KK  KK     |                     |";
        print "|       B    B    LL       A     A    C       KK   KK    |                     |";
        print "|       BBBBB     LLLLLL  AA     AA    CCCCC  KK    KKK  |                     |";
        print "|                                                        |  JACK V 1.0         |";
        print "+===============================Mesa de Juego==================================+\n";
        print '';
        print "[[ JUGADOR ]]\n";
        print 'Cartas : ' . implode(', ', $this->jugador['cartas']) . "\n";
        print 'Puntos vistos por el tallador : ' . $this->jugador['puntos_p'] . "\n";
        print 'Puntos totales : ' . $this->jugador['puntos_t'] . "\n";
       
        print "\n";
        print "[[ TALLADOR ]]\n";
        print 'Cartas : [?_/_?], ' . implode(', ', $this->tallador['cartas']) . "\n";
        print 'Puntos del tallador : ' . $this->tallador['puntos_p'] . "\n";
    }
}

/**
* Controlador
*/

new blackjack();
?>



Saludos y cualquier aporte es valido
by kid_goth
#13
Buenas a todos,

No les ha pasado que les toca redimensionar imagenes a cierto tamaño algunas veces? bueno en cierta no es un problema cuando son una o dos pero cuando son 50 o mas? ufff es un verdadero dolor de hue***, como a mi me ha tocado decidi crearme un script para la redimension automatica de dichas imagenes. El script acepta:

  • Ancho y Alto personalizado
  • Sobreescribir las imagenes
  • Guardarlas en una subcarpeta
  • y poner un sugijo a las imagenes

    solo tienen que ejecutar el script en modo consola (desde su shell) con php imgthumb.php opciones ... Para mas informacion lean el readme.txt

    No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
    Password Mega: UgNg_0GtuObMOEinPtCqsl_FcjIWkNG41xNhKRCx8bI

    Saludos y espero les sirva
#14
Dudas y pedidos generales / [SOLUCIONADO] RxBot
Septiembre 03, 2012, 04:25:21 PM
Hola hoy vengo a molestar un poc si alguien tiene el rxbot (cipher/decipher) no me refiero a la botnet sino al de udtools que es asi xD:


les agradezco me compartan un link donde se encuentre el soft :) y Saludos
#15
Zona Webmaster / [AJAX] Un breve repaso
Junio 23, 2012, 03:59:32 PM
Requrimientos para seguir la Guia tener conocimientos basicos de Javascript y php (y obviamente manejar HTML xD).

Dedicado para Qfa xD, bueno me pongo a hacer esta miniguia de como se usa la libreria AJAX de Javascript, como solo es el manejo no explicare que es, ya que en Wikipedia lo encuentra ufff... eso si, les dire que es bastante sencillo el uso xD...

Bueno antes que nada debemos tener la funcion que cumplira nuestra labor yo uso una que modificamos con mi profe hace ya un tiempillo y me parece que esta buena... hay otras mas directas y sencillas podes usar la que quieras xD.... la funcion es esta:

Código: javascript

function nuevoAjax(){
    var xmlhttp=false;
    try
    {
         xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
         try
         {
             xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
         }
        catch (E)
        {
             xmlhttp = false;
        }
    }
    if(!xmlhttp && typeof XMLHttpRequest!='undefined')
    {
         xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
}


y paso a explicar:

Para el correcto funcionamiento del mismo en cualquier navegado se crearon los objetos de XML, como todos sabemos Try y Catch son manejadores de excepcion es, y sirven para que en moendo de error no se detenga el proceso (o como mal decimos senos trabe la pc xD en este caso el navegador), y de paso para el programador manejar esos errores y saber en donde esta el problema si asi lo requiere.

Los navegadores de Microsoft, o sea el IE necesita de un Objeto ActiveX para crear el objeto XML, y dependiendo la version que se trabaje estos trabajan una u otra version de ActiveX es por eso que primero se intenta con Msxml2.XMLHTTP y luego Microsoft.XMLHTTP ambas cumplen la misma funcion pero en caso de que falte alguna como pr ejemplo en IE6 sin actualizar no existe Msxml2.XMLHTTP asiq eu se prueba con su version anterior (que si trae de forma nativa) Microsoft.XMLHTTP.

Y por ultimo en caso de que no sea un IE queno pudo cargar un objeto ActiveX (la causa puede ser otro navegador aunqeu en estos tiempos la mayoria tienen todo xD) se intenta cargar de la forma XMLHttpRequest(); que ya esta un poco mas generalizada.

Bien una vez que se crea un objeto XML se procede a hacersele llamado y disfrutar de sus ventajas entre la que destaco web dinamicas sin recarga de la misma y para mayor entendimiento haremos un ejemplo:

Ejemplo: crear un miniaplicativo web que te cifre y descifre texto en base64 con Ajax y php, debe funcionar con 2 botones (Cifrar y Descifrar) y un textbox para incluir el texto a procesar.

Bien pues antes que nada preparar la interfaz grafica y primero que todo lo haremos de la forma normal como se haria sin ajax para que comprendan un poco lo que hace este xD y noten la diferencia, esto lo haremos con HTML y PHP no mas:

Código: html5

<html>
<head>
    <title>Manejo Basico de Ajax</title>
</head>
<body>
<div style="position: relative; width: 600px; left: 50%; margin-left: -300px; text-align: center;">
<h2>Base64 Cipher/Decipher</h2>
<h1>by Hackxcrack</h1>
    <br>
    <form action="index.php" method="post">
        <input type="text" name="texto"><br><br>
        <input type="submit" name="btn_ope" value="Cipher">&nbsp;&nbsp;<input type="submit" name="btn_ope" value="Decipher">
    </form>
</div>
</body>
</html>


Bien con esto ya tenemos una pagina (muy sencilla) que tiene el textbox y los 2 botones dentro de un formulario que se envia los datos hacia la misma index.php (o sea ella misma) por el metodo post xD... se puede deci que de momento no hace nada y para que haga algo pos debemos crear el php que procesara esos datos :D

entonces creamos el php arriba o donde quieras operamos lo que se escribio en el textbox (Ciframos o Desciframos segun se haya dado la orden) y por ultimo imprimimos el resultado (este si lo imprimimos debajo del form xD, para darle "orden" claro esta que lo pueden imprimir donde sea siempre y cuando este dentro del body :D).

bueno la funcion php que uso es esta:

Código: php

<?php
if(isset($_POST['btn_ope']) && $_POST['texto'] != "")
{
    $text_procesado="";
    if($_POST['btn_ope'] == "Cipher")
    {
        $text_procesado = base64_encode($_POST['texto']);
    }
    else if($_POST['btn_ope'] == "Decipher")
    {
        $text_procesado = base64_decode($_POST['texto']);
    }
}
?>


Explicacion: Valido con el if que se haya apretado algun boton (btn_ope) y de paso que el textbox <texto> no este en blanco o vacio, luego verifico cual de los dos botones precionaron y dependiendo del que hayan presionado le asigno el valor de encode o decode a la variable $text_procesado...

ahora ya con el html que hicimos anteriormente imprimimos lo que se requiera jejejej y nos quedaria asi:

Código: php

<?php
if(isset($_POST['btn_ope']) && $_POST['texto'] != "")
{
    $text_procesado="";
    if($_POST['btn_ope'] == "Cipher")
    {
        $text_procesado = base64_encode($_POST['texto']);
    }
    else if($_POST['btn_ope'] == "Decipher")
    {
        $text_procesado = base64_decode($_POST['texto']);
    }
}
?>
<html>
<head>
    <title>Manejo Basico de Ajax</title>
</head>
<body>
<div style="position: relative; width: 600px; left: 50%; margin-left: -300px; text-align: center;">
<h2>Base64 Cipher/Decipher</h2>
<h1>by Hackxcrack</h1>
    <br>
    <form action="index.php" method="post">
        <input type="text" name="texto"><br><br>
        <input type="submit" name="btn_ope" value="Cipher">&nbsp;&nbsp;<input type="submit" name="btn_ope" value="Decipher">
    </form>
    <br>
    <?php
        if(isset($text_procesado) && $text_procesado != "")
        {
            echo $text_procesado;
        }
    ?>
</div>
</body>
</html>


Bien si lo probamos en un servidor ya deberia funcionar pero como ven al presionar un boton se alcanza a ver la carga aunque demora muy poco (tal vez ni se note -.-)...

Ahora vamos a usar el ajax para que vean que en ningun momento la pagina se recarga. (Nota: Cabe aclarar que cuando son datos demasiado grandes se va notar mejor jejejeje...)

Bien pos vamos a separar ese php del index.php a un archivo aparte, asi que nos quedarian los siguientes archivos:

index.html -> podemos cambiar ahora la extencion a html ya que no se requiere de php en ese archivo y agregamos un enlace hacia el script de ajax, luego cambiamos los parametros del form quitandole el method y cambiando el action a #, luego cambiaremos los botones que ya no seran submit sino button (asi no enviaran el form al darles clic) y por ultimo para que el JS puede agregar el dato que recibe del php vamos a crear un contenedor que sera el que se cargara dinamicamente :D...


Código: html5

<html>
<head>
     <title>Manejo Basico de Ajax</title>
    <script type="text/javascript" src="ajax.js" language="javascript"></script>
</head>
<body>
<div style="position: relative; width: 600px; left: 50%; margin-left: -300px; text-align: center;">
<h2>Base64 Cipher/Decipher</h2>
<h1>by Hackxcrack</h1>
     <br>
     <form action="#">
         <input type="text" name="texto"><br><br>
         <input type="button" name="btn_ope" value="Cipher">&nbsp;&nbsp;<input type="button" name="btn_ope" value="Decipher">
     </form>
    <br><br>
    <div id="contenedor" style="text-align: center;"></div> <!-- Contenedor para el ajax -->
</div>
</body>
</html>



funcion.php -> alli alojaremos el php el cual modificaremos un poco para efectos de automatizacion xD...


Código: php

<?php
error_reporting(0); //no queremos alertas
if(isset($_POST['btn_ope']) && $_POST['texto'] != "")
{
     if($_POST['btn_ope'] == "Cipher")
     {
         echo base64_encode($_POST['texto']);
     }
     else if($_POST['btn_ope'] == "Decipher")
     {
         echo base64_decode($_POST['texto']);
     }
}
?>



el unico cambio que se hace es que imprima directamente.

y por ultimo el ajax.js

Código: javascript

function nuevoAjax(){
    var xmlhttp=false;
     try
    {
         xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
     }
    catch (e)
    {
         try
        {
             xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
         }
        catch (E)
        {
             xmlhttp = false;
         }
      }
    if (!xmlhttp && typeof XMLHttpRequest!='undefined')
    {
         xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
}

function operar(btn)
{
    var contenedor = document.getElementById('contenedor');
    var pag = 'funcion.php';
    var texto = "texto="+document.getElementById('texto').value+"&btn_ope="+btn.value;   
    var ajax = nuevoAjax();
   
    ajax.open("POST", pag, true);
    contenedor.innerHTML='Cargando...';
   
    ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    ajax.setRequestHeader("Content-length", texto.length);
    ajax.setRequestHeader("Connection", "close");
   
    ajax.onreadystatechange=function()
    {
        if (ajax.readyState==4)
        {
            contenedor.innerHTML = ajax.responseText;
        }
    }
    ajax.send(texto);
}


paso a explicar:

Creamos la funcion nuevoAjax que ya la explique, y luego nuesrta funcion operar que trae las siguientes pautas:

Declaracion de variables

var contenedor = document.getElementById('contenedor');     -->  el contenedor de nuestro HTML, donde se pondra el resultado del ajax :D

var pag = 'funcion.php';  -->  La pagina a la que se direccionaran los datos que escribamos en nuestro texto y el valor del boton que se envie.

var texto = "texto="+document.getElementById('texto').value+"&btn_ope="+btn.value;    -->  las variables que se enviaran en este caso texto y el valor del boton xD..

var ajax = nuevoAjax(); -->  Esta sera la instancia de buevoAjax(); :D

Operaciones:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta("POST", pag, true);  -->  Abre la coneccion hacia la pagina que hemos declarado (en este caso funcion.php)

contenedor.innerHTML='Cargando...';  -->  pone en el contenedor "cargando..." aqui pueden dejar volar su imaginacion, por ejemplo poner una imagen de un gif cargando o lo que quieran, pueden poner cualquier tipo de etiqeuta html...

ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");  -->  Como nosotros estamos usando el metodo post para el envio de los datos, debemos indicar que estos datos son de un formulario y que van en formato url.

ajax.setRequestHeader("Content-length", texto.length);  -->  luego le decimos la cantidad de caracteres que se envian.

ajax.setRequestHeader("Connection", "close"); -->  y por ultimo cerramos conexion.

Ultimas operaciones:

ajax.onreadystatechange=function() -->  se verifica el estado del envio de datos
{                                                                 
    if (ajax.readyState==4) -->  Se valida el estado del envio de datos, el 4 es el ultimo paso asi que cuando se llega a este quiere decir que fue satisfactorio :D
    {
        contenedor.innerHTML = ajax.responseText;   -->  y se muestra en el contenedor lo que resulto de la pagina
    }
}
ajax.send(texto);  --> Se envian las variables (cuando es GET se pone null)...

Bueno yo he creado esta explcacion con el metodo post ya que GET es lo mas normal y fail asi que este lo pueden aprender en otros sitios :D...

Por ultimo queda decir que para que funcione debemos poner el operar en un evento de los botos, para el caso lo pondre en onclick, de aqui en adelante seria de su imaginacion modificar hasta crear algo mas bonito, pro ejemplo que en vez de que debas darle click a botones, solo elijas (en un radio button o en un select) el metodo que quieres y que a medida que vayas escribiendo en el texbox te vaya mostrando la operacion :P...

Bueno ya es de su imaginacion, por ultimo dejo los 3 scrips finales aqui:

Index.html

Código: html5

<html>
<head>
    <title>Manejo Basico de Ajax</title>
    <script type="text/javascript" src="ajax.js" language="javascript"></script>
</head>
<body>
<div style="position: relative; width: 600px; left: 50%; margin-left: -300px; text-align: center;">
<h2>Base64 Cipher/Decipher</h2>
<h1>by Hackxcrack</h1>
    <br>
    <form action="#">
        <input type="text" name="texto" id="texto"><br><br>
        <input type="button" value="Cipher" onclick="operar(this);">&nbsp;&nbsp;
        <input type="button" value="Decipher" onclick="operar(this);">
    </form>
    <br><br>
    <div id="contenedor" style="text-align: center;"></div> <!-- Contenedor para el ajax -->
</div>
</body>
</html>


ajax.js

Código: javascript

function nuevoAjax(){
    var xmlhttp=false;
     try
    {
         xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
     }
    catch (e)
    {
         try
        {
             xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
         }
        catch (E)
        {
             xmlhttp = false;
         }
      }
    if (!xmlhttp && typeof XMLHttpRequest!='undefined')
    {
         xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
}

function operar(btn)
{
    var contenedor = document.getElementById('contenedor');
    var pag = 'funcion.php';
    var texto = "texto="+document.getElementById('texto').value+"&btn_ope="+btn.value;   
    var ajax = nuevoAjax();
   
    ajax.open("POST", pag, true);
    contenedor.innerHTML='Cargando...';
   
    ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    ajax.setRequestHeader("Content-length", texto.length);
    ajax.setRequestHeader("Connection", "close");
   
    ajax.onreadystatechange=function()
    {
        if (ajax.readyState==4)
        {
            contenedor.innerHTML = ajax.responseText;
        }
    }
    ajax.send(texto);
}



y funcion.php

Código: php

<?php
error_reporting(0); //no queremos alertas
if(isset($_POST['btn_ope']) && $_POST['texto'] != "")
{
    if($_POST['btn_ope'] == "Cipher")
    {
        echo base64_encode($_POST['texto']);
    }
    else if($_POST['btn_ope'] == "Decipher")
    {
        echo base64_decode($_POST['texto']);
    }
}
else
{
    echo "Error";
}
?>



les dejo el proyecto para descargar de aqui:     No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

y por si lo quieren ver online:   Con Ajax -> No tienes permitido ver los links. Registrarse o Entrar a mi cuenta  sin ajax No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Por ultimo recordarles cualquier pregunta, sugerencia, correccion decirmela y veremos que entre todos nos ayudamos...

Saludos Kid_Goth
#16
Hacking / Anubis - Herramienta de FootPrinting
Junio 14, 2012, 12:55:57 PM


Anubis es una aplicación desarrollada por Juan Antonio Calles en colaboración con Pablo González, del Flu Project Team, diseñada para anexionar gran parte de las herramientas necesarias para los procesos de las Auditorías de Seguridad y Test de Intrusión dedicados a la búsqueda de información, denominados Footprinting y Fingerprinting, en una única herramienta. Con ésta herramienta el auditor no solo conseguirá ahorrar tiempo durante la auditoría, sino que descubrirá nueva información que de manera manual no podría gracias a las automatizaciones que lleva Anubis incorporadas. Entre otras funcionalidades, Anubis permite buscar dominios mediante técnicas basadas en Google Hacking, Bing Hacking, ataques de fuerza bruta contra el DNS, transferencias de zona, etc. Permite identificar el sistema operativo de las máquinas que hay tras los dominios mediante análisis del banner, búsqueda de errores y la integración de la herramienta nmap. Por otro lado contiene otras herramientas útiles como un fuzzer Web, la búsqueda del registrador de un dominio mediante consultas Whois, o la identificación de software utilizado en la organización y personal existente en la misma mediante el análisis de metadatos en los ficheros PDF.


Para descargarlo deben dar su informacion en este formulario: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta aunuqe yo me lo descargue y lo subi a mediafire para quitarles esa "dificultad", (al final doy el link)

No se almacena ningún dato escrito en el formulario anterior en nuestra Base de Datos. Los datos introducidos simplemente serán utilizados para la realización de estadísticas respecto al número de descargas.
MD5:
c4df717d7a6a185c2089971aba33512b
Nota: Requiere Windows XP, Windows Vista o Windows 7 y el Net Framework 3.5 (descargable desde No tienes permitido ver los links. Registrarse o Entrar a mi cuenta)
Si quieres saber más de Anubis y de otras técnicas de recolección de información en Auditoría de seguridad te recomendamos la descarga de nuestro libro (también gratuito): No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.

  Ya hay más de 5000 usuarios que han probado la herramienta, si estás entre ellos y quieres darnos tu opinión sobre posibles mejoras o bugs puedes enviarnos un email al correo: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.


A continuación os dejamos algunas capturas de pantalla de Anubis v1.3:





(En la web oficial hay mas, yo solo pongo estas 2 :P)

Bueno y por ultimo se preguntaran mmm no esta para linux xD... igual pienso lo mismo pero en los comentarios lei que tal vez iban a hacerla en Java para que fuera portable y multiplataforma igual los comentarios llevan mas de 5 meses y para ser una herramienta que no trae licencia (y ademas el creador dijo que era de uso libre  y gratuito) no creo que vayan a hacerlo  :-X pero esperemos que me equivoque....

Por ultimo en otro comentario mencionaron su uso con el wine ese si lo cito:

Citar
En wine
la parte google hacking funciona..
scan with google y zone transfer no..
y no he seguido probando mas...
porque: no conozco la herramienta y su funcionamiento al completo
y tampoco tengo un conocimiento profundo como menos para dar un informe de tester,sin tener ni idea..
(Instalados los net framework... )
Espero esa version para linux (sin exigir)
Gran trabajo y buen proyecto
Seguid asi....

Tampoco se manejarlo pero deben haber tutoriales por hay ademas creo que es muy intuitiva xD.... bueno saludos a todos y sin mas el link de descarga desde mediafire:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

por ultimo encontre el manual jejejeje:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#17
Base de Datos / Manual SQL - Con motor MySQL
Junio 08, 2012, 09:57:21 AM
Hola a todos en este mi primer aporte les comparto un librillo de MySQL que me hice hace algun tiempo, espero aprendan mucho, por si no has leido sobre este lenguage, y ademas sirve para despues adentrarse en el SQLi, para el cual necesitas de estos conocimientos... bueno no siendo mas les dejo el link...

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Saludos Kid_Goth