Click here to Skip to main content
15,896,730 members
Articles / Programming Languages / C

Domain authentication based on-the-fly encryption/decryption system for USB storage devices

Rate me:
Please Sign up or sign in to vote.
4.22/5 (7 votes)
27 Feb 2008CPOL8 min read 49.4K   2.5K   50  
Encrypts/Decrypts files on a USB within a domain,on the fly.
#define FILE_DEVICE_EDDrv	0x00008300


#define EDDrvVERSION    400


#define EDDrv_setdrives   (ULONG) CTL_CODE( FILE_DEVICE_EDDrv, 0x00, METHOD_BUFFERED, FILE_ANY_ACCESS )
#define EDDrv_zerostats   (ULONG) CTL_CODE( FILE_DEVICE_EDDrv, 0x01, METHOD_BUFFERED, FILE_ANY_ACCESS )
#define EDDrv_getstats    (ULONG) CTL_CODE( FILE_DEVICE_EDDrv, 0x02, METHOD_NEITHER, FILE_ANY_ACCESS )
#define EDDrv_unloadquery (ULONG) CTL_CODE( FILE_DEVICE_EDDrv, 0x03, METHOD_NEITHER, FILE_ANY_ACCESS )
#define EDDrv_stopfilter  (ULONG) CTL_CODE( FILE_DEVICE_EDDrv, 0x04, METHOD_BUFFERED, FILE_ANY_ACCESS )
#define EDDrv_startfilter (ULONG) CTL_CODE( FILE_DEVICE_EDDrv, 0x05, METHOD_BUFFERED, FILE_ANY_ACCESS )
#define EDDrv_setfilter   (ULONG) CTL_CODE( FILE_DEVICE_EDDrv, 0x06, METHOD_BUFFERED, FILE_ANY_ACCESS )
#define EDDrv_timetype    (ULONG) CTL_CODE( FILE_DEVICE_EDDrv, 0x07, METHOD_BUFFERED, FILE_ANY_ACCESS )
#define EDDrv_version     (ULONG) CTL_CODE( FILE_DEVICE_EDDrv, 0x08, METHOD_BUFFERED, FILE_ANY_ACCESS )
#define EDDrv_hookspecial (ULONG) CTL_CODE( FILE_DEVICE_EDDrv, 0x09, METHOD_BUFFERED, FILE_ANY_ACCESS )
#define EDDrv_unhookspecial (ULONG) CTL_CODE( FILE_DEVICE_EDDrv, 0x10, METHOD_BUFFERED, FILE_ANY_ACCESS ) 
#define EDDrv_uservalid (ULONG)CTL_CODE(FILE_DEVICE_EDDrv, 0x11, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define EDDrv_userinvalid (ULONG)CTL_CODE(FILE_DEVICE_EDDrv, 0x12, METHOD_BUFFERED, FILE_ANY_ACCESS)


#pragma pack(1)
typedef struct {
	ULONG	          seq;
    LARGE_INTEGER     time;
	char	          text[0];
} ENTRY, *PENTRY;
#pragma pack()

#define MAXFILTERLEN 256


typedef struct {
    char     processfilter[MAXFILTERLEN];
	char     excludeprocess[MAXFILTERLEN];
    char     pathfilter[MAXFILTERLEN];
    char     excludefilter[MAXFILTERLEN];
    BOOLEAN  logreads;
    BOOLEAN  logwrites;
} FILTER, *PFILTER;


typedef enum {
    STANDARD,
    NPFS,
    MSFS
} FILE_SYSTEM_TYPE, *PFILE_SYSTEM_TYPE;



#ifndef PAGE_SIZE
#if defined(_ALPHA_)
#define PAGE_SIZE 0x2000  
#else
#define PAGE_SIZE 0x1000  
#endif
#endif


#define MAX_STORE       ((ULONG)(64*0x1000-(2*sizeof(ULONG)+1)))


By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior) NEC HCL System Technologies Ltd, India
India India
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions