crypto

Shifting

Punkty: 208
Rozwiązań: 19

This script is generating an encryption key from a plaintext itself. Can you decrypt given ciphertext without knowing the the original plaintext?

173ca059bf5d2027251c499b87ca1806b6c6c304153d203b38

Code:

<?php

function flag_at($i)
{
    global $flag, $l;
    return ord($flag[($l+$i)%$l]);
}

$flag = require('flag.php');
$out = '';
$key = crc32($flag);
$key = ($key)<<32 | $key;

$l = strlen($flag);
for($i=0;$i<$l;$i++)
{
    $shift = flag_at($i-1)%32;
    $keyi = ($key>>$shift)&255;
    $out .= chr(flag_at($i) ^ flag_at($i+1) ^ $keyi);
}

echo bin2hex($out).PHP_EOL;

?>

Format flagi: ecsc{litery_cyfry_i_znaki_specjalne}.
W razie wątpliwości lub pytań dotyczących konkursu zapraszamy na naszego Discorda: https://discord.gg/gAtRKa2rcn.

Aby wysłać flagę, musisz się zalogować.