Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: branon32 en 21 Noviembre 2019, 17:09 pm



Título: Enviar y recibir informacion en LAN con BATCH
Publicado por: branon32 en 21 Noviembre 2019, 17:09 pm
Pues lo que dice el titulo, tengo un montón de PCs intraconectados y quiero poder enviar y recibir informacion entre ellos a través de un archivo .bat para poder comunicarme con los compas sin que nos vea la profe :v


Título: Re: Enviar y recibir informacion en LAN con BATCH
Publicado por: engel lex en 21 Noviembre 2019, 17:19 pm
batch es solo un manejador de archivos por lote, no es un leguaje de programacion... en pocas palabras, si no hay en la pc algun programa de inercomunicacion, batch no puede hacer nada... no se si windows tendrá algo así de fabrica...


Título: Re: Enviar y recibir informacion en LAN con BATCH
Publicado por: branon32 en 22 Noviembre 2019, 12:05 pm
Se puede hacer, pero hay que darle vueltas


Título: Re: Enviar y recibir informacion en LAN con BATCH
Publicado por: Mudereded401 en 26 Noviembre 2019, 18:00 pm
batch es solo un manejador de archivos por lote, no es un leguaje de programacion... en pocas palabras, si no hay en la pc algun programa de inercomunicacion, batch no puede hacer nada... no se si windows tendrá algo así de fabrica...
Se Refiere a comunicarse por LAN, no por internet, Pero, Si se puede.

 Ya hice un programa que lo hace, Pero como no tengo 2 computadores, No lo he probado bien, Pero por lo visto si funciona(Según un amigo mio)


Título: Re: Enviar y recibir informacion en LAN con BATCH
Publicado por: Mudereded401 en 26 Noviembre 2019, 18:38 pm
Yo hice un pequeño programa, PERO yo no lo he podido probar por mi cuenta, Se lo dí a un amigo mio, ya que el tiene varias computadores Y yo no, me dijo Que Funcionaba Perfectamente, Asi que si no les funciona, Por favor avisadme  ;D

Primero Deben Poner Estos comandos en un Archivo .bat, Que sería el Visualizador:

Chat.bat =
Código:
@echo off
color 0b
title Visualizador

echo.
echo Ingresar Ubicacion del Servidor.txt, Encerrado en [""], Ej: "\\USER-PC\..."
echo.
set/p servidor=Servidor :

start LC-writer.bat

:a
@mode con cols=60 lines=30
cls
echo.
type %servidor%
echo.
timeout/t 1 /nobreak>nul
goto a

Luego Crean otro archivo .bat Que seria LC-Writer.bat

LC-Writer.bat =
Código:
@echo off
color 0a
title Writer
echo.
echo Ingresar Ubicacion del Servidor.txt, Encerrado en [""], Ej: "\\USER-PC\..."
echo.
set/p servidor=Servidor :
cls

echo.
set/p nombre=Ingresar nombre :

echo %nombre% Se ha unido al Chat>>%servidor%

:a
@mode con cols=60 lines=15
cls
echo.
set/p escritura=Escribe algo :
(
echo.
echo %nombre% : %escritura% ) >>%servidor%
goto a




Luego de que Hallan creado esos 2 archivos, Deben hacer un Archivo.txt, Que es donde se almacenará el Chat; Tienen que guardarlo en el computador principal, Y que los demas entren a ese PC por red (\\User-pc\blablabla), En donde dice, Ingresar Servidor; Luego se les abrirá automaticamente el Writer.bat para que Vuelvan a ingresar el servidor y a Ingresar sus nombres para que Aparezcan en la Conversacion.

PD: Servidor es El Archivo TXT que Está en el PC Principal, Solo lo llame Así porque sí, Ustedes pueden Ponerle cualquier nombre a ese .TXT.

 Y eso sería todo, Si tiene algún error Por favor avisen  :)


Título: Re: Enviar y recibir informacion en LAN con BATCH
Publicado por: engel lex en 26 Noviembre 2019, 18:49 pm
hmm interesante implementacion! XD a falta de recursos un archivo sobre smb! XD

muy creativo e ingenioso! ;) no se me habría ocurrido


Título: Re: Enviar y recibir informacion en LAN con BATCH
Publicado por: branon32 en 27 Noviembre 2019, 16:10 pm
Muchas gracias a todos!

Al final lo resolví yo solo, al principio pensé en utilizar el comando waitfor para enviar una señal entre todos los pc para que refrescaran. Pero no funcionaba muy bien y el resultado ha sido este:

  • Uno de los ordenadores en intranet funcionará como servidor, los clientes leerán todo el chatroom en un archivo de texto dentro del servidor.
  • Dentro del servidor hay un archivo de texto (server.ccc), configuracion que leerán todos los clientes
  • En lugar de refrescar cada vez que alguien escribe un mensaje (Esto se me ocurrió para que no ande parpadeando constantemente), se refresca cada cierto tiempo (latencia establecida en la configuracion server.ccc) con timeout . Pensé que esto provocaría un parpadeo constante pero en realidad ha resultado ser completamente cómodo para la vista y no parpadea en absoluto
  • Como no he podido evitar tener que hacer dos ventanas separadas para leer y escribir en el chat respectivamente, he conseguido una "extension" que puede manejar ventanas, y así poner una siempre encima de la otra para que no estén muy separadas. Es un poco cutre pero le da el toque estúpido y rudimentario que buscaba en el chat



Por aquí os dejo el código fuente y un enlace para descargar los archivos
En la linea 19 está la dirección generalizada de todos los PCs de mi clase, así que vosotros debéis poner la vuestra personalizada

ENLACE GITHUB: https://github.com/bruneo32/TIC-CHAT (https://github.com/bruneo32/TIC-CHAT)

En este proyecto estoy usando 3 "extensiones" para batch:
  • Insertbmp: Sirve para insertar imagenes bmp en batch
  • Cursor: esta la hice yo con c++, sirve para colocar el cursor en cualquier posicion
  • Cmdow: esta hace muchas cosas sobre las ventanas pero yo la quería generalmente para mover la ventana del chat en funcion de la ventana de texto

Lo que yo llamo "extensiones" son archivos ejecutables (.EXE) que implementan nuevas funciones y comandos en batch

Código
  1. @echo off
  2. SETLOCAL EnableDelayedExpansion
  3. mode 90,30
  4. title TIC CHAT
  5.  
  6. REM Multiproceso
  7. :startExtraThread
  8. if not "%1" == "" goto %1
  9.  
  10. REM ESTO ES PARA LOS COLORES
  11. for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
  12.  set "DEL=%%a"
  13. )
  14.  
  15. cls
  16. set/p "serv=Servidor: Inves"
  17. if [%serv%]==[] exit
  18. set "serverf=\\Inves%serv%\D\Mis Documentos\CT\_SERVER"
  19.  
  20. REM cargar datos del servidor (server.ccc)
  21. < "%serverf%\server.ccc" (
  22. set/p ccolor=
  23. set/p wcolor=
  24. set/p wtext=
  25. set/p cfrec=
  26. )
  27. color %ccolor%
  28. set file=%serverf%\roomdata
  29.  
  30. :start
  31. cls
  32. REM Se alternan todos los colores para limpiar el buffer de la imagen
  33. color f0
  34. color 0f
  35. color %ccolor%
  36.  
  37. REM Insertar la foto
  38. call "%serverf%\insertbmp.exe" /p:"%serverf%\banner.bmp" /x:0 /y:12 /z:100
  39.  
  40. REM Establecer la posicion del texto con 'cursor'
  41. call "%serverf%\cursor.exe" 3 20
  42. REM Aqui se llama a la funcion que colorea el texto
  43. call :ColorText %wcolor% "%wtext%"
  44. call "%serverf%\cursor.exe" 4 22
  45. set/p "nick=Seudonimo: "
  46. if [%nick%] == [] goto start
  47.  
  48. REM Iniciar el textbox
  49. start "" "%0" TEXTUAL %serv% %nick% %ccolor%
  50. call "%serverf%\cmdow" @ /TOP
  51. echo -- %nick% se ha unido  [%time%]>> %file%
  52.  
  53. :chat
  54. cls
  55. color f0
  56. color 0f
  57. color %ccolor%
  58.  
  59. TITLE TIC CHAT2
  60.  
  61. REM Leer todos los mensajes
  62. for /f "tokens=*" %%A in (%file%) do ( echo %%A )
  63.  
  64. REM Obtener la posicion de la ventana del textbox
  65. for /f "tokens=2,8-9" %%a in ('%serverf%\cmdow "TIC CHAT" /p') do (
  66. set "LEFT=%%b" & set "TOP=%%c"
  67. )
  68. REM Establecer la posicion de esta ventana en funcion de la otra
  69. set/a "TOP=%TOP%+32"
  70. call "%serverf%\cmdow" @ /MOV %LEFT% %TOP%
  71.  
  72. REM Escuchar la señal "blah" para refrescar (obsoleto)
  73. REM waitfor "blah" /t %cfrec% >nul
  74.  
  75. timeout /t %cfrec% >nul
  76.  
  77. REM Obtener la posicion de la ventana del textbox
  78. for /f "tokens=2,8-9" %%a in ('%serverf%\cmdow "TIC CHAT" /p') do (
  79. set "LEFT=%%b" & set "TOP=%%c"
  80. )
  81. REM Establecer la posicion de esta ventana en funcion de la otra
  82. set/a "TOP=%TOP%+32"
  83. call "%serverf%\cmdow" @ /MOV %LEFT% %TOP%
  84. goto chat
  85.  
  86. :TEXTUAL
  87. REM Aqui va el textbox
  88. TITLE TIC CHAT
  89. mode 90,3
  90.  
  91. REM Leer variables
  92. set "serv=%2"
  93. set "nick=%3"
  94. set "ccolor=%4"
  95.  
  96. set "servf=\\Inves%serv%\D\Mis Documentos\CT\_SERVER"
  97.  
  98. color %ccolor%
  99. call "%serverf%\cmdow" @ /TOP
  100. set file=%serverf%\roomdata
  101.  
  102. :TEXTUAL2
  103. cls
  104. set/p "ptext=>>> "
  105. REM Este echo no es para mostrar un texto, sino para escribir en el archivo del server
  106. echo [%time%] %nick% : %ptext%>> %file%
  107. REM Enviar señal de refresco (obsoleto)
  108. REM waitfor /si "blah">nul
  109. goto TEXTUAL2
  110.  
  111.  
  112. :ColorText
  113. REM Esta funcion sirve para dar color a un texto
  114. echo off
  115. <nul set /p ".=%DEL%" > "%~2"
  116. findstr /v /a:%1 /R "^$" "%~2" nul
  117. del "%~2" > nul 2>&1
  118. goto :eof
  119.  


Mod: no hagas doble post, usa el boton modificar


Título: Re: Enviar y recibir informacion en LAN con BATCH
Publicado por: engel lex en 27 Noviembre 2019, 16:17 pm
pregunta, por que no lo hiciste en vbs que viene implementado en windows y si es un lenguaje de verdad? (pudieras haber usado sockets)

tal vez usar python? (hay interpretes portables por si no puedes instalar nada)


Título: Re: Enviar y recibir informacion en LAN con BATCH
Publicado por: Serapis en 27 Noviembre 2019, 17:21 pm
El mesenger (hablo del servicio del PC, no del cliente de correo), sirve precisamente para la comunicación en la LAN. (como es un servicio, debe estar habilitado).
El comando básico:
Net send
"Sends messages to other users, computers, or messaging names on the network.
Syntax
net send {name | * | /domain[:name] | /users} message"

Los mensajes puedes pasarlos cifrados por algún otro programa, cada día/semana acordais una clave entre todos y hale.

Recuerda que "bat" es como querer construir castillos con terrones de azúcar. Bastante ineficiente tanto en ejecución como en desarrollo.


Título: Re: Enviar y recibir informacion en LAN con BATCH
Publicado por: branon32 en 27 Noviembre 2019, 20:53 pm
El mesenger (hablo del servicio del PC, no del cliente de correo), sirve precisamente para la comunicación en la LAN. (como es un servicio, debe estar habilitado).
El comando básico:
Net send
"Sends messages to other users, computers, or messaging names on the network.
Syntax
net send {name | * | /domain[:name] | /users} message"

Los mensajes puedes pasarlos cifrados por algún otro programa, cada día/semana acordais una clave entre todos y hale.

Recuerda que "bat" es como querer construir castillos con terrones de azúcar. Bastante ineficiente tanto en ejecución como en desarrollo.


Net send no funcionaba en mi pc xd ya lo intenté



pregunta, por que no lo hiciste en vbs que viene implementado en windows y si es un lenguaje de verdad? (pudieras haber usado sockets)

tal vez usar python? (hay interpretes portables por si no puedes instalar nada)

Precisamente por dar por culo (tanto a mi mismo como a mis compas)



Si a ver, si esto fuese un programa "comercial" (incluso gratuito). Pues lo haría de una forma más elegante y desde luego eficiente. Pero no olvidemos que el objetivo de este proyecto no es hacer el mejor chatroom, es hacer un chatroom con bat para que mis compas puedan intentar entender el código (por eso lo he llenado de comentarios).


Título: Re: Enviar y recibir informacion en LAN con BATCH
Publicado por: engel lex en 27 Noviembre 2019, 21:24 pm
repito la advertencia de atras, no hagas doble post, si quieres agregar info usa el boton modificar


Título: Re: Enviar y recibir informacion en LAN con BATCH
Publicado por: Mudereded401 en 27 Noviembre 2019, 21:51 pm
hmm interesante implementacion! XD a falta de recursos un archivo sobre smb! XD

muy creativo e ingenioso! ;) no se me habría ocurrido
Jeje grax, La verdad es Que no se mucho de batch, Soy casi nuevo pero intento hacer Las cosas un poco Distintas para ver el Mejor resultado; Al principio yo también intente hacer que El chat y el lugar donde escribes, Quedaran en el mismo lugar, Pero obviamente no se pudo y me tocó separarlos .-.


Título: Re: Enviar y recibir informacion en LAN con BATCH
Publicado por: branon32 en 28 Noviembre 2019, 12:52 pm
Hola buenas chicos! Creo que este será mi último post en este hilo, sólo vengo a deciros como me ha ido la implementación en las máquinas de clase ya que lo he probado hoy.

Todo ha salido perfecto pero he tenido que hacer dos modificaciones:
  • Para empezar me dió error en la ruta del servidor porque no podia usarse el carácter del espacio así que en lugar de ser "D\Mis documentos\CT" simplemente lo dejé en "D\CT"
  • Después me dió un error en TIMEOUT porque el ordenador parece no tener esta función implementada así que la cambié por el PING y listo