HYPERCHEST I 🏴☠️ 🎉 [SOLVED!]
Here’s the first of my bitcoin puzzles / hyperchests! This one should be fairly easy to crack. There’s 0.00101 BTC in there, about £8 at time of transfer.
Diffcuilty: EASY 😎
Clues: google translate & frequency analysis might help. And don’t forget your towel!
Clue 2: That nice Chinese and Japanese salt you bought? it turns out you’re allergic to it
Cypher
RVc`SZTスレーブWReYVc重力Wf__j重力R]T`Y`]毛巾^`UZWjハハZd`]ReV毛巾^Ra]V重力TReVX`cj毛巾TR]]毛巾hR]_feハハhZdYハハdf_毛巾
RVc`SZTスレーブWReYVc毛巾Wf__jハハR]T`Y`]スレーブ^`UZWj重力Zd`]ReV重力^Ra]V毛巾TReVX`cj毛巾TR]]毛巾hR]_feスレーブhZdY重力df_ハハ
RVc`SZTスレーブWReYVcスレーブWf__jハハR]T`Y`]重力^`UZWjハハZd`]ReV毛巾^Ra]V重力TReVX`cj毛巾TR]]毛巾hR]_fe重力hZdY毛巾df_重力
RVc`SZT重力WReYVcハハWf__j毛巾R]T`Y`]ハハ^`UZWj重力Zd`]ReV毛巾^Ra]V毛巾TReVX`cjハハTR]]重力hR]_feハハhZdYスレーブdf_毛巾
RVc`SZT毛巾WReYVcスレーブWf__j毛巾R]T`Y`]毛巾^`UZWjスレーブZd`]ReVハハ^Ra]V重力TReVX`cj毛巾TR]]毛巾hR]_feスレーブhZdYハハdf_重力
RVc`SZTスレーブWReYVc重力Wf__jスレーブR]T`Y`]重力^`UZWjスレーブZd`]ReVハハ^Ra]V毛巾TReVX`cj重力TR]]重力hR]_feスレーブhZdYスレーブdf_スレーブ
RVc`SZTスレーブWReYVc重力Wf__jハハR]T`Y`]重力^`UZWjスレーブZd`]ReVハハ^Ra]VハハTReVX`cj毛巾TR]]重力hR]_feハハhZdYスレーブdf_スレーブ
RVc`SZT毛巾WReYVcスレーブWf__jハハR]T`Y`]重力^`UZWj重力Zd`]ReV毛巾^Ra]VスレーブTReVX`cjハハTR]]重力hR]_fe毛巾hZdYスレーブdf_重力
RVc`SZTハハWReYVc毛巾Wf__jスレーブR]T`Y`]スレーブ^`UZWjハハZd`]ReV重力^Ra]V毛巾TReVX`cjスレーブTR]]毛巾hR]_feハハhZdYスレーブdf_重力
RVc`SZT毛巾WReYVc重力Wf__jハハR]T`Y`]スレーブ^`UZWj毛巾Zd`]ReVハハ^Ra]V毛巾TReVX`cjハハTR]]ハハhR]_fe重力hZdY重力df_重力
RVc`SZT重力WReYVc毛巾Wf__j重力R]T`Y`]スレーブ^`UZWj重力Zd`]ReV毛巾^Ra]V重力TReVX`cjハハTR]]毛巾hR]_feハハhZdYハハdf_ハハ
RVc`SZT重力WReYVc重力Wf__jスレーブR]T`Y`]重力^`UZWj毛巾Zd`]ReV毛巾^Ra]VスレーブTReVX`cjスレーブTR]]毛巾hR]_feスレーブhZdYスレーブdf_重力
Solved!
See the code below!
// This is a simple ASCII shift on a 12-word seed, and then we
// salt with some Chinese and Japanese, which offer clues and give me a chance to practice my stuff!
using System;
class Puzzle1
{
static void Main(string[] seed)
{
string [,] plaintext = new string [seed.Length, seed.Length];
// Console.Write(plaintext.GetLength(0));
// Fill our plaintext with looping seed words, shift ASCII val by 42
for(int i = 0; i < plaintext.GetLength(0) ; i++)
{
for(int k = 0; k < plaintext.GetLength(1) ; k++)
{
plaintext[i, k] = ShiftASCIIWrapAround(seed[k], 0);
}
}
PrintArray(plaintext);
}
// min is 65 = A, max is 122 = z
private static string ShiftASCIIWrapAround(string plaintext, int offset)
{
string shifted = "";
for(int i = 0; i < plaintext.Length; i++)
{
// get char, convert to ASCII
int toshift = ((int)plaintext[i]);
// maths...
toshift += 42;
if(toshift > 122)
// wrap
{
int over = toshift - 122;
toshift = 65 + over;
}
// convert to char and return
shifted += (char)toshift;
}
return shifted;
}
private static void PrintArray(string [,] array)
{
var rand = new Random();
string [] salt = {"毛巾", "ハハ", "スレーブ", "重力"};
for(int i = 0; i < array.GetLength(0) ; i++)
{
for(int k = 0; k < array.GetLength(1) ; k++)
{
Console.Write(array[i, k]);
if(array.GetLength(1) % 6 == 0)
{
Console.Write(salt[rand.Next(salt.Length)]);
}
}
Console.Write("\n");
}
}
}
Written on August 19, 2020