Skip to content

Examples

This page contains detailed usage examples that include sample input CSVs, command line arguments, and what to expect once the remediation is running.

Two Yahoo mailboxes accessed over IMAP using modern authentication (OAuth).

What You Need

  • An app registered in the Yahoo developer portal with read/write access to Mail. Its client ID goes on the command line, and its client secret is prompted for.
  • Credentials for the target Yahoo accounts. Since the remediation is using modern authentication, an App Password is not needed.

Input CSV (fluxcap.csv)

IMAP uses the folder name to address a message. Therefore, each CSV line must contain folder information.

ServiceId,Folder,TargetEmail
CRDYQIAAE9h,Inbox,[email protected]
DhbJ2MAAD0r,Sent,[email protected]
BXPuqYAAQG0,Archive,[email protected]
CRDYQIAAQ67,Inbox,[email protected]
DlGwukAARu1,Inbox,[email protected]

Command

Terminal window
.\Obliterator.exe start -p outatime.obproj `
--provider Imap --auth-mode Interactive --imap-oauth-provider yahoo `
--client-id <client-id> -i fluxcap.csv

Workflow

  1. Obliterator asks for the client secret.
  2. For each account in turn, it opens Yahoo’s consent page in the browser. Yahoo shows an authorization code on its own page, and you type it in when Obliterator asks.
  3. After both accounts are authenticated, the summary is shown and your confirmation is required to start remediation.

The server, export.imap.mail.yahoo.com, comes from the preset, so --imap-host is not needed.

Microsoft Personal Account with Modern Authentication

Section titled “Microsoft Personal Account with Modern Authentication”

An Outlook.com mailbox, remediated through Microsoft Graph. The same applies to Hotmail, Live and MSN, and to a personal Microsoft account on any other domain.

What You Need

  • An Azure app registration whose Supported account types is Any Entra ID Tenant + Personal Microsoft accounts. Organizational-only registrations refuse a personal account at the sign-in page.
  • A Mobile and desktop applications redirect URI of http://localhost, and the delegated Mail.ReadWrite permission (IMAP.AccessAsUser.All when using IMAP). See App Registration.
  • Credentials to the target mailbox.

A personal account remediation via Graph API requires no tenant ID or client secret.

Input CSV (daisy.csv)

ServiceId,TargetEmail
AQMkADAwATM0MDAAMi1kNjk4LTgwNzgtAAAD7xOB9gAAAA==,[email protected]
AQMkADAwATM0MDAAMi1kNjk4LTgwNzgtAAAD7xOB9gAAAQ==,[email protected]
AQMkADAwATM0MDAAMi1kNjk4LTgwNzgtAAAD7xOB9gAAAg==,[email protected]

Command

Terminal window
.\Obliterator.exe start -p discovery.obproj `
--provider GraphMail --auth-mode Interactive --client-id <client-id> `
-i daisy.csv

Workflow

The browser opens Microsoft’s sign-in page with the custodian’s email address prepopulated. Obliterator checks the authenticated identity and refuses remediation if it does not match the TargetEmail.

Three mailboxes in an M365 tenant, remediated using App-only Authentication. This is a common choice for enterprise remediation scenarios where multiple custodians are targeted.

What You Need

  • An Azure app registration in the custodians’ tenant with the application permission Mail.ReadWrite, granted admin consent.
  • A client secret or a certificate for that registration.
  • The tenant ID.

See App Registration.

Input CSV (crew-expendable.csv)

With App-only Authentication, TargetEmail can be any email address of the mailbox.

ServiceId,TargetEmail
AAMkADk3ZTQ1NjE4LTc3YjMtNDI2Mi05MzdlAAA=,[email protected]
AAMkADk3ZTQ1NjE4LTc3YjMtNDI2Mi05MzdlAAE=,[email protected]
AAMkADk3ZTQ1NjE4LTc3YjMtNDI2Mi05MzdlAAI=,[email protected]
AAMkADk3ZTQ1NjE4LTc3YjMtNDI2Mi05MzdlAAM=,[email protected]

Command

The client secret is prompted for.

Terminal window
.\Obliterator.exe start -p order-937.obproj `
--provider GraphMail --auth-mode AppOnlySecret --client-id <client-id> `
--tenant-id <tenant-id> -i crew-expendable.csv

Workflow

Since App-only Authentication uses the same set of credentials for multiple mailboxes, identity check does not apply.

Google Workspace with Domain-Wide Delegation

Section titled “Google Workspace with Domain-Wide Delegation”

Multiple accounts in a Google Workspace tenant remediated using domain-wide delegation of authority. As with M365 App-only Authentication, one set of credentials accesses all target accounts.

What You Need

  • A Google service account with a JSON key, in a Google Cloud project with the Gmail API enabled.
  • Domain-wide delegation granted to that service account in the Google Admin console, under Security > Access and data control > API controls > Domain-wide delegation. Add its client ID with the scope https://mail.google.com/ (enable Drive API and add the https://www.googleapis.com/auth/drive scope if targeting Google Drive files).

See App Registration.

Input CSV (swingline.csv)

ServiceId,TargetEmail
18c3f1a2b4d5e6f7,[email protected]
18c3f1a2b4d5e6f8,[email protected]
18c3f1a2b4d5e6f9,[email protected]
18c3f1a2b4d5e6fa,[email protected]
18c3f1a2b4d5e6fb,[email protected]

Command

Terminal window
.\Obliterator.exe start -p cover-sheets.obproj --provider Gmail --auth-mode Dwd `
--dwd-json initech-dwd.json -i swingline.csv

Workflow

The JSON key is stored in the remediation project.

Files in two custodians’ Google Drives, remediated by authenticating interactively for each account. This can be a viable option when the target accounts are personal Google accounts or when a Google Workspace administrator does not allow the use of domain-wide delegation of authority.

What You Need

  • A Google Cloud OAuth client of type Desktop app, in a project with the Google Drive API enabled and the consent screen in Testing. Its client ID is supplied as a command line argument and its client secret is prompted for. See App Registration.
  • Credentials for the target accounts.

Input CSV (chamber19.csv)

ServiceId,TargetEmail
1kR7vQm2XbT9pLw4ZcN8yHd3JfG6sAe0U,[email protected]
1Qw8eRt5yUi2oPa7sDf4gHj9kLz3xCv6B,[email protected]
1Mn5bVc8xZa2sDq7wEr4tYu9iOp3lKj6H,[email protected]

Command

Terminal window
.\Obliterator.exe start -p black-forest.obproj `
--provider GoogleDrive --auth-mode Interactive --client-id <client-id> `
-i chamber19.csv

Workflow

  1. Obliterator asks for the client secret.
  2. For each account, the browser opens Google’s consent page for that target address for authentication.
  3. Obliterator confirms with Google Drive that the account that authenticated is the one the CSV names, and skips an account that does not match.
  4. The summary is shown and you confirm the permanent deletion.

Files are deleted permanently, bypassing Drive’s trash.

Basic authentication against an IMAP server, with every message’s SHA-256 hash compared with the one recorded during acquisition before the message is deleted. A message that does not match is left in place. Each account’s password is prompted for unless it is supplied by the input CSV’s Password column.

bypass.csv:

ServiceId,Folder,Mime Hash [SHA256],TargetEmail
CRDYQIAAE9h,INBOX,92D7B8C6689FC32DE6DF7869BCC246CFABF5C8331346B97BCFA61EB43A80EE68,[email protected]
DhbJ2MAAD0r,INBOX/Bypass,5F31E15920D4B59BF8F4B54DE8BD8EAA713E0721A9E684E693A9D99B64736948,[email protected]
Terminal window
.\Obliterator.exe start -p mostly-harmless.obproj --provider Imap --auth-mode Basic `
--imap-host imap.megadodo.example --verify-hashes `
-i bypass.csv