前言: 后面有事没时间打比赛怎么办? 那当然是把游戏破解了啊. 安全人, 安全魂, 安全人偏不走寻常路~
直接找漏洞, burp 抓包加源码一把嗦, 发现了边界控制的问题.
题目修复漏洞之前的操作序列没截图, 当时特别好玩, 直接把俄罗斯方块变成了方块消除游戏.
漏洞原理
修复漏洞的代码改动
贴上漏洞修复的改动图.
可以看到, 改动之前新建方块之后可以没有操作, 那么执行连续的 NN 操作时, 前面的方块因为没有操作, 所以它就会在屏幕外面不动.
因此, 可以通过连续的 N 做到选择方块的效果.
漏洞利用
因为自己玩俄罗斯方块比较菜, 除了 I 和 O 型方块都没法完美的消除, 所以我们这里利用漏洞只选择 I 或者 O 方块.
首先利用 JS 生成方块序列
- let { a, M, C, v } = {
- a: 27073, // 乘子
- M: 32749, // 模数
- C: 17713, // 增量
- v: 12358, // 随机数种子
- };
- function step() {
- return v = ((v * a + C) % M);
- }
- let tbl = [0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6];
- let pname = "IJLTOSZ";
- let res = "";
- for (let i = 0; i < 10000; i++) {
- let rnd = step();
- res += pname[tbl[rnd % 29]];
- }
- console.log(res);
然后我们就可以找出 I 方块出现的位置, 但是这里遇到一个问题, 因为懒得去思考, 所以直接放弃 I 方块, 改用 O 方块.
O 方块很好叠加, 只要按照一行一行摞起来就行, 直接编写脚本处理.
- tetris_str = "ZIOSJZSIZLSSZZIZZLOJSOJJSZSLSZZIZZSLZOZSZOZZOJOZLLOIZJZSSSTSOIZOZLZZOZJZZOZOSSZZSZOTJTIZSSZJTSJTIZZLOJSZSOISZJSITZOLSZZTSTZTSTJOZOOLSTTOLZTZIOZOTZOTZTTSTZZLTZLOOOSJTSOTTTOSLTZLSLTSZJIZZZTTZOOTZZJTOZSOZTIJJTSSSJITTTSLISTLZZLZZJJZTJJTZTZTOJLZZOZJZOSSSJISJTLSLJSTIZTTLTTTTSIZZZOJTJZOSITSOJOTTLSOSZZTZZIZZIIJOJZOIZZZSTOZOOJTTSZZZJSITITZSTLZOLIJLOSTZOJOOOILTLOOZJZOOZTSTTISSSJTTIZSJOOLTOSITIZZJILSSJOOIITSSOZJOLTTIOJSJTLOSZSSTZSOTTSJZIJZZZTILSZZZZZOZSTZZSZLZTSSTOSSSIZSTJSLJTZSTZOLSOSSJZSLSLJSSZTTOZTZSOOTLZZSOTSZTZOLOZLZSSSZZSZTZSSZOSTSSJLIZLSZZTJLSJSZTTITZOJOZOOJOZSZJJSJZSOZZJZOZSSZSOZZLZZOSTSOSSSZSIOTTSTZTOJZSOSLSZOZJSOOISJOOJLOZLZLSZJLTSJJTOSLTZZJTZOTSZZSIZZJZSZOTZOLSOTTSSSSSJTTZOZTZJTSLJOJSLZOZTOOITJOZIJSZJOZSSSLTTTZSSZZSSOZSOSJLTOLLTOLZSIOTOZOSZZLZZOSJSLOJTZTOSSOZIZZZTLSJSIJOLOSOJZOJLZOZZJZISSSISSTISOIJZOLSSTOOOLOLZTJTSJSLTZSSISTSTTZTOLZSSZLOOSJTLTJSSTTZSZZZOZLLLOSSSTSZSTZTZILTIZZSSOZJTTIJSSLOZZSZZTSJOOZSSTTLSSZOIZLOSOLTTJZSZZZOTSJSSLILTTSZZZSTOTOOSZJZIZZISTSZTLOOIZLSTTZLJOISLSSZZILSLIOLZOLSZLSJILTZOTSZSOTJLZILOZOISTZZSZOILJSLZTJZSSOSITISSSOOJZSZOSTOZOZJSZOOOZSLLLSJTSISISIOOJLZSZOOZZJSZSOZSZLTZZZIZJZZLLSTSOOSOOZLZJLSTJSTSZSSOTJSOISOLSTTLSSLOSLOOLJSOTIISLLZSISSSOJTIOTLSZZJTIZJSOSZZSTOSLZTLTZLZOZLSOLZJILSJJSZSLITOSTZTTSZIOOOOJISZTOSZZOLLJOTJOTTOLLTZZSSILIOSZIJZZTZIZOJZJZZSZZSISILJZIOTOJOSTOZOJLZOOZSOZSLISOZTZLZTIZSTITTSOSJJTJLIZOZZSLLSZZSZJZZOSLOLJOOLOTSZOTJTZZSTOZSZZSTZOZSOISSLJTTJZJLTTJSZZSSLILLSTSLSIZSZOZJJTSSOTLIZSOOSTZLZLSZLTLOOOTSOJJZJSOTTZLTSOLZOSZOSLJZSIOTOSZJTSIJZSLZTOOOZZZLOSLTSTOZOOIOJTTSJSTTSTLOZISTZZJSOJTOZZZTTOIOSTLTTOZSZSSJLZTZOZZTZSOSOOZOJSZZOJLSTSSTOITZTJZSLLILSTTLSZTOIOOSZSTOLLLOZJLTTTITZOZJISSSSIZTZZTIJSZSZZZZSSZTJZTTTTOILJSTZJOLZOOJZZSOZOOIOLZLZTSOJISJLISZSJJSOSSLLOOJTSZTOOOSZTTZJLTISOTZZTLTJLOZLOOTSZTSIZZZOSISSSLIJJZTOOLZZSSZSZOOSSSTOZLZOZZZZSZLSOOZSOOZIZLZTSLSLTLOZOOZTLIJIOZZJSSZTOJZIOZZLTSSJITLLJOJTSJJLZSOSTZZLZOOOOISSOJIJOLIIIZOLOLOZSTLZTOZLSLOZIOSZSIOZTTJTJZOLOZZTLOZLTLSSLZSILTZZITZJZLZZZSSOTOOSLIIZTZSSSLSOITJZZSJSSSOLLOTSIOSSZZOTJZSTITZTZTOTTJISIZOZLTTJLLOLSZOISZLZSJJZLSZOOZZSSLOOZJZSSSOOTSZZSZSIZSTSOTJIOSJLZOZTLSOTLSJOLLTOSLSJSJSLSZTOSOLTIOSLJZZZJLLJOLSTOOSZZLIOLSZJSSSOSSSTOZZSLZTZZZSZSJJLOSSJTITLOJZZLZJOZLLOJOZSLZSTZJSIZSOSITOJZZZJZTILZTOIZZISIOLZZLTSSZSJOSZZZIZSLSOTTIZOOZOJSSIILJSJIITSSIJLZOSSTZJISZZZSLJSJSTZLZSOTSZOLOZTLIZOOZLLSOOOTZJOTTOOSZOOJOSSJOSSZSSTJSZISOOSZILLZSIIJOTZTOSTOZLZLSZOZTOOZOZLOSIZSOOZOLZSSZTOSTTOLZOTSLOJLSOJTJJOZZTSZZZZZTSJZZJOOOZZTTTSOSSSZTOOTILSLTTZSLZOOJZOTLSZTZJTTSILZTSOSSZZSOZZZZSJISSLISLLJOZZOLLTSTTZZOSIOJSZJOZOZTJZJZSTSSOTOJSZZSIOOSTLOZSJZLSOSSSOOLSZJOOZLOOOTSSJSTOZTTTLZOLSSJTSIOZZJOIJLOIZSZJJZLITOSLLLZJZZOITTTSOZTZSLZSSOLZLJZZOTZITSOJJZSLSJZZZZTTZZZTOLSSIZTTJSTOTISSSZJZOZOJSTZTZZZZOITLJTSTZSIZJJLOLSJOLZOSZOZOSLLZOTZISSSTTSZOZSTLLJTOZSZZOSISSOSZZSSSZTJOZLLOZOSOSZSSOSZTSJSITJTZLOLSOOZSOLOIZIIZJTOLSJTSJOOZSJZZZZSTZZLTOTTSSISOZZOTTZSJLOZZZJSZSLISTSZTZSZZZTSISTTLZJJJZLILJSLZSZSLJZJJOLTZTZSTTSOJJJZOLIZTTTJZTTZJZTLISOTSSSZLSJLLSSOTJSZZOTTOOJSIIOSLTLZTSSJOZOOZSOOZTOLZTLSLLLOSOJZOSJIIZOSZOTOZJOITSSTLOTLTLSSOSZLTIOSLZSTSZLJIITIZZSSZSSSSSSSOZOSJSOSSZTLZJJOJLISSOLZSZSTSIITSJTSLOZZLSJLZLJSOZOLJZTSLJSIZTLSIZIOLTSOZOJJLZLSSTSSTOTOZZTJLSTZZZZZLZTTTSZOSOTOJZSZZTSILLTZOZSOOSOISOSZSOOOZSZTZZZSTSTIZTJSZZTOITOSJOLZSLSLTZJSZOSZOIOOZZSTTJSJSZLZLLZSZZTZOZZZOLSTOZSZSZISTSSZSZZTIZOOTZOIOSIOJZOSZIJSLOLOJZJJOJOZZLLZOSZJSZLSJSZISZLSOOSSZILSLIZIOISJILZJSTJOSZLZOISJTOZJLSZOLJOOLSOSTSOOOIIOOILZJISZOZSJJSSSZSZSOZZZLTSZOZJTZSZIIZOTTSLTTSOTILOLOIOSJSLJLSJOZSSOZSOLZIIITLTTSIISOIZJSZLIOOLJTJTZOSISJLZTJSOOOSSLZOZLZOLSLJZIZZSSOOTOZOZSTJOLSJTSZLJSZOSLSSIZSTISTSZJSOSLLSITJLJOLOZTOTSOSTTSISSIIITTSTJOSISSLLZSOTOTOIITTSZSOSJZLOLLZZZIIZZISTSSOISZZSZJOTLLSOSIOLSOZZSTZOLZTIZTIOSZZZTZOZSJJTLOSISZSZTSOZZOSOITISSSZTJTJJSSOZSSSTZTIOZTLZSZOZJTOOOLSIOZZSSSOIOSJTSJOSSOZOSOJTZIZSSLTOTSTOJSJSZZSSIZJSOTZTZJOZZSJSSLSIZZJJOZZSJZLZSJOOIOZZLZZTJTZOLITSSZSLZOTOISJZZSLSSZJZIZOTZOOSSOSSTOSTSLJSJLSOSOTZTTZTZTZSJLLIJSZLOZLIJZZLJZOLJLTSLISSZOJSISZSZZOTSLJLSSSOISSOIJIZSZTLZOSTLTSTSLZTZJTSOTOZLOSSIOSTJZJSIIZSSJJLLOSSZJJSSOZJOOJTOZTIJOOLZOZZSLSZZSSLOSTZSOJOSOTOSZSZSZSOOSSJTZOZZLJZLLOOLLOZJZITSSJZTOJSITSZTSJJZLSTOIOOSSZZSIOLZTSIOLSSZIOJTOLLLLZSSJTOLOZZTZSISZZTSZOZZSISTOTTOOTOTZOIZZSZJSLOITIOZSSIZJSLOLZZJJJSSZJJSZSJSTIZJTJJJZZZLOTZOZJTTZOLIJJZLZSJITOZZSJZZISOJISOSZOSTJLJSOOOZZLTZTJZZJSLOTZZOILTZLOJOSIIZSOSJLTLOSSTIZSLZLJTTLSISZZOOOTOJZOTSSJZZJSLOSSSLOTIZIIZZTTSLOSZJOSOZTITZSTZSZZISITLTOLJZOOITZTLOJSOSZISSSSTOOTSOZSISSSSZSOIOSTTLLLSJOZLZOJTSJJOSSILZLZSJJOTZTILOSSOOTSSZOLSLZIOLZJOZZOILZJZSLIZOLTTZJTOSIOILOZSTJLJZZIZTZZSLISIZZLSOOOJLLTZZZZZZSJLIZSTZZOOLOZSOSSTIZLTSJZSSSLSTZOIOTLZOJJZTLSOSJOZLSSOTLTZSJOSJLSZLSTOOOJOTIOTOSZJZIOSJZZZZJSZSJOSOZOSSSSJJLJJZITTSTZOOSJLSTLSSISZSZTOTOOJOZSOTJLSTTOZZOZZTOTSSSTOLOTZSSZZJTJLSJSSOTSSSZOZJSLTOOZTZZILTOZTSSLSIOSJZLOZZSISTTIJTTOSISOJSTTTOTOJJIOJSSOOTZOOOOZZLZSSSZOZLSOZZZZJJLIZOZSZTZZISJIOSLSOOSJSTOIZTOZOZOLILZOZOZOZTISTZZJTLSZZOLSSZOOTOLOZTLJITZJTZOSZOZISLZIZLJSZIOZTOSSZZZOOTLSIOTSLTJOSOJSOJZOTJOJZZTTZLSTISZIJITILLOSZOZLTOSZJSSZSSTZOOZOTSZSSLZISSSSZIOZZTTSSJJOZLSISSOOSLTSISZTOJZLSITZOTZSZSIOLIOIZSTSZJTZZJOJSTTSSLJSOOZLLZTSLZTLZJZZJLOLZZOJZSSZZZOZZSZJLZSSJTZSSSOLIZTZSILZOSOISZSLZJSLOJZSTSIZZOJOSIZOJJZTTZOOLTITZLLIZLTOOJZZLZZOZSZLSLSOOZJZSZTZIIJSZSOLJLTSTZOTIOZTSLZOTZLOZZTSTTLZSTSTSJIZSSIJSZZZZOSISOSSOTOLSSJTTIZLIOOJZTZOISOZTLSTOZOZZLZIJTLOZSZSSLJZTTJSSOSOZJSIZZZJSZTLJSOLLJTSIOSTZSTTTLOLOZIOTSSZZOOZSOOLSSSOOLSOSTJZOOTOOZSZSITTZZZTTSTSZIZOZJOSSJLOSTIJLOSZTSOZOZSTLSSSIJOIISSLTOSTJJSZZSSOZJSZOSLSLSSTZLSTJOTZLSSSZLTJJOZOZLSLISLTJIOTOZLSSZZIILSZLOSLOOOIJZIOSJZSIZLSSZZIZZLOJSOJJSZSLSZZIZZSLZOZSZOZZOJOZLLOIZJZSSSTSOIZOZLZZOZJZZOZOSSZZSZOTJTIZSSZJTSJTIZZLOJSZSOISZJSITZOLSZZTSTZTSTJOZOOLSTTOLZTZIOZOTZOTZTTSTZZLTZLOOOSJTSOTTTOSLTZLSLTSZJIZZZTTZOOTZZJTOZSOZTIJJTSSSJITTTSLISTLZZLZZJJZTJJTZTZTOJLZZOZJZOSSSJISJTLSLJSTIZTTLTTTTSIZZZOJTJZOSITSOJOTTLSOSZZTZZIZZIIJOJZOIZZZSTOZOOJTTSZZZJSITITZSTLZOLIJLOSTZOJOOOILTLOOZJZOOZTSTTISSSJTTIZSJOOLTOSITIZZJILSSJOOIITSSOZJOLTTIOJSJTLOSZSSTZSOTTSJZIJZZZTILSZZZZZOZSTZZSZLZTSSTOSSSIZSTJSLJTZSTZOLSOSSJZSLSLJSSZTTOZTZSOOTLZZSOTSZTZOLOZLZSSSZZSZTZSSZOSTSSJLIZLSZZTJLSJSZTTITZOJOZOOJOZSZJJSJZSOZZJZOZSSZSOZZLZZOSTSOSSSZSIOTTSTZTOJZSOSLSZOZJSOOISJOOJLOZLZLSZJLTSJJTOSLTZZJTZOTSZZSIZZJZSZOTZOLSOTTSSSSSJTTZOZTZJTSLJOJSLZOZTOOITJOZIJSZJOZSSSLTTTZSSZZSSOZSOSJLTOLLTOLZSIOTOZOSZZLZZOSJSLOJTZTOSSOZIZZZTLSJSIJOLOSOJZOJLZOZZJZISSSISSTISOIJZOLSSTOOOLOLZTJTSJSLTZSSISTSTTZTOLZSSZLOOSJTLTJSSTTZSZZZOZLLLOSSSTSZSTZTZILTIZZSSOZJTTIJSSLOZZSZZTSJOOZSSTTLSSZOIZLOSOLTTJZSZZZOTSJSSLILTTSZZZSTOTOOSZJZIZZISTSZTLOOIZLSTTZLJOISLSSZZILSLIOLZOLSZLSJILTZOTSZSOTJLZILOZOISTZZSZOILJSLZTJZSSOSITISSSOOJZSZOSTOZOZJSZOOOZSLLLSJTSISISIOOJLZSZOOZZJSZSOZSZLTZZZIZJZZLLSTSOOSOOZLZJLSTJSTSZSSOTJSOISOLSTTLSSLOSLOOLJSOTIISLLZSISSSOJTIOTLSZZJTIZJSOSZZSTOSLZTLTZLZOZLSOLZJILSJJSZSLITOSTZTTSZIOOOOJISZTOSZZOLLJOTJOTTOLLTZZSSILIOSZIJZZTZIZOJZJZZSZZSISILJZIOTOJOSTOZOJLZOOZSOZSLISOZTZLZTIZSTITTSOSJJTJLIZOZZSLLSZZSZJZZOSLOLJOOLOTSZOTJTZZSTOZSZZSTZOZSOISSLJTTJZJLTTJSZZSSLILLSTSLSIZSZOZJJTSSOTLIZSOOSTZLZLSZLTLOOOTSOJJZJSOTTZLTSOLZOSZOSLJZSIOTOSZJTSIJZSLZTOOOZZZLOSLTSTOZOOIOJTTSJSTTSTLOZISTZZJSOJTOZZZTTOIOSTLTTOZSZSSJLZTZOZZTZSOSOOZOJSZZOJLSTSSTOITZTJZSLLILSTTLSZTOIOOSZSTOLLLOZJLTTTITZOZJISSSSIZTZZTIJSZSZZZZSSZTJZTTTTOILJSTZJOLZOOJZZSOZOOIOLZLZTSOJISJLISZSJJSOSSLLOOJTSZTOOOSZTTZJLTISOTZZTLTJLOZLOOTSZTSIZZZOSISSSLIJJZTOOLZZSSZSZOOSSSTOZLZOZZZZSZLSOOZSOOZIZLZTSLSLTLOZOOZTLIJIOZZJSSZTOJZIOZZLTSSJITLLJOJTSJJLZSOSTZZLZOOOOISSOJIJOLIIIZOLOLOZSTLZTOZLSLOZIOSZSIOZTTJTJZOLOZZTLOZLTLSSLZSILTZZITZJZLZZZSSOTOOSLIIZTZSSSLSOITJZZSJSSSOLLOTSIOSSZZOTJZSTITZTZTOTTJISIZOZLTTJLLOLSZOISZLZSJJZLSZOOZZSSLOOZJZSSSOOTSZZSZSIZSTSOTJIOSJLZOZTLSOTLSJOLLTOSLSJSJSLSZTOSOLTIOSLJZZZJLLJOLSTOOSZZLIOLSZJSSSOSSSTOZZSLZTZZZSZSJJLOSSJTITLOJZZLZJOZLLOJOZSLZSTZJSIZSOSITOJZZZJZTILZTOIZZISIOLZZLTSSZSJOSZZZIZSLSOTTIZOOZOJSSIILJSJIITSSIJLZOSSTZJISZZZSLJSJSTZLZSOTSZOLOZTLIZOOZLLSOOOTZJOTTOOSZOOJOSSJOSSZSSTJSZISOOSZILLZSIIJOTZTOSTOZLZLSZOZTOOZOZLOSIZSOOZOLZSSZTOSTTOLZOTSLOJLSOJTJJOZZTSZZZZZTSJZZJOOOZZTTTSOSSSZTOOTILSLTTZSLZOOJZOTLSZTZJTTSILZTSOSSZZSOZZZZSJISSLISLLJOZZOLLTSTTZZOSIOJSZJOZOZTJZJZSTSSOTOJSZZSIOOSTLOZSJZLSOSSSOOLSZJOOZLOOOTSSJSTOZTTTLZOLSSJTSIOZZJOIJLOIZSZJJZLITOSLLLZJZZOITTTSOZTZSLZSSOLZLJZZOTZITSOJJZSLSJZZZZTTZZZTOLSSIZTTJSTOTISSSZJZOZOJSTZTZZZZOITLJTSTZSIZJJLOLSJOLZOSZOZOSLLZOTZISSSTTSZOZSTLLJTOZSZZOSISSOSZZSSSZTJOZLLOZOSOSZSSOSZTSJSITJTZLOLSOOZSOLOIZIIZJTOLSJTSJOOZSJZZZZSTZZLTOTTSSISOZZOTTZSJLOZZZJSZSLISTSZTZSZZZTSISTTLZJJJZLILJSLZSZSLJZJJOLTZTZSTTSOJJJZOLIZTTTJZTTZJZTLISOTSSSZLSJLLSSOTJSZZOTTOOJSIIOSLTLZTSSJOZOOZSOOZTOLZTLSLLLOSOJZOSJIIZOSZOTOZJOITSSTLOTLTLSSOSZLTIOSLZSTSZLJIITIZZSSZSSSSSSSOZOSJSOSSZTLZJJOJLISSOLZSZSTSIITSJTSLOZZLSJLZLJSOZOLJZTSLJSIZTLSIZIOLTSOZOJJLZLSSTSSTOTOZZTJLSTZZZZZLZTTTSZOSOTOJZSZZTSILLTZOZSOOSOISOSZSOOOZSZTZZZSTSTIZTJSZZTOITOSJOLZSLSLTZJSZOSZOIOOZZSTTJSJSZLZLLZSZZTZOZZZOLSTOZSZSZISTSSZSZZTIZOOTZOIOSIOJZOSZIJSLOLOJZJJOJOZZLLZOSZJSZLSJSZISZLSOOSSZILSLIZIOISJILZJSTJOSZLZOISJTOZJLSZOLJOOLSOSTSOOOIIOOILZJISZOZSJJSSSZSZSOZZZLTSZOZJTZSZIIZOTTSLTTSOTILOLOIOSJSLJLSJOZSSOZSOLZIIITLTTSIISOIZJSZLIOOLJTJTZOSISJLZTJSOOOSSLZOZLZOLSLJZIZZSSOOTOZOZSTJOLSJTSZLJSZOSLSSIZSTISTSZJSOSLLSITJLJOLOZTOTSOSTTSISSIIITTSTJOSISSLLZSOTOTOIITTSZSOSJZLOLLZZZIIZZISTSSOISZZSZJOTLLSOSIOLSOZZSTZOLZTIZTIOSZZZTZOZSJJTLOSISZSZTSOZZOSOITISSSZTJTJJSSOZSSSTZTIOZTLZSZOZJTOOOLSIOZZSSSOIOSJTSJOSSOZOSOJTZIZSSLTOTSTOJSJSZZSSIZJSOTZTZJOZZSJSSLSIZZJJOZZSJZLZSJOOIOZZLZZTJTZOLITSSZSLZOTOISJZZSLSSZJZIZOTZOOSSOSSTOSTSLJSJLSOSOTZTTZTZTZSJLLIJSZLOZLIJZZLJZOLJLTSLISSZOJSISZSZZOTSLJLSSSOISSOIJIZSZTLZOSTLTSTSLZTZJTSOTOZLOSSIOSTJZJSIIZSSJJLLOSSZJJSSOZJOOJTOZTIJOOLZOZZSLSZZSSLOSTZSOJOSOTOSZSZSZSOOSSJTZOZZLJZLLOOLLOZJZITSSJZTOJSITSZTSJJZLSTOIOOSSZZSIOLZTSIOLSSZIOJTOLLLLZSSJTOLOZZTZSISZZTSZOZZSISTOTTOOTOTZOIZZSZJSLOITIOZSSIZJSLOLZZJJJSSZJJSZSJSTIZJTJJJZZZLOTZOZJTTZOLIJJZLZSJITOZZSJZZISOJISOSZOSTJLJSOOOZZLTZTJZZJSLOTZZOILTZLOJOSIIZSOSJLTLOSSTIZSLZLJTTLSISZZOOOTOJZOTSSJZZJSLOSSSLOTIZIIZZTTSLOSZJOSOZTITZSTZSZZISITLTOLJZOOITZTLOJSOSZISSSSTOOTSOZSISSSSZSOIOSTTLLLSJOZLZOJTSJJOSSILZLZSJJOTZTILOSSOOTSSZOLSLZIOLZJOZZOILZJZSLIZOLTTZJTOSIOILOZSTJLJZZIZTZZSLISIZZLSOOOJLLTZZZZZZSJLIZSTZZOOLOZSOSSTIZLTSJZSSSLSTZOIOTLZOJJZ"
- tetris_list = list(tetris_str)
- console_str = "game.pause();game.playRecord('"
- # 长条方块, 长条横竖不可控, 弃用
- # for i in tetris_list:
- # I_num = 0
- # if i == "I":
- # if I_num == 0:
- # console_str += "N,C1,D19,L4,"
- # I_num += 1
- # else:
- # console_str += "N,D19,R4,"
- # I_num = 0
- # elif i == "O":
- # console_str += "N,D19,"
- # else:
- # console_str += "N,"
- # 横行叠法
- # O_num = 0
- # for i in tetris_list:
- # if i == "O":
- # if O_num == 0:
- # console_str += "N,D19,"
- # O_num += 1
- # elif O_num == 1:
- # console_str += "N,L4,D19,"
- # O_num += 1
- # elif O_num == 2:
- # console_str += "N,L2,D19,"
- # O_num += 1
- # elif O_num == 3:
- # console_str += "N,R4,D19,"
- # O_num += 1
- # elif O_num == 4:
- # console_str += "N,R2,D19,"
- # O_num = 0
- # else:
- # console_str += "N,"
- # 叠 8 行法 分数 74784
- # O_num = 0
- # for i in tetris_list:
- # if i == "O":
- # if O_num < 8:
- # console_str += "N,L4,D19,"
- # O_num += 1
- # continue
- # elif O_num < 16:
- # console_str += "N,L2,D19,"
- # O_num += 1
- # continue
- # elif O_num < 24:
- # console_str += "N,D19,"
- # O_num += 1
- # continue
- # elif O_num < 32:
- # console_str += "N,R2,D19,"
- # O_num += 1
- # continue
- # elif O_num < 40:
- # console_str += "N,R4,D19,"
- # O_num +=1
- # continue
- # elif O_num == 40:
- # O_num = 0
- # console_str += "N,L4,D19,"
- # O_num += 1
- # else:
- # console_str += "N,"
- ## 测试 4 列 8 层法 分数 113100
- O_num = 0
- for i in tetris_list:
- if i == "O":
- x = O_num % 4
- y = O_num / 4
- if y < 7:
- if x == 0:
- console_str += "N,L4,D19,"
- O_num += 1
- elif x == 1:
- console_str += "N,L2,D19,"
- O_num += 1
- elif x == 2:
- console_str += "N,D19,"
- O_num += 1
- elif x == 3:
- console_str += "N,R2,D19,"
- O_num += 1
- elif y == 7:
- #最右边界
- console_str += "N,R4,D19,"
- O_num += 1
- O_num -= 5
- else:
- console_str += "N,"
- console_str = console_str[:-1]
- console_str += "'.split(','));"
- print(console_str)
这里首先按照注释中的 "横行叠法" 一行一行叠, 最后得分 19,740.
然后根据规则优化, 先放 3 行再消除, 参考注释的 "叠 8 行法", 然后一行一行消除, 分数 74784.
继续优化, 先叠满 4 列 8 层, 消除 1 层时再叠 1 层, 参考 "测试 4 列 8 层法", 最后分数 113100
然后就在我准备继续优化, 把剩下的方块也用上的时候, 主办方直接企业微信 call 了我, 告诉我这是游戏的漏洞, 并且修复了漏洞~
不过结果是直接给我算作 "破解大师" 了, 工卡带和文化衫到手!
来源: https://www.qcloud.com/developer/article/1865438