This thread seems pretty active again, so I figured I'd post some recent findings in hopes we can all solve this thing.
I found a bacon (v2) message within the height bit-stream that when decoded appears to be "
thefm aur
iskeyfile". The message is clearly incomplete/incorrectly decoded. We're not even convinced the message is an intended message or just a massive coincidence. A script to decode this message as-is, is below.
We have a solving team going right now that are all working together to solve this. If anyone's interested in joining, send me a PM. We're trying to round out our skill-base.
If this info helps you solve it, please be kind and tip our team: BTC address: 1Giz1ZV8rgk4UfMoscsjQiTp4cXmdSoxN2
Matlab/Octave code:
%% 1FLAMEN6 - decode "thefm_auriskeyfile" message
% Written by OnTheMF
tall = 1; % Tall flame bit-value
tiny = 0; % Short flame bit-value
ribbon_short = 0; % Short ribbon bit-value
ribbon_long = 1; % Long ribbon bit-value
%% Dataset
% Key with ribbons
rbn_l2r = [ ribbon_short, ribbon_long, ribbon_long,...
ribbon_short, ribbon_long, ribbon_short ];
% Outer top segment
ot_l2r = [ tiny, tiny, tall, tall, tiny, tall, tall, tiny, tiny, tall,...
tall, tall, tiny, tiny, tall, tall, tiny, tall ];
% Outer right segment
or_t2b = [ tiny, tiny, tall, tall, tall, tall, tiny, tiny, tiny, tall,...
tiny, tall ];
% Outer bottom segment
ob_r2l = [ tiny, tiny, tall, tall, tall, tall, tall, tiny, tall, tall,...
tiny, tall, tiny, tiny, tiny, tall ];
% Outer left segment
ol_b2t = [ tiny, tall, tall, tiny, tall, tall, tiny, tall ];
% Inner top segment
it_l2r = [ tiny, tall, tall, tiny, tall, tall, tiny, tall, tall, tiny,...
tall, tiny, tiny, tiny, tall, tiny, tall, tall, tiny, tall,...
tall, tiny, tall, tall, tiny, tiny, tall, tall];
% Inner right segment
ir_t2b = [ tall, tall, tiny, tall, tall, tall, tall, tall, tiny, tall,...
tall, tiny, tall, tall, tiny, tall, tall, tall, tall, tall,...
tiny, tiny, tall, tiny ];
% Inner bottom segment
ib_r2l = [ tall, tiny, tiny, tiny, tall, tall, tall, tiny, tiny, tiny,...
tall, tiny, tall, tall, tiny, tall, tall, tall, tall, tall,...
tiny, tall, tall, tall, tall, tall, tiny, tall, tall, tall,...
tall, tall, tiny ];
% Inner left segment
il_b2t = [ tiny, tall, tall, tall, tiny, tiny, tall, tall, tiny, tall,...
tall, tiny, tall ];
% Reverse our segments for easy manipulation
ot_r2l = fliplr(ot_l2r);
or_b2t = fliplr(or_t2b);
ob_l2r = fliplr(ob_r2l);
ol_t2b = fliplr(ol_b2t);
it_r2l = fliplr(it_l2r);
ir_b2t = fliplr(ir_t2b);
ib_l2r = fliplr(ib_r2l);
il_t2b = fliplr(il_b2t);
%% Decode keyfile message
encrypted_track = [ib_l2r, il_t2b, ir_t2b, it_r2l, ot_r2l, ob_l2r];
% Skip first bit
decrypted_track = vectorxor(encrypted_track(2:end), rbn_l2r);
% Generate indexes for every fifth bit (circular buffer)
message_indices = mod((0:(length(decrypted_track)-1)) * 5, length(decrypted_track)) + 1;
% Get the message bits in the correct order
message_data = decrypted_track(message_indices);
% Decode and display message
decodebacon(message_data)
%% Helper functions
% xor a vector or matrix with a given key vector
function [ret] = vectorxor(x,key)
% Pre-allocate return variable
ret = zeros(size(x,1),size(x,2));
% Generate 1:1 vector for xor function
copies = ceil(size(x, 2) / length(key));
xkey = repmat(key, 1, copies);
xkey = xkey(1:size(x, 2));
% Iterate through each row of input data
for i = 1:size(x,1)
ret(i,:) = xor(x(i,:), xkey);
end
end
% Decode a Bacon v2 string (base 26) - invalid characters mapped to space
function [ret] = decodebacon(x)
letters = 'abcdefghijklmnopqrstuvwxyz ';
% Only decode 5-bit sequences
vals = x(1:end - mod(length(x), 5));
% Convert to base 10 values
dec = sum(reshape(vals, 5, length(vals) / 5) .* (2 .^ (4:-1:0))')';
% Return corresponding string
ret = letters(min(dec'+1, length(letters)));
end
I'm curious if you know which flames in what order produced that? Should have been 90 flames right.
Guess i'm gonna start trying to xor flame lengths with the ribbon and try to reproduce that.