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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: 1 ... 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 54 55 56 ... 199
401  Programación / Programación General / Re: ¿Qué es la programación orientada a objetos? en: 5 Febrero 2014, 00:26 am
Bueno, que puedo decir... empezando mi día bien temprano y ya un epic fail...
Como siempre el tipico haxor con sus epic fails...
-


402  Foros Generales / Sugerencias y dudas sobre el Foro / Re: Boton 'copiar'? en: 4 Febrero 2014, 21:21 pm
Doble click dentro del cuadro geshi y Ctrl+C mira que fácil :P
No funciona en Chrome,Firefox,IExplorer,Opera.
403  Programación / Programación C/C++ / Re: punteros dobles y matrices en DELPHI en: 4 Febrero 2014, 16:25 pm
lo que no termino de entender es qué tiene que ver DELPHI con C o C++
Que el queria saber la equivalencia de una definicion para C/C++ a Delphi.
404  Programación / Programación C/C++ / Re: hiperbinculos en consola de C++ (casi solucionado) en: 4 Febrero 2014, 16:19 pm
Eso ya seria usar Visual C++, que es totalmente diferente a usar C/C++ puro. Ya teniendo las herramientas Visual Studio, yo recomendaría más C#, mucho más practico.
Usar Win32 no tiene nada que ver respecto al compilar Visual C++, esto se puede hacer en MingW,Intel,etc. :silbar:
Además ¿adonde crees que terminan llamando esas librerias que mencionaste en Windows? -> Win32
405  Programación / Programación C/C++ / Re: Que estoy haciendo mal arreglo? (Solucionado) en: 4 Febrero 2014, 06:58 am
De nadas suerte  ::)
406  Programación / Programación C/C++ / Re: no funciona ReadFile y overlapped en: 4 Febrero 2014, 06:52 am
Hice esta traducción rapida, nota que use la estructura que creo que es la estabas buscando la vez pasada, de esta manera accedemos
a los campos directamente. pero sino, pues como dije no hay necesidad de hacer conversion a diferencia como en NET. simplemente haces
algo como esto:

variable = *((SizeOfType*)&Pointer[offset]); / SizeOfType = BYTE, WORD, etc

y obtendras el campo

Uso VC++ como compilador por si tenes problemas al compilar con directivas propias ( #pragma pack, tipos, etc ).

Código
  1. #pragma pack(push, 1)
  2. typedef struct _BIOS_PARAMETERS_BLOCK
  3. {
  4.    USHORT    BytesPerSector;
  5.    UCHAR     SectorsPerCluster;
  6.    UCHAR     Unused0[7];
  7.    UCHAR     MediaId;
  8.    UCHAR     Unused1[2];
  9.    USHORT    SectorsPerTrack;
  10.    USHORT    Heads;
  11.    UCHAR     Unused2[4];
  12.    UCHAR     Unused3[4];
  13. } BIOS_PARAMETERS_BLOCK, *PBIOS_PARAMETERS_BLOCK;
  14.  
  15. typedef struct _EXTENDED_BIOS_PARAMETERS_BLOCK
  16. {
  17.    USHORT    Unknown[2];
  18.    ULONGLONG SectorCount;
  19.    ULONGLONG MftLocation;
  20.    ULONGLONG MftMirrLocation;
  21.    CHAR      ClustersPerMftRecord;
  22.    UCHAR     Unused4[3];
  23.    CHAR      ClustersPerIndexRecord;
  24.    UCHAR     Unused5[3];
  25.    ULONGLONG SerialNumber;
  26.    UCHAR     Checksum[4];
  27. } EXTENDED_BIOS_PARAMETERS_BLOCK, *PEXTENDED_BIOS_PARAMETERS_BLOCK;
  28.  
  29. typedef struct _BOOT_SECTOR
  30. {
  31.    UCHAR     Jump[3];
  32.    UCHAR     OEMID[8];
  33.    BIOS_PARAMETERS_BLOCK BPB;
  34.    EXTENDED_BIOS_PARAMETERS_BLOCK EBPB;
  35.    UCHAR     BootStrap[426];
  36.    USHORT    EndSector;
  37. } BOOT_SECTOR, *PBOOT_SECTOR;
  38. #pragma pack(pop)
  39.  
  40. VOID GetFiles(LPSTR SzDrive)
  41. {
  42.    if(!SzDrive)
  43.        return;
  44.  
  45.    CHAR SzSymDrive[40] = "\\\\.\\";
  46.    HANDLE hDrive;
  47.    BYTE DriveContent[1024];
  48.    DWORD BytesRead;
  49.    PBOOT_SECTOR lpBootSector;
  50.    LARGE_INTEGER MFTLcl;
  51.  
  52.    strcat(SzSymDrive,SzDrive);
  53.    hDrive = CreateFileA(SzSymDrive,GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,
  54.                NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL);
  55.    if(hDrive == INVALID_HANDLE_VALUE)
  56.    {
  57.        return;
  58.    }
  59.  
  60.    if( (!ReadFile(hDrive,DriveContent,sizeof(DriveContent),&BytesRead,NULL)) ||
  61.        (BytesRead != sizeof(DriveContent))
  62.       )
  63.    {
  64.        goto clhandle;
  65.    }
  66.  
  67.    lpBootSector = (PBOOT_SECTOR)DriveContent;
  68.    MFTLcl.QuadPart = lpBootSector->BPB.BytesPerSector * lpBootSector->BPB.SectorsPerCluster * lpBootSector->EBPB.MftLocation;
  69.  
  70.    if(SetFilePointer(hDrive,MFTLcl.LowPart,&MFTLcl.HighPart,FILE_BEGIN) == INVALID_SET_FILE_POINTER)
  71.    {
  72.        goto clhandle;
  73.    }
  74.  
  75.    if( (!ReadFile(hDrive,DriveContent,sizeof(DriveContent),&BytesRead,NULL)) ||
  76.        (BytesRead != sizeof(DriveContent))
  77.        )
  78.    {
  79.        goto clhandle;
  80.    }
  81.  
  82.    // ...
  83.  
  84. clhandle:
  85.    CloseHandle(hDrive);
  86.  
  87. }
  88.  
-
llamar por ejemplo:
GetFiles("C:");
407  Foros Generales / Sugerencias y dudas sobre el Foro / Boton 'copiar'? en: 4 Febrero 2014, 05:00 am
Buenas, venia sugerir un boton 'copiar' para los códigos entre geshi asi es más facil para codigos que bastante lineas.
408  Programación / Programación C/C++ / Re: no funciona ReadFile y overlapped en: 4 Febrero 2014, 04:44 am
Bien hoy si esta más claro.
Nota la declaración de crbig y como lo uso.

Código:
#define zwpath L"\\\\.\\C:"
     
     
long endianhextodec(BYTE *buffers, int offs)
{     
    BYTE tmp[2] = {0};
    BYTE tmp2[1] = {0};
    BYTE tmp3[3] = {0};
    BYTE tmp4[1] = {0};
     
    if(offs == 11){
    tmp[0] = buffers[11];
    tmp[1] = buffers[12];
     
    return tmp[1] << 8;
     
    }
     
    if(offs == 13){
     
    tmp2[0] = buffers[13];
     
    return tmp2[0];
     
    }
     
    if(offs == 30){
     
    tmp3[0] = buffers[48];
    tmp3[1] = buffers[49];
    tmp3[2] = buffers[50];
     
    return tmp3[2] << 16;
    }else{return 0;}

}
     
int main(int argc, char *argv[]){
{
    HANDLE hDevice;
    OVERLAPPED overlapped;
    LARGE_INTEGER crbig;
    BYTE buff[1024] = {0};
    DWORD numerobyte = 0, nbytes = 0;
    UINT32 ret;
    DWORD *d1;
    int offset1 = 11, offset2 = 13, offset3 = 30;
    long MFTCluster = 0, bytespercluster = 0, sectperclusters = 0, offet = 0;
    unsigned long mult = 0;
     
    ZeroMemory(&overlapped ,sizeof(OVERLAPPED));
     
    hDevice = CreateFileW(zwpath, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING,  FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL);
     
    if(hDevice != INVALID_HANDLE_VALUE){
     
    ret = ReadFile(hDevice, buff, 1024, &numerobyte, &overlapped);
     
    }else
    {
    return NULL;
    }
     
    if(ret == 0){
     
     
    ret = WaitForSingleObject(hDevice,INFINITE );
     
    switch (ret)
    {
    case WAIT_OBJECT_0:break;
    case WAIT_TIMEOUT:break;
    default:
    break;
    }
    }
    else
    {
    return NULL;
    }
     
     
    if((int)buff[3] == 'N' && (int)buff[4] == 'T' && (int)buff[5] == 'F' && (int)buff[6] == 'S' ){
    printf("Volumen es formato NTFS\n\n\n");
    }
     
    bytespercluster = endianhextodec(buff, offset1);
    sectperclusters = endianhextodec(buff, offset2);
    MFTCluster = endianhextodec(buff, offset3);
     
    printf("Bytes por clusters = %d\nsectores por clusters = %d\nMFTClusters = %ld\n\n", bytespercluster, sectperclusters, MFTCluster);
     

    RtlZeroMemory(&overlapped ,sizeof(OVERLAPPED));
    crbig.QuadPart = (sectperclusters * (bytespercluster * MFTCluster));
    overlapped.Offset = crbig.LowPart;
    overlapped.OffsetHigh = crbig.HighPart;
     
    ret = ReadFile(hDevice, buff, 1024, &numerobyte, &overlapped);
     
    if(ret == 0){

     
    ret = WaitForSingleObject(hDevice,INFINITE );
     
    switch (ret)
    {
    case WAIT_OBJECT_0:break;
    default:
    break;
    }
    }
    else
    {
    return NULL;
    }
     
    for (int n=0; n<sizeof(buff); n++) 
       { 
           printf("0x%02X ", buff[n]); 
       }
     
    CloseHandle(hDevice);
     
    getchar();
}



por cierto, yo no sé porqué estos tios usaron lectura asincronica, no sé si la aplicación es de multihilos de todos modos se puede
usar SetFilePointer en lugar de FILE_FLAG_OVERLAPPED y WaitForSingleObject lo veo totalmente inutil, quizas no conocian SetFilePointer...
409  Programación / Programación C/C++ / Re: Que estoy haciendo mal arreglo? (Solucionado) en: 4 Febrero 2014, 04:24 am
ningun extern en realidad, note que todo estaba encapsulado así que mejor decidi agregar las variables a la clase
y que sean disponibles para todas las funciones de esa clase, inicializarlas en el contructor ,el array asignarle memoria al
momento de usarlo ( recorda liberarlo ) aunque hubiera sido bueno incializarlo en el contructor así en el destructor se libera la memoria
eso depende de como diseñes tu programa.
410  Programación / Programación C/C++ / Re: Que estoy haciendo mal arreglo? en: 4 Febrero 2014, 03:58 am
cpp
Código:

#include "cpp1.h"
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
     

Camion::Camion (int idCam, int cilindrajeCam, int puertasCam, int anioCam,
                double precioCam, string marcaCam, string modeloCam,
                string colorCam)
                {
                    idCamion = idCam;
                    cilindrajeCamion = cilindrajeCam;
                    nPuertasCamion = puertasCam;
                    anioCamion = anioCam;
                    precioCamion = precioCam;
                    marcaCamion = marcaCam;
                    modeloCamion = modeloCam;
                    colorCamion = colorCam;

                    Maximo =100;
                    cantidadDeCamiones = 0;
                }
//Funciones set
void Camion::setIdCamion(int idCam)
{
    idCamion = idCam;
}
     
void Camion::setCilindrajeCamion(int cilindrajeCam)
{
    cilindrajeCamion = cilindrajeCam;
}
     
void Camion::setNPuertasCamion(int puertasCam)
{
    nPuertasCamion = puertasCam;
}
     
void Camion::setanioCamion(int anioCam)
{
    anioCamion = anioCam;
}
     
void Camion::setPrecioCamion(double precioCam)
{
    precioCamion = precioCam;
}
     
void Camion::setMarcaCamion(string marcaCam)
{
    marcaCamion = marcaCam;
}
     
void Camion::setModeloCamion(string modeloCam)
{
    modeloCamion = modeloCam;
}
     
void Camion::setColorCamion(string colorCam)
{
    colorCamion = colorCam;
}
     
//Funciones get
int Camion::getIdCamion() const
{
    return idCamion;
}
     
int Camion::getCilindrajeCamion() const
{
    return cilindrajeCamion;
}
     
int Camion::getnPuertasCamion() const
{
    return nPuertasCamion;
}
     
int Camion::getanioCamion()const
{
    return anioCamion;
}
     
double Camion::getPrecioCamion() const
{
        return precioCamion;
}
     
string Camion::getMarcaCamion() const
{
        return marcaCamion;
}
     
string Camion::getModeloCamion() const
{
        return modeloCamion;
}
     
string Camion::getColorCamion() const
{
        return colorCamion;
}
     
void Camion::ingresarCamion()
{
    listaDeCamiones = new Camion*[Maximo];// arreglo de 100
    if (cantidadDeCamiones < Maximo)
    {
     
    system("cls");
    cout << "Ingrese los datos del camion\n";
    cout << "Ingrese el ID del camion: ";
    cin  >> idCamion;
     
    cout << "Ingrese la Marca del Camion: ";
    cin  >> marcaCamion;
     
    cout << "Ingrese el Modelo del camion: ";
    cin  >> modeloCamion;
     
    cout << "Ingrese el año del Camion: ";
    cin  >> anioCamion;
     
    cout << "Ingrese el cilindraje del camion: ";
    cin  >> cilindrajeCamion;
     
    cout << "Ingrese el numero de puertas: ";
    cin  >>  nPuertasCamion;
     
    cout << "Ingrese el color del camion: ";
    cin  >> colorCamion;
     
    cout << "Ingrese el presio del camion: ";
    cin  >> precioCamion;
     
    listaDeCamiones[cantidadDeCamiones] = new Camion(idCamion, cilindrajeCamion,
                                                        nPuertasCamion, anioCamion,
                                                        precioCamion, marcaCamion,
                                                        modeloCamion,colorCamion);
    cantidadDeCamiones++;
     
    cout << "Los datos del camion fueron ingresados correctamente\n\n";
    }
    else
    {
        system("cls");
        cout << "Ya no hay espacio disponible para mas camiones\n\n";
    }
}
     
void Camion::flistaDeCamiones()
{
    if (cantidadDeCamiones==0)
    {
        system("cls");
        cout<<"No se a registrado ninguna Camion todavía"<<endl;
        }
        else
        {
            cout<<"..:::Lista de Camiones:::.."<<endl<<endl;
            cout << setw(10)<<"Id Camion"<<setw(15)<<"Modelo"<<setw(15)<<"marca"<<endl;
            cout<<"================================================="<<endl;
     
            //Imprimmir todas las personas almacenadas en el arreglo de personas
            for (int i=0; i<cantidadDeCamiones;i++)
            {
                listaDeCamiones[i]->imprmir();
            }
            cout<<endl<<"*******Fin de la lista **********"<<endl<<endl;
            }
}

void Camion::imprmir()
{
        cout<<setw(10)<<idCamion<<setw(15)<<modeloCamion<<setw(15)<<marcaCamion<<endl;
}

h:
Código:
#ifndef CAMION_H
#define CAMION_H
#include <iostream>
using namespace std;


// Variables globales
class Camion
{
    private:
    int idCamion;
    int cilindrajeCamion;
    int nPuertasCamion;
    int anioCamion;
    double precioCamion;
    string marcaCamion, modeloCamion, colorCamion;
     
    public:
    Camion(int =0, int=0, int=0, int=0, double = 0.0, string = "", string = "", string = "");
     
    void setIdCamion(int);
    void setCilindrajeCamion(int);
    void setNPuertasCamion(int);
    void setanioCamion(int);
    void setPrecioCamion(double);
    void setMarcaCamion(string);
    void setModeloCamion(string);
    void setColorCamion(string);
     
    int getIdCamion() const;
    int getCilindrajeCamion() const;
    int getnPuertasCamion() const;
    int getanioCamion() const;
    string getMarcaCamion() const;
    string getModeloCamion() const;
    string getColorCamion() const;
    double getPrecioCamion() const;
     
    //Otros Metodos
    void ingresarCamion();
    void flistaDeCamiones();
    void imprmir();


private:
    Camion**listaDeCamiones;
    int Maximo;
    int cantidadDeCamiones;
     
};
#endif
Páginas: 1 ... 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 54 55 56 ... 199
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines