Date: 2026-04-10
Analyst: nemesis
Classification: Trojan / Backdoor (Alien RAT variant)
Severity: CRITICAL
Campaign ID: CityOfSin (extracted from C2 callback UTM parameters)
Scope: CPUID official domain compromise affecting CPU-Z, HWMonitor, HWMonitor Pro, PerfMonitor 2, powerMAX + separately FileZilla
Status: Breach confirmed and fixed by CPUID; site was compromised ~6 hours on April 9-10, 2026
CPUID Statement: "A secondary feature (a side API) was compromised for approximately six hours [...] causing the main website to randomly display malicious links. Our signed original files were not compromised."
Hanging out in subtitling and video re-editing communities, I see my fair share of novice video editors and video encoders, and see plenty of them make the classic beginner mistakes when it comes to working with videos. A man can only read "Use Handbrake to convert your mkv to an mp4 :)" so many times before losing it, so I am writing this article to channel the resulting psychic damage into something productive.
If you are new to working with videos (or, let's face it, even if you aren't), please read through this guide to avoid making mistakes that can cost you lots of time, computing power, storage space, or video quality.
| # Linux recipe: | |
| # python3 -m venv proton-vpn-wireguard-downloader | |
| # pushd proton-vpn-wireguard-downloader | |
| # wget {{ zip url for this gist }} -O proton-vpn-wireguard-downloader.zip | |
| # wget "https://github.com/ProtonVPN/python-proton-core/archive/refs/tags/v0.2.0.zip" -O python-proton-core-0.2.0.zip | |
| # wget "https://github.com/ProtonVPN/python-proton-vpn-logger/archive/refs/tags/v0.2.1.zip" -O python-proton-vpn-logger.0.2.1.zip | |
| # wget "https://github.com/ProtonVPN/python-proton-vpn-api-core/archive/refs/tags/v0.32.2.zip" -O python-proton-vpn-api-core.0.32.2.zip | |
| # unzip -j proton-vpn-wireguard-downloader.zip | |
| # unzip python-proton-core-0.2.0.zip | |
| # unzip python-proton-vpn-logger.0.2.1.zip |
| from functools import partial | |
| from urllib.parse import ( | |
| quote, | |
| urlencode, | |
| ) | |
| from PyQt5.QtNetwork import QNetworkRequest | |
| from picard import config, log | |
| from picard.metadata import register_track_metadata_processor |
Contact Noelle for any concerns or questions with this gist
When looking for hosting your bot, free services and/or providers that claim to support hosting Discord Bots. Do not use them. Why? Let me explain.
Free hosts are providers who specialize in offering an free platform to host projects.
| @echo off | |
| setlocal | |
| rem Put this file under your destination folder | |
| rem and drag your file(s) onto this bat for hardlinking. | |
| rem Remember to check the path while prompt. | |
| rem This only works after Windwos 7(incl.) | |
| rem i.e. windows versions with fsutil included. | |
| SET DEST=%~dp0 |
| app_name | repo | electron_version | vulnerable | |
|---|---|---|---|---|
| 1Clipboard | https://github.com/wiziple/1clipboard | |||
| 1Password | None | 25.8.1 | FALSE | |
| 3CX Desktop App | 19.0.8 | TRUE | ||
| 5EClient | None | |||
| Abstract | None | |||
| Account Surfer | None | |||
| Advanced REST Client | https://github.com/advanced-rest-client/arc-electron | ^17.0.0 | TRUE | |
| Aedron Shrine | None | |||
| Aeon | https://github.com/leinelissen/aeon | 23.2.0 | TRUE |
| import numpy as np | |
| from PIL import Image | |
| IMG_PATH = "./assets/water.jpeg" | |
| def quantise(pixelList, width, height): | |
| pixels = np.array([(q(r), q(g), q(b)) for r, g, b in pixelList], dtype=np.uint8) | |
| return pixels.reshape([height, width, 3]) |
I frequently see discussions around which password manager to use. I personally use [KeePass][main]. This is an open source program that allows you to have control in your data. The database format is encrypted so as long as you keep your master password secure, the chance of someone getting access to your passwords is practically zero.
This document is just meant as a signpost to steer you in the right direction of how to set up KeePass across multiple operating systems and have your file synced in the cloud all while paying $0 and not having to set up a single server to do so.
You can skip this if you don't care
| <# | |
| Save to: Create-Kavita-Structure.ps1 | |
| and run it with: .\Create-Kavita-Structure.ps1 -sourceDir 'DriveLetter:\PathToBooks' -kavitaDir 'DriveLetter:\PathToKavitaWatchedDir" | |
| If sourceDir is not specified, assumes current directory (.) | |
| If kavitaDir is not specified, assumes @Kavita under the current directory (.\@Kavita) | |
| To test this without making any changes: Create-Kavita-Structure.ps1 -whatIf | |
| #> | |
| [CmdletBinding(SupportsShouldProcess = $true)] | |
| Param( |