Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Beito en 16 Septiembre 2015, 04:01 am



Título: Pregunta sencilla , soy un amateur
Publicado por: Beito en 16 Septiembre 2015, 04:01 am
Hola soy novicio en esto de la programación , por ahora solo quiero estudiar batch , autodidáctamente ,  como una manera de divertirme , para encontrarle un sentido al juego de los hacker , si me gusta ,  poder elegirlo como carrera, por ahora leo varios manuales en la red , no me resuelven estas líneas de comando , extraído de una manual , estará el autor en un error?

Crear una macro para ver un fichero por pantallas.
C:\>doskey ver $1=more $L$1

Crear una macro para crear un directorio y entrar en él.
C:\>doskey mc $1=md $1$Tcd $1

Adicionalmente a ello , con un buen juicio , que Manual Batch me recomiendan? , uno sin muchos tecnicismos , que comprenda todo lo que se necesite para perfeccionarme en el lenguaje , de ante mano , gracias.



Título: Re: Pregunta sencilla , soy un amateur
Publicado por: engel lex en 16 Septiembre 2015, 04:28 am
Citar
uno sin muchos tecnicismos , que comprenda todo lo que se necesite para perfeccionarme en el lenguaje

"sin muchos tecnisismos" y "para perfeccionarme en el lenguaje" no van en la misma frase... programacióń es programación, basicamente solo son tecnisimos

batch tampoco es lo mejor para empezar, ya que no es un lenguaje de programación realmente... es un lenguaje de automatización de tareas por lotes de archivos... es complicado y poco potente (por lo menos el bash es un poco más potente aún así no tan util)


Título: Re: Pregunta sencilla , soy un amateur
Publicado por: Beito en 16 Septiembre 2015, 05:12 am
Lo complicado no es un problema para mí , ya que no se puede aprender sin tecnicismos en ésta materia , tendré que acostumbrarme a ellas , no dije que fuera algo tan sustancial , elijo Batch por que no hay S.O de habitual uso , que no la comprenda , donde quiera que esté puedo divertirme usándolo , encontrándolo la lógica de un programa y eso , y bueno... sabes de algún Manual realmente bien redactado por allí?


Título: Re: Pregunta sencilla , soy un amateur
Publicado por: engel lex en 16 Septiembre 2015, 05:23 am
Citar
elijo Batch por que no hay S.O de habitual uso , que no la comprenda

quien te dijo eso?

batch es exclusivamente de windows... linux y mac usan bash que es ligeramente parecido (hago incapié en ligeramente) sin embargo son completamente incompatibles...

mejor aprende python que es simple y multiplataforma, porque vas super perdido -.-

python donde instales el interprete puede correrlo... parte de los linux trae el interprete de fabrica...





Título: Re: Pregunta sencilla , soy un amateur
Publicado por: Eleкtro en 16 Septiembre 2015, 05:41 am
para encontrarle un sentido al juego de los hacker

Entonces el peor lenguaje que puedes escojer es Batch. Batch fue ideado para automatizar tareas del sistema, con él no podrás aprender nada útil al respecto del hacking, cómo mucho podrás hacer una bomba lógica y ya (en lo referente al Malware), olvídate de cualquier tipo de interacción/comunicación con la red (Sockets y demás).



Lo complicado no es un problema para mí

Batch no es complejo, Batch es el lenguaje más sencillo de aprender ya que carece de cualquier componente de un lenguaje real, lo que el compañero @Engel Lex seguramente intentó decirte es que precisamente por ese motivo que acabo de explicar (o similares), cualquier código en Batch requiere más lineas de escritura y por ende más tiempo de desarrollo en comparación con cualquier otro lenguaje, Batch se vuelve tedioso y complejo en el sentido de que para cualquier código hay que buscarle 5 patas al gato, por que es un lenguaje limitado, muy, muy limitado.



elijo Batch por que no hay S.O de habitual uso , que no la comprenda , donde quiera que esté puedo divertirme usándolo , encontrándolo la lógica de un programa y eso

Windows soporta nativamente varios lenguajes más, los cuales le dan mil patadas a Batch, estos son:

  • Visual Basic Script (VBS)
  • Visual Basic for Applications (VBA)
  • PowerShell
  • javascript (mejor no lo tomes cómo una opción por el momento en lo relacionado con apps/tareas de escritorio)

Sin embargo, para alguien que quiere introducirse en la programación, sea por el motivo que sea, yo recomendaría Ruby o Python (si hablamos de Scrpting) o C#/VB.Net (si hablamos de lenguajes compilados).



sabes de algún Manual realmente bien redactado por allí?

Vuelvo a repetirte mi consejo. Si tu interés es el hacking ...evita Batch.

De todas formas...
Tutorial extendido de aprendizaje Batch - By Elektro (http://foro.elhacker.net/buscador-t375135.0.html)
[BATCH] Manual PDF de Batch (INGLÉS) - By Elektro (SS64) (http://foro.elhacker.net/scripting/batch_manual_de_batch_ingles-t367017.0.html)
An A-Z Index of the Windows CMD command line - SS64 (http://ss64.com/nt/)
+
Código:
CMD.exe /C Help

Saludos


Título: Re: Pregunta sencilla , soy un amateur
Publicado por: Beito en 16 Septiembre 2015, 06:11 am
Ok , entiendo bro's , en realidad pienso dedicar mi tiempo a un par de  lenguajes a la vez , Java  de todas formas no será excluyente , ya que será en un Centro educacional , phyton o batch , he leído que son muy parecidos , puedo manejar el registro a mi antojo con Phyton? ,  porque las personas aprenden Batch teniendo Phyton? , Phyton se encuentra en todos los S.O por defecto ? , es decir si entro a una cabina de internet o la casa de mi amigo , encontraré phyton? , gracias por su tiempo , solo éstas ultimas interrogantes , luego me dedicaré a encontrar las respuestas , y en un futuro poder plantearme otras mejores.


Título: Re: Pregunta sencilla , soy un amateur
Publicado por: engel lex en 16 Septiembre 2015, 06:20 am
Citar
he leído que son muy parecidos
no... XD ni cerca... tan parecidos como son el jugo de naranja y el pan

Citar
puedo manejar el registro a mi antojo con Phyton?
si, llamando a la respectiva librería (winreg)

Citar
porque las personas aprenden Batch teniendo Phyton?
porque para saber hacer ciertas cosas basicas practicas en el sistema operativo siempre es bueno saber manejar la consola de comandos, sin embargo, muchos que la usan, no saben si quiera hacer un ciclo en ella...

Citar
Phyton se encuentra en todos los S.O por defecto ?

respondo repitiendo lo que dije
Citar
python donde instales el interprete puede correrlo... parte de los linux trae el interprete de fabrica...

en resumen no... solo parte de los linux trae el interprete preinstalado



Título: Re: Pregunta sencilla , soy un amateur
Publicado por: Beito en 16 Septiembre 2015, 06:56 am
Python y Batch no tienen un particular parecido ? , joder , malditos lammers , su intención es buena  pero brindan una info bastante absurda, bueno me acabas de decir que no puedo usar python en cualquier ordenador? , deseaba usar Batch ya que lo encuentro en las Pc con S.O que la gente en su gran mayoría demanda , éste  pseudo lenguaje de programación quizá no me ayude del todo a ser un hacker , pero "siempre es bueno manejar la consola de comandos" , crearé bombitas lógicas y eso , aparte solo deseo mantener esa costumbre a mi mente , de mantenerse interpretando y creando lógicas informáticas en cualquier lado , Gracias por su desinteresada colaboración , les deseo mucha suerte , y una última pregunta :V , existirá python portable? hahaha , es solo que... si habría un portable menoscabaría por completo al batch xD


Título: Re: Pregunta sencilla , soy un amateur
Publicado por: engel lex en 16 Septiembre 2015, 07:11 am
un codigo de ejemplo en batch (convertir un numero de decimal a binario)

Código
  1. @ECHO OFF
  2. :: Check Windows version: NT 4 or later required
  3. IF NOT "%OS%"=="Windows_NT" GOTO Syntax
  4. :: Check number of command line arguments: 1 and only 1 required
  5. IF     "%~1"=="" GOTO Syntax
  6. IF NOT "%~2"=="" GOTO Syntax
  7. :: Check if the command line argument consists of zeroes and ones only
  8. ECHO "%~1"| FINDSTR /R /B /C:"\"[01][01]*\"$" >NUL || GOTO Syntax
  9.  
  10. :: Initialize the variables
  11. SET Binary=%~1
  12. SET Decimal=0
  13. SET DigVal=1
  14.  
  15. :: Display the initial binary value
  16. SET Binary
  17.  
  18. :Loop
  19. :: Extract the last digit from the binary number
  20. IF %Binary% GTR 1 (
  21. SET Digit=%Binary:~-1%
  22. SET Binary=%Binary:~0,-1%
  23. ) ELSE (
  24. SET /A Digit = %Binary%
  25. SET Binary=0
  26. )
  27. :: Add the digit's value to the decimal result
  28. IF %Digit% EQU 1 SET /A Decimal = %Decimal% + %DigVal%
  29. :: Increment the digit's value (multiply by 2)
  30. SET /A DigVal *= 2
  31. :: If the value of the remaining digits is
  32. :: greater than 0, loop to the next iteration
  33. IF %Binary% GTR 0 GOTO Loop
  34.  
  35. :: Clean up aal variables but one
  36. SET Binary=
  37. SET Digit=
  38. SET DigVal=
  39.  
  40. :: Display the decimal result
  41. SET Decimal
  42.  
  43. :: Exit with the decimal result as return code
  44. EXIT /B %Decimal%
  45.  
  46.  
  47. :Syntax
  48. ECHO Bin2Dec.bat,  Version 1.00 for Windows NT 4 and later
  49. ECHO Convert binary numbers to decimal
  50. ECHO Usage:  BIN2DEC  binary_number
  51. ECHO Written by Rob van der Woude
  52. ECHO http://www.robvanderwoude.com

un código de ejemplo en python (mostrar un cubo en 3d y rotando)
Código
  1.  
  2. import wireframe
  3. import pygame
  4.  
  5. class ProjectionViewer:
  6.    """ Displays 3D objects on a Pygame screen """
  7.  
  8.    def __init__(self, width, height):
  9.        self.width = width
  10.        self.height = height
  11.        self.screen = pygame.display.set_mode((width, height))
  12.        pygame.display.set_caption('Wireframe Display')
  13.        self.background = (10,10,50)
  14.  
  15.        self.wireframes = {}
  16.        self.displayNodes = True
  17.        self.displayEdges = True
  18.        self.nodeColour = (255,255,255)
  19.        self.edgeColour = (200,200,200)
  20.        self.nodeRadius = 4
  21.  
  22.    def addWireframe(self, name, wireframe):
  23.        """ Add a named wireframe object. """
  24.  
  25.        self.wireframes[name] = wireframe
  26.  
  27.    def run(self):
  28.        """ Create a pygame screen until it is closed. """
  29.  
  30.        running = True
  31.        while running:
  32.            for event in pygame.event.get():
  33.                if event.type == pygame.QUIT:
  34.                    running = False
  35.  
  36.            self.display()  
  37.            pygame.display.flip()
  38.  
  39.    def display(self):
  40.        """ Draw the wireframes on the screen. """
  41.  
  42.        self.screen.fill(self.background)
  43.  
  44.        for wireframe in self.wireframes.values():
  45.            if self.displayEdges:
  46.                for edge in wireframe.edges:
  47.                    pygame.draw.aaline(self.screen, self.edgeColour, (edge.start.x, edge.start.y), (edge.stop.x, edge.stop.y), 1)
  48.  
  49.            if self.displayNodes:
  50.                for node in wireframe.nodes:
  51.                    pygame.draw.circle(self.screen, self.nodeColour, (int(node.x), int(node.y)), self.nodeRadius, 0)
  52.  
  53. if __name__ == '__main__':
  54.    pv = ProjectionViewer(400, 300)
  55.  
  56.    cube = wireframe.Wireframe()
  57.    cube.addNodes([(x,y,z) for x in (50,250) for y in (50,250) for z in (50,250)])
  58.    cube.addEdges([(n,n+4) for n in range(0,4)]+[(n,n+1) for n in range(0,8,2)]+[(n,n+2) for n in (0,1,4,5)])
  59.  
  60.    pv.addWireframe('cube', cube)
  61.    pv.run()


creo que la diferencia se nota incluso sin conocimientos

sobre python portable, creo que este proyecto lo es
http://winpython.github.io/ (http://winpython.github.io/)

aunque Eleкtro propone otras opciones de la cual creo que la más común es Visual Basic Script (VBS) este lo interpreta windows (y solo windows) nativamente... es considerablemente potente (aún existen virus en este lenguaje) y muy util

por cierto... antes de irde te cabeza con lo de ser "hacker" primero aprende que es, porque posiblemente puede que estés creyendo mal (culpo al cine y tv)

Pero... ¿Qué narices es un 'hacker'? (https://foro.elhacker.net/dudas_generales/pero_iquestque_narices_es_un_hacker-t408449.0.html)

[Guía] "Quiero ser hacker" - Por dónde empezar (https://foro.elhacker.net/foro_libre/guia_quiero_ser_hacker_por_donde_empezar-t430974.0.html)


Título: Re: Pregunta sencilla , soy un amateur
Publicado por: Eleкtro en 16 Septiembre 2015, 08:36 am
un codigo de ejemplo en batch (convertir un numero de decimal a binario)

Código
  1. @ECHO OFF
  2. :: Check Windows version: NT 4 or later required
  3. IF NOT "%OS%"=="Windows_NT" GOTO Syntax
  4. :: Check number of command line arguments: 1 and only 1 required
  5. IF     "%~1"=="" GOTO Syntax
  6. IF NOT "%~2"=="" GOTO Syntax
  7. :: Check if the command line argument consists of zeroes and ones only
  8. ECHO "%~1"| FINDSTR /R /B /C:"\"[01][01]*\"$" >NUL || GOTO Syntax
  9.  
  10. :: Initialize the variables
  11. SET Binary=%~1
  12. SET Decimal=0
  13. SET DigVal=1
  14.  
  15. :: Display the initial binary value
  16. SET Binary
  17.  
  18. :Loop
  19. :: Extract the last digit from the binary number
  20. IF %Binary% GTR 1 (
  21. SET Digit=%Binary:~-1%
  22. SET Binary=%Binary:~0,-1%
  23. ) ELSE (
  24. SET /A Digit = %Binary%
  25. SET Binary=0
  26. )
  27. :: Add the digit's value to the decimal result
  28. IF %Digit% EQU 1 SET /A Decimal = %Decimal% + %DigVal%
  29. :: Increment the digit's value (multiply by 2)
  30. SET /A DigVal *= 2
  31. :: If the value of the remaining digits is
  32. :: greater than 0, loop to the next iteration
  33. IF %Binary% GTR 0 GOTO Loop
  34.  
  35. :: Clean up aal variables but one
  36. SET Binary=
  37. SET Digit=
  38. SET DigVal=
  39.  
  40. :: Display the decimal result
  41. SET Decimal
  42.  
  43. :: Exit with the decimal result as return code
  44. EXIT /B %Decimal%
  45.  
  46.  
  47. :Syntax
  48. ECHO Bin2Dec.bat,  Version 1.00 for Windows NT 4 and later
  49. ECHO Convert binary numbers to decimal
  50. ECHO Usage:  BIN2DEC  binary_number
  51. ECHO Written by Rob van der Woude
  52. ECHO http://www.robvanderwoude.com

Engel, en realidad es para convertir de binario a decimal :P solo aclaro el dato pero no tiene importancia.

La misma tarea pero en .Net (VB.Net):
Código
  1. Dim bin As String = "101001001" ' 329
  2. Dim dec As Integer = Convert.ToInt32(bin, fromBase:=2)
  3. Console.WriteLine(dec)
En C# sería lo mismo, y en Ruby, Python, Java y etc también solamente que utilizando sus miembros built-in.

PD: Te muestro el ejemplo equivalente pa que veas la diferencia de simplificación de código, aunque las diferencias son muchas más que esa, Batchero advertido :P.


Título: Re: Pregunta sencilla , soy un amateur
Publicado por: Beito en 16 Septiembre 2015, 09:45 am
No hermano , en que parte he "creído" de forma que tenga un mal concepto de ser hacker? , sé que es difícil , pero estoy seguro que batch lo tendré que aprender tarde o temprano , para perfeccionarme como uno , así que , el orden de los factores no altera el ... blablabla, y ahora para que vean que soy apasionado , estudiaré 3 lenguajes esporádicamente , no la verdad que no , ya soy Economista y el tiempo se torna escaso ,
agradezco tus url's de asesoría , pero algo me atrae por batch y java , quizá sea por el tiempo , ya que se me acomoda mejor  , aunque luego sigue python :D
PD : que es un batchero? , seré batchero y javero? , en fin muchachos , sigan adelante , éxitos .


Título: Re: Pregunta sencilla , soy un amateur
Publicado por: engel lex en 16 Septiembre 2015, 17:31 pm
no creo que haya alguien que alga algo realmente util unicamente con batch... pero bueh...

igual lee los links... no los pases por alto


Título: Re: Pregunta sencilla , soy un amateur
Publicado por: ivancea96 en 16 Septiembre 2015, 18:18 pm
Batch es una herramienta más que un lenguaje de programación. Puedes aprender a usar Excel, pero poco te servirá vivir utilizando solo Excel. Excel lo utilizas, cuando lo necesitas, ni más, ni menos (sin entrar de detallas de usos de Excel y etc xD)


Yo Batch lo veo útil para principiantes en programación, para iniciarse. Pero vaya, como dijeron, no tiene utilidades como sockets, cosa muy importante. No puede hacer nada en comparación a un lenguaje.

Y ya como opinión personal, Batch me parece algo lioso y traicionero. Es más visual ver un "2 > 1", que un "2 GTR 1". O por ejemplo, el uso del "FOR" en Batch, que si bien no sé utilizar, pienso que es bastante más complejo que un "FOR" en un lenguaje normal (cualquier lenguaje imperativo). Tiene "más utilidades", pero bueno, es un comando bastante especial.


¿Quieres un lenguaje que puedas utilizar en cualquier ordenador? ¿Qué elemento tienen todos los ordenadores, independientemente del SO? El navegador, javascript :D
Claro que javascript solo te dará poder de procesar datos de formularios HTML, y mostrarlos (ahí ya prácticamente sin restricciones, gracias a HTML5).


Pero sí, en cuanto a ralación potencia-dificultad-portabilidad, sí, Python.


Título: Re: Pregunta sencilla , soy un amateur
Publicado por: Beito en 16 Septiembre 2015, 19:33 pm
Listo , me reclinaron por python , caso cerrado.