I have a list of inputs and outputs of what I believe is encoded with a matrix (similar to this method). I was wondering if its possible to reproduce the matrix used to transform the inputs into the outputs.
Example Data:
in -> out
62403 -> 74222
62451 -> 74211
44279 -> 74208
In case your wondering, I'm not trying to do anything illegal.
ps. It's highly possible the dataset I've provided doesn't map at all. It would still be interesting to see the process on a dataset does map.
if the solution matrix is
a b c
d e f
g h i
and we have initial elements 1i, 2i, 3i, 4i...
and resultant elements 1f, 2f, 3f, 4f...
then we know that
1f= 1i*a + 2i*b + 3i*c
4f= 4i*a + 5i*b + 6i*c
7f= 7i*a + 8i*b + 9i*c
gives us three equations and three unknowns which you can solve, which gives you the first row of the encryption (or resolution) matrix depending on which is what.
similarly, for the second row
2f= 1i*d + 2i*e + 3i*f
5f= 4i*d + 5i*e + 6i*f
8f= 7i*d + 8i*e + 9i*f
and row 3
3f= 1i*g + 2i*h + 3i*i
6f= 4i*g + 5i*h + 6i*i
9f= 7i*g + 8i*h + 9i*i
so basically you can crack a 3x3 matrix by intercepting 9 data pairs(15 to be sure)... not muy secure.
obviously you have to know how big the matrix is, or whether it's a matrix at all. best way to find out is through social engineering, such as using a reliable power supply, jumper cables and duct tape. maybe water.
what you could do is solve for multiple matrices. starting with 2x2, going up as high as you can (if you're convinced it's a matrix encryption.) for a 2x2 you'll need 4 data points, for 4x4 you'l need 16, 5x5 25, etc.
it's pretty easy to crack that since basically your smartphone has the processing power of a 1990's supercomputer. these are operations your GPU would love to do.
oh yeah before I forget, you might need to calculate the same matrix multiple time, if you don't know where the matrix starts. notice that for 3x3 you always have bundles (vectors) of size three. if you have data points a,b,c,d,e,f, [a b c] may not be a valid vector, but [b c d] might, so you might need to offset your series back and forth by a point or what and retry. fringepoints will then sadly be uncomputable.
the way to check if you have the right matrix is if you do try to figure the matrix with different data points in the same series. if you get the same matrix twice from two different sets of data you have a certain reason to believe that you've found the key. you can then (or even before) run your initial data points through your matrix in applicable sets of vectors (3x3, use sets of 3 vectors) and see if what you get matches what you got.
well then you can just take the inverse of your encryption or decryption matrix and get the encryption or decryption matrix, depending on how you went and approached this.
so yah happy cracking crappy cryptions lol.
cheers dude.