Hacker wipes Romania's land registry database

speckx1 pts0 comments

Hacker wipes Romania's entire land registry database

Sign in<br>Subscribe

This newsletter is brought to you by Thinkst , the makers of the much-loved Thinkst Canary . You can subscribe to an audio version of this newsletter as a podcast by searching for "Risky Business" in your podcatcher or subscribing via this RSS feed . You can also add the Risky Business newsletter as a Preferred Source to your Google search results by going here .

Risky Business Player

@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap");

body {<br>margin: 0px;

.audio-player {<br>font-family: "Inter", sans-serif;

.icon {<br>background-image: url("https://risky.biz/static/img/icons/subscribe-icons.svg");<br>display: block;<br>width: 33px;<br>height: 33px;<br>background-size: 528px 111px;

Your browser does not support the audio element.

Risky Bulletin: Hacker wipes Romania's entire land registry database

&#9654;

0:00 /

9:03

Subscribe &nbsp;

document.addEventListener("DOMContentLoaded", function () {<br>const players = document.querySelectorAll(".audio-player");

function resizeElements(player) {<br>const logo = player.querySelector(".logo");<br>const subscribeIcons = player.querySelectorAll(".icon");<br>const subscribeContainer = player.querySelector(".subContainer"); // Select subContainer by class<br>const subText = player.querySelector(".subText"); // Select subText by class

if (player.offsetWidth {<br>icon.style.transform = "scale(0.7)";<br>icon.style.transformOrigin = "center";<br>icon.style.verticalAlign = "middle";<br>});

// Remove padding from subText and set font-size to 12px<br>if (subText) {<br>subText.style.padding = "0";<br>subText.style.fontSize = "12px";

// Set gap in subContainer to 0px<br>if (subscribeContainer) {<br>subscribeContainer.style.gap = "0px";<br>} else {<br>// Reset scaling, alignment, and visibility<br>if (logo) {<br>logo.style.display = "block";<br>logo.style.transform = "scale(1)";<br>logo.style.verticalAlign = "baseline";<br>subscribeIcons.forEach(icon => {<br>icon.style.transform = "scale(1)";<br>icon.style.verticalAlign = "baseline";<br>});

// Reset padding and font-size in subText<br>if (subText) {<br>subText.style.padding = "0 20px"; // Default padding<br>subText.style.fontSize = "inherit"; // Default font-size

// Reset gap in subContainer<br>if (subscribeContainer) {<br>subscribeContainer.style.gap = "6px"; // Default gap

function handleResize() {<br>players.forEach(player => {<br>resizeElements(player);<br>});

// Run on initial load and resize<br>handleResize();<br>window.addEventListener("resize", handleResize);<br>});

// Custom Audio Player<br>document.addEventListener("DOMContentLoaded", function () {<br>const players = document.querySelectorAll(".audio-player");

players.forEach(function (player) {<br>// Skip if already initialized<br>if (player.dataset.initialized === "true") return;

// Mark player as initialized<br>player.dataset.initialized = "true";

const audio = player.querySelector(".audioElement");<br>const playPauseBtn = player.querySelector(".playPauseBtn");<br>const progressBar = player.querySelector(".progressBar");<br>const currentTimeEl = player.querySelector(".currentTime");<br>const durationEl = player.querySelector(".duration");

if (!audio || !playPauseBtn || !progressBar || !currentTimeEl || !durationEl) {<br>console.error("One or more player elements not found:", { audio, playPauseBtn, progressBar, currentTimeEl, durationEl });<br>return;

playPauseBtn.addEventListener("click", () => {<br>if (audio.paused) {<br>audio.play();<br>playPauseBtn.textContent = "⏸";

// GA4 event for starting audio<br>gtag("event", "audio_play", {<br>"content_title": "Risky Bulletin: Hacker wipes Romania's entire land registry database",<br>"content_type": "audio"<br>});<br>} else {<br>audio.pause();<br>playPauseBtn.textContent = "▶";<br>});

audio.addEventListener("timeupdate", () => {<br>if (audio.duration) {<br>progressBar.value = (audio.currentTime / audio.duration) * 100;<br>currentTimeEl.textContent = formatTime(audio.currentTime);<br>});

audio.addEventListener("loadedmetadata", () => {<br>durationEl.textContent = formatTime(audio.duration);<br>});

progressBar.addEventListener("input", () => {<br>if (audio.duration) {<br>audio.currentTime = (progressBar.value / 100) * audio.duration;<br>});

function formatTime(seconds) {<br>const minutes = Math.floor(seconds / 60);<br>const secs = Math.floor(seconds % 60);<br>return `${minutes}:${secs

'>

A hacker has breached Romania's cadastre agency and wiped the country's entire land registry database following a failed extortion attempt.<br>The hack has brought Romania's entire real-estate market to a standstill as official apps and websites have been offline for a week. Notaries can't record new transactions while citizens can't obtain proof of ownership or detailed land records.<br>Email servers at the National Agency for Cadastre and Real Estate Advertising (Agenția Națională de Cadastru și Publicitate Imobiliară, or ANCPI) were also down as part of the incident.<br>Sources told Risky Business that the hacker entered using valid credentials, mapped internal systems, and wiped systems and backups after failing to extort the...

audio player style const subtext icon

Related Articles