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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


  Mostrar Mensajes
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... 331
21  Foros Generales / Foro Libre / Re: Asesoramiento sobre demanda alimenticia en: 23 Marzo 2021, 07:30 am
Yo te recomiendo que contactes a mas personas con el mismo padecimiento y realicen una demanda colectiva, claro si es unico entonces creo y solo creo que es un tema como de intolerancia, edad o cualquier cosa aislada que puede que sea un problema aun mayor que solo la bebida activa una sintomátia… por ejemplo.

Un dolor de cabeza puede deberse por:
 Tumor
 Mala oclusión de la mandíbula.
 Golpe en el cráneo
 etc.

Saludos.
22  Foros Generales / Foro Libre / Re: Golpe de estado en Birmania: el Ejército toma el control del país en: 14 Febrero 2021, 07:00 am
El texto en morado y mi tema en negro... no son compatibles...

Dulces Lunas.
23  Programación / Desarrollo Web / Re: Crear Script (Alguien me puede ayudar)? en: 4 Febrero 2021, 07:31 am
Extensiones para chrome:
https://ahrefs.com/blog/seo-chrome-extensions/

Para desarrollar:
https://ahrefs.com/api/documentation

request builder:
https://ahrefs.com/api/api-request-builder

P.D.: El acceso se realiza por "Token" a un endpoint dado... sin duda unsigned (mendiga u en corchetes los tuve que quitar jajajajaja) te puede apoyar en ello si lo que requieres un desarrollador.

Saludos.
24  Programación / .NET (C#, VB.NET, ASP) / Re: Obtener número de serie de un disco físico (no volumen lógico) en: 4 Febrero 2021, 05:44 am
Scripting.FileSystemObject... de hecho dicho objeto no parte de vb6 parte de vba, al final del día ya tiene varias formas de hacerlo

API Win32
Objetos COM (vba) en vb .NET

En cualquier caso según veo se debe ejecutar con privilegios de administrador, así que deberá agregar un MANIFEST para que escale permisos o que se ejecute con dicho permiso.

El código posteado por serapis (Solo parte del COM) por lo que se ve lista volúmenes lógicos y no físicos que para lo que se requiere es similar a este (VBS) crear un archivo en escritorio y con extensión "vbs" como ejecutar.vbs y pegar este código y darle doble click:

Código
  1. Dim fs, d, dc, s
  2. Set fs = CreateObject("Scripting.FileSystemObject")
  3. Set dc = fs.Drives
  4. For Each d in dc
  5.    s = s & d.DriveLetter & " tipo "  & d.DriveType & " serialNumber (Logico) "  & d.SerialNumber & vbNewLine
  6. Next
  7. MsgBox s
  8.  

Saludos.
25  Programación / .NET (C#, VB.NET, ASP) / Re: Obtener número de serie de un disco físico (no volumen lógico) en: 3 Febrero 2021, 20:54 pm
Puedes omitir el llamado de ZeroMemory* en VB .NET las variables ya se inicializan limpias* y no se ve que las uses entre la declaracion y la implementación de las mismas.

ZeroMemory
La función ZeroMemory llena un bloque de memoria con ceros.

Sintaxis
VOID ZeroMemory (
    PVOID Destination,  // puntero al bloque a llenar con ceros
    DWORD Length,       // tamaño, en bytes, del bloque a llenar
   );
Parámetros
Destination: puntero a la dirección de comienzo del bloque de memoria a llenar con ceros.

Length: especifica el tamaño, en bytes, del bloque de memoria a llenar con ceros.

Valor de retorno
Esta función no tiene valor de retorno.

Saludos.
26  Programación / .NET (C#, VB.NET, ASP) / Re: Obtener número de serie de un disco físico (no volumen lógico) en: 3 Febrero 2021, 05:56 am
Alguien me pudiera aclarar como se puede obtener el número de serie de un disco físico, también el modelo del disco.

OJO!!! Que sea usando la API de Windows y en VB

GetVolumeInformationA function (fileapi.h)

https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getvolumeinformationa

Encontré el uso en C/C++ solo tradúcelo y adáptalo a tus necesidades que tampoco creo en los foros se hagan encargos de codigo a modo.

https://gist.github.com/micjabbour/a2fbe50160862e6abe439c0b0769c3fb

Lo modifique para listara los números de serie de todos los discos físicos instalados (es un asco como lo adapte, lo se jajajaja).
Código
  1. #include <windows.h>
  2. #include <memory>
  3. #include <string>
  4. #include <iostream>
  5. #include <bitset>
  6. #include <vector>
  7.  
  8. using namespace std;
  9.  
  10. #define CTL_CODE(DeviceType, Function, Method, Access) \
  11.     (((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method))
  12. #define METHOD_BUFFERED 0
  13.  
  14. //returns the serial number of the first physical drive in a string or an empty string in case of failure
  15. //based on http://codexpert.ro/blog/2013/10/26/get-physical-drive-serial-number-part-1/
  16. string getFirstHddSerialNumber(wchar_t *pDisk) {
  17.    //get a handle to the first physical drive
  18.    HANDLE h = CreateFileW(pDisk, 0, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
  19.    if(h == INVALID_HANDLE_VALUE) return {};
  20.    //an unique_ptr is used to perform cleanup automatically when returning (i.e. to avoid code duplication)
  21.    unique_ptr<remove_pointer<HANDLE>::type, void(*)(HANDLE)> hDevice{h, [](HANDLE handle){CloseHandle(handle);}};
  22.    //initialize a STORAGE_PROPERTY_QUERY data structure (to be used as input to DeviceIoControl)
  23.    STORAGE_PROPERTY_QUERY storagePropertyQuery{};
  24.    storagePropertyQuery.PropertyId= StorageDeviceProperty;
  25.    storagePropertyQuery.QueryType= PropertyStandardQuery;
  26.    //initialize a STORAGE_DESCRIPTOR_HEADER data structure (to be used as output from DeviceIoControl)
  27.    STORAGE_DESCRIPTOR_HEADER storageDescriptorHeader{};
  28.    //the next call to DeviceIoControl retrieves necessary size (in order to allocate a suitable buffer)
  29.    //call DeviceIoControl and return an empty string on failure
  30.    DWORD dwBytesReturned= 0;
  31.    if(!DeviceIoControl(hDevice.get(), IOCTL_STORAGE_QUERY_PROPERTY, &storagePropertyQuery, sizeof(STORAGE_PROPERTY_QUERY),
  32.                        &storageDescriptorHeader, sizeof(STORAGE_DESCRIPTOR_HEADER), &dwBytesReturned, NULL))
  33.        return {};
  34.    //allocate a suitable buffer
  35.    const DWORD dwOutBufferSize= storageDescriptorHeader.Size;
  36.    unique_ptr<BYTE[]> pOutBuffer{new BYTE[dwOutBufferSize]{}};
  37.    //call DeviceIoControl with the allocated buffer
  38.    if(!DeviceIoControl(hDevice.get(), IOCTL_STORAGE_QUERY_PROPERTY, &storagePropertyQuery, sizeof(STORAGE_PROPERTY_QUERY),
  39.                        pOutBuffer.get(), dwOutBufferSize, &dwBytesReturned, NULL))
  40.        return {};
  41.    //read and return the serial number out of the output buffer
  42.    STORAGE_DEVICE_DESCRIPTOR* pDeviceDescriptor= reinterpret_cast<STORAGE_DEVICE_DESCRIPTOR*>(pOutBuffer.get());
  43.    const DWORD dwSerialNumberOffset= pDeviceDescriptor->SerialNumberOffset;
  44.    if(dwSerialNumberOffset==0) return {};
  45.    const char* serialNumber= reinterpret_cast<const char*>(pOutBuffer.get() + dwSerialNumberOffset);
  46.    return serialNumber;
  47. }
  48.  
  49. void printPhysicalDriversSerial() {
  50.    bitset<32> drives(GetLogicalDrives());
  51.    vector<char> goodDrives;
  52.    for (char c = 'A'; c <= 'Z'; ++c) {
  53.        if (drives[c - 'A']) {
  54.            //if (GetDriveType((c + string(":\\")).c_str()) == DRIVE_FIXED) { descomentar para solo obtener los Discos físicos internos.
  55.                goodDrives.push_back(c);
  56.            //}
  57.        }
  58.    }
  59.    for (auto & drive : goodDrives) {
  60.        string s = string("\\\\.\\") + drive + ":";
  61.        HANDLE h = CreateFileA(
  62.            s.c_str(), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
  63.            OPEN_EXISTING, FILE_FLAG_NO_BUFFERING | FILE_FLAG_RANDOM_ACCESS, NULL
  64.        );
  65.        if (h == INVALID_HANDLE_VALUE) {
  66.            cerr << "Drive " << drive << ":\\ cannot be opened" << endl;
  67.            continue;
  68.        }
  69.        DWORD bytesReturned;
  70.        VOLUME_DISK_EXTENTS vde;
  71.        if (!DeviceIoControl(
  72.            h, IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS,
  73.            NULL, 0, &vde, sizeof(vde), &bytesReturned, NULL
  74.        )) {
  75.            cerr << "Drive " << drive << ":\\ cannot be mapped into physical drive" << endl;
  76.            continue;
  77.        }
  78.        for (int i = 0; i < vde.NumberOfDiskExtents; ++i) {
  79.            wchar_t disk [MAX_PATH];
  80.            swprintf(disk, MAX_PATH, L"\\\\.\\PhysicalDrive%d", vde.Extents[i].DiskNumber);
  81.            string serialNumber = getFirstHddSerialNumber(disk);
  82.            fputws ( disk, stdout );
  83.            cout << endl;
  84.            if(serialNumber.empty()) {
  85.                cout << "failed to retrieve serial number" << endl;
  86.            } else {
  87.                cout << "serial number: " << serialNumber << endl;
  88.            }
  89.        }
  90.    }
  91. }
  92.  
  93. int main() {
  94.    printPhysicalDriversSerial();
  95.    return 0;
  96. }
  97.  

Para corroborar los datos pintados, ejecutar en CMD:

wmic diskdrive get Name, Manufacturer, Model, InterfaceType, MediaType, SerialNumber

Saludos.
27  Programación / Desarrollo Web / Re: Css: Inhibir reglas en: 1 Febrero 2021, 08:47 am
!important te sirve?

Código
  1. body{
  2. font-family: verdana, arial !important;
  3. }

También implementando la jerarquía de los selectores.

https://codepen.io/pedromarin/pen/GdejgQ

De igual forma si estas con un page builder, puedes hacer que esas paginas generadas dinámicamente (supongo) se les pueda anexar atributo extra y el CSS que afecta a dichos componentes hagan uso de ese atributo para aplicar el mismo.

https://developer.mozilla.org/es/docs/Web/CSS/Selectores_CSS

igual revisa esto por el tema de la pantalla pequeña.

https://www.regochan.com/varios/item/95-modificar-css-segun-el-tamano-de-la-pantalla-responsive.html

https://www.w3schools.com/cssref/css3_pr_mediaquery.asp

saludos.
28  Programación / Programación Visual Basic / Re: leer user y password en archivos aleatorios en: 1 Febrero 2021, 08:25 am
El tema es solo de Accesos, si se requiriera algo de seguridad (mayor nivel), cifrado o X es mejor AES 128 (Estándar mínimo para codificación en bancos) o superior (AES 256, 1024, etc, el numero 128 es la longitud de la clave compartida en este caso 128/8 = 16 caracteres, en fin que si con salt se complica y ya mínimo requieres mas de 4 años por decir algo pero aquí lo dicen un poco mas con un análisis en base a números… cifrado: ¿qué tan seguro es AES?
para adivinar la cadena cifrada).

VB6 AES 256
Chilkat ActiveX Downloads (128-bit, 192-bit, and 256-bit AES encryption in ECB (Electronic Cookbook), CBC (Cipher-Block Chaining), and other modes)

o cualquier otro algoritmo:

VB6 lista de algoritmos para cifrar

Habitualmente es mejor programar esto en capas/fases y no mezclar todo, de tal manera que se pueda rehusar y entender.

Por cierto...

Código
  1. Do While (TimEspera.Enabled = True): Loop
  2.  

Mejor.

Código
  1. Private Declare Function WaitMessage Lib "user32" () As Long
  2. ....
  3.  
  4. Do While (TimEspera.Enabled = True)
  5.    doevents
  6.    Call WaitMessage
  7. Loop
  8.  

Saludos.
29  Programación / Programación Visual Basic / Re: Error al momento de publicar un programa en: 27 Enero 2021, 04:33 am
Esto va en foro de .NET

Saludos.
30  Programación / Programación Visual Basic / Re: Violation of PRIMARY KEY en: 27 Enero 2021, 04:31 am
Esto va en .NET pero yo cuando quiero hacer inserts en hilos recurro a bloqueos de registros por BDD.

Deberías usar un consecutivo o algo similar (que funcione en hilos), o bloquear el registro (solo en updates)... en fin lo que debes hacer es validar si existe el registro antes de hacer el insert por que en la BDD ya existe, revisa la restriccion 'PK__MATERIAL__CC87E127D767918D' en tu BDD y revisa que campos ya se han ingresado.

Algo de código que yo uso en ocasiones para mitigar esto (En Oracle):

por ejemplo en Updates

Código
  1. DECLARE
  2.   CURSOR c1 IS SELECT empno, job, sal FROM emp FOR UPDATE;
  3. BEGIN
  4.   OPEN c1;
  5.   LOOP
  6.      FETCH c1 INTO bla bla bla
  7.      UPDATE emp
  8.      SET sal = new_sal
  9.      WHERE CURRENT OF c1;
  10.   END LOOP;
  11.   CLOSE c1;
  12. END;
  13.  

En cuanto a INSERTS

uso un insert con una subquery (Se requieren índices para que sea "rápida").

Código
  1. INSERT INTO A
  2. SELECT
  3.    'valor 1' AS campo1,
  4.    'valor 2' AS campo2,
  5.    'valor 3' AS campo3
  6. FROM DUAL
  7. WHERE NOT EXISTS (
  8.    SELECT * FROM A
  9.    WHERE A.campo1 = 'valor 1' AND A.campo2 = 'valor 2' AND A.campo2 = 'valor 2';
  10. )
  11.  

o con un MERGE (Emulando 1 tabla), (Se requieren índices para que sea "rápida").

Código
  1. MERGE INTO A target
  2. USING (
  3. SELECT
  4. 'valor 1' AS campo1,
  5. 'valor 2' AS campo2,
  6. 'valor 3' AS campo3
  7. FROM DUAL
  8. ) src
  9. ON target.campo1 = src.campo1, target.campo2 = src.campo2, target.campo3 = src.campo3
  10. WHEN MATCHED THEN
  11. UPDATE SET target.campo1 = 'valor 1', target.campo2 = 'valor 2', target.campo3 = 'valor 3'
  12. WHEN NOT MATCHED THEN
  13. INSERT (campo1, campo2, campo3)
  14. VALUES ('valor 1', 'valor 2', 'valor 2');
  15.  

Saludos.
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... 331
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines