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