Okay, pre záchranu obete psychopata, musíme prejsť jeden blok bytov okolo 1667, tam čakáme ďalší útok Obrázkára, ako ho na oddelení polície voláme.

https://hrubos.tech/blogy/content/images/20260628154757-1667.png




Náš kód je samozrejme po rozhovore s GPT gpl3, len sa musíš správne opýtať, to je všetko:
using Pkg
Pkg.add([
"Images",
"ImageIO",
"ImageFiltering",
"ImageMorphology",
"Statistics",
"Plots"
])
using Images
using ImageIO
using Statistics
using ImageFiltering
using ImageMorphology
using Plots
# -----------------------------------------
# Načítanie obrázka
# -----------------------------------------
img = load("whaat_num.jpeg")
h, w = size(img)
# RGB hodnoty 0-255
R = round.(UInt8, 255 .* channelview(img)[1, :, :])
G = round.(UInt8, 255 .* channelview(img)[2, :, :])
B = round.(UInt8, 255 .* channelview(img)[3, :, :])
# -----------------------------------------
# LSB
# -----------------------------------------
lsbR = R .& 0x01
lsbG = G .& 0x01
lsbB = B .& 0x01
println("LSB priemer")
println("R = ", mean(Float64.(lsbR)))
println("G = ", mean(Float64.(lsbG)))
println("B = ", mean(Float64.(lsbB)))
# -----------------------------------------
# Mapa zmien
# -----------------------------------------
diffMap = Float64.(lsbR) .+
Float64.(lsbG) .+
Float64.(lsbB)
heatmap(
diffMap,
color=:grays,
title="LSB Difference Map",
aspect_ratio=:equal,
axis=nothing
)
savefig("lsb_map1_stegano.png")
# -----------------------------------------
# Lokálna variancia
# -----------------------------------------
kernel = ones(5,5)./25
localMean = imfilter(diffMap, kernel)
variance = (diffMap .- localMean).^2
variance = imfilter(variance, kernel)
heatmap(
variance,
color=:inferno,
title="Local Variance",
aspect_ratio=:equal,
axis=nothing
)
savefig("variance.png")
# -----------------------------------------
# Binary mask
# -----------------------------------------
threshold = mean(variance) + std(variance)
mask = variance .> threshold
heatmap(
mask,
color=:grays,
title="Possible Hidden Data",
aspect_ratio=:equal,
axis=nothing
)
savefig("mask1_stegano.png")
println()
println("Percent suspicious pixels = ",
100*sum(mask)/length(mask),
"%")
Hej, nó, oni mi chceli heknúť BLOG buffer overflow, ale ja som na obrázku spravil toto: Dynamicky som len spočítal dĺžku pixelov poľa á rozvinul statické makro podľa konštanty ;)

Comments “Príbeh: Okay, ako forenzné u polície hľadáme psychopata, ktorý vraždí. Pri poslednej obeti nám povedal, že číslo bytu bude ako toto na obrázku. Zachránia naši hekri budúcu obeť psychopata? Musíme rozlúštiť číslo:”