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


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Mensajes
Páginas: 1 ... 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 [38] 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 ... 235
371  Programación / Scripting / Re: Guardar datos correctamente en un archivo en: 11 Marzo 2022, 15:37 pm
Son problemas de Codificación de Caracteres, para que todo funcione como deba debes usar la misma codificación origen para abrir el resultante. Para simplificar, primero debes ejecutar el comando ChCp para que te muestre la codificación actual, por defecto suele ser 850 (Español), entonces cuando guardas ese resultado a un archivo dicho archivo debe ser abierto también con esa codificación.

El detalle viene cuando tu lector de archivos no soporta la codificación 850 por ejemplo, o que lo soporte poro no lo detecte automáticamente, lo normal es que los lectores mínimamente soporten ANSI (1252) y UTF-8 como el Bloc de Notas.

Entre las soluciones que puedes manejar desde la más sencilla a la más compleja serían:

a) Usar Tree /A para usar solo caracteres ASCII que se incluyen en prácticamente todas las codificaciones, pero al ser un juego menor de caracteres puede que no se vea tan "bonito"

b) Usar ChCp 1252 antes de usar Tree para que se use la codificación ANSI que es muy compatible y no deberías de tener problemas, pero igualmente tiene un juego menor de caracteres, sin embargo no debería afectar en lo absoluto a la apariencia visual de la salida de Tree

c) Usar Tree > archivo.txt pero antes o después usar ChCp para ver la codificación que se está usando y luego disponer de un buen lector de archivos de texto plano como Notepad3 que permite usar decenas de codificaciones y que seguramente es compatible con la codificación del archivo, también está Notepad++ que tiene un juego medio de codificaciones aunque no tan completa como Notepad3, al final está también SublimeText que de igual manera tiene un juego medio de codificaciones.

Yo me inclinaría por la opción (b), o la (a) si solo quiero usar ASCII
372  Programación / Scripting / Re: Borrar todo el contenido de un treeview. en: 10 Marzo 2022, 15:47 pm
Por lo que he estado probando esto parece funcionar (línea 16):

Código
  1. import tkinter as tk
  2. import tkinter.ttk as ttk
  3.  
  4. class App(tk.Tk):
  5.  def __init__(self):
  6.    super().__init__()
  7.    self.tv = ttk.Treeview(self)
  8.    with open("animales.txt") as a:
  9.       for animal in a:
  10.         self.tv.insert("", tk.END, text=animal)
  11.    self.tv.pack()
  12.    self.be = ttk.Button(self, text="Vaciar", command=self.eliminar)
  13.    self.be.pack()
  14.  
  15.  def eliminar(self):
  16.    self.tv.delete(*self.tv.get_children())
  17.  
  18. app = App()
  19. app.mainloop()

Luego me fui a googlearlo y vi este y otro método usando For en StackOverflow:
https://stackoverflow.com/questions/22812134/how-to-clear-an-entire-treeview-with-tkinter
373  Programación / Ejercicios / Re: Ejercicio javascript. en: 2 Marzo 2022, 05:16 am
Ese enunciado es algo raro, en javascript no puedes crear nada privado a no ser que se usen Closures o alguna cosa todavía más rara XD, el problema de hacerlo así es que no veo manera de usar los Setters y Getters nativos, por ejemplo:

Código
  1. class Coche {
  2.  constructor(peso, potencia, marca) {
  3.  
  4.    var peso, potencia, marca
  5.    peso = peso
  6.    potencia = potencia
  7.    marca = marca
  8.  
  9.    this.getPeso = ()=>peso
  10.  }
  11. }
  12.  
  13. var myCoche = new Coche(1500, 150, "seat")
  14.  
  15. myCoche.getPeso()
  16. // 1500

También puede referirse a usar solo atributos privados por convención anteponiéndoles el subguión, pero esto es solo por convención y no son realmente privados, yo me inclinaría más por esto para darle más sentido a todo el enunciado:

Código
  1. class Coche {
  2.  
  3.  constructor(peso, potencia, marca) {
  4.    this._peso = peso
  5.    this._potencia = potencia
  6.    this._marca = marca    
  7.  }
  8.  
  9.  set peso(peso) {
  10.    this._peso = peso
  11.  }
  12.  
  13.  get peso() {
  14.    return this._peso
  15.  }
  16.  
  17. }
  18.  
  19. var myCoche = new Coche(1500, 150, "seat")
  20.  
  21. myCoche.peso
  22. // 1500
  23.  
  24. myCoche.peso = 2000
  25.  
  26. myCoche.peso
  27. // 2000

Al final dependerá mucho del contexto de tu ejercicio
374  Media / Multimedia / Re: Subsitulos en: 27 Febrero 2022, 16:49 pm
Por defecto los subtítulos que tengan un nombre igual al del video son cargados automáticamente por VLC y MPC-HC, por ejemplo: "video.avi" y "video.str" (MCKSys Argentina explica también la distinción de idiomas)

También es posible cargarlos manualmente, desde VLC en el menú Subtítulos y en MPC-HC desde el menú Archivo > Subtítulos

Se usa el contenedor AVI con los codec MPEG-4 y MP3 por compatibilidad, por defecto AVI no soporta incrustarle subtítulos, estos tienen que ir en archivos separados y también por compatibilidad en .SRT, la otra opción es pegarlos al video pero una vez pegados no se pueden quitar. Por último se puede usar otro contenedor como MP4 o MKV que si soportan nativamente incrustar subtítulos, pero ya dependerá del medio en el que quieras reproducir estos videos y su compatibilidad para con el video resultante
375  Programación / Scripting / Re: Permisos acceso a clave de registro PC remoto en: 23 Febrero 2022, 12:50 pm
1. El problema era que yo utilizaba un usuario con credenciales de administrador, pero veo que debe ser si o si el usuario administrador activado como bien dijiste.

2. Solo tuve que modificar esta linea, no se porque pero ejecutando desde windows funcionaba pero desde la plataforma de la maquina no.

Set sh = WScript.CreateObject("WScript.Shell")  por  Set sh = CreateObject("WScript.Shell")

3. Si quisiera añadir una clave seria con Reg Add  correcto?

4. También hice la prueba en local, pero Reg query no funciona, es normal?

1. Esto es debido al UAC (Control de Cuentas de Usuario) que se introdujo desde Windows Vista. Por defecto solo el usuario "Administrador" tiene permitido saltarse el UAC. Si quieres usar otro Usuario tienes que deshabilitar la UAC o configurar para que TODOS los usuarios con permisos de administrador puedan saltársela.

2. Depende del Intérprete que estés utilizando, Script.exe y WScript.exe (.vbs) tienen innato el objeto WSCript, pero si usas otro intérprete como mshta.exe (.hta .htm, etc) u otro, pues ellos tienen otro objeto o directamente usar CreateObject como lo has hecho.

3. Si, como puse en mi primer mensaje, solo que tienes que considerar escapar las comillas si las vas a necesitar.

4. El script que puse está hecho para PCs remotas con IP válidas porque así lo requiere Reg.exe y CmdKey.exe, aunque puedes poner la IP de tu PC local (no loopback) pero debes iniciar el servicio de registro remoto. Lo mejor sería usar: pc = "." de esa manera Reg entenderá que es tu propia PC local y no requerirá nada de permisos remotos, CmdKey dará un error interno oculto pero el script funcionará sin problemas.
376  Sistemas Operativos / Windows / Re: Tecla de Atajo o Rapida para el Navegador en: 17 Febrero 2022, 15:16 pm
No existe algo tal cual buscas, deberías acostumbrarte a usar el menú inicio, es decir, presionar Win y escribir las primeras letras del programa que necesites, este menú inicio aprende con el tiempo, si en un inicio por ejemplo para iniciar Chrome tuviste que escribir: chro, para las siguientes te bastará ch o incluso solo c, al final le das un Enter para que inicie el programa resaltado.

La siguiente opción es crearte un script o exe con tus atajos de teclado como AutoHotKey y llevarlo a las PC que quieras, pero ya es depender de dicho script
377  Programación / Scripting / Re: Permisos acceso a clave de registro PC remoto en: 17 Febrero 2022, 13:27 pm
El nuevo método que estás implementando no requiere del servicio de Registro Remoto, sin embargo a nivel básico requiere tener habilitado el usuario Administrador con contraseña y puesto en el Firewall la Administración Remota. PERO lo más importante es el envío de credenciales que desde VBScript puro no lo vas a poder hacer, tendrías que usar RunAs.exe para hacer el envío de credenciales, por ejemplo:

En la PC Remota/Servidor (192.168.0.102):

Código
  1. :: Activar la cuenta de Administrador y ponerle un password (12345)
  2. Net User Administrador /Active:Yes
  3. Net User Administrador 12345
  4.  
  5. :: Activar la Administración Remota en el Firewall
  6. NetSh Firewall Set Service RemoteAdmin Enable

En la PC Cliente:

Código
  1. :: Crear el Script, por ejemplo "RemoteRegRead.vbs":
  2. Const HKLM = &H80000002
  3. pc = "192.168.0.102"
  4. Set oReg = GetObject("winmgmts:\\" & pc & "\root\default:StdRegProv")
  5. key = "SOFTWARE\Microsoft\Windows NT\CurrentVersion"
  6. value = "ProductName"
  7. oReg.GetStringValue HKLM, key, value, rpta
  8. Wscript.Echo "Rpta: " & rpta
  9.  
  10. :: Usar RunAs para usar las credenciales y ejecutar el script
  11. RunAs /NetOnly /User:Administrador "WScript C:\Users\EdSon\Desktop\RemoteRegRead.vbs"

Ahora bien, si no quieres usar RunAs.exe tendrías que dejar prácticamente sin protección al Servidor para deshabilitar toda obstrucción, esto incluso es algo complejo porque no suele venir fácilmente documentado.

Citar
Prefiero hacerlo por VBscript porque necesito guardar el contenido en una variable del PC local que utilizaran otras rutinas de VBscript.

Si tu intención es solo guardar el resultante en una variable, puedes usar un método sencillo, por ejemplo el primero que planteé con Reg.exe o este último con RunAs.exe o usando herramientas de terceros como PSExec. El ejemplo para hacerlo con Reg.exe sería el siguiente:

En la PC Remota/Servidor (192.168.0.102):

Código
  1. :: Activar la cuenta de Administrador y ponerle un password (12345)
  2. Net User Administrador /Active:Yes
  3. Net User Administrador 12345
  4.  
  5. :: Ejecutar el servicio de Registro Remoto
  6. Net Start RemoteRegistry
  7.  
  8. :: Activar Compartir Archivos e Impresoras en el Firewall
  9. NetSh Firewall Set Service FileAndPrint Enable

En la PC Cliente:

Código
  1. ' Crear el Script, por ejemplo "RemoteRegQuery.vbs":
  2. pc = "192.168.0.102"
  3. Set sh = WScript.CreateObject("WScript.Shell")
  4. cmd = "CmdKey /Add:" & pc & " /User:Administrador /Pass:12345"
  5. sh.Exec(cmd)
  6. cmd = "Reg Query ""\\" & pc & "\HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion"" /V ProductName"
  7. Set rpta = sh.Exec(cmd)
  8. variable = rpta.StdOut.ReadAll()
  9. Call WScript.Echo(variable)

Con ello obtendrías en variable el resultado de usar el comando Reg.exe, en mi caso:

Citar

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
    ProductName    REG_SZ    Windows 7 Ultimate


Obviamente el Script debe ser ejecutado como administrador, a partir de ahí puedes parsear el resultado por ejemplo con Split:

Código
  1. value = Split(Split(variable, vbCrLf)(2), "    ")(3)
  2. Call WScript.Echo("_" & value & "_")

Bueno, esa sería la idea de usar comandos externos y recuperar su salida.
378  Programación / Scripting / Re: Pasar argumentos a una función saliendo de una caja de texto con <Enter>. en: 12 Febrero 2022, 05:13 am
Saludos,

El único detalle es que estás usando un StringVar pero no estás extrayendo su valor correctamente, solo reemplaza tu línea 7 por:

Código
  1.        datetime.strptime(fecha.get(), '%d/%m/%Y')
379  Programación / Scripting / Re: Como leer un texto que hay en [Batch] con el Bloc de notas en: 10 Febrero 2022, 03:35 am
PowerShell viene incluido por defecto desde Windows 7, las instrucciones que utilizas son de las clásicas así que no debería haber problemas.

Con respecto a que aún no te funciona, pues seguramente tu Batch no está guardado como UTF-8, usa un editor de texto/código decente como Notepad3, Notepad++ o SublimeText y asegúrate de guardar tu archivo con codificación UTF8 sin BOM

Si no quieres usar PowerShell, puedes usar Batch puro y duro:

Código
  1. Set "_ReadMe=%WinDir%\Temp\ReadMe.txt"
  2. Set "yo=%~f0"
  3. Del %_ReadMe% >NUL 2>&1
  4. Call :export txt "%_ReadMe%"
  5. Start notepad "%_ReadMe%"
  6. Exit /B
  7.  
  8. :export
  9. For /F "tokens=1 delims=:" %%a In ('FindStr /X /N ":%1:" %yo%') Do More %yo% +%%a > %2
  10. Exit /B
  11.  
  12. :txt:
  13. Aplicación
  14. Expañol
  15. Inglés
  16. Ñandú

La ventaja es que tomará la codificación de tu Batch sea cual sea: ANSI, UTF-8, etc y el archivo resultante también tendrá la misma codificación por lo que siempre debería mostrar las cosas tal cual se ven.
380  Comunicaciones / Redes / Re: Abro los puertos de mi router pero realmente estos no están abiertos en: 9 Febrero 2022, 23:18 pm
Hace dos semanas MoviStar me metió dentro de una NAT con IP pública 100.x.x.x, obviamente no había manera de "abrir puertos" así, llamé y les dije que tengo un servidor web y necesito una IP Pública sin NAT, luego de algunos intentos al fin me volvieron a poner una IP pública directa del tipo 190.x.x.x

Primero debes hacer un Test en Local en tu Red LAN, configura tu Firewall, tu IP Local e intenta acceder desde otra PC en tu misma Red, minimamente esto debe funcionarte. Luego recién puedes ir a tu Router y hacer el PortForwarding para salir a Internet, en el mismo Router dice en WAN tu IP pública que debe coincidir con la IP que te muestran páginas del tipo CualEsMiIP, si no coincide es que estás dentro de una SubRed o NAT y no podrás Servir.
Páginas: 1 ... 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 [38] 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 ... 235
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines