@eduair94/ghunt
v2.3.3
Published
GHunt OSINT framework for Google account reconnaissance - TypeScript edition
Downloads
139
Maintainers
Readme
GHunt — TypeScript / npm edition
A TypeScript port of the GHunt OSINT framework for Google account reconnaissance.
Requires credentials obtained via the original Python GHunt CLI (shared session store).
Installation
npm install @eduair94/ghuntNode.js ≥ 18 required.
Prerequisites — Authenticate first
This package shares the same credential store as the Python GHunt CLI.
You must authenticate once using the Python app before using this package:
pip install ghunt
ghunt loginCredentials are stored at ~/.malfrats/ghunt/accounts/ and are picked up automatically.
Programmatic usage
ghuntEmail(email, opts?)
Look up a Google account by email. Returns the same JSON structure as ghunt email <addr> --json.
import { ghuntEmail } from '@eduair94/ghunt';
const result = await ghuntEmail('[email protected]');
const profile = result.PROFILE_CONTAINER.profile;
console.log(profile.personId);
console.log(profile.emails.PROFILE.value);
console.log(profile.profileInfos.PROFILE.userTypes);
console.log(profile.inAppReachability.PROFILE.apps);Return shape
{
PROFILE_CONTAINER: {
profile: {
personId: string;
sourceIds: { PROFILE: { lastUpdated: string | null } };
emails: { PROFILE: { value: string } };
names: Record<string, { fullname: string; firstName: string; lastName: string }>;
profileInfos: { PROFILE: { userTypes: string[] } };
profilePhotos: { PROFILE: { url: string; isDefault: boolean; flathash: null } };
coverPhotos: { PROFILE: { url: string; isDefault: boolean; flathash: null } };
inAppReachability: { PROFILE: { apps: string[] } };
extendedData: {
dynamiteData: { presence: string; entityType: string; dndState: string; customerId: string };
gplusData: { contentRestriction: string; isEntrepriseUser: boolean };
};
};
play_games: null;
maps: { photos: []; reviews: []; stats: {}; failed: string; extracted_reviews: [] };
calendar: null;
}
}Options
await ghuntEmail('[email protected]', {
// Provide a pre-loaded GHuntCreds instance (skip auto-discovery)
creds?: GHuntCreds;
// Override the Python accounts directory (default: ~/.malfrats/ghunt/accounts/)
accountsDir?: string;
// Override the legacy Python creds.m path (default: ~/.malfrats/ghunt/creds.m)
pythonCredsPath?: string;
// Override the JSON creds path (default: ghunt_creds.json in cwd)
jsonCredsPath?: string;
});HTTP server
You can also run the built-in Express server which exposes the same data as a REST endpoint:
npx ghunt-server
# or
npm run start # after buildingGET http://127.0.0.1:6032/[email protected]
GET http://127.0.0.1:6032/healthCredential loading order
The package tries credential sources in this order (same as the Python CLI):
| Priority | Location | Format |
|---|---|---|
| 1st | ~/.malfrats/ghunt/accounts/{active}.creds | Python multi-account store |
| 2nd | ~/.malfrats/ghunt/creds.m | Python legacy session |
| 3rd | ./ghunt_creds.json | JSON (TypeScript-only fallback) |
TypeScript types
All public types are exported from the package root:
import type {
GHuntEmailResult,
GHuntEmailOptions,
GHuntMapsData,
NormalizedPerson,
GHuntCreds,
} from '@eduair94/ghunt';License
AGPL-3.0 — see LICENSE.md.
Original Python GHunt by @mxrch.
