New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Novoročenka a vánoční soutěž #7

Closed
jechtom opened this Issue Dec 23, 2018 · 3 comments

Comments

3 participants
@jechtom
Copy link

jechtom commented Dec 23, 2018

Against_stupidity_even_the_gods_themselves_contend_in_vain.
Čerňoučký kůň vymýšlí ďábelské nápady.
The_difference_between_science_and_the_fuzzy_subjects_is_that_science_requires_reasoning,_while_the_other_subjects_require_scholarship.

@jakubboucek

This comment has been minimized.

Copy link

jakubboucek commented Dec 23, 2018

Néééé, tři hodiny se s tím lámu... a ty @jechtom mi v cílové rovince zkazíš prvenství! :-D

@ridercz

This comment has been minimized.

Copy link
Owner

ridercz commented Dec 23, 2018

Máš samozřejmě pravdu. Nechceš někde zveřejnit kód, kterým jsi to prolomil, abych na něj mohl odkázat?

@ridercz ridercz closed this Dec 23, 2018

@jechtom

This comment has been minimized.

Copy link

jechtom commented Dec 23, 2018

@ridercz :

Postup

  1. Podle nedokončeného posledního řádku jsem předpokládal, že se jedná o sekvenci left-right, top-bottom

  2. Statistickou analýzou (zatím na papír) jsem po řadě pokusů seznal, že data mají nerovnoměrnou distribuci prázdných a plných polí na pozicích i % 8

  3. Podle předchozího zjištění jsem zkusil dekódovat opakující se kombinace 8mi znaků a vždy jsem našel písmena z ASCII tabulky.

  4. Stále mi neseděl počet bitů ve správě (nebyl len % 8 == 0). Proto jsem zkusil odříznout první 2 bity. Získal jsem zprávu pomocí Powershellu a použil tool binary to ASCII text converter

  5. U poslední zprávy (červený obrázek) jsem v malování našel pomocí nástroje "Vyplnit barvou" seskupení jiné barvy v levém horním rohu - překonfiguroval jsem podle toho hodnoty scriptu

  6. Od začátku mi bylo divné, že zatím všechny nápovědy se jeví jako platné. Proto jsem se jal ověření té poslední - hashe zpráv. U toho jsem neviděl důvod si vymýšlet. Po výpočtu jsem tuto nápovědu identifikoval jako velmi šibalskou. Hash je totiž správný, ale pozpátku. Nápověda je tedy užitečná, ale nikoliv pravdivá. To mimochodem ztíží případný pokus o lookup pomocích různých online databází. Edit: Špatně jsem porovnal hashe pouze podle posledních 2B a dále se neshodují, takže poslední nápověda opravdu byla falešná.

Kód

Řešení zadání 1

[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms"); 
$img = new-object System.Drawing.Bitmap "C:\aaa\20181222-zadani-1.png"
$r = ""
For ($i=0; $i -lt 60; $i++) {
    For ($j=0; $j -lt 8; $j++) {
        $b = 2 + [int]( $i * 8 ) + 7 - $j
        $x=$b % 50
        $y=[math]::floor($b / 50)
        $c = $img.GetPixel(15+(30*$x), 15+(75*$y))
        if($c.R -gt 100) { $r += "1" } else { $r += "0" }
    }
    $r+="    "
}
$r

Řešení zadání 2

[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms"); 
$img = new-object System.Drawing.Bitmap "c:\aaa\20181222-zadani-2.png"
$r = ""
For ($i=0; $i -lt 60; $i++) {
    For ($j=0; $j -lt 8; $j++) {
        $b = 2 + [int]( $i * 8 ) + 7 - $j
        $x=$b % 30
        $y=[math]::floor($b / 30)
        $c = $img.GetPixel(25+(50*$x), 5+(15*$y))
        if($c.R -gt 100) { $r += "0" } else { $r += "1" }
     }
    $r+="    "
}
$r

Řešení zadání 3

[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms"); 
$img = new-object System.Drawing.Bitmap "c:\aaa\20181222-zadani-3.png"
$r = ""
For ($i=0; $i -lt 300; $i++) {
    For ($j=0; $j -lt 8; $j++) {
        $b = 2 + [int]( $i * 8 ) + 7 - $j
        $x=$b % 50
        $y=[math]::floor($b / 50)
        $c = $img.GetPixel((1*$x), (1*$y))
        if($c.R -eq 255) { $r += "0" } else { $r += "1" }
    }
    $r+="    "
}
$r

Ověření hashe

$someString = "Against_stupidity_even_the_gods_themselves_contend_in_vain.Čerňoučký kůň vymýšlí ďábelské nápady.The_difference_between_science_and_the_fuzzy_subjects_is_that_science_requires_reasoning,_while_the_other_subjects_require_scholarship."
$md5 = new-object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
$utf8 = new-object -TypeName System.Text.UTF8Encoding
$hash = [System.BitConverter]::ToString($md5.ComputeHash($utf8.GetBytes($someString)))
$hash
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment