hdcp_data.php
<?php
//HDCP master key
//This is a 40x40 matrix of 56-bit random numbers
$masterkey=array(
array(
0x6692d179032205,0xb4116a96425a7f,0xecc2ef51af1740,0x959d3b6d07bce4,0xfa9f2af29814d9,
0x82592e77a204a8,0x146a6970e3c4a1,0xf43a81dc36eff7,0x568b44f60c79f5,0xbb606d7fe87dd6,
0x1b91b9b73c68f9,0xf31c6aeef81de6,0x9a9cc14469a037,0xa480bc978970a6,0x997f729d0a1a39,
0xb3b9accda43860,0xf9d45a5bf64a1d,0x180a1013ba5023,0x42b73df2d33112,0x851f2c4d21b05e,
0x2901308bbd685c,0x9fde452d3328f5,0x4cc518f97414a8,0x8fca1f7e2a0a14,0xdc8bdbb12e2378,
0x672f11cedf36c5,0xf45a2a00da1c1d,0x5a3e82c124129a,0x084a707eadd972,0xcb45c81b64808d,
0x07ebd2779e3e71,0x9663e2beeee6e5,0x25078568d83de8,0x28027d5c0c4e65,0xec3f0fc32c7e63,
0x1d6b501ae0f003,0xf5a8fcecb28092,0x854349337aa99e,0x9c669367e08bf1,0xd9c23474e09f70),
array(
0x3c901d46bada9a,0x40981ffcfa376f,0xa4b686ca8fb039,0x63f2ce16b91863,0x1bade89cc52ca2,
0x4552921af8efd2,0xfe8ac96a02a6f9,0x9248b8894b23bd,0x17535dbff93d56,0x94bdc32a095df2,
0xcd247c6d30286e,0xd2212f9d8ce80a,0xdc55bdc2a6962c,0xbcabf9b5fcbe6f,0xc2cfc78f5fdafa,
0x80e32223b9feab,0xf1fa23f5b0bf0d,0xab6bf4b5b698ae,0xd960315753d36f,0x424701e5a944ed,
0x10f61245ebe788,0xf57a17fc53a314,0x00e22e88911d9e,0x76575e18c7956e,0xc1ef4eee022e38,
0xf5459f177591d9,0x08748f861098ef,0x287d2c63bd809e,0xe6a28a6f5d000c,0x7ae5964a663c1b,
0x0f15f7167f56c6,0xd6c05b2bbe8800,0x544a49be026410,0xd9f3f08602517f,0x74878dc02827f7,
0xd72ef3ea24b7c8,0x717c7afc0b55a5,0x0be2a582516d08,0x202ded173a5428,0x9b71e35e45943f),
array(
0x9e7cd2c8789c99,0x1b590a91f1cffd,0x903dca7c36d298,0x52ad58ddcc1861,0x56dd3acba0d9c5,
0xc76254c1be9ed1,0x06ecb6ae8ff373,0xcfcc1afcbc80a4,0x30eba7ac19308c,0xd6e20ae760c986,
0xc0d1e59db1075f,0x8933d5d8284b92,0x9280d9a3faa716,0x8386984f92bfd6,0xbe56cd7c4bfa59,
0x16593d2aa598a6,0xd62534326a40ee,0x0c1f1919936667,0xacbaf0eefdd395,0x36dbfdbf9e1439,
0x0bd7c7e683d280,0x54759e16cfd9ea,0xcac9029104bd51,0x436d1dca1371d3,0xca2f808654cdb2,
0x7d6923e47f97b5,0x70e256b741910c,0x7dd466ed5fff2e,0x26bec4a28e8cc4,0x5754ea7219d4eb,
0x75270aa4d3cc8d,0xe0ae1d1897b7f4,0x4fe5663e8cb342,0x05a80e4a1a950d,0x66b4eb6ed4c99e,
0x3d7e9d469c6165,0x81677af04a2e15,0xada4be60bc348d,0xdfdfbbad739248,0x98ad5986f3ca1f),
array(
0x971d02ada31b46,0x2adab96f7b15da,0x9855f01b9b7b94,0x6cef0f65663fbf,0xeb328e8a3c6c5d,
0xe29f0f0b1ef2bf,0xe4a30b29047d31,0x52250e7ae3a4ac,0xfe3efc3b8c2df1,0x8c997d15d6078b,
0x49da8b4611ff9f,0xb1e061bc9be995,0x31fd68c4ad6dc6,0xfd8974f0c506dd,0x90421c1cd2b26c,
0x53eec84c91ed17,0x5159ba3711173b,0x25e318ddceea6a,0x98a14125755955,0x2bb97fd341cea2,
0x3f8404769a0a8e,0xbce5c7a45fb5d4,0x9608307b43f785,0x2a98e5856afe75,0xb4dbead4815cac,
0xd1118af62c964a,0x3142667a5b0d14,0x6c6f90933acd3d,0x6b14a0052e2be4,0x1b1811fda0f554,
0x12300aa7f10405,0x1919ca0bff56ea,0xd3e2f3aad5250c,0x4aeeea5101d2ec,0x377fc499c07057,
0x6cb1a90cdb7b11,0x3c839d47a4b814,0x25c5ac14b5ec28,0x4ef18646d5b9c2,0x95a98cc51ebd3b),
array(
0x310e98028e24de,0x092ffc76b79f44,0x0740a1ca2d4737,0xb9f38966257c99,0xa75afc7454abe4,
0xa6dd815be8ccbf,0xec2cac2df0c675,0x41f7636aa4080f,0x30e87b712520fd,0xd5dfdc6d3266ac,
0xee28f5479f836f,0x0bf8ee2112173f,0x43ae802fa8d52d,0x4e0dffd36c1eac,0x3cbda974bb7585,
0xfb60a4700470e3,0xd9f6b6083ef13d,0x4a5840f02d0130,0x6c20ef5e35e2bf,0xdad2f85c745b5b,
0x61c5ddc65d3fc9,0x7f6ec395d4ae22,0x2b8906fb3996e2,0xe4110f59eb92ac,0x1cb212b44128bb,
0x545afda80a4fd1,0xb1ffea547eab6b,0xfac3d9166afce8,0x3fe35fe17586f2,0x9d082667026a4c,
0x17ffaf1cb50145,0x24f27b316acfff,0xb6bb758ec4ad60,0x995e8726359ef7,0xc44952cb424035,
0x5ec53461dbd248,0x40a1586f04aee7,0x49ea3fa4474e52,0xc13e8f52c51562,0x30a1a70162cfb8),
array(
0xccbada27b91c33,0x33661064d05759,0x3388bb6315b036,0x0380a6b43851fb,0x0228dadb44ad3d,
0xb732565bc37841,0x993c0d383cfaae,0x0bea49476758ac,0xaccc69dbfcde8b,0xf416ab0474f022,
0x2b7dbcc3002502,0x20dc4e67289e50,0x0068424fde9515,0x64806d59eb0c18,0x9cf08fb2abc362,
0x8d0ee78a6cace9,0xb6781bd504d105,0xaf65fab8ee6252,0x64a8f8dd8e2d14,0xcb9d3354e06b5b,
0x53082840d3c011,0x8e080bedab3c4c,0xe30d722a455843,0x24955a20397c17,0x82495c1c5114e8,
0x656e71c31d813d,0x1f0a6d291823a1,0x6327f9534353fa,0xb89529c2f034fb,0x70e9b12205c7b3,
0xa06c87969407a2,0x520bfa2fe80f90,0xda1efc3d345c65,0x313936ec023811,0xa8cc87128be2fa,
0x4cd0e8645ee141,0xbe7975519e2b63,0x9543d23113c2a8,0x3d87b0da033f22,0xdf0464c704e9d4),
array(
0x7e1a30947e867e,0x014ae464b37935,0x5c4babf689fa4e,0xc4aec0cb01cc35,0x328c0e4a0230e4,
0xfdacb93b419594,0x26deefc8a553e6,0x6e75a2d790cb55,0x2c4554518f7396,0x94b77184cb145d,
0x95f883f620a8bb,0xedff42866a2783,0x7b4ee6304b711d,0xed56e077a4b9fb,0xc4e60e687ff6c3,
0x0cbf144b8f64d5,0x023dd10a35eddd,0xbeaa3323e999c6,0xd2e016b31c38c4,0x8d2917a888f799,
0x18c3abd28e736b,0x8d38e69b4966cc,0x624db0143dd2e7,0x5e2fa510f632b7,0xee6e64d45b139a,
0xa1c6d852e74be7,0x429843b9e6bb7e,0xdb9ab07c8dc267,0x9efa092299f071,0xdcca9e0e61e960,
0x94406fac95f1d8,0xd19122f3f88782,0x1b11a662e9c83f,0xd161fd6fb7f032,0x89f7d984da9d48,
0xa3583fea45fe58,0x885e2c4839e254,0x47e87235f713b1,0xf4732e05b71aee,0xae026d063f4349),
array(
0x0a481d2db197af,0xabfce1039d4ac0,0x4a6b89d2d1aeac,0x0842eb7178cc53,0xb82ce2835f1937,
0x3b4002ca21d6b6,0xe64a78a78abb27,0x8bd6142ad04526,0xe035dacb23624a,0x4cf80110135771,
0x7a52fafc92745e,0xefa28a290ea782,0x735617cd8b0221,0xb095e9f4b286a5,0x021e9ba0727645,
0x3e58e9ec16ed1c,0xd7732bb5ba99a6,0x374bde43fa89a9,0xcb83e5ef2e4d04,0x1da4f73566d134,
0xe01da194625c25,0xd62018764d7473,0x64643721313d24,0x5a01badd970941,0x481c9578781414,
0xa4d3faa92d1fef,0xbd4b247d37862a,0x5332a7ca3c2ca6,0x393ee51989d5a9,0x01a6e564040d37,
0x390c472ee27892,0xf0217fe009e9b4,0x5d3f04da415b35,0x612ecd5b8e4eac,0x757e27d2169f2d,
0x92853b737b7526,0x9ac837c86476df,0xe956c2b45ebd5e,0xd4fa6da687ac39,0x60f4343669ddd3),
array(
0x64b8d778e72e78,0xf86cd55efe92b8,0xa9adbf2e728440,0x966c8282cee1f9,0xea195972b883f4,
0x46ac03b37e7f24,0x744df253954ae5,0x22e3f9a0adbc58,0x6add7c7d8a2961,0xba963e4912d17c,
0x2840ac28fcfad9,0x8d8ec3ad6dfc32,0xa3c788dd094910,0xe65ebb61dabb5f,0xb50e906b28c881,
0x003b11eb83e6a9,0xa2fac0595b138d,0x3d55a28f915330,0xc343bd1849a085,0x54c786629d2b42,
0x1d465cb22ccbc2,0xd8f87fd52aded1,0xecb34f46656b71,0xb4cbe50f839f2c,0x2df6a553cc3698,
0x40b2dd25f26d51,0x492f3c5c6fa566,0xf80dd453864548,0xd4be786d8735d9,0xe364511a0fb62d,
0x3c2df64d6d1c9f,0xf640e4ef4186be,0x41773025d6ff57,0x6147e75d7df3f5,0x49809548639d16,
0x01067ef6034247,0x4e7c1b20deb154,0x3f8172a6b98ea0,0xb0691d4b575801,0x136a88607a3e5b),
array(
0x0180058ca8742e,0x972bc2ca1c4cb6,0x7b05bbc57e63df,0x5f01049697eaa2,0xc537f3121384dc,
0xedb1fa0b34f132,0x689b1374cafe25,0x802d7bca5c6674,0xf8e01e75e9eb3d,0xa59c2d9126d85d,
0xf10f603f8c4fd9,0xd5a358aa84b2d5,0xf8320f2a3bd078,0x019bcf0dabb5c3,0x43dd8dd5e173f0,
0x45169f788a0233,0xd62daee0e9839c,0x7d673cf77a53d2,0x008730faf272d0,0x3c08080778ae8d,
0x920e40fad87d7e,0xbf118230ffb194,0x692baf40b951b4,0x83549affe4e382,0x68e172f86a40b3,
0xaa5e2c1b74636d,0xc3d7809ac68aae,0x33c344fd9bcc33,0x6e6057dc7d71f0,0xbceef547db57fa,
0xec91cc1056e4b5,0x8153f00c8ef4f8,0xa2ca943ab03915,0x079a070121782d,0xd592dcec23dd3f,
0x44ba5fe5078279,0xe6f8ed790ffa59,0xe7877e834b4391,0xd1ca3db32bccd7,0xb382e35bff1ba1),
array(
0x96cb3b9ef8671e,0x70342fff9216a5,0xd635530148dcc6,0xbf40909f72ba4b,0xe3697761ac11f1,
0xf2a77a5f435c5c,0xa57729bb9aaf37,0x14f78a30f9bf6f,0x1a7fe7f0271b01,0x0b224bc83ef07b,
0x0d409ce2157473,0xadefa793287d48,0xa6b13ce8e00a7f,0x74d735fd54a00b,0xe2dc16285d1b5a,
0x8b3d55371ce703,0xbb3909153586b6,0x03c8c622aa53e9,0x89ee3322e069aa,0x325ce41fbd0175,
0x2cd1326421cd83,0x3c47eed2daadda,0x87c2177de0c63f,0x39b496d688c971,0x179359349f5e0e,
0x3cfa9ea9345dbc,0x47b1948cbfe45f,0x2a13b18cf3a0d1,0x00b03fc13e6cde,0x656ef26757f5d1,
0x7c584630c27fb2,0x02f2e14ca8a67e,0xfcfec527978154,0x4ec09910379625,0xe90fc0a898a5b7,
0x5beb0f3ee5d03a,0x2383832708cfb7,0x6905747e27453e,0x1714e418f0f0a3,0x53bcdef0965e8d),
array(
0x2c9b5813b90c3c,0xbb9a20c8ebb80e,0x045e04f3d57918,0x6fe6ffb0718731,0x201760abf11c27,
0xe289872adda7e1,0x233e7ef2b2c83b,0x423b4c0ba711db,0x334b15e5bd4c01,0x034d1e41bff0e8,
0x58a436cce28ea3,0xe6ef4d94b49962,0xec8728db63716b,0x8c8ffc95c21b06,0x0beb50502d9acb,
0xc1eb732268091a,0xe45e0c30cfed36,0x31d58c384bc3e4,0x8a26ae8b7a5c60,0x83991e11e8a21e,
0xe4f193c0183e07,0x691fbbf9ccb4c2,0x4e5214fae905d8,0x2052c969e9699d,0xf6cea5a6157de3,
0xfd84477a6bad8e,0x04f37758724bc3,0xa491d0fd8f084e,0x19933cec5f51f0,0x93794e76e1f29b,
0xebd1f1c057b30c,0x7ec220fa6d31d9,0x867d711c9a7674,0xa700cf5f177e37,0xcf3fae5da3ddc4,
0x4e8030990c7917,0x553a5ce2abaaa4,0xc2296c42e2dcea,0x19ae4f9b654581,0x66d5fff1163703),
array(
0xbb5085e0e7d595,0x12605df8a35f9f,0x35c6d572c28ea5,0x5099437e5f5595,0xfb45cdaa8872f1,
0x6e012db5feedc3,0x1ba0e5515be76f,0xb793b687fbf1dd,0x9d2c01063d4ca1,0xc2e6fde5bc3a1c,
0xc17b11e1a33418,0x436fcacef170c5,0xe4c3cbc3066618,0x2063665d2a1b84,0xa8b5b4f2e58850,
0xce74bcbc892d71,0xb312d96806cdc8,0x82d9c95678fff1,0x5d8a0120206c3c,0x621f13db39bd6e,
0x4a5db4815f181d,0x8dae6e596cebd5,0x1b8b1681dd4918,0x1dbcbd79f8e5ff,0x135064b0968c4e,
0xd81e91507c1e96,0xce08e072644e54,0xe1648d32befadc,0xd0b7f41fca118d,0x7b9291b680b18a,
0x10ab9a2fb4f9a0,0x9f462d2370dd03,0xbb453f4b48b2ea,0xb3c3e6d63c2559,0xbe4aa3d8e8f129,
0x90af78e01d25c9,0x2e06a8715063da,0x988dbf792de669,0x17eabe5b043c41,0xb1f700946e4ad2),
array(
0xe329ae8a66581e,0x4a5bda0ff2a313,0x79577080aaac8c,0x0dd34f4f929df3,0x0f5e87f82b9b1f,
0x1ead67333c42d5,0xebac8fb8797375,0xdc26965e625abb,0x953ce074d8c84c,0x2edd54991b2104,
0xa45196065c2bca,0x98f56533f328bf,0x8560a1a390e921,0x37d2506aff3d7b,0xf88576a47d273e,
0x562b7c9592ffdc,0x2d0ff0ba59787b,0x4dd89971bd39a6,0x7a4a778d69a4cc,0x58bad18bf5fc74,
0x5cac8d53dcc72c,0xba7e9c7a2b57d7,0xff544acc98f08f,0x1d22f503712081,0xcf868290f04def,
0xba48ab7c61a8ab,0x3ca439f055f713,0x2401e3a43338e0,0xb7c4b19cf1edc8,0x37db6b0d8991a7,
0x10ede95c9c35e6,0xa8f021fc870126,0x6e5909a7f3217b,0x33772e647266ff,0xa5c8fd0c786e0f,
0x04f0bb34025c67,0xcc33c6a49bf101,0x45c563f33f807d,0x6e95e9c2b5e349,0x3a0e55d42d44b7),
array(
0x611138d0e928dd,0x24d7958e8e6149,0xc66faf12b50f45,0xeaa5eb19337961,0xe68c81cb35d5d3,
0xed1fe1f1b8d443,0x612ca593de8afe,0x6c15ee22ffb8b0,0xc27152ca5a1e77,0x0133b8165e3ed1,
0x608c9c1a6ca4aa,0xdf5272bd1b6425,0x6f7efc5b2bbfa0,0xb49b5f0c67ee30,0xf4ef0e7ed820cb,
0x4b14d077b672ce,0x3a60f2386c0218,0x9e8d6e5f6caddf,0xa53ccecbae8684,0xd3183beeba0cef,
0x4cd21e6afc08e8,0x5db41995d15a93,0x6afe570246af77,0xd0994bc305b27f,0x2de99a0885c909,
0x1629a47aaa161f,0x0f6b6d45ff8967,0xcfc4e83f5b469c,0xcc22586cab3936,0x29e6b3f94d122e,
0x83f00e419d8980,0xbb282b6f3efdef,0x30d80463fb25e0,0x1846f8f1b935d3,0x3c03ed5243b7b4,
0xcb6b0e6e4c770f,0x8bc2856390163a,0x73a332bc2ebabd,0xb3aeafedbc8c08,0x74ff7726398cd4),
array(
0x0071d5d3644b97,0x45dd1ae0369e9a,0xc1f518cd384512,0xb933bc25cb3402,0x9377c50007d647,
0xe609eb009c9245,0x7d99fff828ba6e,0x9f0adcca6cd0a9,0x5c5cf8366b699f,0xf00f513ad9e29d,
0x7c2ecfdb5afe40,0x1f131691f0677b,0x30e1df0cce8710,0xf3c52df030e941,0xb2bb6b650cf2d7,
0x012a5a2d11f1b4,0x4699b78e898918,0x977b2e06972b36,0x674e2619e6be97,0x93007948f99eee,
0xaf2b5b80b81bb3,0x417446ac93bc16,0x14fb20c6ab0e24,0x3ffc77d1672771,0x36580afea2edec,
0x48942ed95911c5,0xfa312a7aca8f83,0x992e36a47ef1db,0x3937ff39b1a9b5,0x2af79ef5c48c64,
0x6c88d58111a0b7,0xb6fa6dc5f7c8dc,0xb1acc64f2b083d,0x332baac65b4feb,0xe58dae530ad4af,
0x0fbdb072d0ba36,0xe2607b065b6fe4,0xf803ae22cb2a6c,0x9b639dd91166cc,0xf5e430b9cece8c),
array(
0x687c1dc2ac5898,0xb429122b168f1c,0x4248f91ae51605,0x1c24d7f1578ba6,0x1dec5a6c003598,
0xe3c04b01a812a7,0x2df7909352cece,0xde31efaffdd0d4,0xe4a7f11873ec87,0x4768f7b8d77583,
0x23b6f7bae4521f,0x8fbf571e568d5a,0x577ad8b71f3721,0x718b68ac1ada36,0xe10689cc83ea91,
0x43f73798b295f7,0x6e2b078c8d68e5,0x613c3bb265ca36,0xd25d07032b8c80,0x843fe3783b5959,
0xe918f7789f0d33,0xafac1cb1534684,0x0fb3c6c442a94b,0x167f58645b56c2,0x76132472470129,
0x590ae9be533d39,0x75adfeba5e6230,0x30dea290d933d7,0x08cc4d30a4af39,0x09bc69be193a2f,
0xf7f8ff9f03af3b,0x3ad1a453e9dde4,0xa534709b6e15c7,0xc6ce7d4efd42e9,0x5e947977595b68,
0xca674d0c7541e9,0x97f178a43b6057,0x137a6483c7653a,0x49f1eec3082cc7,0x70824eb5bebf04),
array(
0xcf95519563f7c7,0xcef140efdaa431,0x4f8ddc5fb70009,0x27710736a485cd,0x41b05dfead9e7a,
0xdcbf8e83a3a89a,0x23e46b5a421a08,0x84f0fb922099a4,0x120b226eedd549,0xcf4706582b36f4,
0xe3b718cabb9c11,0x03db1daab9520a,0x3a29a8c65c45f6,0x0219e82dbeb36b,0xb351c498a8dda8,
0x0ba2a5607f3bf6,0x0b95be14721f63,0x62d3b4d2b1fc16,0xf46a95de23a55e,0xb70c2f136e83eb,
0xa0b215f5837e73,0xd76368870bd5bc,0x0372cf15e7ff03,0xc992d958598014,0x1fb03e9712f2c4,
0xa73b9107699fb2,0x239ad1d706b5f3,0x3623dab66fefc1,0x8b5e04ac40e7ed,0x77eaadd7c4d35c,
0xb3ba11dde839a2,0x621e7ab334235d,0x29f2ed9f1990d9,0xe0d731952272a4,0xd31f58d8cfad64,
0x57690ff74579fe,0xe78fb0fe43c6cf,0xb127e3c5c7da88,0x1765c8883fcd01,0xdc0028f618172d),
array(
0x07d8f79c0e5b79,0xbdff41e18ee3b3,0x0990bd1c710888,0xb0ef52eb6da5bd,0xb790ff7419e17d,
0x22ab4221d42b9a,0x35bec4ded01a53,0x6a2f35fd63b686,0xdb66f3c21b9291,0x165a5fd321d034,
0xf2ea034bd3a6b6,0x4d47388e2680b7,0x018dd250cfd53b,0x53babaed27080a,0x73c54d98e4a365,
0x6a77f2e71cfab6,0x4f9539f7e67a64,0xc35beaa6ab5528,0x1698a8ee44d10d,0x01e623ff7096e8,
0x96a68072d59c56,0x6baba4b0d232ee,0x725a1f9e0fbeb1,0x97728ef73b9a8e,0x16ecfe23a3bdb6,
0xf035aac743b427,0x202c094281f68b,0x1c8be9e39e4591,0x0959fad0920ae6,0x15a97f475dc632,
0xa3fc9e9363688a,0x89cea147f0339b,0xd1ffe6e68570d2,0x329a0b16c32fa2,0xcbd5818383dd8f,
0xc26f57abe7c8cd,0x4d680e55e8a77d,0xfeefbd47b284a3,0x41bc9077e7df69,0x1c32ea11a0df3c),
array(
0x2ea8501eab0c69,0x63dff30ea51c9f,0x8de69a045d957b,0x4036f90d8e90b7,0x5886f2e5059e5d,
0x7341e707011eca,0x8d6006677dabf1,0x2c6f2040741941,0x5058a43d3958d2,0x29eee2b01178b8,
0xeb9e382e6ea2e5,0x62e44ce8f6b19e,0xa5b4444f78d77d,0xc12755f1de34c7,0x8fd001eb8d0d91,
0x8a3ece83c541b5,0x659f736aca9076,0x1c1864cc5b30f1,0x1b9f901459a142,0xf5571fc19f94a3,
0x39e842e17176ca,0xed2a1659a97f8e,0x625e74d131b3da,0xbdbdfeaa0366bd,0x95ebf86c33a687,
0x4a09faea206cd1,0x29f59174377238,0x908e6c956350cb,0x686a225a26548c,0xa45140d1ed5b76,
0x75e9ea2087732c,0x14dd568be007bf,0x3668e3791bdd4b,0x56f9aa39df5785,0xe7b37c964271c9,
0xc5211e837c726e,0x374513cd4cd34f,0xa5c71ff1a4195e,0x4e234c5adc13b4,0x75093fc66c8faf),
array(
0x2ec02dd6ea2715,0xd8676bb21e7f0b,0xb4c22ceadbd907,0x9ccaf78857ea36,0xa28da605bbf2d8,
0x723651fb07c86a,0x07039b49d2fa32,0x40dbb6dc2ef93d,0xda48f7e9d5eb92,0x45bc6190b3a9e4,
0xfc84b55352b994,0x25f44b36a3fb83,0xd09a8f4ab7d78e,0x0829201a523b21,0x966e0098395656,
0x5984c4e317d930,0x581dd2ab677c99,0xa92a70424c5aae,0x4ea1dbaca67de1,0xe45918a0d6d560,
0x1e5c75efdd907f,0x99a6e56cbb015f,0x04fd11c8ae4d05,0x83a72f3e967bb6,0x2ddf23b892d1e5,
0xd648bbe9e5f8d3,0xd4b128d667ff6a,0x781dcd435b03f4,0x1a1cb99fc298e1,0x69d80c51941a26,
0x5263476c788bb7,0xdb0b584b59ec8d,0xd95a4e9a6a95c5,0x5263b0eb0cc8d4,0x98e62e5116ab09,
0x97564c79d4b733,0x39d708c3284fb2,0xd2cd596efe674a,0xa9e3b1f33b4473,0x70b30aa67c0c2c),
array(
0x3532c9874c8ce5,0x680a796f9db4b3,0x64e5825663090f,0xeb0a67604f3f9b,0x7c4716c88afa20,
0xcecf4b6b1467f8,0x342600406fe556,0x200290eea56903,0x36562b6cff764c,0xb02d3847d68f8f,
0xa26c2ab20fe063,0x5de36be096db8d,0xac5998b94e3c17,0x4c8808ebb9bf53,0x4bbf0a436470da,
0xd3875253f7b0a9,0xa99369bfede348,0x8c3391fd3a5f95,0x5005f88c89d735,0xacd8196d21d41b,
0x5ba2ce34f48817,0xda3e7f4332994f,0x8cfe88c8ae18af,0xe4df8b64d16e61,0xb0f200ab8229f9,
0x5a15b4ad681a60,0x350a1bb85a5708,0xf5731809fe17da,0x9da29858778783,0xe496533ffbda6c,
0xa590c76b953dff,0xedbf61ba227191,0xf7fd713fd0b4bf,0x4a5e6df9905845,0x42ed273f1fee88,
0xe56d34cbb2866d,0xcc76209f9773ec,0x4c21238f991ec6,0x7adff263cb22b1,0x4fb41d94f97f42),
array(
0xf26d90e0b24a1a,0x37fe90421cee92,0x5cd69e29e95550,0xbec2bff0431bc0,0x6acc812fa97ad4,
0x4f19e44dd33a0e,0xd9280b1ae70cff,0x6575a036db7f1e,0x7bf2ed31bcef8e,0x45dfb49b8dc51d,
0xe1fd10fb1b59b8,0x092da05f342c0a,0x01fa56a0375319,0xc1f5ad03dc627a,0xcb1f2c96f11444,
0x5d67a093467a43,0xa832f56266f0bf,0x7a464d7fab7c48,0x42561af703a045,0xc1c9b270211af3,
0xedcaf802cfd336,0x6f9ba5cc39c3dc,0x585554fa4224ca,0x4a7216b8d2dd3e,0x16c2d8b31e6fa9,
0xe9ae301e1bfa98,0xac8389842b368a,0x158c5060209885,0xc01a2c3f5b7bca,0xd20124920faa1c,
0xa2217820d1fa40,0x803272c88d1844,0xc2554237c9ecc8,0xd25f509a6db1de,0x325148c1726f18,
0x398c66b1339048,0x8c8c43dd7f2c26,0x24cf4ec93ee498,0x54618829620375,0xeb494db615a50f),
array(
0x69e1fb949b4215,0x3e02e353426513,0xbf6ea2adefdded,0xfbbb781d40e52c,0xd6ebec825d94a0,
0x3f84de44b6fd50,0x0b466ea0458290,0x3a77f7804e0c62,0xb0ce750e2b2078,0x69f346f188a43a,
0x24ef26f7c284a3,0x544ea716d5498b,0x3e1f23b1154dcf,0x6d5c580dbec7f0,0x120302c7a16ee0,
0xbae4ae638ee502,0x60cd112182bd84,0xdbc443744789a8,0x7faefcebed3a2c,0x579c0f77cfa536,
0x0d920b050cb068,0xfb2fc616ee5eb8,0x3b7082e645d419,0x40df3b620a8474,0xdf360190d74ec7,
0x28f0d33396ee1e,0x3c007bfb335325,0xac5c5327fcfbe9,0x9daecd75584e11,0x770aecaa7200f5,
0xef955be6081878,0x8c906f9fbbd9a8,0xf16d11b5a2980c,0xf837a8f49c0378,0x33efbbae308e71,
0x0bda652822a309,0x8990e49a4320ce,0x8bf60c5517e853,0x0b0f2a3d47d09b,0xb07d28e7903ac9),
array(
0x5009b61262ab9c,0x0161bb90668bf4,0xa314e46c502058,0x447250d9698fed,0xc3e4ceaa255d41,
0x5ba4045c2fdba8,0x17b0720f52e736,0x0eb0036d8439d0,0x9e15116b8245e2,0x3dad88738ceab0,
0x260986d154e9a9,0x56cd13e67e508e,0x9895906f7a2bc2,0x4970647a63ed02,0x5e192810f2e040,
0x02e7f4cad9b4cb,0x18d5850dc181a2,0x05204ea9653f18,0x2d3b188124823d,0xf9b34ca3d2c93b,
0x2e5ba515010f68,0x7308114d65f874,0xacbf4d6286131d,0x46681d439816a8,0x15fc07b05c47fe,
0xf0ef6a332c3132,0xc4630529dd2021,0xa743a1e9423e63,0xb12af7fe3d806e,0x0cb7d03c2afdae,
0x7abe068af28323,0xfe75b567a2c0c7,0x069313cf6c1f44,0xa39aeec0ddcc87,0x747c3bd20c1471,
0x876af6b8558b0f,0xeb0b357c5d8f97,0xc64ac9dcac22f2,0x856e4341b42b50,0x663b16ec5eb01f),
array(
0x0d31dd990e70cc,0xf7203530ab3d19,0x6d42eb5412ec69,0xdc9e4fcaf97880,0xe0dcd2d94a10fc,
0xb5f39a9e831217,0x4b084adf9c02c4,0xd3cabf53a97846,0x4c331980146846,0x3c9f7c840833be,
0xb0cb542c3108b1,0x9dcf7401e6f79a,0xc1f27ed5dd4e0e,0x509cf69e83c56c,0x15ca00d43e1758,
0x5948602f5bf14d,0x1d129ae6b9f4ee,0x2b58f973ae2956,0x6a6c792feb0c13,0x62474058c00758,
0xcaab48f22b2e6a,0xed88328618842d,0x0418ebd349eb34,0x846eda10087342,0xe8b6c21b95cbf9,
0xcc90523ed0cb59,0x4c9374718e79ca,0x60c8fa29dd489a,0x41f2190a03e88f,0x8ac12bebb17c5e,
0x3195835960d662,0x2317a3d2d90ead,0x5f5aeb6d34f4e1,0x7a39957a01179f,0x3f88d79fc83f9c,
0xedb1049a771b1e,0x30a85067c640ed,0x06cac8047923de,0x59bdda0f1b1b9d,0x7a014eaecf61b7),
array(
0x292e8b0f865638,0x4dc1de3d7f5dda,0xd9b1b7557b4db8,0x54813ab90c75a3,0x9b35f03246f1e4,
0x20f760465bc347,0x0da41ba5991181,0xa6a49de8fdf505,0x60b1ea116f81a6,0xce2716aa9919a7,
0xe3fce68f208dd3,0x05d5b9594f643d,0xded74364c812db,0x16b6e7e4269696,0xad975ff975a727,
0x4d6e503b6ae9a9,0x9ce664850ed1da,0xa714650763250b,0x944b7b251c3e6b,0x0d37d4e4854c4c,
0x06c7e1c3d4b917,0x5602bc69558908,0x92f5ddd9a20bbd,0x84d12a16b5963d,0xd1426dd7f44f09,
0x06cca7d8cd71ba,0x710072c1b4ea7a,0xebabe1e8242f72,0x69960c6c0d5bf3,0x2084edb90ada1d,
0x235ed7d8a9fe39,0x3b133ed8a3fec1,0x132c4509579af1,0x203ca5447787a5,0xca938128fcd756,
0xca569d31b6f05d,0xedec4129270543,0xff17078079c2aa,0xf642caa8568a3b,0x8d1f6c3bf9b5e7),
array(
0xc947c61701ce12,0x1a3808b18cb73c,0xd1d7543be23892,0x9917eefd8b4b7d,0x0eabef30f24b08,
0xb72c10d49c60a3,0xc01344f22cc2a2,0xb97c57f2a37b00,0xf82a2f9338e520,0x5a8b9c9ce0dc1d,
0x8a4d7e7260e257,0x62046c5551c0e9,0x19811c1011cf28,0xdc158db4a957c2,0xb516e794206aa4,
0x4a9e535622d8df,0xbea44b252b2ab8,0x7284568528acd5,0x239ab1d64c7025,0xbad538907922d6,
0x57fb163fcb9eca,0xad97c1507e480a,0x78e8cfc81ca935,0x14eee2413bbe9d,0xe349073d92ab5c,
0x8ed191d530d9af,0xf3a72b6e194e41,0xd26925b22eb6c5,0xf709c6088bb419,0x8527923aa6f4f3,
0x1345fcb8916f88,0x9f82d7a298174b,0xb0a41e5d16d9d4,0x28c7eab4098fe2,0xf34abb591392d4,
0xa5084515586118,0x71f3fcfcee19ff,0x180d1b40c23b7c,0xc18c22be085cc3,0xedeb86d04f3c78),
array(
0xc56c61899b8011,0x2cf78b1bcd5b77,0x99247be60f0cdb,0x4c8a9aa7a58409,0xe2bf0ad4cfe9b6,
0xf79b501f91d364,0x5fd2c40e48e881,0xc650973fb8e681,0x7c8ae6d3aca02c,0x7a01c329e3bf17,
0x3b126f2cda1e76,0x229d405bbc41d3,0x5e028a9f388566,0x97e13e1dfee5e2,0xaa02da00a5271a,
0xbe2abd92296fc2,0xe380153ffa1a5d,0xdc3c184ca2fd9a,0x8dd7381eccc7e0,0x55a7fef2252572,
0x76da25ac98ef00,0x3e12a21d43ef92,0x28c5f1d9e71a96,0xb7cd9a47a9c9d8,0xaaf77a03539742,
0x9f8854a9983a9c,0x2bcde940d64350,0x6986616ba3f75f,0xe80cc522c68b65,0xf03f78b91d9f6c,
0xfdf9170e4ac9f1,0xc84c3819797def,0x03bbfca0340880,0x2893d145bda408,0xdf07456e5388bf,
0xcbadcc8ac22dc9,0x365807ab820d70,0x29da8be4c0de87,0x756ee3a7865bfe,0x46439df366b70b),
array(
0xab960b51e728db,0xe2e3c346921e4e,0x74c6317baa49fb,0xb3efd421fb40bd,0x979d2df24bca93,
0x98d5bd5de71195,0xbc030746a50c59,0x02cf2a4b1b9812,0x467af79145cfaa,0x0ed643c7b530e4,
0x181ef7d406026a,0xf6ea606e325377,0xa302d06af1f7cc,0xc7658f6ae6defa,0xbbe5314d959e1f,
0xbb5757386c8799,0x8759670183f618,0x58e0cc3816f883,0xc113183a0578ee,0xce5456e86ee96b,
0xc04285b8c56bb1,0x74e5fb66d586e6,0x9d8eea215e70c8,0xf4a00feb7bc2f6,0x369c2bf470063d,
0x5b267be08f0594,0xc26fb2440b1ac6,0x8610ef5a140769,0xbb3d5b50a536d4,0xdf6c30bc09f971,
0x74e572ca84d171,0x2deb91e812d860,0xb17ac9ae5be211,0xc95a0e3f542c78,0x46397245b13a99,
0x1806ab9ceb6646,0x1b4161b0ec2edc,0xfc536e2a24abf8,0x9f7207bf519f1b,0xabf95b0d0d3cae),
array(
0xd9e17ba1bf7678,0x6526f524fad677,0xec243ad271d0cb,0x9b1c06cf737605,0x0a36697c74beaa,
0xfa0f0056a6bd7e,0x9f2d03db497a93,0x027d76e6e8692a,0x72ceb29c5913a7,0x55eb297dae3330,
0xeb676e7345fb39,0x7021192efd5b47,0x462906905e7511,0xe005f52fd8da5e,0x1288c01960d735,
0x3460b18eafd2d8,0xfaa9b1c3caf426,0x5035e585d9fd2d,0x85636dff1d4e42,0x600c4b7f664267,
0x02b21e6a8c7a03,0x79ce25c264e2f4,0x035a7f32c227ea,0xbf8f711445a7d7,0xd0b5e3b336f71e,
0xc454a416321483,0xbdc1a7a9d20dea,0xe1ee4744e83143,0x5b6969f2864529,0x17a6b42d6346ab,
0xff0fb6edf2265a,0xba75b0991f6dfb,0x6638c1d7243ff8,0xe7806af6600486,0xdfe3bc58f31717,
0xb0c4adc2717922,0xc11abff0b4a290,0x43598e076f60be,0x2ef17ad2f77605,0x3a41a09d974da6),
array(
0xee787846e7ff26,0xce05d869fecf18,0xfde916d95f9357,0x4c1b4dd723b90d,0xb1f024400d61a2,
0xf51dfebc71b770,0x461e7f725d9637,0x2b1587ff40035e,0xa2cafbcd0c6b17,0x2e9efaf6986045,
0x80e339a823ea56,0xfebfaa02609bb2,0xa33955624e1602,0xa137b84639ef0c,0x6e2ecf420a6d6b,
0x69f13acbea8f97,0xb4d36c41e3a867,0x1352aee4798c08,0xe3ec254ddf35cb,0xab600d90f13919,
0xd00cc1d401fd2c,0x1c629e621756d2,0x090f8d6e0895fa,0x701bd1b0a355ce,0xa53c7c91b15eb4,
0xdd8579d4dd92e4,0x03d1c960c63d55,0x215a8fbc09cc85,0x59c1e6069b6dd1,0xa0428bfb223cca,
0x46d131153e9982,0xc5dab0c9ffb93d,0x682db866d6503c,0xa481c48384a087,0xa417c564567258,
0x2ec7b9722b5c5f,0x2d491f9cf79086,0x30cd268b1088d0,0xf02e69b1441963,0xd9841b5339d18f),
array(
0xa26deb7b957527,0x337f3bd67d3c51,0xe6839a4d5fe4cf,0x1619c18889be68,0xd971f0f57d1016,
0x56213ebf152a2d,0x9c0e0394832c92,0x9e6fc90ca28ba5,0x9c5151dfbb8394,0xf49fe4cf2a3f7a,
0x97f4db054b2b34,0x2a4c21abf6406f,0xeb941a80bee3f8,0x7615468e80e77a,0x0f935ebe8e8842,
0x959f2b3ba1f50c,0xd6bc8b614e39de,0x3c43d13746983a,0x7956e617131247,0x56de3547cf1010,
0xc16d5d1fce2bcc,0x3e73e5ef9fd691,0x1211c1a27803ad,0xf1c9644aac4ba2,0x8d67134e3be189,
0xd8aee617c607cb,0xf62677b30d8ece,0xe7df69402b2291,0x6ec102f220e09f,0xa6223e874c3e53,
0xfb474983ebdb9f,0x806832bde2f4e6,0x7c25ef688134b3,0x4aadca3409a6b3,0xbdccd638f3b19a,
0x2b01f18625fdd1,0x0f5e91c28af081,0xf28e4dcd9077cd,0x9229d87caebbfb,0x072b846b4d2ce0),
array(
0xfd7a25e195d67a,0xec9546899268d2,0xff3068a2e9d0c2,0xaf9f2fc2de9978,0x01b47566d0faef,
0xfc5a8eab966720,0x4b981c9fe7ff10,0xb4a0aa0873484e,0x25a8b544ed8801,0xc72530c2e5d37f,
0x94b0483e74e4fa,0xbc5ac97d82cd68,0x1a23d34cce0d52,0x6e4d17a8475b19,0x63493b14551149,
0xd36db24ae5ced3,0xa24a53ea6aada0,0x230cbe502aa32e,0x2aa07485f281e6,0x66777be0d719c7,
0x5d3ab65be78916,0x06076f42e71bd2,0x273e56dd3eccfd,0x5ef1c9394b6a9e,0x42f1f49590ffa2,
0x1e6ab6994e56a8,0x8d54a339e301c2,0xefff698c46e74e,0x6721df7c5334d0,0xf36cf6a93bf3ff,
0x91d8979d8fe631,0x321dc8b5eccceb,0xa237eb1423c395,0x4623a16cc50b79,0x83f616f60d8114,
0x32c15a65536b82,0xe4a00d384d99cd,0x369206bbef6fb4,0x42a720e294a9e4,0x768a1c77e94dac),
array(
0x31d4798dffbd75,0xda46bbd77e908b,0x0fc027a69fcccc,0x4204ee745159f5,0xc14155873d42b2,
0x7ce0c031527eae,0x22fb1c9d6da9a7,0x33c940531510c9,0xd938e52464ce71,0x385b73fa95a2d3,
0x597bf6362dd268,0xf9901921654409,0x7c8d064cd5b4ea,0x80e8fe2f1b3288,0xee188609ef2cdf,
0xbeee34a1c48fe2,0x459cefca35857f,0x33b5320fbbca79,0x7789297027b6a4,0xf1debe5a09d013,
0xfd5d818a56bf63,0x19a092fb1ec45c,0x526f5d3ff64331,0x9b8295291aef56,0xd6963c3a92c34c,
0x065482a033fbbb,0x9b9ab43410d764,0x44ebbd99c86a86,0x4c087234311b85,0xdb6e5a803ba13f,
0x760c159ce2a619,0xd58d83243fe0ba,0x1c1e5e83aa79b5,0x75c8bbae9baabf,0x2ed91bdb632ae8,
0x8e46b443cfffe5,0xafa4f53f148577,0x0be538701c4afa,0x3fd89c44ef7ced,0x060dcdc21e9368),
array(
0x0a5b9e2ba4a53b,0x63db0419a96d30,0xf68e038377a61e,0xaa15b78389ec74,0x5f532809ff80f1,
0xf2892acc49ca4e,0xe2d68174c08e81,0x378254a38f5138,0x0b060222bb20b1,0x8013f6f4745c47,
0xef08e87e2c197d,0xb69d5ddaadf417,0x7bc66fe482b730,0xf4bd76d3bb1dfc,0x09492b63f2935b,
0x43875dd685ab00,0xe15a528f666486,0xaad1fac042ef90,0xb3bb7b8ef9c2e9,0xc78967b9392a1c,
0x2f05fd5ca0230b,0x1008345afdd18c,0xdac73c313ace60,0x346d535e500b62,0x12e6357496459b,
0xecccdac5a34926,0x3b880f7098608f,0xe66c3352a9cdd6,0x049b176ff1a04d,0x897d9569948066,
0x806230e9740d6e,0x179ebf2b7952ab,0x3a2c5079b5bbea,0x73261b85c35fb1,0x5b917dc1bf7e57,
0x9c55b95581c1d5,0xe1fb86e6219639,0xc72a22d8404448,0x95dc5d7b966027,0x457f3fec730d5d),
array(
0x469cd82a2b3cec,0x021d9de560b8d6,0x85b4d126933886,0xc8265dafb87325,0x8741d99af7f420,
0x1329e52d3e66f8,0x7d37c458a6ad05,0x1241c5ccbc355b,0x7fdcad3c3c269d,0x05f04a0a23acc7,
0xce076aba97cc18,0x74b36afc4645b2,0xcd7adaad8f5b91,0xbd0651649dc722,0x3d9b6437c667fb,
0x6827ec09eed45e,0x8ad6102faa934f,0x1a80658c0bfe1e,0xef1749235ab59f,0x75478ad5949a06,
0x49ce6e19841851,0x8df41dc39cc628,0xbd9dc9bec89c8b,0x7771a21fe8028c,0x65082929b051f3,
0xc657798a3aebd1,0xce9c37c494cfc8,0x156efce8330e42,0xd0d95860d39040,0xdfb0fb66f814c4,
0x4b421540a0aece,0x9e767cbf7e9c49,0xeeea5b5c866a9e,0xe2026ca4bfb067,0xec9fff1a5d41c0,
0x290ed4da32d333,0x65208d00dba471,0x99e1d15a83b736,0x5585401976a265,0x1668daeb4aad72),
array(
0xcdabffa646baca,0x7a6c7bb29875f7,0x1a87a53a2139c1,0x1ecf7ae823158a,0xb1087bf595f7f2,
0xd8e668fe076e4e,0xb0794cf137a863,0x81e2a419a320ac,0x8090b1d39e5171,0x813903d5f1a68c,
0xba31f8211e56bb,0x52413eefa30a66,0xaf88d053eb8a4a,0x4d2235fdb9bf91,0x69a947973d3ed3,
0x0dbcf583c26ffd,0xb6bfbee58458b7,0x5a12f3e625e5d8,0x53ae22c2b1bc6a,0x8e6f7e7bbde691,
0x2b692a6746d3be,0x686438e4ac66e4,0xaa77be21178471,0x36aed3fc3ff079,0x8c9373ebb1c2f7,
0xbb99fd5bfaebc1,0x665902d08610e8,0x8af0db91b80b6e,0x00d4995f9a6ce8,0x1d503d26442bd9,
0xe61b181dfd0949,0x2a02f5075a277e,0x76caa7ddc435fe,0x5cedae4cae7a57,0x4b5f7c58c4f214,
0x1446a05c1023ab,0x459c93a9f5ad37,0x1ea5f5aa4060b2,0xa48215350fcd60,0xac21e2a4729a51),
array(
0xf18cf87ecf430f,0x0fd48c241ac6bc,0x33964cd2e3d9ec,0x8bebeffc2e848e,0xbb84a5c2ea9b0e,
0x311f20ff7ce601,0x752573f4effe98,0x79dbe4d184dce5,0x6bb04def99d322,0x7d2d5f23c2475b,
0x7f93f7dbddf04e,0xfff303e751fffe,0x08d205f8999a3d,0x5750d14f75e056,0x1107a3f96ca8e9,
0xf62b50c8ad9f20,0x53e7fcc55d72d8,0x6345dec1054cb6,0x01d52c21dc654a,0xaa0bd78e39c594,
0x2265b675381cd5,0x57cc03dd65f821,0x1fa373049059a8,0x9885886b48085f,0x8357ab98192a14,
0x5bb6cfbf84048b,0x5cf862f25ff6ab,0xc9382e36ab2dbd,0x2357b5ade91fcf,0x2db77558ceef24,
0xd4a0cb3ba50a2a,0x12c3cb633dfe47,0xdb805410168807,0xa5e635ac766e1a,0x25252810f49fad,
0xcae296fce18ed4,0xb9932d5822c519,0x4b7006cc54ea84,0x2546d761d284cf,0x2346d0a11b1ed9),
array(
0x81ce0d028c4474,0xc8002fd0315372,0x8670db1a6ad6eb,0x4c7f942260e9c9,0x822bb2c423cc53,
0xe3b67febea3672,0x59c24223d913c3,0x6f4b196f69400f,0x51bfb6cc7f3603,0xfb9fbef84ffaf4,
0x7c1632636806f6,0xa50ec42076931f,0xf68b2be9e5e7ad,0x7603302a518bd4,0xd7cd9bb97ffa3c,
0xacf1faaebf7412,0xf55d55d548bd86,0x5b34112ed53d06,0x1b58692e1e33b7,0xcc7e3cb6d32fe2,
0x8f7b35c14a744f,0x9a4ed599399554,0x8eb369e71641af,0xd4a6d1a5c74123,0x8cc7ec376acf04,
0xec0a470647b248,0x2fd9e8eea1f10e,0x94439285677960,0x4d11f6e6a426e0,0x06378817230b68,
0xec14f2df152cb7,0x199a8c0bd5f05d,0xecad5aab44ac2b,0xca87ab2ba6e905,0x69c0bf2acdb36c,
0xd66279737bc807,0x4dd946eb19d81b,0x4e9c473b5e9846,0x5a016f7ca86f9d,0xd02c2b7dca744a));
//Transpose the matrix for the sink key (swaps x and y indexes)
//This works because PHP creates arrays out of thin air if you use array indexes on an unassigned variable
foreach($masterkey as $x=>$v){
foreach($v as $y=>$vv){
$masterkey_transposed[$y][$x]=$vv;
}
}
hdcp.php
<?php
define('MIN_PHP_VERSION','7.0.0');
require('hdcp_data.php');
//Checks if the machine and PHP are 64 bit (needed for this script)
function is64bit(){
//dechex(-1) will return a series of "F", each one being 4 bits worth of integer size
//And 16 bytes * 4 bits is 64 bits
return strlen(dechex(-1))>=16;
}
//Generate a valid KSV
function generateKSV(){
//Start with a 40 bits empty key
$ret=str_split('0000000000000000000000000000000000000000');
//Create a second array with 40 numbers. This is the pile we draw bits from to set to 1
$indexes=array_keys($ret);
for($i=0;$i<20;$i++){
//Draw random bit
$index=array_keys($indexes)[random_int(0,count($indexes)-1)];
//Set the drawn bit to 1
$ret[$indexes[$index]]='1';
//Remove number from pile to avoid it getting drawn twice
unset($indexes[$index]);
}
//Concat characters back into a key and parse as binary number
return intval(implode('',$ret),2);
}
//Checks if a given KSV is valid
//$ksv(int): A 56 bit KSV number
function validateKSV($ksv){
$x=decbin($ksv);
//Expand the string as needed
while(strlen($x)<40){
$x.="0$x";
}
//String needs to be exactly 40 bits
if(strlen($x)>40){
return FALSE;
}
//KSV must have 20 bits set to 0
if(strlen(str_replace('0','',$x))!==20){
return FALSE;
}
//KSV valid (because if it has 20 bits set to 0 it must have 20 bits set to 1)
return TRUE;
}
//Gets a source or sink key
//$ksv(int): A 56 bit KSV number
//$source(bool): TRUE=Source,FALSE=sink
function getDeviceKey($ksv,$source){
global $masterkey;
global $masterkey_transposed;
if(!validateKSV($ksv)){
return FALSE;
}
$key=$source?$masterkey:$masterkey_transposed;
//This is the accumulator for the 40 numbers in each row that we process
$ret=array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
$num=str_split(decbin($ksv));
//Pad key to the left with zeros to make it 40 elements long
while(count($num)<40){
array_unshift($num,0);
}
foreach($num as $k=>$v){
if($v==='1'){
//Add the numbers to the accumulator and keep them 56 bits
foreach($key[$k] as $key_index=>$key_number){
$ret[$key_index]=($ret[$key_index]+$key_number)&0xFFFFFFFFFFFFFF;
}
}
else{
}
}
return $ret;
}
//Gets a source key from the given KSV
//$ksv(int): A 56 bit KSV number
function getSourceKey($ksv){
return getDeviceKey($ksv,TRUE);
}
//Gets a sink key from the given KSV
//$ksv(int): A 56 bit KSV number
function getSinkKey($ksv){
return getDeviceKey($ksv,FALSE);
}
//Generates a full set of keys
function generateKeys(){
$ksv=generateKSV();
return array(
'ksv'=>$ksv,
'source'=>getSourceKey($ksv),
'sink'=>getSinkKey($ksv)
);
}
//Require a 64 bit installation
if(!is64bit()){
die('This HDCP generator requires a 64 bit PHP installation');
}
//Require PHP 7.0
if(version_compare(phpversion(),MIN_PHP_VERSION)<0){
die('This HDCP generator requires at least PHP version ' . MIN_PHP_VERSION);
}