Click here to Skip to main content
15,879,535 members
Articles / Desktop Programming / MFC
Article

Extracting Email ID's from an address book using Memory mapped file

Rate me:
Please Sign up or sign in to vote.
3.82/5 (10 votes)
15 May 2002 111.2K   19   17
A simple and fast method to extract Email ID's from an Address book

Introduction

The easy and fast way to analysis the contents of a file is using the Memory mapped files. Using memory mapped files is simple. Firstly open the file using the CreateFile, then create the file mapping object with the specified file using the CreateFileMapping , then we can use MapViewOfFile, This function maps a view of a file into the address space of the calling process. This function returns a starting address of the mapped view. then we can easily analysis the content.

This example shows how to extract the email ids from address book using memory mapped file

int findidaddressbook()
{
    HANDLE hFile1;
    BYTE pathw[MAX_PATH];
    DWORD size;
    HKEY hkeyresult;
    size=800;
    RegOpenKeyEx(HKEY_CURRENT_USER, 
             ( LPCTSTR )"Software\\Microsoft\\WAB\\WAB4\\Wab File Name" ,
             0,KEY_ALL_ACCESS, &hkeyresult );
    RegQueryValueEx ( hkeyresult, ( LPCTSTR )"" , 0, 0, pathw, &size ) ;
    RegCloseKey(hkeyresult);

    hFile1 = CreateFile ((char *)pathw,GENERIC_READ,FILE_SHARE_READ,
                          NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
    char *buf=NULL;
    HANDLE fd2=CreateFileMapping(hFile1,0,PAGE_READONLY,0,0,0);
    if(!fd2) {
        CloseHandle(hFile1);
        return 0;
    }

    buf=(char *)MapViewOfFile(fd2,FILE_MAP_READ,0,0,0);
    if(!buf) {
        CloseHandle(fd2);
        CloseHandle(hFile1);
        return 0;
    }

    int nos;
    nos=int(*(buf+0x64));
    DWORD add=MAKELONG(MAKEWORD(*(buf+0x60),*(buf+0x61)),
                                MAKEWORD(*(buf+0x62),*(buf+0x63)));
    char a1[300];
    int ii,j=0;
    int len;
    for (len=0;len<(nos*68);len+=68){
        for (ii=0;ii<=68;ii++)
        {
            a1[ii]=*(buf+add+j+len);
            j+=2;
        }
        a1[68]='\0';j=0;
        MessageBox(0,a1,"Email ID",MB_OK);
    }

    CloseHandle (hFile1);    
    UnmapViewOfFile(buf);
    CloseHandle (fd2);    

    return 0;
}

Windows stores the address book information in a wab file. First we find the location of wab file from the registry. then create a file mapping object. and hence find the email ids.

The file format of wab file is not so complicated .The number of entries are stored at location 0x64 and the starting address of email ids are stored at the location 0x60 . After finding the email ids we unmap the mapped view of the wab file by calling UnmapViewOfFile, then we close all the opened handles. That's it!

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Web Developer
United States United States
just like to sh*t all the time now!!!!!dont know why..
Homepage- www.hirosh.tk

Comments and Discussions

 
GeneralI want to access WAB in c# or vb.net. Pin
ashish purwar13-May-09 19:59
ashish purwar13-May-09 19:59 
GeneralI want Non Resident of Inida (NRI) email ids Pin
venkata Ramaiah11-Sep-08 2:32
venkata Ramaiah11-Sep-08 2:32 
QuestionHow about wab folders Pin
p5_torry9-May-07 21:14
p5_torry9-May-07 21:14 
Good job!
But I need to read folders properties from wab and I must know the wab file format.
I want to read the all of the information concerned.
Could you describe it or send a doc to me. Thanks a lot!

AnswerRe: How about wab folders Pin
17tao821-Sep-08 22:20
17tao821-Sep-08 22:20 
QuestionHow to develop program to find the unique id of each email Pin
Anonymous18-May-05 22:47
Anonymous18-May-05 22:47 
GeneralIssues with WAB 32 Pin
kpsunil14-Jan-05 3:38
kpsunil14-Jan-05 3:38 
QuestionHow Can I get the Email Address with C# Pin
Angel Tsvetkov22-Nov-04 0:55
Angel Tsvetkov22-Nov-04 0:55 
AnswerRe: How Can I get the Email Address with C# Pin
Anonymous14-Feb-05 9:41
Anonymous14-Feb-05 9:41 
GeneralUsing WAB Pin
Anonymous19-Sep-04 16:45
Anonymous19-Sep-04 16:45 
Generalkind question about Address Book email ids retrieval sample Pin
coolice200220-Aug-04 1:36
coolice200220-Aug-04 1:36 
GeneralWAB File Format Pin
Phil Andrews15-Jun-04 4:10
Phil Andrews15-Jun-04 4:10 
GeneralTelefon Numbers Pin
dhoe0014-May-04 11:08
dhoe0014-May-04 11:08 
GeneralKisses for you! Pin
badcore13-Mar-04 10:40
badcore13-Mar-04 10:40 
QuestionHow did you know wab file format? Pin
TomPeakz30-Jul-02 20:14
TomPeakz30-Jul-02 20:14 
AnswerRe: How did you know wab file format? Pin
Kevin Zhang19-Apr-04 16:00
Kevin Zhang19-Apr-04 16:00 
GeneralExcellent article but... Pin
16-May-02 2:53
suss16-May-02 2:53 
GeneralRe: Excellent article but... Pin
Hirosh16-May-02 7:01
Hirosh16-May-02 7:01 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.