elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Mensajes
Páginas: 1 ... 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 [46] 47 48 49 50 51 52
451  Informática / Tutoriales - Documentación / Re: Análisis Remoto de Sistemas por Honoriak en: 6 Julio 2004, 02:45 am
-----------------------------------------------------
Continuación
-----------------------------------------------------

      II Analisis basado en la pila TCP/IP
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

   Antes de pasar a enumerar  los programas que han hecho posible
el reconocimiento del sistema operativo  de un host de forma remota me
parece logico  explicar, a grandes rasgos, cual  es su funcionamiento,
sin entrar de momento en particularidades.
   
   Dichos  programas  basan  su  funcionamiento en  analizar  las
diferentes  respuestas  que ofrecen  distintos  sistemas ante  ciertos
envios  (he aqui  las singularidades  y la  variedad de  metodos). Por
tanto,  dichas respuestas,  que son  comunmente conocidas  como TCP/IP
fingerprints, son las que  permiten distinguir un sistema operativo de
otro.  Muchas veces, recurren  dichos programas  a distintos  tipos de
envios ya que, en muchas  ocasiones, las diferencias en la pila TCP/IP
de un  sistema operativo  a otro  no son muy  marcadas y  ante ciertos
envios actuan de igual forma,  diferenciandose, a veces, solo en uno o
incluso no habiendo  diferencia (como en el caso  de Windows 95/98/NT,
en los que increiblemente no se observa un comportamiento diferente en
sus  pilas TCP/IP;  unicamente probando  nukes contra  dichos  hosts y
viendo si se caen o no, para  asi distinguir por ejemplo entre un 95 y
un 98 (ej. WinNuke)).
   
   Entre los programas disponibles  que utilizan dicha tecnica de
fingerprinting destacan:
   
   -spoofer para IRC sirc (Johan)
   -checkos (shok)
   -nmap (fyodor)
   -nsat (mixter)
   -p0f (Michal Zalewski)
   -SS (Su1d)
   -queso (savage)

   Ya entrando mas a fondo  en el funcionamiento a mas bajo nivel
de dichos programas encontramos  cierta diferencia entre ellos, ya que
mientras unos  usan un fichero externo con  fingerprints de diferentes
sistemas  tipo, como  el  queso,  otros incluyen  en  el codigo  dicha
comparacion, como checkos por ejemplo.

   En checkos encontramos:
         
         ...

   if ((tcp.hrc & CF_SYN) && (tcp.hrc & CF_FIN)) {
          type=OS_LINUX;
          done=1;
        }
         ...
   
   if ((tcp.hrc & CF_ACK) && (tcp.hrc & CF_RST)) {
          if (flags & OSD_WIN95WAIT) {
            done=1;
            type=OS_WIN95;
          }


   En ss encontramos:
            
            /*  fragmento  codigo de  ss  de Remote  OS
            Detection  via   TCP/IP  Fingerprinting  de
            Fyodor */

         ...

   if ((flagsfour & TH_RST) && (flagsfour & TH_ACK) && (winfour == 0) &&
         (flagsthree & TH_ACK))
             reportos(argv[2],argv[3],"Livingston Portmaster ComOS");

         ...

   Mientras que en queso  encontramos un fichero de configuracion
en el que se distingue por ejemplo:

                        
   $ cat /etc/queso.conf
   ...
   * AS/400 OS/400 V4R2 (by rodneybrown@pmsc.com)
   0 1 1 1 SA
   1 0 1 0 R
   2 0 1 0 RA
   3 0 1 0 R
   4 1 1 1 SA
   5 0 1 0 RA
   6 1 1 1 SA
   ...

   Se observa, pues, que savage ha implementado de forma bastante
mas inteligente  dicha idea. Este  metodo ha sido heredado  por fyodor
para su nmap, y por ejemplo, en ciertas versiones de nmap encontramos:

   $ cat /usr/local/lib/nmap/nmap-os-fingerprints
   ...
   # Thanks to Juan Cespedes <cespedes@lander.es>
   FingerPrint  AGE Logic, Inc. IBM XStation
   TSeq(Class=64K)
   T1(DF=N%W=2000%ACK=S++%Flags=AS%Ops=M)
   T2(Resp=N)
   T3(Resp=Y%DF=N%W=2000%ACK=O%Flags=A%Ops=)
   T4(DF=N%W=2000%ACK=O%Flags=R%Ops=)
   T5(DF=N%W=0%ACK=S++%Flags=AR%Ops=)
   T6(DF=N%W=0%ACK=O%Flags=R%Ops=)
   T7(DF=N%W=0%ACK=S%Flags=AR%Ops=)
   PU(DF=N%TOS=0%IPLEN=38%RIPTL=148%RID=F%RIPCK=0%UCK=E%ULEN=134%DAT=E)
   ...

   Y tambien ha  sido usado por mixter en  su NSAT, destacando la
distincion que hace entre diferentes configuraciones de windows:

   $ cat /usr/local/bin/nsat.os
   ...
   Windows (Firewall-1)
   1 1 1 0 1 18
   1 0 1 0 0 4
   1 0 1 0 1 21
   1 0 1 0 1 21
   1 1 1 0 1 18
   1 0 1 0 1 28
   0 0 0 0 0 0
   ...

   En  lo  que  se  refiere  al  tipo  de  tecnicas  usadas  para
diferenciar  unos  OSs se  debe  puntualizar  que  en realidad,  estas
pruebas  se   combinan,  para   asi  conseguir  aislar   cada  sistema
operativo. Un muy buen programa para  hacer este tipo de pruebas es el
hping2  (antirez@invece.org, http://www.kyuzz.org/antirez/hping2.html)
o    sing   (aandres@mfom.es,   http://sourceforge.net/projects/sing/)
combinandolo con el analisis mediante tcpdump o ethereal (un magnifico
frontend), ya que  aunque puedes realizar tu propio  codigo (en C, por
ejemplo)  esta claro  que  esto conlleva  unos  conocimientos de  unix
network  programing  bastante  importantes,  asi  que  en  este  paper
analizare los  resultados obtenidos con  hping2 y no  presentare codes
especificos para cada prueba,  además utilizare mi propia maquina para
dichas pruebas  y no lo hare de  forma remota para asi  tener un mayor
control de  los resultados. Los  metodos que conozco son:  (si conoces
otras  tecnicas   utilizadas  para  esto  no  dudes   en  decirmelo  -
honoriak@mail.ru)


   - TCP ISN: Cuando el host a analizar responde a solicitudes de
conexion, genera  unos numeros  en la secuencia  inicial (ISN)  que no
siempre  se producen  de la  misma  forma; esto,  es aprovechado  para
distinguir unos  sistemas de otros.  Estos ISNs  pueden ser constantes
(hubs de 3com, etc.), 64K (UNIX antiguos), aleatorios (linux >2.0, AIX
modernos,  OpenVMS), incremento  en funcion  del tiempo  (windows), de
incremento   aleatorio   (freebsd,   digital   unix,   cray,   solaris
modernos...)  siendo estos ultimos  incrementos basados  en diferentes
cosas como por ejemplo maximos comunes divisores.
         Si enviamos varios paquetes, por ejemplo, de la forma:

    $ hping2 localhost -p 80
    default routing not present
    HPING localhost (lo 127.0.0.1): NO FLAGS are set, 40 headers + 0 data
    bytes
    40 bytes from 127.0.0.1: flags=RA seq=0 ttl=255 id=5 win=0 rtt=0.4 ms
    40 bytes from 127.0.0.1: flags=RA seq=1 ttl=255 id=6 win=0 rtt=24.9 ms
   
    --- localhost hping statistic ---
    2 packets tramitted, 2 packets received, 0% packet loss
    round-trip min/avg/max = 0.4/12.6/24.9 ms

    Y ahora analizamos dichos paquetes por ejemplo con el tcpdump
(mas claro  son los resultados  que ofrece ethereal, pero  para copiar
aqui es mas comoda la salida del tcpdump; solo copiare las respuestas,
no las peticiones)

   ...   
   14:12:47.774380   lo < honorato.2485 > honorato.www: . 7200421:72
   00421(0) win 512
   ...   
   14:12:48.771779   lo < honorato.2486 > honorato.www: . 2002659674:200
   2659674(0) win 512
   ...

   Se observa, pues, una variacion  en la seq inicial del paquete
TCP, en  el primer  paquete vemos 7200421  y en el  segundo 2002659674
siendo en  este caso completamente aleatorios ya  que estoy trabajando
en:

   $  uname -a 
   Linux  honorato.com  2.2.16 #14  SMP  Sat Jun  10 15:51:08 CEST 2000
   i86 unknown
   
   - Opciones  de TCP:  esta tecnica  se basa  en  el diferenciar
sistemas operativos segun  el numero de opciones TCP  que admiten, los
valores  de dichas  opciones y  el orden  en que  las opciones  se nos
presentan.  Esto, que yo sepa, solo es utilizado por Nmap (si sabes de
otros programas que lo usen, no dudes en decirmelo y modificare esto).

        Fyodor en su nmap hace prueba las siguientes opciones:

Window Scale=10; NOP; Max Segment Size = 265; Timestamp; End of Ops;

        El hping2 no implementa esta posibilidad (o eso creo) asi que
no lo he llevado a la practica. Siempre puedes analizar el codigo del
nmap que realiza esto y heredar dicha tecnica.


   - FIN: Se  basa en  el envio  a un puerto  abierto del  host a
estudio de  un paquete  FIN o cualquiera  que no  tenga un flag  ACK o
SYN. Segun el RFC793 el host no tendria que responder pero algunos OSs
responden con un RESET como Windows, HP/UX, IRIX, MVS, BSDI, CISCO.

   Para hacer una prueba practica  usare el puerto 80, con apache
arrancado:

   $ /usr/bin/httpd
   $ hping2 localhost -p 80 -F
   default routing not present
   HPING localhost (lo 127.0.0.1): F set, 40 headers + 0 data bytes

   --- localhost hping statistic ---
   4 packets tramitted, 0 packets received, 100% packet loss
   round-trip min/avg/max = 0.0/0.0/0.0 ms

   Se observa pues, como mi linux si que cumple el RFC793 y no responde a
        dichos paquetes.

   - ACK recibido:  El valor de ACK  que nos envia  el servidor a
analizar cuando  por ejemplo enviamos  un SYN|FIN|URG|PSH a  un puerto
abierto o un FIN|PSH|URG a  un puerto cerrado puede variar respecto al
numero de secuencia inicial que envia este.

   Para  probar,  inicialmente mandare  un  paquete  normal a  un
puerto cerrado, y se comprueba que el valor de ACK no cambia y despues
uno FIN|PSH|URG tambien a un puerto cerrado y se vera como cambia:

   $ killall httpd
   $ hping2 localhost -p 80
   ...

   y en la salida del tcpdump se ve
   
   15:59:37.442157   lo > honorato.1676 > honorato.www: . 1752870898:1752
   870898(0) win 512
   15:59:37.442157   lo < honorato.1676 > honorato.www: . 1752870898:1752
   870898(0) win 512
   15:59:37.442259   lo > honorato.www > honorato.1676: R 0:0(0) ack 1752
   870898 win 0

   vemos como 1752870898 se mantiene en el ack, pero en cambio:

   $ hping2 localhost -p 80 -S -F -U -P
   ...

   y en la salida del tcpdump ahora vemos

   16:00:48.480252   lo > honorato.2669 > honorato.www: SFP 1376153753:13
   76153753(0) win 512 urg 0
   16:00:48.480252   lo < honorato.2669 > honorato.www: SFP 1376153753:13
   76153753(0) win 512 urg 0
   16:00:48.480334   lo > honorato.www > honorato.2669: R 0:0(0) ack 1376
   153754 win 0

   Se ve pues como ha cambiado el valor de seq respecto al de ack
de 1376153753 a 1376153754. 
   De  la  misma forma,  haciendo  dicha  prueba  para un  puerto
abierto se puede ver que hay una variacion.  En estas pruebas he usado
linux, pero de un sistema a otro esa variacion puede ser diferente (lo
que permite diferenciarlos, claro esta).


   - Flag TCP  (64/128) en el  encabezado TCP de un  paquete SYN:
Haciendo  esto, por  lo que  yo he  probado/leido unicamente  el linux
2.0.35  mantiene dicha  flag en  la respuesta  y el  resto  cancela la
conexion.  Esto, de estudiarse  a fondo, puede servir para diferenciar
OSs.

   No he hecho una demostracion  practica de dicho metodo, ya que
en este momento no tengo  instalado el kernel 2.0.35, pero simplemente
se haria:  hping2 localhost -p 80  -S y se  analizarian los resultados
vertidos por el tcpdump.
   
   
   - ICMP:

   1) Esta  tecnica se basaria  en el control del  numero de
mensajes de destination  unreachable que envia un host  por ejemplo al
mandar  un  gran  numero de  paquetes  a  un  puerto UDP.   En  linux,
encontramos como limita dicha cantidad de mensajes, y por ejemplo:

   $ cat /usr/src/linux/net/ipv4/icmp.c
   ...
   *  4.3.2.8 (Rate Limiting)
   *   SHOULD be able to limit error message rate (OK)
   *   SHOULD allow setting of rate limits (OK, in the source)
   ...
               
        Pero, esta tecnica es de dificil implementacion, ya que habria
que considerar la posibilidad de que los paquetes se perdiesen.

   $ hping2 localhost --udp -i u[intervalo_en_microsegundos]
   ...
   --- localhost hping statistic ---
   *** packets tramitted, * packets received, ***% packet loss
   round-trip min/avg/max = *.*/*.*/*.* ms

   Y se analizaria  si limita o no el numero  de paquetes de ICMP
Port Unreachable. Pero, no hago la  prueba con mi localhost ya que las
condiciones  son completamente  diferentes  a las  condiciones que  te
encontrarias en internet. Aun  asi, veo de dificil implementacion esta
tecnica por lo dicho anteriormente.

   2) Basandose en  los mensajes de error ICMP,  y centrandose en
los mensajes que se refieren a  que no se pudo alcanzar un puerto casi
todos los OSs mandan simplemente  el encabezado ip y ocho bytes; pero,
tanto solaris como linux mandan una respuesta un poco mas larga siendo
este ultimo  el que  responde con mayor  numero de bytes.  Esto, claro
esta, puede ser utilizado para distinguir unos OSs de otros.

        $ hping2 localhost --udp -p 21

   y  si  analizamos uno  de  los  paquetes  ICMP de  Destination
unreachable observamos:

   Header length: 20 bytes
   Protocol: ICMP (0x01)
   Data (28 bytes)
   Type: 3 (Destination unreachable)
   Code: 3 (Port unreachable)
   
   se observa  pues como en sistemas linux  ademas del encabezado
ip se retornan bastante mas de 8 bytes, 28 bytes.

        3) Fijandose nuevamente en los mensajes de error ICMP debido a
que no  se pudo  alcanzar un puerto,  se observa  que todos los  OSs a
excepcion de  linux usa como valor  de TOS (tipo de  servicio) 0, pero
linux en  cambio, usa 0xc0  siendo esto parte  del AFAIK, el  campo de
referencia, que no es usado.

   $ hping2 localhost --udp -p 21

   y en el tcpdump, por ejemplo, observamos la siguiente salida:

   16:27:57.052282   lo > honorato > honorato: icmp: honorato udp port fs
   p unreachable [tos 0xc0]
   16:27:57.052282   lo < honorato > honorato: icmp: honorato udp port fs
   p unreachable [tos 0xc0]

   siendo el tos  0xc0 como he expuesto anteriormente,  ya que se
trata de un linux, a diferencia de los demas sistemas operativos.
   
   4) Basandose en los encabezados  de los paquetes ICMP de error
vemos como diferentes OSs lo utilizan como 'scratch space'.  Es decir,
lo  modifican; y asi  por ejemplo  encontramos como  freebsd, openbsd,
ultrix... cambian el ID de la IP del mensaje original en su respuesta,
bsdi aumenta en  20 bytes la longitud total del campo  de IP... (y hay
mas diferencias, que estan por analizar, asi que ya sabes).

   En mi linux, por ejemplo, el un paquete udp al puerto 0 es:

0000  00 00 08 00 45 00 00 1c  a4 c8 00 00 40 11 d8 06   ....E... ....@...
0010  7f 00 00 01 7f 00 00 01  0a e5 00 00 00 08 f6 f6   ........ ........

        y su el paquete ICMP de Destination unreachable es:

0000  00 00 08 00 45 c0 00 38  22 de 00 00 ff 01 9a 24   ....E..8 "......$
0010  7f 00 00 01 7f 00 00 01  03 03 fb 18 00 00 00 00   ........ ........
0020  45 00 00 1c a4 c8 00 00  40 11 d8 06 7f 00 00 01   E....... @.......
0030  7f 00 00 01 0a e5 00 00  00 08 f6 f6               ........ ....     

        En linux, el campo de la  IP, no varia del paquete udp al icmp
de error  a diferencia de  otros SOs pero  pasa de tener id:  0xa4c8 a
tener id:  0x22de. Este metodo  no lo he  estudiado a fondo y  veo que
puede tener  bastantes particularidades.  Si quieres  tener una vision
un poco mas  completa del escaneo de puertos  mediante metodos basados
en  ICMP  puedes  leer  ICMP  usage  in  scanning  o  tambien  llamado
Understanding some  of the  ICMP Protocol's Hazards  de Ofir  Arkin de
Sys-security Group en http://www.sys-security.com.

 
   5) Esta   tecnica  solo  puede   ser  usada,   en  plataformas
unix/linux/bsd y no  en win* ya que win no responde  a las queries que
seran usadas,  que son de ICMP  tipo 13 o tambien  conocidas como ICMP
Timestamp Request.

   En el  caso del sistema operativo  linux, que es  el que poseo
podemos observar la siguiente prueba:

   $ sing -vv -tstamp 127.0.0.1 ...
   
   del que  se obtendra un  tiempo de respuesta de  timestamp que
puede ser utilizado para diferenciar unos OSs de otros.


        6) Esta tecnica se basa  en el funcinamiento especifico de los
routers.
     
        En particular,  se basa en  ICMP Router Solicitation  (ICMP de
tipo 10). Cada  router 'multicastea' cada cierto tiempo  un anuncio de
ruta (ICMP de tipo 9) desde cada una de sus interfaces de 'multicast',
y de esta forma anuncia la direccion IP del interfaz.

   Si vemos que el host remoto responde con ICMP de tipo 9 frente
a un ICMP de tipo 10,  entonces nos encontramos ante un router.  Pero,
los  routers  que  tengan   suprimida  esta  caracteristica  no  seran
detectados.

   Las  pruebas para este  metodo las  puedes realizar  tanto con
hping2 como con sing (antiguo  icmpush), pero el ultimo fue el primero
en implementarla, y asi encontramos:

   $ sing -rts 127.0.0.1
   ...
   $ hping2 -C 10 127.0.0.1
   ...         


   - Bit  no fragmentado:  esta tecnica  se basa  en  que ciertos
sistemas operativos  ponen un bit no  fragmentado de IP  en algunos de
los paquetes  que envian.  Pero lo que  es cierto  es que no  todos lo
hacen, y de  hacerlo no lo hacen  de la misma forma; lo  que puede ser
aprovechado para averiguar el OS.

   en mi  linux (del que  ya he copiado  un uname -a  antes, para
saber el kernel que uso):

   $ hping2 localhost
   ...
   
   al analizar uno  de los paquetes tcp mandados  con ethereal se
comprueba que:

   Flags: 0x04
          .1.. = Don't Fragment: Set
          ..0. = More fragments: Not set

   pero, tampoco he hecho un gran numero de pruebas para asegurar
que en  algun caso y con cierto  tipo de paquetes no  se adjunte dicho
bit.  Aun asi, hay OSs que nunca lo usan como SCO o OpenBSD.

   
   - La ventana inicial de TCP: se basa en la comprobacion de las
dimensiones de la  ventana de los paquetes que nos  devuelve el host a
estudiar. El  valor que toma es  casi siempre igual  para cada sistema
operativo, he incluso hay sistemas que se pueden identificar por medio
de este  metodo, ya que son los  unicos que le asignan  cierto valor a
dicha ventana (ej. AIX, 0x3F25).

   En  lo que  se refiere  a  sistemas linux,  freebsd o  solaris
tienden a  mantener el mismo tamaño  de ventana para  cada sesion.  En
cambio, cisco o Microsoft Windows/NT cambia constantemente.

        $ hping2 localhost
   ...
   
   y al analizar, por ejemplo dos de los paquetes con ethereal vemos:

   Window Size: 512 (0x0200)
   ...
   Window Size: 512 (0x0200)
     
   - Tratamiento de fragmentacion: Se basa en el hecho de que los
sitemas  operativos tratan de  diferente forman  los fragmentos  de IP
solapados;  mientras  algunos  mantienen  el material  inicial,  otros
sobreescriben  la  porciones  antiguas  con las  nuevas.   De  dificil
implementacion  puesto que  hay  sistemas operativos  que no  permiten
mandar fragmentos  de IP  (lease Solaris), pero  si que es  cierto que
tendria bastante utilidad. 
   
   No lo he analizado en la practica, ya que no encontre la forma
de hacerlo con  hping2 y el hacer  un codigo que lo haga  no me parece
materia para cubrir en este manual por tener bastante dificultad.


   - Synflood:  una  tecnica  que  no me  parece  aplicable,  por
razones bien marcadas.  Hay ciertos OSs que llega un momento en que no
aceptan nuevas conexiones si has mandado demasiados paquetes SYN y por
ejemplo algunos  sistemas operativos  solo admiten 8  paquetes. Linux,
evita esto por medio de las SYN cookies.


   - Nukes:  Como ya he  dicho anteriormente,  la pila  de Win95,
WinNT o  Win98 parece  identica. Para distinguir  entre una u  otra el
metodo  que propongo  es el  aplicar  nukes de  forma cronologica  (es
decir, de  mas antiguos a  mas nuevos) e  ir viendo si el  servidor se
cuelga o no;  de esta forma sabremos la version ya  que si sabemos que
un  nuke  (por ejemplo,  Winnuke)  solo  funciona  con Win95  pues  ya
tendremos  el OS.   Aun asi,  no  recomiendo este  metodo por  razones
obvias.  Actualmente, estoy a la espera  de que mixter me aclare si el
ha  conseguido alguna  forma  de distinguir  una  pila en  win* en  su
nsat. De decirme como, lo incluire en este texto.

       
452  Informática / Tutoriales - Documentación / Análisis Remoto de Sistemas por Honoriak en: 6 Julio 2004, 02:43 am
Hola

Este texto es de manual para aquellos interesados en temas de seguridad y hacking.

Lo pasteo aquí por temor a que cambie algún enlace y se pierda este texto

Extraído de http://www.sindominio.net/hmleioa01/material/analisis.txt
----------------------------------------------------------------------
Comienzo de pasteo
----------------------------------------------------------------------

/* honoriak  <EGC@argen.net>   <honoriak@mail.ru>   2000.12.26  Ante
   cualquier duda,  critica, pregunta, etc.  no dudes  en escribirme a
   una de las direcciones de e-mail que acabas de ver. Las fuentes que
   me ayudaron en  la elaboracion de este reducido  'paper' figuran al
   final de este  documento. Este paper ha sido  elaborado con emacs y
   joe. */

-----------------[ Analisis remoto de sistemas
      
--------------------------[ honoriak <honoriak@mail.ru> de HeliSec

      [ sección de I+D de networking-center.org ]
           
            [ Version Final ]

   Indice
   ======

   1. Introduccion:
 
   -  Localizacion.
 
   -  NS de la maquina.
 
   -  Informacion del registro del dominio.

   2. Analisis:

   - Sistema operativo:

      Analisis sin conocimiento de la pila TCP/IP.        
      
      Analisis basado en la pila TCP/IP.

      Fingerprinting pasivo

   - Servicios:    

      Software  de escaneo  de  puertos y  vulnerabilidades:
      panorama actual.

      Tecnicas usadas en el escaneo de puertos.

   - Relacion de principales servicios con puertos. Daemons.

   - CGIs

   3. Bibliografia y agradecimientos


           |---------------------------------------|


   1. Introduccion
      ============

   Localizacion:
   ~~~~~~~~~~~~~

   En este  manual se tratara  unicamente el caso de  un servidor
con una ip  fija y un dominio/s asociado, ya que  creo que el analisis
de sistemas  se aplica a este  tipo de configuraciones y  no me parece
logico  el  ocuparse de  ordenadores  de  usuarios  domesticos ya  que
normalmente no son los que necesitan este tipo de comprobaciones.

   Lo unico a resaltar es que las IPs de las maquinas que vamos a
analizar no pueden estar en ningun caso entre:
    
     ============================================
     |   Clase    Networks                   |
     |  A       de 10.0.0.0 a 10.255.255.255    |
     |   B       de 172.16.0.0 a 172.31.0.0      |
     |  C       de 192.168.0.0 a 192.168.255.0  |
     ============================================

   Ya  que estas  son de  uso  privado (para  LANs, intranets)  y
estamos tratando el caso de maquinas conectadas a internet. La version
del Internet  Protocol utilizada mayormente  en la actualidad es  la 4
pero es  cierto que  los esfuerzos porque  este sea reemplazado  en un
futuro no muy lejano por IPv6 es notable y en este cambiara el esquema
de direcciones y las direcciones seran mas largas.

   Dos  herramientas  de uso  muy  comun  entre  los usuarios  de
cualquier sistema  operativo serio son  ping y traceroute.   Me parece
que es  obvio su uso y sino,  siempre puedes acudir al  man para saber
todas sus  opciones de sintaxis. La  ultima de ellas,  muchas veces es
infravalorada  en un analisis  y realmente  puede dar  una idea  de la
situacion fisica del servidor  y maquinas cercanas a este. Actualmente
hay  bastantes  frontends  y  utilidades basadas  en  traceroute  para
x-windows e  incluso alguna de ellas  representa en un  mapa el camino
que  sigue  un  paquete  desde  nuestro sistema  hasta  la  maquina  a
analizar.

   Mas  adelante, comentaré  el  uso de  traceroute para  conocer
mejor el tipo de firewall que protege a una máquina.
   

   NS de la maquina
   ~~~~~~~~~~~~~~~~

   Otra  herramienta muy  util  en el  analisis  es el  nslookup,
gracias a ella  podremos saber el servidor de  nombres (NS) que ofrece
el dominio a nuestro servidor, es decir, el NS que hace que w.x.y.z sea
dddd.com. Para  obtener esta informacion,  haremos uso de  nuestro DNS
(es decir, el servidor de nombres que nos ofrece nuestro ISP). Asi por
ejemplo, suponiendo  que mi NS es ns1.worldonline.es  y queremos saber
cual es el NS de insflug.org, se actuaria de la siguiente forma:

$ nslookup insflug.org
Server:  ns1.worldonline.es
Address:  212.7.33.3

Name:    insflug.org
Address:  209.197.122.174

$ nslookup
Default Server:  ns1.worldonline.es
Address:  212.7.33.3

> set q=ns
> insflug.org
Server:  ns1.worldonline.es
Address:  212.7.33.3

Non-authoritative answer:
insflug.org   nameserver = NS0.NS0.COM
insflug.org   nameserver = NS84.PAIR.COM

Authoritative answers can be found from:
NS0.NS0.COM   internet address = 209.197.64.1
NS84.PAIR.COM   internet address = 209.68.1.177

   Como  puedes observar,  hemos obtenido  los NS  tanto primario
como   secundario   que  hace   que   insflug.org   este  asociado   a
209.197.122.174 siendo: NS0.NS0.COM  y NS84.PAIR.COM. Esta informacion
nos puede ser  de gran utilidad para cierto tipo de  cosas.  Lo que si
que puede ser de cierta utilidad es  saber que en los NS hay unas zone
files  en  las que  se  encuentra la  informacion  sobre  el dominio  a
analizar, de esta forma encontrariamos

         zone "insflug.org"{
          type master;
          file "insflug.org.zone";
     };

   en el fichero en el que se encontrase la informacion sobre las
secciones  de zona (algunas  veces /var/named/),  siendo la  zone file
para insflug.org /var/named/insflug.org.zone,  en el supuesto de estar
en /var/named/.  Alli encontrariamos

   @                 IN     NS     NS0.NS0.COM.
    www               IN     A      209.197.122.174
    ftp               IN     CNAME   www
         .....

   CNAME significa canonical name  y quiere decir que en realidad
la  ip  a   la  que  se  refiere  ftp.insflug.org   es  la  misma  que
www.insflug.org y que  en este caso es la  misma que insflug.org, como
podemos comprobar haciendo:

$ nslookup
Default Server:  ns1.worldonline.es
Address:  212.7.33.3

> set q=ns
> www.insflug.org
Server:  ns1.worldonline.es
Address:  212.7.33.3

Non-authoritative answer:
www.insflug.org   canonical name = insflug.org
      ...

> ftp.insflug.org
Server:  ns1.worldonline.es
Address:  212.7.33.3

ftp.insflug.org   canonical name = insflug.org
      ...

   De  esta  forma,  podremos  saber  si  los  demonios  de  ftp,
www...  de un dominio  se encuentran  en una  misma maquina  o maquinas
diferentes; muy util para tener una vision global del host a estudiar,
ya que  lo que en  principio se podria  pensar que era un  servidor en
particular  son  varios.  Ademas,  www.insflug.org  por ejemplo  puede
estar asociado a varias IPs y viceversa.

   Pese a  que para saber el  servidor de nombres  del servidor a
estudiar hemos utilizado  nslookup, que se supone que  es el metodo en
el cual  utilizamos un  poco "nuestros propios  medios", estos  NSs se
podrian saber haciendo uso del comando  que se utiliza en lo que viene
a continuacion: whois.


   Informacion del registro del dominio
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

   Para  obtener informacion  sobre  el registro  de un  dominio,
entiendase  por dominio  ddd.xxx  y no  pr.ddd.xxx pr2.ddd.xxx...  que
serian considerados subdominios del primero,  se puede hacer uso de la
herramienta ya implementada  en la mayoria de los  unix whois. Asi, de
esta forma:

$ whois insflug.org
[whois.internic.net]

Whois Server Version 1.3

Domain names in the .com, .net, and .org domains can now be registered
with many different competing registrars. Go to http://www.internic.net
for detailed information.

   Domain Name: INSFLUG.ORG
   Registrar: NETWORK SOLUTIONS, INC.
   Whois Server: whois.networksolutions.com
   Referral URL: www.networksolutions.com
   Name Server: NS0.NS0.COM
   Name Server: NS84.PAIR.COM
   Updated Date: 24-jun-2000


>>> Last update of whois database: Mon, 25 Dec 2000 11:16:57 EST <<<

The Registry database contains ONLY .COM, .NET, .ORG, .EDU domains and
Registrars.

   Puedes observar como se han obtenido tambien los servidores de
nombres que  contienen la entrada  insflug.org (por esto  lo comentado
anteriormente).  Pero, en realidad, esto la mayoria de las veces no es
de mucha utilidad ya que  actualmente los registros de dominios no son
directos y en realidad no figura  el nombre del que lo quiso registrar
sino de  la empresa intermediaria  que hizo efectivo el  registro.  Lo
que si que nos proporciona una informacion mucho mas completa es hacer
un whois  al Whois Server que  nos ha proporcionado  este primer whois
insflug.org que es whois.networksolutions.com, asi de esta forma:

$ whois insflug.org@whois.networksolutions.com
[whois.networksolutions.com]
The Data in  Network Solutions' WHOIS database is  provided by Network
Solutions for information purposes, and to assist persons in obtaining
information  about or related  to a  domain name  registration record.
Network Solutions  does not guarantee  its accuracy.  By  submitting a
WHOIS query,  you agree that  you will use  this Data only  for lawful
purposes and that,  under no circumstances will you  use this Data to:
(1) allow,  enable,  or otherwise  support  the  transmission of  mass
unsolicited,  commercial  advertising   or  solicitations  via  e-mail
(spam);  or (2)  enable high  volume, automated,  electronic processes
that apply  to Network Solutions (or its  systems).  Network Solutions
reserves the right  to modify these terms at  any time.  By submitting
this query, you agree to abide by this policy.

Registrant:
Impatient & 'Novatous' Spanish FidoNet Linux Users Group (INSFLUG-DOM)
   Avda. Pablo VI, 11 - 4C
   Dos Hermanas, Sevilla 41700
   ES

   Domain Name: INSFLUG.ORG

   Administrative Contact, Billing Contact:
      Montilla, Francisco J  (FJM43)  pacopepe@INSFLUG.ORG
      Impatient & 'Novatous' Spanish FidoNet Linux Users Group
      Avda. Pablo VI, 11 - 4C
      Dos Hermanas, Sevilla 41700
      ES
      +34 955679066 (FAX) +34 955679066
   Technical Contact:
      Administrator, Domain  (DA550)  domain@PAIR.COM
      pair Networks, Inc
      2403 Sidney St, Suite 510
      Pittsburgh, PA 15203
      +1 412 681 6932 (FAX) +1 412 381 9997

   Record last updated on 25-Jul-2000.
   Record expires on 24-Jun-2001.
   Record created on 24-Jun-1998.
   Database last updated on 25-Dec-2000 20:18:04 EST.

   Domain servers in listed order:

   NS84.PAIR.COM      209.68.1.177
   NS0.NS0.COM         209.197.64.1

   Vemos pues, una informacion mucho mas completa =) Para obtener
   informacion sobre dominios que  no sean .com, .net, .org, .edu
   tendremos que saber el servidor que nos permite hacer un whois
   de  dicho dominio,  ya que  con el  whois.internic.net  no nos
   permitira esa busqueda,

$ whois ctv.es
[whois.internic.net]

Whois Server Version 1.3

Domain names in the .com, .net, and .org domains can now be registered
with many different competing registrars. Go to http://www.internic.net
for detailed information.

No match for "CTV.ES".

>>> Last update of whois database: Mon, 25 Dec 2000 11:16:57 EST <<<

The Registry database contains ONLY .COM, .NET, .ORG, .EDU domains and
Registrars.


   2. Analisis
      ========

   
   2.1 Sistema operativo
   ~~~~~~~~~~~~~~~~~~~~~
   
      I. Analisis sin conocimientos de la pila TCP/IP      
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   
   De  paquete,  algunos  sistemas operativos  (quizas  versiones
antiguas),  tenian  o  incluso  tienen "por  costumbre"  darnos  dicha
informacion   (so  y  version)   al  telnetear   al  servidor   y  los
administradores no se preocupan de modificarlo. Asi que siempre puedes
probar haber si hay suerte y por ejemplo te encuentras con:

$ telnet jeropa.com
Trying 64.60.1.66...
Connected to jeropa.com.
Escape character is '^]'.

Cobalt Linux release 4.0 (Fargo)
Kernel 2.0.34C53_SK on a mips

login:
      ...

   Lo  que  es  cierto,  es  que cualquier  sysadmin  serio  debe
preocuparse  de  cambiar esto,  ya  que  tampoco  hay que  dar  tantas
facilidades.  Pero, en la actualidad si que es cierto que cada vez son
mas los  sysadmins que cambian  esto e incluso  ponen un so  o version
falsa. Asi que esta tampoco va a ser una muy buena solucion para saber
el sistema operativo  de la maquina que tratamos.  (El escaner ISS, de
pago, utiliza esta "fiable" tecnica,  asi que te recomiendo usar queso
o nmap).

   Aun asi, podemos seguir  obteniendo informacion sobre el SO de
la  maquina a  estudiar de  forma  mas o  menos parecida  ya que,  por
ejemplo, si tiene operativo www, ftp o snmp, a lo mejor se puede hacer
una peticion  al servidor web,  ejecutar SYST en  una sesion de  FTP o
simplemente ver la version del cliente  de FTP o usar snmpwalk (de las
utilidades CMU SNMP) para conseguir cierta informacion respectivamente
y saber en algunos casos el SO; de esta forma, por ejemplo:

$ telnet www.microsoft.com 80
Trying 207.46.230.229...
Connected to www.microsoft.akadns.net.
Escape character is '^]'.
probando?
HTTP/1.1 400 Bad Request
Server: Microsoft-IIS/5.0
Date: Wed, 27 Dec 2000 00:03:18 GMT
                ...

   Te suena de  algo lo de IIS/5.0? Pues ya  sabes hablamos de un
win*.

  __

$ telnet ftp.ciudadfutura.com 21
Trying 216.35.70.14...
Connected to ftp.ciudadfutura.com.
Escape character is '^]'.
220 Serv-U FTP-Server v2.5e for WinSock ready...
         ...

   Y  por  tanto  si  revisamos las  caracteristicas  del  Serv-U
   FTP-Server,
      
   | "FTP Serv-U from is a full-featured
   | FTP server that allows you to turn almost any
   | MS  Windows (9x, NT, 2000) computer into an
   | Internet FTP Server."

   nos damos cuenta de que estamos hablando de una maquina win*.

      
453  Programación / Ejercicios / Ejercicios C++ en: 5 Julio 2004, 06:08 am
Problemas básicos

Intentar realizar los ejercicios de C con operadores y notación C++

Ejercicio 300
Escribir un programa que lea una fecha en formato DD-MM-AAAA y calcule el número de días transcurridos desde el día 1 de Enero de ese año

Ejercicio 301
Imprimir el mayor, el menor, la suma y la media aritmética de diez números aceptados por teclado


Ejercicio 302
Calcular el tiempo equivalente en horas minutos y segundos a un número de segundos leído.
El resultado debe imprimirse en un formato como el siguiente:

7322 segundos equivalen a:  2 horas, 2 minutos y 2 segundos.

Ejercicio 303
Cálculo aproximado del valor del número e con una determinada precisión, siendo dicha precisión un dato de entrada
Este número se obtiene mediante la siguiente serie:
e = 1 +  1 / 1! + 1/ 2! + 1/3! +1/4! + …..

Ejercicio 304
Dado un mes del año, su número de días y el día de la semana en que comienza, realizar un programa que muestre por pantalla la representación del calendario correspondiente a dicho mes


Ejercicio 305
Escribir un programa que permita agregar nº enteros a una lista de números aceptada por teclado. El programa pregunta si debe agregar al principio, al final o en el medio y agrega el elemento a la lista.


Ejercicio 306
Escribir un programa que permita eliminar elementos de una lista de números aceptada por teclado. El programa pregunta qqué elemento borrar considerando que el primero por la izquierda es el 1.


Ejercicio 307
Realizar una aplicación para gestionar cierta información de los empleados de una empresa. El diseño (incompleto) de la aplicación estará formado por dos clases: la clase empleado y la clase empleadoPorHoras (que hereda de empleado), junto con un programa principal que llama a las operaciones públicas de ambas clases
Clase empleado: contiene como datos privados el nombre del empleado y su número de DNI. Además, sus métodos públicos son: un constructor de la clase, dos operaciones selectoras (GetNombre y GetDNI), y una operación destructora de la clase.
Clase empleadoPorHoras: contiene como datos privados el coste horario de un empleado y su número de horas trabajadas durante la semana. Además, dispone de los siguientes métodos públicos: un constructor de la clase (que requiere de su clase base el nombre y el DNI del empleado) y una operación llamada DevuelvePaga (que calcula la paga del empleado multiplicando su coste horario por el número de horas trabajadas).


Operaciones con ficheros

Ejercicio 308
Realizar un programa que permita elegir el formato (windows o linux) y permita escribir un determinado texto de cualquier tamaño y guardarlo en un archivo ascii con el formato especificado llamado c:\texto.txt.
Los archivos de texto windows tienen como marcador de final de línea la secuencia CR (retorno de carro ascii=13) y LF (line feed ascii=10). Los de Linux solo tienen LF.

Ejercicio 309
Realizar un programa que lea c:\texto.txt y proporcione las siguientes estadísticas: nº total de caracteres, nº de mayúsculas, nº de consonantes, nº de vocales y las cinco letras mas usadas
454  Programación / Ejercicios / Re: Ejs. C nº 1. Que me falla en el codigo? en: 2 Julio 2004, 22:20 pm
Claro, estabas imprimiendo la dirección en vez de el valor que esta contiene

 :D
P.D.

Por cierto, este no es el ejercicio nº 1. Es el ejercicio nº 100.
455  Programación / Ejercicios / Re: 103 - calculo en: 2 Julio 2004, 22:15 pm
Hola
Si no hay X2 es porque A es 0.

En este caso resuelves 0x2+Bx+C=0

 :D
456  Informática / Tutoriales - Documentación / Re: TUTORIAL PROGRAMACION BAT en: 2 Julio 2004, 05:43 am
Eso no tiene que ver con este tema.

Tu problema es un problema de windows y probablemente se debe a que necesitas hacer scandisk o quizá esas carpetas están marcadas como ocultas.

Si hiciste como te dije esas carpetas están ahí seguro. Si tienes problemas postea en el foro de windows para que no se nos  lie una cosa con otra.

Un saludo
457  Programación / Ejercicios / Re: 101 - suma euros en: 2 Julio 2004, 04:12 am
Hola
Tu tienes una tienda y vendes cosas. Cada cosa que vendes se mete en una caja.

Al acabar el día tienes un montón de billetes y monedas y necesitas saber cuanto dinero hay exactamente en caja.

Así que bien te pones a contar todo uno por uno o bien vas a este programa y le dices: tengo 10 billetes de 50 y 4 de 100 y cinco monedas de 1 euro y 8 monedas de 10 céntimos.

Y el programa te dice:
10 x 50 = 500
4 x 100 = 400
5 x 1 = 5
8 x 0,10 = 0,80
y la suma de todo es 500+400+5+0,80 = 905,80 euros.
 ;D
458  Programación / Ejercicios / Ejercicios en C en: 2 Julio 2004, 00:28 am
C Básico
Ejercicio 100
Escribir un programa que solicite una temperatura y sistema de medición (celsius o farenheit) y que haga la conversión al otro sistema.
(para pasar a farenheit y=5/9X-32) x=grados celsius

Ejercicio 101
Escribir un programa para el arqueo de caja de una tienda.

Se pide cuantas monedas de 1 centimo
Cuantas monedas de 2 centimos
Cuantas monedas de 5 centimos
Cuantas monedas de 10 centimos
Cuantas monedas de 20 centimos
Cuantas monedas de 50 centimos
Cuantas monedas de 1 Euro
Cuantas monedas de 2 Euros
Cuantos billetes de 5 Euros
Cuantos billetes de 10 euros
Cuantos billetes de 20 Euros
Cuantos billetes de 50 Euros
Cuantos billetes de 100 Euros
Cuantos billetes de 200 Euros
Cuantos billetes de 500 Euros
y calcular la suma total en euros

Ejercicio 102
Escribir un programa que solicite una cantidad entera en formato decimal y la convierta a binario y hexadecimal


Ejercicio 103
Escribir un programa que solicite tres números reales A, B y C y calcule Ax2+Bx+C=0


Ejercicio 104
Escribir un programa que solicite un año e indique si es bisiesto o no

Un año es bisiesto si es múltiplo de 4 excluyendo aquellos que son múltiplo de 100 y no de 400.

Ejercicio 105
Escribir un programa que calcule los 100 primeros números primos


Ejercicio 106
Escribir un programa que pregunte un número entero entre uno y 9 y genere la tabla de multiplicar de ese número
en el siguiente formato (p. ej el 7)
7 x 1 = 7
7 x 2 = 14
t x 3 = 21
7 x 4 = 28
7 x 5 = 35
...
7 x 10 = 70

Ejercicio 124
Conociendo las monedas y billetes que están en caja pedir el precio de compra de un producto y que el programa diga los cambios que hay que devolver
(no solo el importe sino como distribuirlo en monedas y billetes)
Para ello primero hay que preguntar que monedas y billetes tenemos y luego que cantidad hay que cobrar.

Ejercicio 107
Realizar un programa que solicite una cantidad entera. Dada esa cantidad X debe solicitar X números y ordenarlos de mayor a menor


Ejercicio 108
Realizar un programa que solicite el nombre, dirección y teléfono de 5 personas. Una vez metidos preguntará un número entre 1 y 5 para sacar la información de esa persona.
El cero termina


Ejercicio 119
Realizar un programa que solicite una máscara de subred y devuelva una ip válida.


Ejercicio 127
Comprobar que una codificacion de tarjeta de credito es valida,y si nos es valida t dice k numero tienes k cambiarle para hacerla valida.

El numero se compone de tres partes principales:
Los 4 primeros digitos componen el identificativo del banco que cede la tarjeta.hay un numero diferente para cada banco(esto se busca en internet).
El 5 digito es el tipo de tarjeta e indica que entidad financiera gestiona esta tarjeta.Las mas importantes son Visa(4),american Expres(3),Master card(5),Discover(6).
los 10 digitos siguientes componen el numero de usuario e identifican a este de manera unica.
Digito de control es el ultimo numero y se obtiene aplicando un algoritmo al resto del numero.
El formato es el siguiente 1111 2333 3333 3334
algoritmo de codificacion:
Se realiza en tres pasos.
Si tenemos el numero de la tarjeta 4539 4512 0398 7356 y queremos comprobar que es válido:

1.Multiplicamos por dos los numeros de las posiciones imapres(4-3-4-1-0-9-7-5) y dejarlos con un solo digito.
4*2=8
3*2=6
4*2=81*2=2
0*2=0
9*2=18-->1+8=9
7*2=14--->1+4=5
5*2=10--->1+0=1

2.Sumar los digitos de las posiciones pares y los nuevos de las posiciones impares.
5+9+5+2+3+8+6+     8+6+8+2+0+9+5+1=80

3.Si el resultado es multiplo de 10 entonces el numero es valido.

Acceso a ficheros

Ejercicio 122
Escribir un programa que solicite palabras y las agrege a un fichero llamado c:\diccionario de forma que luego se puedan consultar las palabras una a  una


Ejercicio 109
Escribir un fichero que contenga 255 caracteres cualesquiera y los guarde en c:\exploit.exe


Ejercicio 110
Comprobar si existe el fichero c:\exploit.exe y si existe que lo lea y lo conserve en un array


Ejercicio 111
Escribir un programa que lea el archivo c:\exploit.exe y genere un archivo c:\ExploitCompleto.exe que será un archivo ejecutable. Al ejecutarse hace:
a) crea el archivo exploit.exe (lo tiene metido en un array)
b) realiza una serie de comprobaciones (las que queramos)
c) según el resultado de esas comprobaciones (figuradamente versión del sistema operativo por ejemplo) ejecuta exploit.exe con el parámetro correspondiente a la versión obtenida
Esas comprobaciones pueden ser sumar dos números aleatorios y si es par usar un parámetro, si es impar usar otro.
Naturalmente si en exploit.exe no hay un código real no funcionará, pero quizá podais intentar meter allí un código real que haga algo

Ejercicio 112
Realizar un keylogger que detecte las pulsaciones y las escriba a un fichero llamado log.txt utilizando las apis de windows


Comunicaciones

Ejercicio 113
Escribir un programa que escuche en el puerto 4500


Ejercicio 114
Escribir un programa que haga ping para encontrar un servidor que escuche en el puerto 4500


Ejercicio 115
Escribir un programa en que en el que un servidor escucha en el puerto 4500 y si un cliente intenta conectarse se le envía una paquete donde se le solicita que se identifique y queda a la escucha para recibir identificación.

Si el cliente es aceptado se le envía al cliente una aceptación
Si el cliente es rechazado se le envía al cliente una denegación

La estructura del paquete de comunicaciones es:
código: 5 dígitos
(código 1 = presentación (quién soy), código 2 = solicitud de identificación (¿quién eres?) código=3 = aceptación ("aceptado") código 4 = denegación (rechazado)
usuario (máximo 20 caracteres)
clave (máximo 10 caracteres)
ip_propia (20 caracteres)
puerto_propio (5 caracteres)

Ejercicio 116
Realizar una aplicación de cliente que busque a un servidor mediante un ping y si lo encuentra le envie un paquete
con la siguiente información:
código = 1
Nombre de usuario (obligatoriamente 20 caracteres)
contraseña: (obligatoriamente 10 caracteres)
ip_local: la ip del cliente
puerto_local (el puerto donde escuchar la respuesta)
y quede a la escucha para recibir aceptación

Ejercicio 126
Realizar una aplicación que solicite usuario y contraseña y carpeta e intente realizar una sesión ftp con ese usuario y contraseña para subir todos los archivos que estén en esa carpeta.

Si se llama a la aplicación con el parámetro /D entonces en vez de subirlos baja todos los archivos que estén allí a esa carpeta.
Se considera que todos los archivos son texto.


Operaciones de bit

Ejercicio 117
escribir un programa al que solicita una máscara de subred en formato decimal. El programa devolverá todas las subredes con la siguiente información: Dirección de red, rango de direcciones válido, dirección de broadcast


Ejercicio 118
Escribir un programa que solicita una máscara de subred y dos direcciones ip. El programa informará si ambas direcciónes están en la misma subred o no


Seguridad

Ejercicio 120
Realizar un programa que solicite una clave y luego por iteraciones encuentre la clave


Ejercicio 121
Realizar un programa que solicite una clave y luego buscando en un diccionario de palabras del ejercicio 122 intente encontrar la clave


Ejercicio 123
Escribir un programa que solicite usuario y contraseña. La contraseña se cifra como querais y se vuelve a solicitar contraseña (para verificar).
Se cifra y se compara con la anterior (es decir no se comparan las contraseñas sino su resultado cifrado).

Ejercicio 125
Escribir un programa que permita codificar/descodificar una determinada clave que se pasa como argumento. Si se pasa el parámetro /c hay que codificar. Si se pasa el parámetro /d hay que descodificar. Si no se pone se asume '/c'. Si no se pone clave no hace nada.
El formato será por tanto "aplicación [/d /c] clave
El sistema de cifrado será base64
http://foro.elhacker.net/index.php/topic,9039.0
459  Programación / Programación General / Re: Como empezar en programación en: 1 Julio 2004, 10:52 am
Hola
El-brujo ha creado un subforo de 'ejercicios' dentro de programación.

En él iremos poniendo ejercicios en diversos lenguajes abarcando distintos temas y con creciente dificultad. Si tienes interés en aprender ese es un buen lugar porque puedes hacer ejercicios apoyado por personas que saben como resolverlos.
 ;D

¡Ya me hubiera gustado aprender a mí así en vez de pasarme horas delante de una rutina sin entender porque no funcionaba!

 ::)
460  Programación / Ejercicios / Pantallazos acceso a datos en: 1 Julio 2004, 10:13 am
Estos son los pantallazos correspondientes a los ejercicios de acceso a datos.

Como vereis las pantallas no se corresponden exactamente a lo solicitado en el ejercicio, pero no iba a hacer la aplicación entera de nuevo pudiendo coger estos pantallazos que ilustran perfectamente lo que se quiere obtener.

Los nombres propios, direcciones y teléfonos han sido borrados pues son reales

El primero es la pantalla principal de clientes.
Al escribir en el textbox amarillo se encuentra rápidamente al cliente buscado.
Se puede ordenar por cualquier lado
Al dar doble click en un cliente se puede hacer cualquier cosa con ese cliente en el menú que sale (2º pantalla)

Al dar de alta un cliente se piden los datos de cliente. Este mismo formulario se utiliza también para modificar y ver un cliente. (3º pantallazo)

Seguidamente muestro un pantallazo de las facturas donde la lógica es la misma pudiendo ordenar por donde se quiera y localizar una factura con escribir su número o su cliente (4º pantallazo)

Seguidamente pantallazo del proceso de altas. Primero se piden datos básicos de factura (5º pantallazo) y si se escriben todos correctamente se pueden meter datos en esa factura (6º pantallazo)
Páginas: 1 ... 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 [46] 47 48 49 50 51 52
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines