NSSCTF Crypto模块
多表替换密码
[AFCTF 2018]Vigenère ID:945
解压文件,一个c语言加密程序和密文,打开加密程序
经过分析和题目提示知,这是维吉尼亚加密。先直接爆破一手
得flagafctf{Whooooooo_U_Gotcha!}
[NCTF 2019]Sore ID:1290
打开文件
nsfAIHFrMuLynuCApeEstxJOzniQuyBVfAChDEznppfAiEIDcyNFBsCjsLvGlDtqztuaHvHbCmuyGNsIMhGlDtbotCoDzDjhyBzHGfHGfoHsuhlssIMvwlixBHHGfDRjoCKrapNIwqNyuxIBACQhtMwCmMCfEBpsrzEuiLGBoMipTkxrznoHfAkqwzvxuzCzDbLyApCGvjpqxkuwpgsLrqsVfCRwzlFmtlyrhuyEiivruFRpCRjkEDrqEqthyGwgsLnQvHmtzwDEznopBpsDOxvgBGIKzurFQxwQxkptutxzmfeLFQoRpJRvrpHxilwqeqMeiiIGBsQpCCvrptAlHsDnuRltmHuCGFpsBcwnsEblsswEPwerNpIADpJRCvwQxrntJltNpfAuFBwRstytoyvcepwtwqNlmmNGFsJjsQvkyvrkrstxJOzniQvNvzdDUdyJzjqzsErqxEjguyFMNwtPjsDwjoDfCdxzvftNGyzKjCEjsDxjqsjGMqFpimGpIADpJRFkovHJlpthyHnpqyBOHhmDMmoosClwiehEzmffOGMvDxDSnnyLuXFlwYEPvosQxCrRxwCpDswHopxDruvEzsOgBsXxDLvvlMpezwpnOOsjrANzHDsLCnoqLCepgtaHNHfpysNHGfOMqkyvlozxHetJGfvNuCGKjIRnoDLAbpyxnJCpqeLxuBCuwCpGpOnkEywrEPrisHrItSiDQgvtLCipyJnDzwtxBnNoKxpWuCxwuiqwDmIJxffIqSGSbzGpqlDnXvNIwqNzoxBrQoXuDRjonsAozzHeBjweTBBypDtIGnvHGDiosItqGvusGrIFzoNRjsyykrExweMvDtsLGItVbAIkxrFnuEyDmuIzxMNBIyziDJfyqLqbmjAtqOEiivnwyNgwCtmzsCgFxIfEMEiiBrFzNgxRdEEKqbHtJltIEmiNzygGfHyknVwnmJtJrxvyewNBSCTsHCnptxHlFiDnJHtohmuyKztHRkvwKxopfImuWFurIGuGRpGCcCDzntlxqevJCfEHLQoXxtIgzEynqEnCgsGztiLnHrBmDQgBEGCephprHJFtiFnHrXpJAqEwvBqlwItECpbvNuuHMvIRAwFKrZtyplMvJttFnSGhuLyuzwsHfyldhcvCjicGJzzztBvrlLBXxjHoDBlcsOGzwEuNWgkCKjdzBweDdHbwuyCHSmtIknezjqDtCeDDnfxBvHuzcDSvmlJAlFxtlIOsfCuyQoXtEJcIEznplrtsEIrtMNuIIFiIRjonsAozzHeBRltgFBMsCjCRjoHAwqpwIiCzzmhjuIsAfHyknTLFXDywevDCtxNvGsRitNtknLrZlqAyIvteeHLNvHovqjoAJxYlgAyvJChsNFBsVbHQwzAGBboyDbuNzsiuGGslbNzglpujrDjxtIvCpyHqWvQjHRokDaBXtihhuyterNFuMzoNRjsyyFepsXsqDouluGmvDqGMdkmDHoprtmrzCfhMuyKztHSrzzKnaEtqeIJCfeNzyRNzDSykyLClrtuoHvCjhyBHwSJHyknTCwbHxweFMzcevySrHelFgxDzntlxptyIJmmNGFsJjsypnLDufpfCdTWlohcHMsCuDEqDzLqbAfGkMDEilyEMvDxpQokosklFyIhuxlsvIHMsKZDSeyFDmkElttxzCpjzGBsFpsBcwEzrkrNBtEJmjkMuyGzjsgvrzMpeExweMvDoxABCBFuDypCHwAjpgJtICpemxaIMNvGCpyEYxlyNAlMvtujIESofpDLKClAmTpBtruMthlNGBsQfIFgxeznopBtruvqfAEvxGQjsGpqzFrqxtHtBTGfvSyCHSmtIknDswalktwFvCfrNFQsQfLykDtFpXCtJntJFuwCqyGHuIGpqzFCepgtnsCpteHquzKXwyvSoAmtlxXwuIEvtNBNvDxxLfyHOqbCjIhuTDfpFGBsSjrIgDDswamtJgxOzmhjuIsAfpRkmvwCQsjCIwvGfmNGIvDshFgGlKBqlssiDBCjkBGHsWuIMooSwAbTxpitrljxuFyqNosRcupLqbCjHtEAJpyLqIIFiIMqSDLjoEjsgyQtokBrLHGfGCuDzxCepiDuwCDiixyyBSntwqEvwnmtyZeuKtujIEGsRitQcsolqbyxweIvtevCtBHzgICtGlJmMwjpsuosbxMqyDQfHQkxrOqbyxDmuwzeCMnSGOmtyuoEGHlFNBeqItgmNFjvNfqCqBDGvbmtsyjCluhyCLsRttBvrpzniwtJtEAxfFOGcDTuIFgnzMpemfrkyIxztIpEsSBGCpDJGDdzsCaHDofxIBMvDbHIgnxwbepBpsBJzlmHtuHLfHMtDzxorysNYEPnpyFqNsKmHFgGlKwqEtDsEMpbxGruBXnDPgWlQkbTBxlBOsfryKNHHntgnvHsCZsDpIIvteKIGSCTsIGeupLhbDLDaxzlexBrHWKmqCqxEzrpmjCcxMthlNBPsQitPgSwDFXEhwyqdHfrNBPsQbCBukEvxtytCtxDDciHpBoMeHFgGpFCXyivoJJyulypuFQpJQgvdzntlqzetvwmeLBOBCjIgoolFBepBplAzoprwruzKuwCykJsAlFssiJosfrMuyGzusMyxzFCetxqiwwCpAHoyoSvEJqyvAwdzqshEMDfXBrHHGfrytBzMBbwxIaHOpeeHqcKzurFgnswAdzfGoKIobrxnLCTosrjoCwFbCjDnBTlcsOGzwUfDPusIGCepwzitNzoxBrLwCfpLfDswBlylIhuxlsvIHMsKxpQrvlQrkrBpsiHzliarNGHonMwBPQnpTyLaIKwbCCAAwSwtPAtlRIvlssfKIyzEFyNvDlxBuupHCqCDxnwOzhvuozCQuwCiywvAfylpntNzxeMBFroiDCdolFmFHfHsEMEpjusLoHeHFgnqsuizkutxzrphxnGvNsHCdEEamfosIsqTloCNuCBFpGBqkyQCetsvTxzEimHtQwSizGfCtKrcEmtyMvyuxItLoAuwCiywvAfylNoKClwiNBFsSuwConzACXyiCoJNlzeHLNvHovghDswHclqAovAEiiSsuzKpuDdEEACpmfsivTzvwuLuBXuwGpqEGCeprlhuIEiiLvxsVbHMxoCKqbrtIovAsfvBBLGDbCBekxwxspwIoCzjpyLvxsNorCvyzLqfDyxmuNsfwuvxbNJAJlEDLFXEhwyqdEimHxczKkJQvGlLleTxpitdrbzyuyFRpBCoyCwxcsjGdEPriLyEyUDuHMooxGAbEnrkuODTlyGICJuwCfyFyqlqkBeYHypxGnxoSzDScxJExopxweIvteMEAIKgvGPAEALqbEmxnwNrprHnMHzsIyiktFcepsplBJqbwOqxsMtwCikGwvblpxsIosfrMuyvDmsFgBsswazzIaDyDbmxVNGQbxLkxraCpDyprJDyhxIEuwMJzLqGeznkHmptICpemxvNrznCLgkCCriwjsmuNsfvynwvDexLoInGjqAtrkuOlohNBIyNvIKABpvqryyxnwClueHqJISjIMpwJznXoIDnJTzvAuANwSJHyknjGDZlsLeqMtueQuCzDPzyARFJAvFuIhEPrirIJsCTstEqxysvfDxNoKMCjhylIIVpCRioEQxrCtLnxJCtiIEuBXuwGpqdznhpuIhqIrjrAnLCTosRjyFyqAtiNoKHpbrCGQvzuNMwClAmVzzGeqGwzeLrHHFpxLikHsHXyDLhuMpBvyLIIQfpJnIrGrkrmDmuvquiLJuFCtHFgkDCnaxjneqCTteCqcADbCRkDEGxFHfHnJGJjrAGIvDsXPgkwDHativoxJxfezGyFVbGBuRFJAvFuCoMdDbmxgBsSixLiCDLjoEnCgiCpseHnHrApJEjDswAqthzeJvyekIGvoBlDLvrpyxaofBcqMCpyMrFxTtIGpDtEnQsjCsxzHbpErxoKmIFgGlQjozzCdyOEjpFFBsFpIFgBzOwezwHervnlXBrHGGfvMvyyACPsjLaLzousGruBCJLyxootjZvGDyyOmfkuANCQbxLnsvwjYlxIaHyTofOpEsStXQyolJClRtsABGEiiJnLsMuHypnxGCepwHaDypwiLLvCCzLCpDzNnolsssJJzevCtBHTosCtDswAlzkDfJCpdeLEIIRfAQqDswHtzzAdDOrfxMBuyDeIMvrpKtfytGaDTEimHtvISJHRwmvsAlFssoDOsffyAwvEpGOwsEwjtsnAeYBzutLrNHXtDymsyyFbEjHpuxtbpFLGMMfrIcxoEHmlsIscTsvrNvHuGbIPgkwDHdlAtmuLFjxynFCSpuNtyEwlqttCiDvHbCvHNWFpIQqkvwmXyDLaOdojhHGwoQfIFqErzRcpqIsEylnrBnJDXbAJqpDMmapsIhuRlzsFqjvNfqCmoALpltsvaHJFohuAxoQpJLfSHsBalrCnuvCceQyCBFJuCnDDGmXxswaFKJjjSBOKzoIRquyGFqsjIrKOsJhIANyMpLUjITLFXDoJsJOsbxMuyzNpzCfCzvjjysxcuOsfAuLMvDltNvqzAwdlwDuDylohuEIIMexLjoCturphDaJvyeeFyaCCJLGurJGDZzzAdLzmfiHGBsQfiFcDDsuiTrvoyIrusNrFzzcDSvSnGDiouGorvmmCNrFzXpJUjkEamfofutuMTxiHGBCLfpLfrzORdzyHisFlohuyFoMeLFcDDuqlzqXmIPAqsMrxHNhDRqxpPCclqAavOpsMArNCTuDDjoCwkrENsoDOqfiFyCyDjIgtolDuvotCtjCluwNHztCptQpDtFCbCjHtCzEpsGHwvQjvFvxzOJizyDfFzzqpyrMDDdxynvJLqfDtCeFNJdlInHoKzHRiEJLqbJmpvuCpsiEryDRbHIkxrEnfqNBgEDyheJCFMLzHCnpHznkTlDbqxvusMpBCNmCCzDdwyqprqeHdEtwOpBoRuJNknBMnpEnDnyIxzsJvHwNoXKgkyzxtotNoKFypAQuuHXpJPgqzAwdEtsoJDwmCIHxCHuiFgkyKFbCnHyEPoprNVNvHozgcwmMCezBsoYFypAcFQszsxRukDLDmtiFuuNEjsHQVwRoIyullvjpEmtruNEpjNuyAAvIFgupwyplxziDBxfeFBNCErJCuDtGwpEtDHuyCpzyBPsQmpQvclLDoofNwyOsulCFYBFmxQjlltnqsfIsyIEimMAyKOjrRwBpznpHwxtyIrTlyJuGOstRvIlxobnytdrPEwiLLACNeAMqutFpxyDLaOJyfxCzyKGfCQjoHwwqEtIhuGlemyFLCNnLyADswqbwqsoMItoxBrIHGfGUkxrVKXDptdCzHieNVNvNvvFvkmGDqlqAtxDDtxOszWIvHRhsyABepiIeBGtokSBOoApJRKntvwqvsDwMCluxBrBsKmIMukJaovzzLaDOEpoHBQHGfIPwDsamlyyznERHieNVNvHozydyFLrqTrHoHMJJxIyxGNnpLAzpGyipfqoKOtuEvBOHzmAgmxzOrpTxDrJJqnmMFyJDsNzqnJaClwipbEPEFzyAIzCTIPcnwsCbCfCdQxvmiSsIFHoHRcxnwRqsnCkYzGfrGvMGSipRiyovjjXfJryxpJxMsOBMzSMpDpNnoEjAlqIJcsxLuBXuwGpqTxHlFiDyEPDueLGGwRtxLioGwAvmtsy
网站解密
sheWOULdNtWalkRIghTnexTTomeWheNWeLEfTTheseaLiONSbuTSHeDidNtWaLktoofaRaWaYsheSOrTOfWaLkedoNoNeSideOfTHeSIdeWalkandIWalkedONTHeOTheRSideITwaSnttOOGORgeOuSbUTiTWasbeTteRTHaNhaVingherWaLkaboutamIlEaWaYfROmmelikebefoReweWeNTupaNdwatchedThebeaRSoNThaTLitTlehiLlfoRaWhIlebuTThereWasNTmucHTOWatcHOnlYoneofthebeaRSWaSoUTthePolarbeaRtheOTHeRoNEthebRoWnOneWasiNhISGodDamcaVeandwOUldnTcOMEoUTAllYoucoUldSeeWaSHiSrearendtherewaSaliTTLeKidStandingnexTTomeWiThacOWboYhatonPracTicalLYOveRhiSearSaNdhekepTTelLiNGhiSfatheRMaKehiMcOMEoUTDaddYMakehiMcomeOUTilOOkedaToldphOebebUTShEwOUldnTlAUghYOUknoWkIdSwhEnTheYresOreaTyoUtHeYwONtlaUghoranYThinGAfTErWElefTThebeaRSWelefTTHeZOoandcrosSedOVerThISLiTTleSTReetinTHepaRkaNDthEnWeWenTthrOUghoNeOfThOSeliTTletUnNelstHaTaLwaYsSmellfrOmSOmebOdYSTakIngaLeAkITwaSontHeWaYtOThecaRrouSeLoldPHOebEsTIllWOUldnTtaLktoMeORanYThingbuTsheWaSsoRTOfWaLKingNexTtOmeNowITOOkahOLdofThebeLtaTThebackOfhErcoaTjUsTfORTheHeLlOfiTbUTSheWoUldNTleTmesHeSaidKeepYoUrhandsTOYOUrSElfifYoUdOnTMindsheWasSTillSoreaTmeBUtnOTaSSoREaSShewasbefOReANYWaYweKepTgetTiNgcLoseRaNdClOSeRTOThecarROUseLaNdYoUCoUldStarTtOHearThaTNuTTYmUSiCitalWaYspLaYSitWasplaYingohmaRieiTPlayeDthaTSAmeSoNGaboUTfiFtYYeaRSagoWheNiWasalITTleKidthatSoNeNIcetHiNgabOUtcaRRoUselSTheYalWaYsPLaYThesamesONgsIThOUGhTThecaRrouSeLWascLOSeDiNTheWInterTiMeoldphOeBeSaidITWASthefIRstTiMeShePracTiCalLySaidaNYThIngshePRoBabLyfORgoTSHeWaSSupPOSedtObeSoreaTMemaYbebecauSeitSaRouNdChRiSTmaSiSAidshedidnTSaYanYThingWhenIsaIdthaTshEpRObabLYremembeRedSheWasSUppoSedTobeSOReaTmeDOyOUwanTTogofoRaRideONiTISaidIKneWshePRobablYdIdwHenShewasatiNYliTTLeKidandALlieaNdDBandiUSeDtOGoToThePaRkWIThheRShEwaSmadaboUtThecarrOUSeLYOUcoULdnTgetheRoffTHeGodDamThingIMtOObigSheSaidithoUghTsheWaSntGOINGtOanSWeRmebUtSHedidnOYOuREnoTGoonILlWaitfORYagoONISaIdWeWereRighTTHeReTHenthereWereafeWKidSRidIngoNitmoStLYVerYlITTleKidSandafewPaRenTSWeReWaiTiNgARoUndOUtsIdeSItTIngoNThebencHesaNdalLWhatIdIdwasIweNTupTOThEwiNdoWWheReTheYSelLTHeTicKeTSandboUghToldphOeBeaTickeTTheNIgaVeiTTOhErsHeWaSStandiNGRigHTNeXtTOmeHeReIsaidwaitaSecOndTakeTheReStOFYouRdOUGhTOoISTarTedgiVingHeRTHeREsTofThedOugHShedleNTmeyoUkeepitKeePitfORMeSheSaidthensheSaidrIgHTafTErWaRdPleasethatSdePReSSingWhensOmebodYSaYSPleaseTOYoUIMeaNifiTSphOebEoRSOmebodytHatdePReSseDthehelloUtOFmeBUTiPUtTHedoUghbackiNmypOcKeTAREnTYOUgonNaRIdetOOShEaSKedmesheWasLOokiNgaTMeSOrToffunnYYOUcouLdTeLlSHeWaSntToOsOReatMeaNYmOReMaYbeIWilLTheneXTTImeillWaTChYaISaidGOTYOUrTIckeTyeSGOaheadtHeNILlbEonThisbeNchRighTOVeRheReIlLWATchyaiWenTOVeRaNDsaTdownoNthISbeNcHaNdSHeWeNTAndgoTOnthecaRRoUSelshewalkedallaROUNDiTimeaNSheWalKedoncealLthEwaYaRoUndiTthenSheSatdOwnoNThisbigbRoWNbeaTuPLookIngoldhORSeTHeNTHecarRoUSelsTaRTedaNdiWatcHedheRgoaRoUNdandaROUndtheReWeReOnLYaboUTfiVeORsiXOTherkidSontHeRiDeaNdTheSongThecarrOUSeLwaSplaYingWassMokegeTSInyOuREYesItWaSPlaYINGiTveRYjaZZyandfUNnyALlThEkiDskePTtRYingTograbfORthEgoldRingandSowaSOLdphOEbeaNdIWaSsORTofafRaIdSHedfalloffthegoddaMhOrSEbUTididnTsaYanYThINGoRDoanYThingTheThiNgWiThkIdSiSifTheyWanttOgRaBthEgoldRingYoUHaveTOLeTthEmdoITAndNoTSayaNYThIngifTheYfalLofFTheYfalLofFbUTITsbadifYousaYaNYthIngTOThemwheNTheRideWaSOveRShegoTofFherHORSEaNDcameoverToMeyouRideOncEtooThiStimeShesaidnOILLjUSTWATchyaiThiNkilLjUStWaTchIsaidigaveheRSoMEmoReofheRdOUghHeReGEtSOmemOReTickeTSSheTOOKthEdoUghoffMeIMnotMadaTyOUanYMoresheSaidIKNOWhuRRYUPTheThingSgonNaSTarTagaiNthenalLOfasUddeNshEgaVemeakisSthenShehEldHeRhandouTaNdSaidITSRaiNingiTsStarTIngtORaiNIkNoWthenWhatSHedidiTdamNNeaRKilledmeShereachEdiNmYcOatPockeTandTOOkOuTMYRedhuntingHataNdPUTiTOnmYheAdDOnTYouWaNTiTISaidyOUCanWeaRitaWhIlEOkaYHURRyUpThOUghnOWyOUreGonnamiSsYoURRideyOUWoNTgeTYouRoWnhORseORaNYthIngshekepThaNginGaROUndThoUghDidYoUMeanITWhatYOuSaIdYouReaLlyaReNTGoiNgaWaYAnYWheReAreYOUReaLlYgOinghOmeafteRWaRDsSHeaSKedmeyeaHIsaIdiMEaNTiTTOoIWaSnTLYinGTOhErIRealLYdidgohOmeafTeRWaRDsHURRyUpNoWiSaidtHeThiNgSSTarTiNgsHeraNaNdBoUGhTheRtickeTandgOTbaCkONthegoddaMcaRRouSeLjUsTInTiMeTheNsheWalKedaLlTHeWaYarouNdiTTilLSHeGoTHeRoWnhorSebackTHeNSHegOtonITSheWaVedtoMeaNDIWavedbaCkBOyiTbegaNTORaiNlikeaBasTaRdInbUcKeTsISweaRToGodALLThePaReNtSandmOTherSaNdeveRYbODyWEnToVerandsTOodrIgHTUndErTheRoofOfTHecaRROUSeLSoTheYwouLdNTgetSOakEdTOtheSkinoRaNYThiNgbUTISTuckaRoUndoNThebeNchFoRQuiTeawhiLeIGotpReTTYsOakingWeTeSpecialLYMYNecKandMYpanTsmYhunTiNgHaTRealLYgaVemeQUiteaLOTofProTectioNiNaWaYbUTIGoTSoakedAnYWaYididNTcaReTHoUghIfelTsOdamnHaPPYaLLofSUddenTheWayoLdphOebEkePTgoingaROUndaNdaRoUNdIWaSdamNneaRbaWlINGIfElTSOdAmnhaPPYifYOUWanTToknOWtheTrUThIdONTkNoWWhYITWASjUsTThatShelOokEdSodamnniceTheWaYShEkePtgoIngarOuNdandaROUNdiNheRbluecOaTandaLlgODIWIshYOUCouLdVebeeNTHeRetHaTSallImgoiNgtoTeLlabOUtIcOUldpRobablYTeLlYoUWhaTididafteRIweNTHOMeaNdhoWIgotSicKandalLaNdWHaTSchoolImSUPpoSedTOgOToneXTfalLafTerIGeTOUtOFheRebuTIdoNTfeeLlIkEiTireaLlydoNttHatsTUffDoeSnTiNTeReStMeTooMUchRigHtnoWAlotOfPeopleeSPEciallYThiSoNePSYchOaNaLySTgUYTheYhaveHereKeePSaSKingMeifIMgOIngaPPLYMySElfWhenIgObacktoScHOOlNExTseptembeRiTssUcHaStUPidQUesTiOniNmyoPiNiOnIMeanhowdoYoUKnoWWhaTYoURegoIngTodoTIllYOUdOIttHeanSWeRiSyOUdonTIThInkiambUThoWdoIKnoWiSWeariTsaSTUpidQueSTioNDBiSnTasbadasThereSTofTheMBuTHekeepsaskiNGmeaLOTOFqUEsTiOnsToOHedRoveOVeRlaStsaTUrdaYwiThthISENGliShbabethaTsiNThiSNeWPicTuRehesWritiNgSheWaSPreTtYaffectedbUTveRYGOOdLOokiNganYWaYOnetImeWHeNSheWentToTheLadieSROOmWaYThehelldoWNintHeOTHeRWingDBASkedMeWhaTIThOugHtabOUtalLthISstUffIJuSTfinIShedTeLLingYOUaBoUTIdidntknOwWHattHeHeLlTOsaYifyouWaNTTokNOWTHeTRuThidontknOWWhaTIThInkaboUTitImSoRRYItOldSOmaNYpeOpleaboUTitAbOUTalLiknoWisIsOrTOfmiSSeVErYbodYiToldabOUTEveNOlDSTRadlaTeRaNdAckleYfORInSTanceIthiNkIeVenMiSSThaTgoddamMaUriceItSfUNNyDOnTeVerTeLlaNYbodYaNYthIngIfYoUdOyOUStaRTMiSsiNgeVeRybody
发现不对,回看加密程序
from string import ascii_letters
from flag import flag
ctoi = lambda x: ascii_letters.index(x)
itoc = lambda x: ascii_letters[x]
key = flag.strip('NCTF{}')
len_key = len(key)
plaintext = open('plaintext.txt', 'r').read()
plain = ''.join(p for p in plaintext if p in ascii_letters)
cipher = ''.join( itoc( ( ctoi(p) + ctoi( key[i % len_key] ) ) % 52 ) for i,p in enumerate(plain) )
open('ciphertext.txt', 'w').write(cipher)
发现密钥着重于加密的key
即得flagvlbeunuozbpycklsjxlfpaq