RCTF crypto100(1)

原创 2015年11月17日 19:13:26



题面是一个文件,里面是用base64加密的字符串,如下所示:

IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN=
IyAJCQkJRG9jdW1lbnRhdGlvbgkJCQkgICAgI0==
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyO=
IyBBdXRob3I6ICAgVG9kZCBXaGl0ZW1hbk==
IyBEYXRlOiAgICAgN3RoIE1heSwgMjAwM/==
IyBWZXJpb246ICAgMS4x
IyBIb21lcGFnZTogaHR0cDovL2hvbWUucGFjaWZpYy5uZXQuYXUvfnR3aGl0ZW1hL2Rlcy5odG1s
I0==
IyBNb2RpZmljYXRpb25zIHRvIDNkZXMgQ0JDIGNvZGUgYnkgTWF0dCBKb2huc3RvbiAyMDA0IDxtYXR0IGF0IHVjYyBhc24gYXU+
I5==
IyBUaGlzIGFsZ29yaXRobSBpcyBhIHB1cmUgcHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIHRoZSBERVMgYWxnb3JpdGhtLl==
IyBJdCBpcyBpbiBwdXJlIHB5dGhvbiB0byBhdm9pZCBwb3J0YWJpbGl0eSBpc3N1ZXMsIHNpbmNlIG1vc3QgREVTID==
IyBpbXBsZW1lbnRhdGlvbnMgYXJlIHByb2dyYW1tZWQgaW4gQyAoZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMpLn==
I7==
IyBUcmlwbGUgREVTIGNsYXNzIGlzIGFsc28gaW1wbGVtZW50ZWQsIHV0aWxpc2luZyB0aGUgREVTIGJhc2UuIFRyaXBsZSBERVN=
IyBpcyBlaXRoZXIgREVTLUVERTMgd2l0aCBhIDI0IGJ5dGUga2V5LCBvciBERVMtRURFMiB3aXRoIGEgMTYgYnl0ZSBrZXku
I4==
IyBTZWUgdGhlIFJFQURNRS50eHQgdGhhdCBzaG91bGQgY29tZSB3aXRoIHRoaXMgcHl0aG9uIG1vZHVsZSBmb3IgdGhl
IyBpbXBsZW1lbnRhdGlvbiBtZXRob2RzIHVzZWQu
IiIiQSBwdXJlIHB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgREVTIGFuZCBUUklQTEUgREVTIGVuY3J5cHRpb24gYWxnb3JpdGhtc5==
cHlEZXMuZGVzKGtleSwgW21vZGVdLCBbSVZdKY==
cHlEZXMudHJpcGxlX2RlcyhrZXksIFttb2RlXSwgW0lWXSl=
a2V5ICAtPiBTdHJpbmcgY29udGFpbmluZyB0aGUgZW5jcnlwdGlvbiBrZXkuIDggYnl0ZXMgZm9yIERFUywgMTYgb3IgMjQgYnl0ZXN=
CWZvciBUcmlwbGUgREVT
bW9kZSAtPiBPcHRpb25hbCBhcmd1bWVudCBmb3IgZW5jcnlwdGlvbiB0eXBlLCBjYW4gYmUgZWl0aGVy
ICAgICAgICBweURlcy5FQ0IgKEVsZWN0cm9uaWMgQ29kZSBCb29rKSBvciBweURlcy5DQkMgKEN5cGhlciBCbG9jayBDaGFpbmluZyn=
SVYgICAtPiBPcHRpb25hbCBhcmd1bWVudCwgbXVzdCBiZSBzdXBwbGllZCBpZiB1c2luZyBDQkMgbW9kZS4gTXVzdCBiZSA4IGJ5dGVz
RXhhbXBsZTo=
ZnJvbSBweURlcyBpbXBvcnQgKt==
ZGF0YSA9ICJQbGVhc2UgZW5jcnlwdCBteSBzdHJpbmci
ayA9IGRlcygiREVTQ1JZUFQiLCAiICIsIENCQywgIlwwXDBcMFwwXDBcMFwwXDAiKZ==
ZCA9IGsuZW5jcnlwdChkYXRhKV==
cHJpbnQgIkVuY3lwdGVkIHN0cmluZzogIiArIGR=
cHJpbnQgIkRlY3lwdGVkIHN0cmluZzogIiArIGsuZGVjcnlwdChkKf==
U2VlIHRoZSBtb2R1bGUgc291cmNlIChweURlcy5weSkgZm9yIG1vcmUgZXhhbXBsZXMgb2YgdXNlLk==
WW91IGNhbiBzbG8gcnVuIHRoZSBweURlcy5weSBmaWxlIHdpdGhvdXQgYW5kIGFyZ3VtZW50cyB0byBzZWUgYSBzaW1wbGUgdGVzdC5=
Tm90ZTogVGhpcyBjb2RlIHdhcyBub3Qgd3JpdHRlbiBmb3IgaGlnaC1lbmQgc3lzdGVtcyBuZWVkaW5nIGEgZmFzdN==
ICAgICAgaW1wbGVtZW50YXRpb24sIGJ1dCByYXRoZXIgYSBoYW5keSBwb3J0YWJsZSBzb2x1dGlvbiB3aXRoIHNtYWxsIHVzYWdlLg==
IiIi
IyBNb2RlcyBvZiBjcnlwdGluZyAvIGN5cGhlcmluZ1==
RUNCID0JMH==
Q0JDID0JMd==
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyO=
IyAJCQkJICAgIERFUwkJCQkJICAgICM=
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyP=
Y2xhc3MgZGVzOm==
CSIiIkRFUyBlbmNyeXB0aW9uL2RlY3J5dHBpb24gY2xhc3M=
CVN1cHBvcnRzIEVDQiAoRWxlY3Ryb25pYyBDb2RlIEJvb2spIGFuZCBDQkMgKEN5cGhlciBCbG9jayBDaGFpbmluZykgbW9kZXMu
CXB5RGVzLmRlcyhrZXksW21vZGVdLCBbSVZdKV==
CWtleSAgLT4gVGhlIGVuY3J5cHRpb24ga2V5IHN0cmluZywgbXVzdCBiZSBleGFjdGx5IDggYnl0ZXM=
CW1vZGUgLT4gT3B0aW9uYWwgYXJndW1lbnQgZm9yIGVuY3J5cHRpb24gdHlwZSwgY2FuIGJlIGVpdGhlciBweURlcy5FQ0L=
CQkoRWxlY3Ryb25pYyBDb2RlIEJvb2spLCBweURlcy5DQkMgKEN5cGhlciBCbG9jayBDaGFpbmluZym=
CUlWICAgLT4gT3B0aW9uYWwgc3RyaW5nIGFyZ3VtZW50LCBtdXN0IGJlIHN1cHBsaWVkIGlmIHVzaW5nIENCQyBtb2RlLl==
CQlNdXN0IGJlIDggYnl0ZXMgaW4gbGVuZ3RoLv==
CSIiIm==
CSMgUGVybXV0YXRpb24gYW5kIHRyYW5zbGF0aW9uIHRhYmxlcyBmb3IgREVT
CV9fcGMxID0gWzU2LCA0OCwgNDAsIDMyLCAyNCwgMTYsICA4LC==
CQkgIDAsIDU3LCA0OSwgNDEsIDMzLCAyNSwgMTcs
CQkgIDksICAxLCA1OCwgNTAsIDQyLCAzNCwgMjYs
CQkgMTgsIDEwLCAgMiwgNTksIDUxLCA0MywgMzUs
CQkgNjIsIDU0LCA0NiwgMzgsIDMwLCAyMiwgMTQs
CQkgIDYsIDYxLCA1MywgNDUsIDM3LCAyOSwgMjEs
CQkgMTMsICA1LCA2MCwgNTIsIDQ0LCAzNiwgMjgs
CQkgMjAsIDEyLCAgNCwgMjcsIDE5LCAxMSwgIDM=
CV3=
CSMgbnVtYmVyIGxlZnQgcm90YXRpb25zIG9mIHBjMT==
CV9fbGVmdF9yb3RhdGlvbnMgPSBb
CQkxLCAxLCAyLCAyLCAyLCAyLCAyLCAyLCAxLCAyLCAyLCAyLCAyLCAyLCAyLCAx
CV1=
CSMgcGVybXV0ZWQgY2hvaWNlIGtleSAodGFibGUgMil=
CV9fcGMyID0gW/==
CQkxMywgMTYsIDEwLCAyMywgIDAsICA0LG==
CQkgMiwgMjcsIDE0LCAgNSwgMjAsICA5LE==
CQkyMiwgMTgsIDExLCAgMywgMjUsICA3LD==
CQkxNSwgIDYsIDI2LCAxOSwgMTIsICAxLB==
CQk0MCwgNTEsIDMwLCAzNiwgNDYsIDU0LG==
CQkyOSwgMzksIDUwLCA0NCwgMzIsIDQ3LG==
CQk0MywgNDgsIDM4LCA1NSwgMzMsIDUyLG==
CQk0NSwgNDEsIDQ5LCAzNSwgMjgsIDMx
CV1=
CSMgaW5pdGlhbCBwZXJtdXRhdGlvbiBJUJ==
CV9faXAgPSBbNTcsIDQ5LCA0MSwgMzMsIDI1LCAxNywgOSwgIDEs
CQk1OSwgNTEsIDQzLCAzNSwgMjcsIDE5LCAxMSwgMyy=
CQk2MSwgNTMsIDQ1LCAzNywgMjksIDIxLCAxMywgNSx=
CQk2MywgNTUsIDQ3LCAzOSwgMzEsIDIzLCAxNSwgNyx=
CQk1NiwgNDgsIDQwLCAzMiwgMjQsIDE2LCA4LCAgMCx=
CQk1OCwgNTAsIDQyLCAzNCwgMjYsIDE4LCAxMCwgMix=
CQk2MCwgNTIsIDQ0LCAzNiwgMjgsIDIwLCAxMiwgNCw=
CQk2MiwgNTQsIDQ2LCAzOCwgMzAsIDIyLCAxNCwgNo==
CV3=
CSMgRXhwYW5zaW9uIHRhYmxlIGZvciB0dXJuaW5nIDMyIGJpdCBibG9ja3MgaW50byA0OCBiaXRz
CV9fZXhwYW5zaW9uX3RhYmxlID0gWz==
CQkzMSwgIDAsICAxLCAgMiwgIDMsICA0LG==
CQkgMywgIDQsICA1LCAgNiwgIDcsICA4LO==
CQkgNywgIDgsICA5LCAxMCwgMTEsIDEyLF==
CQkxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LE==
CQkxNSwgMTYsIDE3LCAxOCwgMTksIDIwLH==
CQkxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LN==
CQkyMywgMjQsIDI1LCAyNiwgMjcsIDI4LA==
CQkyNywgMjgsIDI5LCAzMCwgMzEsICAw
CV0=
CSMgVGhlIChpbilmYW1vdXMgUy1ib3hlcw==
CV9fc2JveCA9IFs=
CQkjIFMx
CQlbMTQsIDQsIDEzLCAxLCAyLCAxNSwgMTEsIDgsIDMsIDEwLCA2LCAxMiwgNSwgOSwgMCwgNyw=
CQkgMCwgMTUsIDcsIDQsIDE0LCAyLCAxMywgMSwgMTAsIDYsIDEyLCAxMSwgOSwgNSwgMywgOCw=
CQkgNCwgMSwgMTQsIDgsIDEzLCA2LCAyLCAxMSwgMTUsIDEyLCA5LCA3LCAzLCAxMCwgNSwgMCw=
CQkgMTUsIDEyLCA4LCAyLCA0LCA5LCAxLCA3LCA1LCAxMSwgMywgMTQsIDEwLCAwLCA2LCAxM10s
CQkjIFMy
CQlbMTUsIDEsIDgsIDE0LCA2LCAxMSwgMywgNCwgOSwgNywgMiwgMTMsIDEyLCAwLCA1LCAxMCw=
CQkgMywgMTMsIDQsIDcsIDE1LCAyLCA4LCAxNCwgMTIsIDAsIDEsIDEwLCA2LCA5LCAxMSwgNSw=
CQkgMCwgMTQsIDcsIDExLCAxMCwgNCwgMTMsIDEsIDUsIDgsIDEyLCA2LCA5LCAzLCAyLCAxNSw=
CQkgMTMsIDgsIDEwLCAxLCAzLCAxNSwgNCwgMiwgMTEsIDYsIDcsIDEyLCAwLCA1LCAxNCwgOV0s
CQkjIFMz
CQlbMTAsIDAsIDksIDE0LCA2LCAzLCAxNSwgNSwgMSwgMTMsIDEyLCA3LCAxMSwgNCwgMiwgOCw=
CQkgMTMsIDcsIDAsIDksIDMsIDQsIDYsIDEwLCAyLCA4LCA1LCAxNCwgMTIsIDExLCAxNSwgMSw=
CQkgMTMsIDYsIDQsIDksIDgsIDE1LCAzLCAwLCAxMSwgMSwgMiwgMTIsIDUsIDEwLCAxNCwgNyw=
CQkgMSwgMTAsIDEzLCAwLCA2LCA5LCA4LCA3LCA0LCAxNSwgMTQsIDMsIDExLCA1LCAyLCAxMl0s
CQkjIFM0
CQlbNywgMTMsIDE0LCAzLCAwLCA2LCA5LCAxMCwgMSwgMiwgOCwgNSwgMTEsIDEyLCA0LCAxNSw=
CQkgMTMsIDgsIDExLCA1LCA2LCAxNSwgMCwgMywgNCwgNywgMiwgMTIsIDEsIDEwLCAxNCwgOSw=
CQkgMTAsIDYsIDksIDAsIDEyLCAxMSwgNywgMTMsIDE1LCAxLCAzLCAxNCwgNSwgMiwgOCwgNCw=
CQkgMywgMTUsIDAsIDYsIDEwLCAxLCAxMywgOCwgOSwgNCwgNSwgMTEsIDEyLCA3LCAyLCAxNF0s
CQkjIFM1
CQlbMiwgMTIsIDQsIDEsIDcsIDEwLCAxMSwgNiwgOCwgNSwgMywgMTUsIDEzLCAwLCAxNCwgOSw=
CQkgMTQsIDExLCAyLCAxMiwgNCwgNywgMTMsIDEsIDUsIDAsIDE1LCAxMCwgMywgOSwgOCwgNiw=
CQkgNCwgMiwgMSwgMTEsIDEwLCAxMywgNywgOCwgMTUsIDksIDEyLCA1LCA2LCAzLCAwLCAxNCw=
CQkgMTEsIDgsIDEyLCA3LCAxLCAxNCwgMiwgMTMsIDYsIDE1LCAwLCA5LCAxMCwgNCwgNSwgM10s
CQkjIFM2
CQlbMTIsIDEsIDEwLCAxNSwgOSwgMiwgNiwgOCwgMCwgMTMsIDMsIDQsIDE0LCA3LCA1LCAxMSw=
CQkgMTAsIDE1LCA0LCAyLCA3LCAxMiwgOSwgNSwgNiwgMSwgMTMsIDE0LCAwLCAxMSwgMywgOCw=
CQkgOSwgMTQsIDE1LCA1LCAyLCA4LCAxMiwgMywgNywgMCwgNCwgMTAsIDEsIDEzLCAxMSwgNiw=
CQkgNCwgMywgMiwgMTIsIDksIDUsIDE1LCAxMCwgMTEsIDE0LCAxLCA3LCA2LCAwLCA4LCAxM10s
CQkjIFM3
CQlbNCwgMTEsIDIsIDE0LCAxNSwgMCwgOCwgMTMsIDMsIDEyLCA5LCA3LCA1LCAxMCwgNiwgMSw=
CQkgMTMsIDAsIDExLCA3LCA0LCA5LCAxLCAxMCwgMTQsIDMsIDUsIDEyLCAyLCAxNSwgOCwgNiw=
CQkgMSwgNCwgMTEsIDEzLCAxMiwgMywgNywgMTQsIDEwLCAxNSwgNiwgOCwgMCwgNSwgOSwgMiw=
CQkgNiwgMTEsIDEzLCA4LCAxLCA0LCAxMCwgNywgOSwgNSwgMCwgMTUsIDE0LCAyLCAzLCAxMl0s
CQkjIFM4
CQlbMTMsIDIsIDgsIDQsIDYsIDE1LCAxMSwgMSwgMTAsIDksIDMsIDE0LCA1LCAwLCAxMiwgNyw=
CQkgMSwgMTUsIDEzLCA4LCAxMCwgMywgNywgNCwgMTIsIDUsIDYsIDExLCAwLCAxNCwgOSwgMiw=
CQkgNywgMTEsIDQsIDEsIDksIDEyLCAxNCwgMiwgMCwgNiwgMTAsIDEzLCAxNSwgMywgNSwgOCw=
CQkgMiwgMSwgMTQsIDcsIDQsIDEwLCA4LCAxMywgMTUsIDEyLCA5LCAwLCAzLCA1LCA2LCAxMV0s
CV0=
CSMgMzItYml0IHBlcm11dGF0aW9uIGZ1bmN0aW9uIFAgdXNlZCBvbiB0aGUgb3V0cHV0IG9mIHRoZSBTLWJveGVz
CV9fcCA9IFs=
CQkxNSwgNiwgMTksIDIwLCAyOCwgMTEs
CQkyNywgMTYsIDAsIDE0LCAyMiwgMjUs
CQk0LCAxNywgMzAsIDksIDEsIDcs
CQkyMywxMywgMzEsIDI2LCAyLCA4LA==
CQkxOCwgMTIsIDI5LCA1LCAyMSwgMTAs
CQkzLCAyNA==
CV0=
CSMgZmluYWwgcGVybXV0YXRpb24gSVBeLTE=
CV9fZnAgPSBb
CQkzOSwgIDcsIDQ3LCAxNSwgNTUsIDIzLCA2MywgMzEs
CQkzOCwgIDYsIDQ2LCAxNCwgNTQsIDIyLCA2MiwgMzAs
CQkzNywgIDUsIDQ1LCAxMywgNTMsIDIxLCA2MSwgMjks
CQkzNiwgIDQsIDQ0LCAxMiwgNTIsIDIwLCA2MCwgMjgs
CQkzNSwgIDMsIDQzLCAxMSwgNTEsIDE5LCA1OSwgMjcs
CQkzNCwgIDIsIDQyLCAxMCwgNTAsIDE4LCA1OCwgMjYs
CQkzMywgIDEsIDQxLCAgOSwgNDksIDE3LCA1NywgMjUs
CQkzMiwgIDAsIDQwLCAgOCwgNDgsIDE2LCA1NiwgMjQ=
CV0=
CSMgVHlwZSBvZiBjcnlwdGluZyBiZWluZyBkb25l
CUVOQ1JZUFQgPQkweDAw
CURFQ1JZUFQgPQkweDAx
CSMgSW5pdGlhbGlzYXRpb24=
CWRlZiBfX2luaXRfXyhzZWxmLCBrZXksIG1vZGU9RUNCLCBJVj1Ob25lKTo=
CQlpZiBsZW4oa2V5KSAhPSA4Og==
CQkJcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBERVMga2V5IHNpemUuIEtleSBtdXN0IGJlIGV4YWN0bHkgOCBieXRlcyBsb25nLiIp
CQlzZWxmLmJsb2NrX3NpemUgPSA4
CQlzZWxmLmtleV9zaXplID0gOA==
CQlzZWxmLl9fcGFkZGluZyA9ICcn
CQkjIFNldCB0aGUgcGFzc2VkIGluIHZhcmlhYmxlcw==
CQlzZWxmLnNldE1vZGUobW9kZSk=
CQlpZiBJVjo=
CQkJc2VsZi5zZXRJVihJVik=
CQlzZWxmLkwgPSBbXQ==
CQlzZWxmLlIgPSBbXQ==
CQlzZWxmLktuID0gWyBbMF0gKiA0OCBdICogMTYJIyAxNiA0OC1iaXQga2V5cyAoSzEgLSBLMTYp
CQlzZWxmLmZpbmFsID0gW10=
CQlzZWxmLnNldEtleShrZXkp
CWRlZiBnZXRLZXkoc2VsZik6
CQkiIiJnZXRLZXkoKSAtPiBzdHJpbmciIiI=
CQlyZXR1cm4gc2VsZi5fX2tleQ==
CWRlZiBzZXRLZXkoc2VsZiwga2V5KTo=
CQkiIiJXaWxsIHNldCB0aGUgY3J5cHRpbmcga2V5IGZvciB0aGlzIG9iamVjdC4gTXVzdCBiZSA4IGJ5dGVzLiIiIg==
CQlzZWxmLl9fa2V5ID0ga2V5
CQlzZWxmLl9fY3JlYXRlX3N1Yl9rZXlzKCk=
CWRlZiBnZXRNb2RlKHNlbGYpOg==
CQkiIiJnZXRNb2RlKCkgLT4gcHlEZXMuRUNCIG9yIHB5RGVzLkNCQyIiIg==
CQlyZXR1cm4gc2VsZi5fX21vZGU=
CWRlZiBzZXRNb2RlKHNlbGYsIG1vZGUpOg==
CQkiIiJTZXRzIHRoZSB0eXBlIG9mIGNyeXB0aW5nIG1vZGUsIHB5RGVzLkVDQiBvciBweURlcy5DQkMiIiI=
CQlzZWxmLl9fbW9kZSA9IG1vZGU=
CWRlZiBnZXRJVihzZWxmKTo=
CQkiIiJnZXRJVigpIC0+IHN0cmluZyIiIg==
CQlyZXR1cm4gc2VsZi5fX2l2
CWRlZiBzZXRJVihzZWxmLCBJVik6
CQkiIiJXaWxsIHNldCB0aGUgSW5pdGlhbCBWYWx1ZSwgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIENCQyBtb2RlIiIi
CQlpZiBub3QgSVYgb3IgbGVuKElWKSAhPSBzZWxmLmJsb2NrX3NpemU6
CQkJcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBJbml0aWFsIFZhbHVlIChJViksIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAiICsgc3RyKHNlbGYuYmxvY2tfc2l6ZSkgKyAiIGJ5dGVzIik=
CQlzZWxmLl9faXYgPSBJVg==
CWRlZiBnZXRQYWRkaW5nKHNlbGYpOg==
CQkiIiJnZXRQYWRkaW5nKCkgLT4gc3RyaW5nIG9mIGxlbmd0aCAxLiBQYWRkaW5nIGNoYXJhY3Rlci4iIiI=
CQlyZXR1cm4gc2VsZi5fX3BhZGRpbmc=
CWRlZiBfX1N0cmluZ190b19CaXRMaXN0KHNlbGYsIGRhdGEpOg==
CQkiIiJUdXJuIHRoZSBzdHJpbmcgZGF0YSwgaW50byBhIGxpc3Qgb2YgYml0cyAoMSwgMCkncyIiIg==
CQlsID0gbGVuKGRhdGEpICogOA==
CQlyZXN1bHQgPSBbMF0gKiBs
CQlwb3MgPSAw
CQlmb3IgYyBpbiBkYXRhOg==
CQkJaSA9IDc=
CQkJY2ggPSBvcmQoYyk=
CQkJd2hpbGUgaSA+PSAwOg==
CQkJCWlmIGNoICYgKDEgPDwgaSkgIT0gMDo=
CQkJCQlyZXN1bHRbcG9zXSA9IDE=
CQkJCWVsc2U6
CQkJCQlyZXN1bHRbcG9zXSA9IDA=
CQkJCXBvcyArPSAx
CQkJCWkgLT0gMQ==
CQlyZXR1cm4gcmVzdWx0
CWRlZiBfX0JpdExpc3RfdG9fU3RyaW5nKHNlbGYsIGRhdGEpOg==
CQkiIiJUdXJuIHRoZSBsaXN0IG9mIGJpdHMgLT4gZGF0YSwgaW50byBhIHN0cmluZyIiIg==
CQlyZXN1bHQgPSAnJw==
CQlwb3MgPSAw
CQljID0gMA==
CQl3aGlsZSBwb3MgPCBsZW4oZGF0YSk6
CQkJYyArPSBkYXRhW3Bvc10gPDwgKDcgLSAocG9zICUgOCkp
CQkJaWYgKHBvcyAlIDgpID09IDc6
CQkJCXJlc3VsdCArPSBjaHIoYyk=
CQkJCWMgPSAw
CQkJcG9zICs9IDE=
CQlyZXR1cm4gcmVzdWx0
CWRlZiBfX3Blcm11dGF0ZShzZWxmLCB0YWJsZSwgYmxvY2spOg==
CQkiIiJQZXJtdXRhdGUgdGhpcyBibG9jayB3aXRoIHRoZSBzcGVjaWZpZWQgdGFibGUiIiI=
CQlyZXR1cm4gbWFwKGxhbWJkYSB4OiBibG9ja1t4XSwgdGFibGUp
CQkJIyBUcmFuc2Zvcm0gdGhlIHNlY3JldCBrZXksIHNvIHRoYXQgaXQgaXMgcmVhZHkgZm9yIGRhdGEgcHJvY2Vzc2luZw==
CSMgQ3JlYXRlIHRoZSAxNiBzdWJrZXlzLCBLWzFdIC0gS1sxNl0=
CWRlZiBfX2NyZWF0ZV9zdWJfa2V5cyhzZWxmKTo=
CQkiIiJDcmVhdGUgdGhlIDE2IHN1YmtleXMgS1sxXSB0byBLWzE2XSBmcm9tIHRoZSBnaXZlbiBrZXkiIiI=
CQlrZXkgPSBzZWxmLl9fcGVybXV0YXRlKGRlcy5fX3BjMSwgc2VsZi5fX1N0cmluZ190b19CaXRMaXN0KHNlbGYuZ2V0S2V5KCkpKQ==
CQlpID0gMA==
CQkjIFNwbGl0IGludG8gTGVmdCBhbmQgUmlnaHQgc2VjdGlvbnM=
CQlzZWxmLkwgPSBrZXlbOjI4XQ==
CQlzZWxmLlIgPSBrZXlbMjg6XQ==
CQl3aGlsZSBpIDwgMTY6
CQkJaiA9IDA=
CQkJIyBQZXJmb3JtIGNpcmN1bGFyIGxlZnQgc2hpZnRz
CQkJd2hpbGUgaiA8IGRlcy5fX2xlZnRfcm90YXRpb25zW2ldOg==
CQkJCXNlbGYuTC5hcHBlbmQoc2VsZi5MWzBdKQ==
CQkJCWRlbCBzZWxmLkxbMF0=
CQkJCXNlbGYuUi5hcHBlbmQoc2VsZi5SWzBdKQ==
CQkJCWRlbCBzZWxmLlJbMF0=
CQkJCWogKz0gMQ==
CQkJIyBDcmVhdGUgb25lIG9mIHRoZSAxNiBzdWJrZXlzIHRocm91Z2ggcGMyIHBlcm11dGF0aW9u
CQkJc2VsZi5LbltpXSA9IHNlbGYuX19wZXJtdXRhdGUoZGVzLl9fcGMyLCBzZWxmLkwgKyBzZWxmLlIp
CQkJaSArPSAx
CSMgTWFpbiBwYXJ0IG9mIHRoZSBlbmNyeXB0aW9uIGFsZ29yaXRobSwgdGhlIG51bWJlciBjcnVuY2hlciA6KQ==
CWRlZiBfX2Rlc19jcnlwdChzZWxmLCBibG9jaywgY3J5cHRfdHlwZSk6
CQkiIiJDcnlwdCB0aGUgYmxvY2sgb2YgZGF0YSB0aHJvdWdoIERFUyBiaXQtbWFuaXB1bGF0aW9uIiIi
CQlibG9jayA9IHNlbGYuX19wZXJtdXRhdGUoZGVzLl9faXAsIGJsb2NrKQ==
CQlzZWxmLkwgPSBibG9ja1s6MzJd
CQlzZWxmLlIgPSBibG9ja1szMjpd
CQkjIEVuY3J5cHRpb24gc3RhcnRzIGZyb20gS25bMV0gdGhyb3VnaCB0byBLblsxNl0=
CQlpZiBjcnlwdF90eXBlID09IGRlcy5FTkNSWVBUOg==
CQkJaXRlcmF0aW9uID0gMA==
CQkJaXRlcmF0aW9uX2FkanVzdG1lbnQgPSAx
CQkjIERlY3J5cHRpb24gc3RhcnRzIGZyb20gS25bMTZdIGRvd24gdG8gS25bMV0=
CQllbHNlOg==
CQkJaXRlcmF0aW9uID0gMTU=
CQkJaXRlcmF0aW9uX2FkanVzdG1lbnQgPSAtMQ==
CQlpID0gMA==
CQl3aGlsZSBpIDwgMTY6
CQkJIyBNYWtlIGEgY29weSBvZiBSW2ktMV0sIHRoaXMgd2lsbCBsYXRlciBiZWNvbWUgTFtpXQ==
CQkJdGVtcFIgPSBzZWxmLlJbOl0=
CQkJIyBQZXJtdXRhdGUgUltpIC0gMV0gdG8gc3RhcnQgY3JlYXRpbmcgUltpXQ==
CQkJc2VsZi5SID0gc2VsZi5fX3Blcm11dGF0ZShkZXMuX19leHBhbnNpb25fdGFibGUsIHNlbGYuUik=
CQkJIyBFeGNsdXNpdmUgb3IgUltpIC0gMV0gd2l0aCBLW2ldLCBjcmVhdGUgQlsxXSB0byBCWzhdIHdoaWxzdCBoZXJl
CQkJc2VsZi5SID0gbWFwKGxhbWJkYSB4LCB5OiB4IF4geSwgc2VsZi5SLCBzZWxmLktuW2l0ZXJhdGlvbl0p
CQkJQiA9IFtzZWxmLlJbOjZdLCBzZWxmLlJbNjoxMl0sIHNlbGYuUlsxMjoxOF0sIHNlbGYuUlsxODoyNF0sIHNlbGYuUlsyNDozMF0sIHNlbGYuUlszMDozNl0sIHNlbGYuUlszNjo0Ml0sIHNlbGYuUls0MjpdXQ==
CQkJIyBPcHRpbWl6YXRpb246IFJlcGxhY2VkIGJlbG93IGNvbW1lbnRlZCBjb2RlIHdpdGggYWJvdmU=
CQkJI2ogPSAw
CQkJI0IgPSBbXQ==
CQkJI3doaWxlIGogPCBsZW4oc2VsZi5SKTo=
CQkJIwlzZWxmLlJbal0gPSBzZWxmLlJbal0gXiBzZWxmLktuW2l0ZXJhdGlvbl1bal0=
CQkJIwlqICs9IDE=
CQkJIwlpZiBqICUgNiA9PSAwOg==
CQkJIwkJQi5hcHBlbmQoc2VsZi5SW2otNjpqXSk=
CQkJIyBQZXJtdXRhdGUgQlsxXSB0byBCWzhdIHVzaW5nIHRoZSBTLUJveGVz
CQkJaiA9IDA=
CQkJQm4gPSBbMF0gKiAzMg==
CQkJcG9zID0gMA==
CQkJd2hpbGUgaiA8IDg6
CQkJCSMgV29yayBvdXQgdGhlIG9mZnNldHM=
CQkJCW0gPSAoQltqXVswXSA8PCAxKSArIEJbal1bNV0=
CQkJCW4gPSAoQltqXVsxXSA8PCAzKSArIChCW2pdWzJdIDw8IDIpICsgKEJbal1bM10gPDwgMSkgKyBCW2pdWzRd
CQkJCSMgRmluZCB0aGUgcGVybXV0YXRpb24gdmFsdWU=
CQkJCXYgPSBkZXMuX19zYm94W2pdWyhtIDw8IDQpICsgbl0=
CQkJCSMgVHVybiB2YWx1ZSBpbnRvIGJpdHMsIGFkZCBpdCB0byByZXN1bHQ6IEJu
CQkJCUJuW3Bvc10gPSAodiAmIDgpID4+IDM=
CQkJCUJuW3BvcyArIDFdID0gKHYgJiA0KSA+PiAy
CQkJCUJuW3BvcyArIDJdID0gKHYgJiAyKSA+PiAx
CQkJCUJuW3BvcyArIDNdID0gdiAmIDE=
CQkJCXBvcyArPSA0
CQkJCWogKz0gMQ==
CQkJIyBQZXJtdXRhdGUgdGhlIGNvbmNhdGluYXRpb24gb2YgQlsxXSB0byBCWzhdIChCbik=
CQkJc2VsZi5SID0gc2VsZi5fX3Blcm11dGF0ZShkZXMuX19wLCBCbik=
CQkJIyBYb3Igd2l0aCBMW2kgLSAxXQ==
CQkJc2VsZi5SID0gbWFwKGxhbWJkYSB4LCB5OiB4IF4geSwgc2VsZi5SLCBzZWxmLkwp
CQkJIyBPcHRpbWl6YXRpb246IFRoaXMgbm93IHJlcGxhY2VzIHRoZSBiZWxvdyBjb21tZW50ZWQgY29kZQ==
CQkJI2ogPSAw
CQkJI3doaWxlIGogPCBsZW4oc2VsZi5SKTo=
CQkJIwlzZWxmLlJbal0gPSBzZWxmLlJbal0gXiBzZWxmLkxbal0=
CQkJIwlqICs9IDE=
CQkJIyBMW2ldIGJlY29tZXMgUltpIC0gMV0=
CQkJc2VsZi5MID0gdGVtcFI=
CQkJaSArPSAx
CQkJaXRlcmF0aW9uICs9IGl0ZXJhdGlvbl9hZGp1c3RtZW50
CQkJIyBGaW5hbCBwZXJtdXRhdGlvbiBvZiBSWzE2XUxbMTZd
CQlzZWxmLmZpbmFsID0gc2VsZi5fX3Blcm11dGF0ZShkZXMuX19mcCwgc2VsZi5SICsgc2VsZi5MKQ==
CQlyZXR1cm4gc2VsZi5maW5hbA==
CSMgRGF0YSB0byBiZSBlbmNyeXB0ZWQvZGVjcnlwdGVk
CWRlZiBjcnlwdChzZWxmLCBkYXRhLCBjcnlwdF90eXBlKTo=
CQkiIiJDcnlwdCB0aGUgZGF0YSBpbiBibG9ja3MsIHJ1bm5pbmcgaXQgdGhyb3VnaCBkZXNfY3J5cHQoKSIiIg==
CQkjIEVycm9yIGNoZWNrIHRoZSBkYXRh
CQlpZiBub3QgZGF0YTo=
CQkJcmV0dXJuICcn
CQlpZiBsZW4oZGF0YSkgJSBzZWxmLmJsb2NrX3NpemUgIT0gMDo=
CQkJaWYgY3J5cHRfdHlwZSA9PSBkZXMuREVDUllQVDogIyBEZWNyeXB0aW9uIG11c3Qgd29yayBvbiA4IGJ5dGUgYmxvY2tz
CQkJCXJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgZGF0YSBsZW5ndGgsIGRhdGEgbXVzdCBiZSBhIG11bHRpcGxlIG9mICIgKyBzdHIoc2VsZi5ibG9ja19zaXplKSArICIgYnl0ZXNcbi4iKQ==
CQkJaWYgbm90IHNlbGYuZ2V0UGFkZGluZygpOg==
CQkJCXJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgZGF0YSBsZW5ndGgsIGRhdGEgbXVzdCBiZSBhIG11bHRpcGxlIG9mICIgKyBzdHIoc2VsZi5ibG9ja19zaXplKSArICIgYnl0ZXNcbi4gVHJ5IHNldHRpbmcgdGhlIG9wdGlvbmFsIHBhZGRpbmcgY2hhcmFjdGVyIik=
CQkJZWxzZTo=
CQkJCWRhdGEgKz0gKHNlbGYuYmxvY2tfc2l6ZSAtIChsZW4oZGF0YSkgJSBzZWxmLmJsb2NrX3NpemUpKSAqIHNlbGYuZ2V0UGFkZGluZygp
CQkJIyBwcmludCAiTGVuIG9mIGRhdGE6ICVmIiAlIChsZW4oZGF0YSkgLyBzZWxmLmJsb2NrX3NpemUp
CQlpZiBzZWxmLmdldE1vZGUoKSA9PSBDQkM6
CQkJaWYgc2VsZi5nZXRJVigpOg==
CQkJCWl2ID0gc2VsZi5fX1N0cmluZ190b19CaXRMaXN0KHNlbGYuZ2V0SVYoKSk=
CQkJZWxzZTo=
CQkJCXJhaXNlIFZhbHVlRXJyb3IoIkZvciBDQkMgbW9kZSwgeW91IG11c3Qgc3VwcGx5IHRoZSBJbml0aWFsIFZhbHVlIChJVikgZm9yIGNpcGhlcmluZyIp
CQkjIFNwbGl0IHRoZSBkYXRhIGludG8gYmxvY2tzLCBjcnlwdGluZyBlYWNoIG9uZSBzZXBlcmF0ZWx5
CQlpID0gMA==
CQlkaWN0ID0ge30=
CQlyZXN1bHQgPSBbXQ==
CQkjY2FjaGVkID0gMA==
CQkjbGluZXMgPSAw
CQl3aGlsZSBpIDwgbGVuKGRhdGEpOg==
CQkJIyBUZXN0IGNvZGUgZm9yIGNhY2hpbmcgZW5jcnlwdGlvbiByZXN1bHRz
CQkJI2xpbmVzICs9IDE=
CQkJI2lmIGRpY3QuaGFzX2tleShkYXRhW2k6aSs4XSk6
CQkJCSNwcmludCAiQ2FjaGVkIHJlc3VsdCBmb3I6ICVzIiAlIGRhdGFbaTppKzhd
CQkJIwljYWNoZWQgKz0gMQ==
CQkJIwlyZXN1bHQuYXBwZW5kKGRpY3RbZGF0YVtpOmkrOF1dKQ==
CQkJIwlpICs9IDg=
CQkJIwljb250aW51ZQ==
CQkJCQkJYmxvY2sgPSBzZWxmLl9fU3RyaW5nX3RvX0JpdExpc3QoZGF0YVtpOmkrOF0p
CQkJIyBYb3Igd2l0aCBJViBpZiB1c2luZyBDQkMgbW9kZQ==
CQkJaWYgc2VsZi5nZXRNb2RlKCkgPT0gQ0JDOg==
CQkJCWlmIGNyeXB0X3R5cGUgPT0gZGVzLkVOQ1JZUFQ6
CQkJCQlibG9jayA9IG1hcChsYW1iZGEgeCwgeTogeCBeIHksIGJsb2NrLCBpdik=
CQkJCQkjaiA9IDA=
CQkJCQkjd2hpbGUgaiA8IGxlbihibG9jayk6
CQkJCQkjCWJsb2NrW2pdID0gYmxvY2tbal0gXiBpdltqXQ==
CQkJCQkjCWogKz0gMQ==
CQkJCXByb2Nlc3NlZF9ibG9jayA9IHNlbGYuX19kZXNfY3J5cHQoYmxvY2ssIGNyeXB0X3R5cGUp
CQkJCWlmIGNyeXB0X3R5cGUgPT0gZGVzLkRFQ1JZUFQ6
CQkJCQlwcm9jZXNzZWRfYmxvY2sgPSBtYXAobGFtYmRhIHgsIHk6IHggXiB5LCBwcm9jZXNzZWRfYmxvY2ssIGl2KQ==
CQkJCQkjaiA9IDA=
CQkJCQkjd2hpbGUgaiA8IGxlbihwcm9jZXNzZWRfYmxvY2spOg==
CQkJCQkjCXByb2Nlc3NlZF9ibG9ja1tqXSA9IHByb2Nlc3NlZF9ibG9ja1tqXSBeIGl2W2pd
CQkJCQkjCWogKz0gMQ==
CQkJCQlpdiA9IGJsb2Nr
CQkJCWVsc2U6
CQkJCQlpdiA9IHByb2Nlc3NlZF9ibG9jaw==
CQkJZWxzZTo=
CQkJCXByb2Nlc3NlZF9ibG9jayA9IHNlbGYuX19kZXNfY3J5cHQoYmxvY2ssIGNyeXB0X3R5cGUp
CQkJIyBBZGQgdGhlIHJlc3VsdGluZyBjcnlwdGVkIGJsb2NrIHRvIG91ciBsaXN0
CQkJI2QgPSBzZWxmLl9fQml0TGlzdF90b19TdHJpbmcocHJvY2Vzc2VkX2Jsb2NrKQ==
CQkJI3Jlc3VsdC5hcHBlbmQoZCk=
CQkJcmVzdWx0LmFwcGVuZChzZWxmLl9fQml0TGlzdF90b19TdHJpbmcocHJvY2Vzc2VkX2Jsb2NrKSk=
CQkJI2RpY3RbZGF0YVtpOmkrOF1dID0gZA==
CQkJaSArPSA4
CQkjIHByaW50ICJMaW5lczogJWQsIGNhY2hlZDogJWQiICUgKGxpbmVzLCBjYWNoZWQp
CQkjIFJlbW92ZSB0aGUgcGFkZGluZyBmcm9tIHRoZSBsYXN0IGJsb2Nr
CQlpZiBjcnlwdF90eXBlID09IGRlcy5ERUNSWVBUIGFuZCBzZWxmLmdldFBhZGRpbmcoKTo=
CQkJI3ByaW50ICJSZW1vdmluZyBkZWNyeXB0IHBhZCI=
CQkJcyA9IHJlc3VsdFstMV0=
CQkJd2hpbGUgc1stMV0gPT0gc2VsZi5nZXRQYWRkaW5nKCk6
CQkJCXMgPSBzWzotMV0=
CQkJcmVzdWx0Wy0xXSA9IHM=
CQkjIFJldHVybiB0aGUgZnVsbCBjcnlwdGVkIHN0cmluZw==
CQlyZXR1cm4gJycuam9pbihyZXN1bHQp
CWRlZiBlbmNyeXB0KHNlbGYsIGRhdGEsIHBhZD0nJyk6
CQkiIiJlbmNyeXB0KGRhdGEsIFtwYWRdKSAtPiBzdHJpbmc=
CQlkYXRhIDogU3RyaW5nIHRvIGJlIGVuY3J5cHRlZA==
CQlwYWQgIDogT3B0aW9uYWwgYXJndW1lbnQgZm9yIGVuY3J5cHRpb24gcGFkZGluZy4gTXVzdCBvbmx5IGJlIG9uZSBieXRl
CQlUaGUgZGF0YSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgOCBieXRlcyBhbmQgd2lsbCBiZSBlbmNyeXB0ZWQ=
CQl3aXRoIHRoZSBhbHJlYWR5IHNwZWNpZmllZCBrZXkuIERhdGEgZG9lcyBub3QgaGF2ZSB0byBiZSBh
CQltdWx0aXBsZSBvZiA4IGJ5dGVzIGlmIHRoZSBwYWRkaW5nIGNoYXJhY3RlciBpcyBzdXBwbGllZCwgdGhl
CQlkYXRhIHdpbGwgdGhlbiBiZSBwYWRkZWQgdG8gYSBtdWx0aXBsZSBvZiA4IGJ5dGVzIHdpdGggdGhpcw==
CQlwYWQgY2hhcmFjdGVyLg==
CQkiIiI=
CQlzZWxmLl9fcGFkZGluZyA9IHBhZA==
CQlyZXR1cm4gc2VsZi5jcnlwdChkYXRhLCBkZXMuRU5DUllQVCk=
CWRlZiBkZWNyeXB0KHNlbGYsIGRhdGEsIHBhZD0nJyk6
CQkiIiJkZWNyeXB0KGRhdGEsIFtwYWRdKSAtPiBzdHJpbmc=
CQlkYXRhIDogU3RyaW5nIHRvIGJlIGVuY3J5cHRlZA==
CQlwYWQgIDogT3B0aW9uYWwgYXJndW1lbnQgZm9yIGRlY3J5cHRpb24gcGFkZGluZy4gTXVzdCBvbmx5IGJlIG9uZSBieXRl
CQlUaGUgZGF0YSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgOCBieXRlcyBhbmQgd2lsbCBiZSBkZWNyeXB0ZWQ=
CQl3aXRoIHRoZSBhbHJlYWR5IHNwZWNpZmllZCBrZXkuIElmIHRoZSBvcHRpb25hbCBwYWRkaW5nIGNoYXJhY3Rlcg==
CQlpcyBzdXBwbGllZCwgdGhlbiB0aGUgdW4tZW5jeXB0ZWQgZGF0YSB3aWxsIGhhdmUgdGhlIHBhZGRpbmcgY2hhcmFjdGVycw==
CQlyZW1vdmVkIGZyb20gdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiBUaGlzIHBhZCByZW1vdmFsIG9ubHkgb2NjdXJzIG9uIHRoZQ==
CQlsYXN0IDggYnl0ZXMgb2YgdGhlIGRhdGEgKGxhc3QgZGF0YSBibG9jayku
CQkiIiI=
CQlzZWxmLl9fcGFkZGluZyA9IHBhZA==
CQlyZXR1cm4gc2VsZi5jcnlwdChkYXRhLCBkZXMuREVDUllQVCk=
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM=
IyAJCQkJVHJpcGxlIERFUwkJCQkgICAgIw==
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM=
Y2xhc3MgdHJpcGxlX2Rlczo=
CSIiIlRyaXBsZSBERVMgZW5jcnlwdGlvbi9kZWNyeXRwaW9uIGNsYXNz
CVRoaXMgYWxnb3JpdGhtIHVzZXMgdGhlIERFUy1FREUzICh3aGVuIGEgMjQgYnl0ZSBrZXkgaXMgc3VwcGxpZWQpIG9y
CXRoZSBERVMtRURFMiAod2hlbiBhIDE2IGJ5dGUga2V5IGlzIHN1cHBsaWVkKSBlbmNyeXB0aW9uIG1ldGhvZHMu
CVN1cHBvcnRzIEVDQiAoRWxlY3Ryb25pYyBDb2RlIEJvb2spIGFuZCBDQkMgKEN5cGhlciBCbG9jayBDaGFpbmluZykgbW9kZXMu
CXB5RGVzLmRlcyhrZXksIFttb2RlXSwgW0lWXSk=
CWtleSAgLT4gVGhlIGVuY3J5cHRpb24ga2V5IHN0cmluZywgbXVzdCBiZSBlaXRoZXIgMTYgb3IgMjQgYnl0ZXMgbG9uZw==
CW1vZGUgLT4gT3B0aW9uYWwgYXJndW1lbnQgZm9yIGVuY3J5cHRpb24gdHlwZSwgY2FuIGJlIGVpdGhlciBweURlcy5FQ0I=
CQkoRWxlY3Ryb25pYyBDb2RlIEJvb2spLCBweURlcy5DQkMgKEN5cGhlciBCbG9jayBDaGFpbmluZyk=
CUlWICAgLT4gT3B0aW9uYWwgc3RyaW5nIGFyZ3VtZW50LCBtdXN0IGJlIHN1cHBsaWVkIGlmIHVzaW5nIENCQyBtb2RlLg==
CQlNdXN0IGJlIDggYnl0ZXMgaW4gbGVuZ3RoLg==
CSIiIg==
CWRlZiBfX2luaXRfXyhzZWxmLCBrZXksIG1vZGU9RUNCLCBJVj1Ob25lKTo=
CQlzZWxmLmJsb2NrX3NpemUgPSA4
CQlzZWxmLnNldE1vZGUobW9kZSk=
CQlzZWxmLl9fcGFkZGluZyA9ICcn
CQlzZWxmLl9faXYgPSBJVg==
CQlzZWxmLnNldEtleShrZXkp
CWRlZiBnZXRLZXkoc2VsZik6
CQkiIiJnZXRLZXkoKSAtPiBzdHJpbmciIiI=
CQlyZXR1cm4gc2VsZi5fX2tleQ==
CWRlZiBzZXRLZXkoc2VsZiwga2V5KTo=
CQkiIiJXaWxsIHNldCB0aGUgY3J5cHRpbmcga2V5IGZvciB0aGlzIG9iamVjdC4gRWl0aGVyIDE2IG9yIDI0IGJ5dGVzIGxvbmcuIiIi
CQlzZWxmLmtleV9zaXplID0gMjQgICMgVXNlIERFUy1FREUzIG1vZGU=
CQlpZiBsZW4oa2V5KSAhPSBzZWxmLmtleV9zaXplOg==
CQkJaWYgbGVuKGtleSkgPT0gMTY6ICMgVXNlIERFUy1FREUyIG1vZGU=
CQkJCXNlbGYua2V5X3NpemUgPSAxNg==
CQkJZWxzZTo=
CQkJCXJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgdHJpcGxlIERFUyBrZXkgc2l6ZS4gS2V5IG11c3QgYmUgZWl0aGVyIDE2IG9yIDI0IGJ5dGVzIGxvbmciKQ==
CQlpZiBzZWxmLmdldE1vZGUoKSA9PSBDQkMgYW5kIChub3Qgc2VsZi5nZXRJVigpIG9yIGxlbihzZWxmLmdldElWKCkpICE9IHNlbGYuYmxvY2tfc2l6ZSk6
CQkJcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBJViwgbXVzdCBiZSA4IGJ5dGVzIGluIGxlbmd0aCIpICMjIFRPRE86IENoZWNrIHRoaXM=
CQkjIG1vZGVzIGdldCBoYW5kbGVkIGxhdGVyLCBzaW5jZSBDQkMgZ29lcyBvbiB0b3Agb2YgdGhlIHRyaXBsZS1kZXM=
CQlzZWxmLl9fa2V5MSA9IGRlcyhrZXlbOjhdKQ==
CQlzZWxmLl9fa2V5MiA9IGRlcyhrZXlbODoxNl0p
CQlpZiBzZWxmLmtleV9zaXplID09IDE2Og==
CQkJc2VsZi5fX2tleTMgPSBzZWxmLl9fa2V5MQ==
CQllbHNlOg==
CQkJc2VsZi5fX2tleTMgPSBkZXMoa2V5WzE2Ol0p
CQlzZWxmLl9fa2V5ID0ga2V5
CWRlZiBnZXRNb2RlKHNlbGYpOg==
CQkiIiJnZXRNb2RlKCkgLT4gcHlEZXMuRUNCIG9yIHB5RGVzLkNCQyIiIg==
CQlyZXR1cm4gc2VsZi5fX21vZGU=
CWRlZiBzZXRNb2RlKHNlbGYsIG1vZGUpOg==
CQkiIiJTZXRzIHRoZSB0eXBlIG9mIGNyeXB0aW5nIG1vZGUsIHB5RGVzLkVDQiBvciBweURlcy5DQkMiIiI=
CQlzZWxmLl9fbW9kZSA9IG1vZGU=
CWRlZiBnZXRJVihzZWxmKTo=
CQkiIiJnZXRJVigpIC0+IHN0cmluZyIiIg==
CQlyZXR1cm4gc2VsZi5fX2l2
CWRlZiBzZXRJVihzZWxmLCBJVik6
CQkiIiJXaWxsIHNldCB0aGUgSW5pdGlhbCBWYWx1ZSwgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIENCQyBtb2RlIiIi
CQlzZWxmLl9faXYgPSBJVg==
CWRlZiB4b3JzdHIoIHNlbGYsIHgsIHkgKTo=
CQkiIiJSZXR1cm5zIHRoZSBiaXR3aXNlIHhvciBvZiB0aGUgYnl0ZXMgaW4gdHdvIHN0cmluZ3MiIiI=
CQlpZiBsZW4oeCkgIT0gbGVuKHkpOg==
CQkJcmFpc2UgInN0cmluZyBsZW5ndGhzIGRpZmZlciAlZCAlZCIgJSAobGVuKHgpLCBsZW4oeSkp
CQlyZXQgPSAnJw==
CQlmb3IgaSBpbiByYW5nZShsZW4oeCkpOg==
CQkJcmV0ICs9IGNocihvcmQoeFtpXSkgXiBvcmQoeVtpXSkp
CQlyZXR1cm4gcmV0
CWRlZiBlbmNyeXB0KHNlbGYsIGRhdGEsIHBhZD0nJyk6
CQkiIiJlbmNyeXB0KGRhdGEsIFtwYWRdKSAtPiBzdHJpbmc=
CQlkYXRhIDogU3RyaW5nIHRvIGJlIGVuY3J5cHRlZA==
CQlwYWQgIDogT3B0aW9uYWwgYXJndW1lbnQgZm9yIGVuY3J5cHRpb24gcGFkZGluZy4gTXVzdCBvbmx5IGJlIG9uZSBieXRl
CQlUaGUgZGF0YSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgOCBieXRlcyBhbmQgd2lsbCBiZSBlbmNyeXB0ZWQ=
CQl3aXRoIHRoZSBhbHJlYWR5IHNwZWNpZmllZCBrZXkuIERhdGEgZG9lcyBub3QgaGF2ZSB0byBiZSBh
CQltdWx0aXBsZSBvZiA4IGJ5dGVzIGlmIHRoZSBwYWRkaW5nIGNoYXJhY3RlciBpcyBzdXBwbGllZCwgdGhl
CQlkYXRhIHdpbGwgdGhlbiBiZSBwYWRkZWQgdG8gYSBtdWx0aXBsZSBvZiA4IGJ5dGVzIHdpdGggdGhpcw==
CQlwYWQgY2hhcmFjdGVyLg==
CQkiIiI=
CQlpZiBzZWxmLmdldE1vZGUoKSA9PSBFQ0I6
CQkJIyBzaW1wbGU=
CQkJZGF0YSA9IHNlbGYuX19rZXkxLmVuY3J5cHQoZGF0YSwgcGFkKQ==
CQkJZGF0YSA9IHNlbGYuX19rZXkyLmRlY3J5cHQoZGF0YSk=
CQkJcmV0dXJuIHNlbGYuX19rZXkzLmVuY3J5cHQoZGF0YSk=
CQlpZiBzZWxmLmdldE1vZGUoKSA9PSBDQkM6
CQkJcmFpc2UgIlRoaXMgY29kZSBoYXNuJ3QgYmVlbiB0ZXN0ZWQgeWV0Ig==
CQkJaWYgbGVuKGRhdGEpICUgc2VsZi5ibG9ja19zaXplICE9IDA6
CQkJCXJhaXNlICJDQkMgbW9kZSBuZWVkcyBkYXRhbGVuIHRvIGJlIGEgbXVsdGlwbGUgb2YgYmxvY2tzaXplIChpZ25vcmluZyBwYWRkaW5nIGZvciBub3cpIg==
CQkJIyBzaW1wbGU=
CQkJbGFzdGJsb2NrID0gc2VsZi5nZXRJVigp
CQkJcmV0ZGF0YSA9ICcn
CQkJZm9yIGkgaW4gcmFuZ2UoIDAsIGxlbihkYXRhKSwgc2VsZi5ibG9ja19zaXplICk6
CQkJCXRoaXNibG9jayA9IGRhdGFbIGk6aStzZWxmLmJsb2NrX3NpemUgXQ==
CQkJCSMgdGhlIFhPUiBmb3IgQ0JD
CQkJCXRoaXNibG9jayA9IHNlbGYueG9yc3RyKCBsYXN0YmxvY2ssIHRoaXNibG9jayAp
CQkJCXRoaXNibG9jayA9IHNlbGYuX19rZXkxLmVuY3J5cHQodGhpc2Jsb2NrKQ==
CQkJCXRoaXNibG9jayA9IHNlbGYuX19rZXkyLmRlY3J5cHQodGhpc2Jsb2NrKQ==
CQkJCWxhc3RibG9jayA9IHNlbGYuX19rZXkzLmVuY3J5cHQodGhpc2Jsb2NrKQ==
CQkJCXJldGRhdGEgKz0gbGFzdGJsb2Nr
CQkJcmV0dXJuIHJldGRhdGE=
CQlyYWlzZSAiTm90IHJlYWNoZWQi
CWRlZiBkZWNyeXB0KHNlbGYsIGRhdGEsIHBhZD0nJyk6
CQkiIiJkZWNyeXB0KGRhdGEsIFtwYWRdKSAtPiBzdHJpbmc=
CQlkYXRhIDogU3RyaW5nIHRvIGJlIGVuY3J5cHRlZA==
CQlwYWQgIDogT3B0aW9uYWwgYXJndW1lbnQgZm9yIGRlY3J5cHRpb24gcGFkZGluZy4gTXVzdCBvbmx5IGJlIG9uZSBieXRl
CQlUaGUgZGF0YSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgOCBieXRlcyBhbmQgd2lsbCBiZSBkZWNyeXB0ZWQ=
CQl3aXRoIHRoZSBhbHJlYWR5IHNwZWNpZmllZCBrZXkuIElmIHRoZSBvcHRpb25hbCBwYWRkaW5nIGNoYXJhY3Rlcg==
CQlpcyBzdXBwbGllZCwgdGhlbiB0aGUgdW4tZW5jeXB0ZWQgZGF0YSB3aWxsIGhhdmUgdGhlIHBhZGRpbmcgY2hhcmFjdGVycw==
CQlyZW1vdmVkIGZyb20gdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiBUaGlzIHBhZCByZW1vdmFsIG9ubHkgb2NjdXJzIG9uIHRoZQ==
CQlsYXN0IDggYnl0ZXMgb2YgdGhlIGRhdGEgKGxhc3QgZGF0YSBibG9jayku
CQkiIiI=
CQlpZiBzZWxmLmdldE1vZGUoKSA9PSBFQ0I6
CQkJIyBzaW1wbGU=
CQkJZGF0YSA9IHNlbGYuX19rZXkzLmRlY3J5cHQoZGF0YSk=
CQkJZGF0YSA9IHNlbGYuX19rZXkyLmVuY3J5cHQoZGF0YSk=
CQkJcmV0dXJuIHNlbGYuX19rZXkxLmRlY3J5cHQoZGF0YSwgcGFkKQ==
CQlpZiBzZWxmLmdldE1vZGUoKSA9PSBDQkM6
CQkJaWYgbGVuKGRhdGEpICUgc2VsZi5ibG9ja19zaXplICE9IDA6
CQkJCXJhaXNlICJDYW4gb25seSBkZWNyeXB0IG11bHRpcGxlcyBvZiBibG9ja3NpemUi
CQkJbGFzdGJsb2NrID0gc2VsZi5nZXRJVigp
CQkJcmV0ZGF0YSA9ICcn
CQkJZm9yIGkgaW4gcmFuZ2UoIDAsIGxlbihkYXRhKSwgc2VsZi5ibG9ja19zaXplICk6
CQkJCSMgY2FuIEkgYXJyYW5nZSB0aGlzIGJldHRlcj8gcHJvYmFibHkuLi4=
CQkJCWNpcGhlcmNodW5rID0gZGF0YVsgaTppK3NlbGYuYmxvY2tfc2l6ZSBd
CQkJCXRoaXNibG9jayA9IHNlbGYuX19rZXkzLmRlY3J5cHQoY2lwaGVyY2h1bmsp
CQkJCXRoaXNibG9jayA9IHNlbGYuX19rZXkyLmVuY3J5cHQodGhpc2Jsb2NrKQ==
CQkJCXRoaXNibG9jayA9IHNlbGYuX19rZXkxLmRlY3J5cHQodGhpc2Jsb2NrKQ==
CQkJCXJldGRhdGEgKz0gc2VsZi54b3JzdHIoIGxhc3RibG9jaywgdGhpc2Jsb2NrICk=
CQkJCWxhc3RibG9jayA9IGNpcGhlcmNodW5r
CQkJcmV0dXJuIHJldGRhdGE=
CQlyYWlzZSAiTm90IHJlYWNoZWQi
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM=
IyAJCQkJRXhhbXBsZXMJCQkJICAgICM=
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM=
ZGVmIGV4YW1wbGVfdHJpcGxlX2RlcygpOg==
CWZyb20gdGltZSBpbXBvcnQgdGltZQ==
CSMgVXRpbGl0eSBtb2R1bGU=
CWZyb20gYmluYXNjaWkgaW1wb3J0IHVuaGV4bGlmeSBhcyB1bmhleA==
CSMgZXhhbXBsZSBzaG93cyB0cmlwbGUtZGVzIGVuY3J5cHRpb24gdXNpbmcgdGhlIGRlcyBjbGFzcw==
CXByaW50ICJFeGFtcGxlIG9mIHRyaXBsZSBERVMgZW5jcnlwdGlvbiBpbiBkZWZhdWx0IEVDQiBtb2RlIChERVMtRURFMylcbiI=
CXByaW50ICJUcmlwbGUgZGVzIHVzaW5nIHRoZSBkZXMgY2xhc3MgKDMgdGltZXMpIg==
CXQgPSB0aW1lKCk=
CWsxID0gZGVzKHVuaGV4KCIxMzM0NTc3OTlCQkNERkYxIikp
CWsyID0gZGVzKHVuaGV4KCIxMTIyMzM0NDU1NjY3Nzg4Iikp
CWszID0gZGVzKHVuaGV4KCI3NzY2MTEwMEREMjIzMzExIikp
CWQgPSAiVHJpcGxlIERFUyB0ZXN0IHN0cmluZywgdG8gYmUgZW5jcnlwdGVkIGFuZCBkZWNyeXB0ZWQuLi4i
CXByaW50ICJLZXkxOiAgICAgICVzIiAlIGsxLmdldEtleSgp
CXByaW50ICJLZXkyOiAgICAgICVzIiAlIGsyLmdldEtleSgp
CXByaW50ICJLZXkzOiAgICAgICVzIiAlIGszLmdldEtleSgp
CXByaW50ICJEYXRhOiAgICAgICVzIiAlIGQ=
CWUxID0gazEuZW5jcnlwdChkKQ==
CWUyID0gazIuZGVjcnlwdChlMSk=
CWUzID0gazMuZW5jcnlwdChlMik=
CXByaW50ICJFbmNyeXB0ZWQ6ICIgKyBlMw==
CWQzID0gazMuZGVjcnlwdChlMyk=
CWQyID0gazIuZW5jcnlwdChkMyk=
CWQxID0gazEuZGVjcnlwdChkMik=
CXByaW50ICJEZWNyeXB0ZWQ6ICIgKyBkMQ==
CXByaW50ICJERVMgdGltZSB0YWtlbjogJWYgKCVkIGNyeXB0IG9wZXJhdGlvbnMpIiAlICh0aW1lKCkgLSB0LCA2ICogKGxlbihkKSAvIDgpKQ==
CXByaW50ICIi
CSMgRXhhbXBsZSBiZWxvdyB1c2VzIHRoZSB0cmlwbGUtZGVzIGNsYXNzIHRvIGFjaGlldmUgdGhlIHNhbWUgYXMgYWJvdmU=
CXByaW50ICJOb3cgdXNpbmcgdHJpcGxlIGRlcyBjbGFzcyI=
CXQgPSB0aW1lKCk=
CXQxID0gdHJpcGxlX2Rlcyh1bmhleCgiMTMzNDU3Nzk5QkJDREZGMTExMjIzMzQ0NTU2Njc3ODg3NzY2MTEwMEREMjIzMzExIikp
CXByaW50ICJLZXk6ICAgICAgICVzIiAlIHQxLmdldEtleSgp
CXByaW50ICJEYXRhOiAgICAgICVzIiAlIGQ=
CXRkMSA9IHQxLmVuY3J5cHQoZCk=
CXByaW50ICJFbmNyeXB0ZWQ6ICIgKyB0ZDE=
CXRkMiA9IHQxLmRlY3J5cHQodGQxKQ==
CXByaW50ICJEZWNyeXB0ZWQ6ICIgKyB0ZDI=
CXByaW50ICJUcmlwbGUgREVTIHRpbWUgdGFrZW46ICVmICglZCBjcnlwdCBvcGVyYXRpb25zKSIgJSAodGltZSgpIC0gdCwgNiAqIChsZW4oZCkgLyA4KSk=
ZGVmIGV4YW1wbGVfZGVzKCk6
CWZyb20gdGltZSBpbXBvcnQgdGltZQ==
CSMgZXhhbXBsZSBvZiBERVMgZW5jcnlwdGluZyBpbiBDQkMgbW9kZSB3aXRoIHRoZSBJViBvZiAiXDBcMFwwXDBcMFwwXDBcMCI=
CXByaW50ICJFeGFtcGxlIG9mIERFUyBlbmNyeXB0aW9uIHVzaW5nIENCQyBtb2RlXG4i
CXQgPSB0aW1lKCk=
CWsgPSBkZXMoIkRFU0NSWVBUIiwgQ0JDLCAiXDBcMFwwXDBcMFwwXDBcMCIp
CWRhdGEgPSAiREVTIGVuY3J5cHRpb24gYWxnb3JpdGhtIg==
CXByaW50ICJLZXkgICAgICA6ICIgKyBrLmdldEtleSgp
CXByaW50ICJEYXRhICAgICA6ICIgKyBkYXRh
CWQgPSBrLmVuY3J5cHQoZGF0YSk=
CXByaW50ICJFbmNyeXB0ZWQ6ICIgKyBk
CWQgPSBrLmRlY3J5cHQoZCk=
CXByaW50ICJEZWNyeXB0ZWQ6ICIgKyBk
CXByaW50ICJERVMgdGltZSB0YWtlbjogJWYgKDYgY3J5cHQgb3BlcmF0aW9ucykiICUgKHRpbWUoKSAtIHQp
CXByaW50ICIi
ZGVmIF9fdGVzdF9fKCk6
CWV4YW1wbGVfZGVzKCk=
CWV4YW1wbGVfdHJpcGxlX2Rlcygp
ZGVmIF9fZnVsbHRlc3RfXygpOg==
CSMgVGhpcyBzaG91bGQgbm90IHByb2R1Y2UgYW55IHVuZXhwZWN0ZWQgZXJyb3JzIG9yIGV4Y2VwdGlvbnM=
CWZyb20gYmluYXNjaWkgaW1wb3J0IHVuaGV4bGlmeSBhcyB1bmhleA==
CWZyb20gYmluYXNjaWkgaW1wb3J0IGhleGxpZnkgYXMgZG9oZXg=
CV9fdGVzdF9fKCk=
CXByaW50ICIi
CWsgPSBkZXMoIlwwXDBcMFwwXDBcMFwwXDAiLCBDQkMsICJcMFwwXDBcMFwwXDBcMFwwIik=
CWQgPSBrLmVuY3J5cHQoIkRFUyBlbmNyeXB0aW9uIGFsZ29yaXRobSIp
CWlmIGsuZGVjcnlwdChkKSAhPSAiREVTIGVuY3J5cHRpb24gYWxnb3JpdGhtIjo=
CQlwcmludCAiVGVzdCAxIEVycm9yOiBVbmVuY3lwdGVkIGRhdGEgYmxvY2sgZG9lcyBub3QgbWF0Y2ggc3RhcnQgZGF0YSI=
CWsgPSBkZXMoIlwwXDBcMFwwXDBcMFwwXDAiLCBDQkMsICJcMFwwXDBcMFwwXDBcMFwwIik=
CWQgPSBrLmVuY3J5cHQoIkRlZmF1bHQgc3RyaW5nIG9mIHRleHQiLCAnKicp
CWlmIGsuZGVjcnlwdChkLCAiKiIpICE9ICJEZWZhdWx0IHN0cmluZyBvZiB0ZXh0Ijo=
CQlwcmludCAiVGVzdCAyIEVycm9yOiBVbmVuY3lwdGVkIGRhdGEgYmxvY2sgZG9lcyBub3QgbWF0Y2ggc3RhcnQgZGF0YSI=
CWsgPSBkZXMoIlxyXG5cdEFCQ1xyXG4iKQ==
CWQgPSBrLmVuY3J5cHQoIlN0cmluZyB0byBQYWQiLCAnKicp
CWlmIGsuZGVjcnlwdChkKSAhPSAiU3RyaW5nIHRvIFBhZCoqKiI6
CQlwcmludCAiJyVzJyIgJSBrLmRlY3J5cHQoZCk=
CQlwcmludCAiVGVzdCAzIEVycm9yOiBVbmVuY3lwdGVkIGRhdGEgYmxvY2sgZG9lcyBub3QgbWF0Y2ggc3RhcnQgZGF0YSI=
CWsgPSBkZXMoIlxyXG5cdEFCQ1xyXG4iKQ==
CWQgPSBrLmVuY3J5cHQodW5oZXgoIjAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MCIpLCB1bmhleCgiNDQiKSk=
CWlmIGsuZGVjcnlwdChkLCB1bmhleCgiNDQiKSkgIT0gdW5oZXgoIjAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MCIpOg==
CQlwcmludCAiVGVzdCA0YSBFcnJvcjogVW5lbmN5cHRlZCBkYXRhIGJsb2NrIGRvZXMgbm90IG1hdGNoIHN0YXJ0IGRhdGEi
CWlmIGsuZGVjcnlwdChkKSAhPSB1bmhleCgiMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwNDQiKTo=
CQlwcmludCAiVGVzdCA0YiBFcnJvcjogVW5lbmN5cHRlZCBkYXRhIGJsb2NrIGRvZXMgbm90IG1hdGNoIHN0YXJ0IGRhdGEi
CWsgPSB0cmlwbGVfZGVzKCJNeURlc0tleVxyXG5cdEFCQ1xyXG4wOTg3KjU0MyIp
CWQgPSBrLmVuY3J5cHQodW5oZXgoIjAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MCIpKQ==
CWlmIGsuZGVjcnlwdChkKSAhPSB1bmhleCgiMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwIik6
CQlwcmludCAiVGVzdCA1IEVycm9yOiBVbmVuY3lwdGVkIGRhdGEgYmxvY2sgZG9lcyBub3QgbWF0Y2ggc3RhcnQgZGF0YSI=
CWsgPSB0cmlwbGVfZGVzKCJcclxuXHRBQkNcclxuMDk4Nyo1NDMiKQ==
CWQgPSBrLmVuY3J5cHQodW5oZXgoIjAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MCIpKQ==
CWlmIGsuZGVjcnlwdChkKSAhPSB1bmhleCgiMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwIik6
CQlwcmludCAiVGVzdCA2IEVycm9yOiBVbmVuY3lwdGVkIGRhdGEgYmxvY2sgZG9lcyBub3QgbWF0Y2ggc3RhcnQgZGF0YSI=
ZGVmIF9fZmlsZXRlc3RfXygpOg==
CWZyb20gdGltZSBpbXBvcnQgdGltZQ==
CWYgPSBvcGVuKCJweURlcy5weSIsICJyYisiKQ==
CWQgPSBmLnJlYWQoKQ==
CWYuY2xvc2UoKQ==
CXQgPSB0aW1lKCk=
CWsgPSBkZXMoIk15REVTS2V5Iik=
CWQgPSBrLmVuY3J5cHQoZCwgIiAiKQ==
CWYgPSBvcGVuKCJweURlcy5weS5lbmMiLCAid2IrIik=
CWYud3JpdGUoZCk=
CWYuY2xvc2UoKQ==
CWQgPSBrLmRlY3J5cHQoZCwgIiAiKQ==
CWYgPSBvcGVuKCJweURlcy5weS5kZWMiLCAid2IrIik=
CWYud3JpdGUoZCk=
CWYuY2xvc2UoKQ==
CXByaW50ICJERVMgZmlsZSB0ZXN0IHRpbWU6ICVmIiAlICh0aW1lKCkgLSB0KQ==
ZGVmIF9fcHJvZmlsZV9fKCk6
CWltcG9ydCBwcm9maWxl
CXByb2ZpbGUucnVuKCdfX2Z1bGx0ZXN0X18oKScp
CSNwcm9maWxlLnJ1bignX19maWxldGVzdF9fKCknKQ==
aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzo=
CV9fdGVzdF9fKCk=
CSNfX2Z1bGx0ZXN0X18oKQ==
CSNfX2ZpbGV0ZXN0X18oKQ==
CSNfX3Byb2ZpbGVfXygp


于是解密之后发现和python的一个官方文档相同。这个时候思路就开始跑偏了。。。当时自己想的是比较这两个文件,结果就是越来越偏。

看了别人的writeup之后才搞清楚base64原来有这么多的奥秘在里面。。。
事实上,这个题目利用的是base64加密后的字符串来藏字符。如果base64字符串后面有==时,说明前一个字符的后四位是任意的,既可以写入信息的。如果是=结尾的,前一个字符的后两位是任意的,可以写入信息。
然后还有一个地方在于base64的字符集,要对之前和之后的位置进行异或,再将其拼接起来,就是01字符串,转成字符串得flag。。。
代码:

import base64

f=open("C:\\Users\\wangchong\\Desktop\\wangchong\\crypto100\\timian.txt")

index='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
line=f.readline()
while line:
    line2=base64.b64encode(base64.b64decode(line))
    line=line[0:len(line)-1]
    if(line[-1]==line[-2]=='='):
        x=line[-3]
        x1=line2[-3]
        res=str(bin((index.find(x))^(index.find(x1)))).replace('0b','00')[-4:]
        if(len(res)==3):
           res='0'+res
        print (str(res)),            
    elif(line[-1]=='=' and line[-2]!='='):
        x=line[-2]
        x1=line2[-2]
        print str(bin((index.find(x))^(index.find(x1)))).replace('0b','00')[-2:],
    line=f.readline()

结果如下:



将这些字符拼接到一起转字符串,得到:



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

ctf-crypto

1.字母映射密码,每个字母对应随机的一个字母,所有的字母共有26!种排列方式,因此暴力破解是十分不可靠的。 由于英文中每个字母出现的频率是不同的,所以可以根据字母出现的频率进行分析,基于频率的替换字...

越南CTF的crypto 100

自己做CTF还是没有经验,本来以为crypto更多应该是python编程的,结果这个100的题目是Do you love Arithmetic? 打开文件来看内容是 # charset = "ab...

Boston Key Party CTF 2014 Crypto 100

Mind your P's and Q's! Crypto : 100 The flag has been split into several files, and encrypted unde...

Cousera Crypto课程 Chapter 1

  • 2015年12月14日 16:22
  • 2.7MB
  • 下载

Advances in Cryptology -- CRYPTO 2010.part1

  • 2011年02月24日 21:23
  • 4.39MB
  • 下载

Coursera-Crypto1 Week2

Week2 - Problem Set Question 1 Consider the following five events: Correctly guessing a random ...
  • Flora_C
  • Flora_C
  • 2015年05月19日 09:57
  • 1423

Crypto++再复习【1】

上两个项目中用到的Crypto内容基本中只是其中的 number theory部分,在群内自己根据密码学协议的内容自己实现了完整的过程,较少的涉及直接使用该library中的基础类。而本次不太可能自己...

(1)java自带软件包javax.crypto的使用方法,对称加密方法和非对称加密方法

一般来讲,在java上实现加密解密算法,有3中方式。 1)自行实现算法 2)使用java自带的crypto软件包 3)使用第三方库 本文讲述一下第二种使用方法。我最开始也是找了很多这方面的资料,但...

javax.crypto.BadPaddingException: error:0407106B:rsa routines:RSA_padding_check_PKCS1_type_2:block t

RSA超过长度时报这个错,解决方法是  加密使用117 解密使用128 public static byte[] encryptByPublicKey(byte[] data, Publi...

Coursera-Crypto1 Week1

Week 1 - Problem Set Question 1 Data compression is often used in data storage and transmission. S...
  • Flora_C
  • Flora_C
  • 2015年05月18日 06:39
  • 1858
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:RCTF crypto100(1)
举报原因:
原因补充:

(最多只允许输入30个字)