dissabte, 16 de novembre del 2013

Petita prova d'AJAX i PHP

He fet una petita prova amb PHP i Ajax com a demostració de concepte.

En PHP he fet un script per a generar captches (a partir de codi de tutorials, no en soc cap expert). L'script rep una key (hauria de ser aleatoria) i genera una imatge fent un crc32 de la key rebuda junt amb un salt.

Com es fa servir? Així:

<img src="captcha.php?k=[ALGUNA COSA ALEATÒRIA]">

Per tant, amb javascript el podríem fer servir així:

document.writeln("<img src='captcha.php?k="+Math.random()+"'/>");

El mateix script, si rep la key i un value, aplica la mateixa fórmula per comprovar que el value és l'associat a la key. A més, això ho torna en format JSON, cosa perfecte per fer una crida amb AJAX.

He fet una pàgina HTML amb Javascript i Ajax per provar-ho. Té aquesta pinta:

És tan sols una petita prova, però la comparteixo per si a algú li resulta útil. No és, ni molt menys, un captcha segur: fins i tot un robot miop el resoldria, però serveix com a demostració de concepte.

El podeu descarregar en format ZIP d'aquí. El password és falciot.org.



dimecres, 6 de març del 2013

Ping i traceroute a Linux

Aquesta és una pràctica que he fet a 1r de grau mitjà de SMX, al mòdul de Xarxes Locals. M'he basat en aquests dos articles:

 

Ping i traceroute a Linux

A aquesta pràctica treballarem amb les comandes ping i traceroute a Linux. Haureu de llegir la documentació d'aquestes comandes i respondre a les preguntes.

La documentació de la comanda ping la podeu trobar escrivint a la consola:

> man ping

O si ho preferiu, accedint a la web: http://linux.die.net/man/8/ping.

De manera similar, la documentació de la comanda traceroute la podeu trobar fent:

> man traceroute


És possible que la comanda traceroute no estigui instal·lada. En aquest cas s'han d'executar amb un sudo (heu de ser administradors!) les següents ordres per a instal·lar-la:

> sudo apt-get update
> sudo apt-get install traceroute

Comanda ping

El ping és una eina de les xarxes TCP/IP (com ara Internet) que permet, de forma similar a una trucada perduda, determinar si un servidor està funcionant i si s'hi pot arribar des d'una xarxa concreta amb l'ordinador des d'on es fa la prova. El programa envia paquets ICMP i n'espera les respostes. També és anàleg al funcionament dels sònars en els submarins, amb què es va inspirar el seu autor, Mike Muuss (http://en.wikipedia.org/wiki/Mike_Muuss).

És una eina molt útil per a la diagnosi de les connexions d'Internet. No obstant això, molts proveïdors de serveis d'Internet filtren o bloquen aquest tipus de sol·licitud.

Alguns cucs i altre programari maligne de la xarxa ho utilitzen per a trobar noves víctimes provocant, a més, problemes de saturació de la xarxa i desperfectes en els encaminadors (routers).

  1. Paràmetre -i. Esbrina que fa el paràmetre -i. Prova la comanda:
    > ping -i 1 8.8.8.8

    Què fa aquesta comanda? Prova ara aquesta altre:
    > ping -i 0.1 8.8.8.8

    Pots executar la 2a comanda? Prova-la fent un sudo al davant. Dedueix per quin motiu la 2a tan sols la pots executar com a administrador.

  2. Ping 0. Què fa aquesta comanda? De quines altres maneres podries escriure una comanda que fes el mateix?

  3. Paràmetre -c. Esbrina que fa el paràmetre -c. Prova la comanda:
    > ping -c 5 8.8.8.8

    Què fa aquesta comanda?

  4. Paràmetre -q. Consulta la documentació i esbrina que fa aquest paràmetre. Prova-ho amb combinació amb el paràmetre -c de l'apartat anterior.

  5. Paràmetre -f. Mira la documentació (el man) i esbrina que vol dir la f. Busca la traducció d'aquesta paraula al català i intenta deduir-ne el significat del paràmetre -f. Prova la comanda:
    > sudo ping -f localhost

    Què fa aquesta comanda? Per quina raó creus que s'ha d'executar com a administrador?

  6. Paràmetre -a. Aquest paràmetre no es pot provar a l'emulador de consola, no funcionaria. s'ha de provar a una consola virtual (fes CTRL+ALT+F1, i quan acabis, CTRL+ALT+F7). Un cop ets a la consola virtual, fes servir el teu usuari i clau per iniciar sessió.

    El primer pas és habilitar un mòdul el kernel:
    > sudo modprobe pcspkr

    Ara prova la comanda:
    > ping -a 8.8.8.8

    Mentre s'executa desendolla el cable de xarxa i torna a endollar-lo. Què fa el paràmetre -a? Per a què serveix el mòdul pcspkr que has habilitat abans?
    Més informació sobre consoles virtuals: http://goo.gl/OxoMa

  7. Paràmetre -w. Torna a la consula virtual i prova el paràmetre -w amb el paràmetre -a. Per exemple, fes:
    > ping -w 5 -a localhost

    Què fa el paràmetre -w? Consulta la documentació per esbrinar-ho.

  8. CTRL + |. Fes un la comanda:
    > ping -w 100 localhost

    Mentre s'executa fes CTRL + | (en realitat hauràs de fer CTRL + ALT Gr + 1). Que veus? Per a què serveix aquesta comanda?

Comanda traceroute

Traceroute és una eina de diagnòstic que permet seguir la pista dels paquets que vénen des d'un host (punt de xarxa). S'obté a més una estadística del RTT o latència de xarxa d'un paquet, el que ve a ser una estimació de la distància a la qual estan els extrems de la comunicació. Aquesta eina es diu traceroute en UNIX, Mac i GNU/linux, mentre que en Windows es diu tracert.

  1. Consulta l'adreça http://es.wikipedia.org/wiki/Traceroute#Funcionamiento i explica, amb les teves paraules, com funciona la comanda traceroute.

  2. 1a prova. Prova la següent comanda:
    > traceroute gencat.cat
    Què es mostra per pantalla? Per quina raó hi ha tres temps (en milisegons) al final de cada línia? Consulta el man per esbrinar-ho.

  1. 2a prova. Prova la següent comanda:
    > traceroute gogo.jp
    Apareixen * en lloc d'IPs o de milisegons en alguna línia? Per quina raó creus que passa?
  1. Paràmetre -n. Consulta la documentació i esbrina que fa aquest paràmetre. Prova la comanda:
    > traceroute -n google.cat

  2. Paràmetre -w. Consulta la documentació i esbrina que fa aquest paràmetre. Fes-lo servir amb el paràmetre -n. Prova la comanda:
    > traceroute -w 0.1 -n gogo.jp

  3. Paràmetre -q. Consulta la documentació i esbrina que fa aquest paràmetre. Prova la comanda:
    > traceroute -q 5 google.cat

  4. Paràmetre -f. Prova les comandes:
    traceroute gencat.cat
    > traceroute -f 5 gencat.cat
    Què creus que fa el paràmetre -f?


diumenge, 27 de gener del 2013

LAMP + PHPMYADMIN + WORDPRESS a Ubuntu Server 12.04

Aquesta pràctica l'he feta al mòdul 4 de Llenguatges de Marques de 1r de DAW i 1r d'ASIX. L'objectiu és instal·lar un wordpress a un Ubuntu Server 12.04. M'he basat en aquest article d'instal·lació de wordpress a Ubuntu, però fent servir el tasksel per simplificar-ho. Ho hem fet amb una màquina virtual amb la xarxa configurada com a adaptador pont. L'usuari de la màquina virtual és diu alumne i tenia creat un directori www al home d'aquest usuari amb el phpmyadmin i wordpress descarregat. Per descarregar-los he fet servir les següents ordres wget:

> wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/3.5.5/phpMyAdmin-3.5.5-all-languages.tar.gz

> wget http://ca.wordpress.org/wordpress-3.5-ca.tar.gz

LAMP + SSH

> sudo tasksel

i seleccionar LAMP i SSH

MYSQL

Està instal·lada la BD? Provem-ho:

> mysql -u root -p

Demana el password. Un cop dins del client mysql, podem fer una consulta:

> select curtime();

Per sortir:

> quit

Per defecte, MYSQL s'inicia amb el sistema. Per reiniciar, parar o iniciar el servidor MySQL

> sudo /etc/init.d/mysql restart|stop|start

APACHE

El servidor web està instal·lat i funcionant. Provem-ho connectant-nos a la IP del servidor amb el navegador. Per saber la IP:

> ifconfig

Per comprovar que funciona correctament, canviem la pàgina web per defecte que mostra. Aquesta pàgina està al directori /var/www

> cd /var/www

> sudo pico index.html

Modifica la pàgina web. Per sortir CTRL + X i s'ha de dir Yes per guardar els canvis. Desprès, refresca la web i veuràs els canvis.

Per defecte, Apache s'inicia amb el sistema. Per reiniciar, parar o iniciar el servidor Apache:

> sudo /etc/init.d/apache2 restart|stop|start

Fem un canvi de configuració a l'Apache2. En lloc de fer servir el directori /var/www com a carpeta principal, farem servir la carpeta /home/alumne/www (per comoditat)
Aquesta carpeta ja la teniu creada.

S'ha de canviar un dels fitxers de configuració de Apache per indicar el canvi de directori

> cd /etc/apache2/sites-enabled

Edito el fitxer 000-default 

> sudo pico 000-default 

Als dos llocs on posa /var/www ara ha de posar /home/alumne/www. Guardo el fitxer i reinicio el servidor web

> sudo /etc/init.d/apache2 restart

Torno al directori principal i per fer una pàgina web

> cd /home/alumne/www

Creo un fitxer anomenat index.html

> pico index.html

Un cop hi he posat alguna cosa, la guardo i torno a refrescar el navegador.

PHP5

Com podem comprovar-ho? Farem una pàgina php simple.

> cd /home/alumne/www

Esborrem index.html

> rm index.html

Creem un fitxer anomenat index.php

> pico index.php

Dins podem escriure, per exemple, el següent codi:

<html>
<body>
<?php 
for ($i = 1; $i <= 10; $i++) {
    echo "<br>".$i;
}
?>
</body>
</html>

Guardem el fitxer i recarreguem la pàgina web al navegador

PHPMYADMIN

Anem a la carpeta www on teniu descarregat el phpMyAdmin

> cd /home/alumne/www

Descomprimim el fitxer

> tar -xzvf phpMyAdmin-3.5.5-all-languages.tar.gz

Canviem el nom del directori on hi està el phpMyAdmin

> mv phpMyAdmin-3.5.5-all-languages phpmyadmin

Probem la instal·lació obrint al navegador el phpmyadmin: http://IP_DEL_SERVIDOR/phpmyadmin. L'usuari que demana és el de la base de dades (usuari root i password alumne)

Amb el phpmyadmin crearem un usuari anomenat wordpress amb password wordpress amb una base de dades del mateix nom.

WORDPRESS

A la carpeta www hi ha la darrera versió de wordpress en català descarregat. El descomprimim:

> tar -xzvf wordpress-3.5-ca.tar.gz

Configuro les dades d'accés a la base de dades des del wordpress. A la carpeta wordpress edito el fitxer wp-config-sample.php

> pico wp-config-sample.php

Canvio els valors de:
  define('DB_NAME', 'wordpress');
  define('DB_USER', 'wordpress');
  define('DB_PASSWORD', 'wordpress');

També s'han de canviar els valors de:

define('AUTH_KEY', 'put your unique phrase here');
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('AUTH_SALT', 'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT', 'put your unique phrase here');
define('NONCE_SALT', 'put your unique phrase here');

La millor opció es posar els valors aleatoris que surten si et connectes a https://api.wordpress.org/secret-key/1.1/salt/

El fitxer s'ha de guardar com a wp-config.php

Per últim, es connectem a http://IP_DEL_SERVIDOR/wordpress i iniciem la configuració del wordpress