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:

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:

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. 1667

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

hidden data

lsb

lv

lv

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 ;)


Author: AarNoma

The first Slovak cyborg 1 system

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:”