CTF中那些脑洞大开的编码和加密.docx

上传人:李司机 文档编号:7224311 上传时间:2024-07-04 格式:DOCX 页数:74 大小:535.50KB
返回 下载 相关 举报
CTF中那些脑洞大开的编码和加密.docx_第1页
第1页 / 共74页
CTF中那些脑洞大开的编码和加密.docx_第2页
第2页 / 共74页
CTF中那些脑洞大开的编码和加密.docx_第3页
第3页 / 共74页
CTF中那些脑洞大开的编码和加密.docx_第4页
第4页 / 共74页
CTF中那些脑洞大开的编码和加密.docx_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《CTF中那些脑洞大开的编码和加密.docx》由会员分享,可在线阅读,更多相关《CTF中那些脑洞大开的编码和加密.docx(74页珍藏版)》请在三一办公上搜索。

1、CTF中那些脑洞大开的编码和加密OxOO前言正文开始之前先闲扯几句吧,玩CTF的小伙伴也许会遇到类似这样的问题:表母,你知道这是什么加密吗?其实CTF中脑洞密码题(非现代加密方式)一般都是各种古典密码的变形,一般出题者会对密文进行一些处理,但是会给留一些线索,所以写此文的目的是想给小伙伴做题时给一些参考,当然常在CTF里出现的编码也可以了解一下。本来是想尽快写出参考的文章,无奈期间被各种事情耽搁导致文章断断续续写了2个月,文章肯定有许多没仃提及到,欢迎小伙伴补充,总之,希望对小伙伴们有帮助吧!最后欢迎小伙伴来博7V(https:/www.hackfun.org/)1.jt!:P(ps::1.1

2、.J,j文足是川markdown,而论坛编辑器不支持markdOWn语法,虽然我已经尽力去调照对其字符,可是效果还是不尽人意,如果影响阅读理解可以去博客阅读:P)0x01目录常见编码:ASCII编码2.Base643216编码3.she1.1.code编码4 .Quoted-printab1.e编码5 .XXencode编码6 .UUencode编码ZUR1.编码8 .Unicode559 .EscapeZUnescape编码10 .HTM1.实体编码11 .敲击码(TaPcode)12 .莫尔斯电码(MorSeCode)13 .编码的故事各种文本加密换位加密:1 .栅栏密码(RaiHenCe

3、Cipher)2 .曲路密码(CUrVeCipher)3 .列移位密码(Co1.UmnarTranspositionCipher)替换加密:1 .埃特巴什码(AtbaShCipher)2 .凯撒密码(CaeSarCipher)3.ROT51318474 .简单换位密码(SimP1.eSubstitutionCipher)5 .希尔密码(HiHCipher)6 .猪圈密码(PigPenCipher)7 .波利比奥斯方阵密码(Po1.ybiUSSquareCipher)8 .更多密码(曲折加密)9 .普莱菲尔密码(PIayfairCipher)10 .维吉尼亚密码(VigenjreCipher)1

4、1 .S动密钥密码(AUtOkeyCipher)12 .博福特密码(BeaUfor1.Cipher)13 .滚动密钥密码(RUnningKeyCipher)14 .Porta密码(PortaCipher)15 .同音替换密码(HOmOPhOniCSubstitutionCipher)16 .仿射密码(AffineCipher)17 .培根密码(BaConianCipher)18 .ADFGX和ADFGVX密码(ADFGXCipher)19 .双密码(BifidCipher)20 .三分密码(TrifidCipher)21 .四方密码(FOUr-SqUareCipher)22 .棋t密码I:Ch

5、eckerboardCipher)23 .跨棋盘密码(StraddIeCheckerboardCipher)24 .分组摩尔斯替换密码(FraCtiOna1.edMorseCipher)25 .Bazeries密码(BaZerieSCipher)26 .Digrafid密码(DigrafidCipher)27 .格明普市密码(GrandPr6Cipher)28 .比尔密码(Beaieciphers)29 .键盘密码(KeybOardCipher)其他仃趣的机械密码:1 .恩尼格玛密码代码混淆加密:1.asp混淆加密2 .php混清加密3 .cssjs混淆加密4.VBScript.Encode混

6、淆加密5.ppencode6.rrencode7.jjencodeaancod8.JSfuck9.jother1(Kbrainfuck编程语占相关工具参考网站彩蛋0x02正文常见编码1.ASC1.1.编码ASCI1.编制大致可以分作:部分组成:第一部分是:ASCI1.非打印控制字符(参详ASC1.1.码表中0-31);第二部分是:ASCI1.打印字符,也就是CTF中常用到的转换;IifiM00000000010000000120000001030000001140000010050000010160000O1.1.O700000111000010009000010011000001010n00

7、00ion12000011001300001101140000X1.1.O150000I1.1.1.160001000017-000100011800010010190001oon20000101002100010101220001011023000101112400011000250001:0012600011010270001101128000111002900011101300001mo234S67S9O1234S6789O123456789O123333333344444444445555555555666二1.-I:二-二二-二一一一一二1.-二二二一-黑soheEEOTENQ然普鲁

8、二8BDC1DC2DC3DC43黑然蓝U-三Mb三M-MfM00100000建格】64O1.OO0000960010OOOXt65O1.OOOOO1.A970010001066O1.OOOO1.OB0010001XC7O1.OOOO1.1.C00100100$68O1.OOO1.OOD10000100101%69O1.OOO1.O1.E10100100110470O1.OO01X0F1020010011171O1.OOO1.1.1.G10300101000(7iO1.OO100OH10400101001)73O1.OO1001Z10500101010*74O1.OO1010J106001010

9、1175O1.OOIO1.1.KX070010110076O1.OO11001.100010110177O1.OOI1.O1.M*09001011107O1.OOI1.1.ON_1100010I1.1.1./79O1.OOI1.1.1.O1110011000000O1.O1.0000p1120011000111O1.O1.OOO1.Q中00110010282O1.O1.OO1.OR1140011001133O1.OXOOUS11500110100464O1.O1.O1.OOT1160011010155O1.O1.O1.O1.U117001101106O1.OXO1.1.OVU800110111

10、77O1.O1.O1.1.1.W11900111000888O1.O1.1000X12000111001969O1.O1.1001Y12100111010.0O1.O1.1010Z12200111011*1O1.O1.IO1.1.1230011110094O1.O1.1110A1250101I1.1.1.-三0110C0110CO1.1.OC0110CO1.1.CC0110C0110C0110C01101011010110】O1.1.O】0110I011010110101101OUXCO1.1.1.CO1.1.1.COU1.CO1.1.1.CO1.1.1.CO1.UCO1.1.1.CO1.1.

11、1.1omO1.1.1.二O1.1.1.IO1.1.1.1O1.1.1.1O1.1.1.131OOO1.I1.1.1.US630011I1.1.1.第三部分是:扩展ASCII打印字符(第一第三部分详见ASCII码&(httpW)耨择),编码转换示例源文本:Thequickbrownfoxjumpsoverthe1.azydogWJJ1.byq1244(hWI1.htqudbS272ff7ngatt6ffm3B75Wt70%7n20Xff76K72*2074t885*20X6Ctt1VAVn2OS4UFXS7SQC.En:73002004006F006700HH0646K207175696368

12、2062726F77206UF78206A75CD7073206F7CS572207468652(KC617逐朦A7320646F7841041C1132n3117105tt107329811411111911032102111120321061171081121个建.MO5.32:X107DX3T2Be68268081D3542M1X6MD5.16:372BB68268D8W之上4JBe64:MGM(XJGZeCBW1weQnWHRQZSBsgSGRvZi47SBte64:T号号CSMOCASCH编码对应十进制:84104IO1.32113117105991073298114I1.1.119

13、11032102I1.1.1203210611710911211532I1.1.11810111432116104IO1.321089712212132100I1.1.103对应可以转换成二进制,八进制,十六进制等。2.Base64,3216编码base64、base32,base16可以分别编码转化8位字节为6位、5位、4位。16,32.64分别表示用多少个字符来编码,这里我注重介绍base640Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据。包括MIME的emai1.,emai1.viaM1.ME,在XM1.中存储复杂数据。编码原理:Base64编码要求把3个8

14、位字节.转化为4个6位的字节,之后在6位的前面补两个0,形成8位个字节的形式,6位2进制能表示的最大数是2的6次方是64.这也是为什么是64个字符(A-Z,a-z,0-9.+./这64个编码字符,=号不属编码字符,而是填充字符)的原因,这样就需要一张映射表,加下:TBase64A1.phabetVa1.ueEncodingVa1.ueEncodingVa1.ueEncodingVa1.ueEncoding0A11R34i51z1B18S35j5202C19T36k5313D20U3715424E21V38a5535F22W39n5646G23X40o5757H24Y41P5868I25Z42q

15、5979J26a4360810K27b44s619111.28c45t62w*Z712M29d46u3i13N3047v14031f48w-15P32g49xy16Q33h50yT号号CS20G举个例子(base64):源文本:The对应ascii码:841041018位binary:0101010001101000011001016位binary:010101000110100001100101 高位补0:OOOO1O1O1000001100010000100100101 对应ascii码:2163337 查表:VGh1.利用Pythonbase64模块,我们分别可以这样加密解密base64

16、3216:31GW1.NDOWSsy*tem32cmd.eMe-pythonC:Users1.pythonPython2.711(v2.7.I1.:6d1.b668f775.Dc52015.20:40:30)ISCv.150064bit(AID6TyPeh1.p,copyright,credits,or1.icene“formoreinformation. Icportby64_rnj*en=Tr.r;i:kbrof:xC)VertheIiiy1g 11dwen=base64.b64encode(11ingwen)printniwn加七部分VGh1.IHFIafNrIGJyb3duIGZveC

17、Bqd1.1.wcyvttaVyIHRoZSBsYXp5IGRvZw三三Jai*en1.三base64.b32encode(mi11swen)kprintdwen1.tRUGK1.DROVUIG2ZA三JZG653OEBTG66BANJ2124DTEBXX1.Z1.SEB2GQZJMiRQXU6JAIEXVO= miwn2abas64.b1.6ncod(mingwn)print11dwen25468G52Qn75三36B2printbase64decodehequickbrownfoxjuapsoverthe1.azydo base32decode=bas64.b32decode(11uwen

18、1.) printbas32dcodfitzxhequickbrownfoxjua*soverthe1.azydoWP73bas1.6dcodb*se64.b1.6decode(miwen2)printbas16dcodhequickbrownfoxju三(soverthe1.azydog .3.she1.1.code编码源文本:Thequickbrownfoxjumpsoverthe1.azydog编码后:SDGW1.NOOWSsystm32cmd.eMC:UsersS,annye1.fDesktoppythonShe1.1.codeencdec.Pysh*1.1.codhexencoded

19、coderrora11nr:guns1.inr.Whatdoyouwanttodo?/decode decodeP1.sinputdata:x54x68x65x7f717569x63x6b7f62x726fx77x6x7fx6*x75x6dx70x73x7fx6fx76x65x727f74x68x65x7fx6cx61x7ax79x7fx65468657f717569636b7f62726f7767f666f787f6756d70737f6f7665727f7468657fp1.aintextThequickbronfoxju11soverthe1.azydogZ:UsersSunnye1.f

20、De三ktop4 .Quoted-printab1.eIe码它是多用途互联网邮件扩展(MIME)一种实现方式。有时候我们可以邮件头里而能够什到这件:勺编码,编湾原理咨用(.000-0C84B99647CCMIBD7BA2O4FDF3A9719DF17153112010C50Otaco.CatntTj.t*xthta1.chrst=*cb2312*CoaUat-TrbtfrEncodimot44*pribttb1.pdus=3HsoVorat1.Xsptnsty1.=3ITfont-f1.y=CB=CC=K,=C4=BF=C7=B0=D!=CT三DF三D3=D0三D2=BB三B8=F6=C!三D

21、Z三=DF=B2三CA三C6=B1.三BF=CD=BB=A7=B6=CB=BD=三D3=C8=K=D6三A7=B8=B6三B1三A5三C7=A!=BO=FC=CT=11=C4=BF三A3=AC三B8三C3=CF=11=C4=BF=三D0三E8三C7三F3三D6三F7三D5三BIspaspta13=3DEV*USArv0卬QG三3D,font-fi1.y三CB=CZ三CC三!5,=BK=BF三DCC三Z1.=B9=9=D6=A7三B3=D6三H=nF=f三1.n=F=f7=n=Rr=11teF=RTter=11三i1.=nnXtnn1.nnFW-rX源文木:,敏捷的棕色狐狸跳过了懒惰的狗编码后:

22、958F898495898B9087868792839848B97/f,9Wf15i!.(http.,too1.sQuotedPrintab1.e.asp)5 .XXencode编码XXencode将输入文本以每三个字节为单位进行编码。如果最后剩下的资料少于三个字节,不够的部份用零补齐。这三个字节共有24个Bit以6bit为单位分为4个组,每个组以上进制来表示所出现的数值只会落在O到63之间。以所对应值的位置字符代替。它所选择的可打印字符是:+-0123456789ABCDEFGH1.JK1.MNOPQRSTUVWXYZabCdefghijk1.mnOpqrStUVWxyz,一共64个卞符。跟

23、base64打印字符相比,就是UUen8de多一个“二字符,少一个7字符。XXoncodeIB阳鸭校过程字符串,Ca编码后是,Eq30源文本:Thequickbrownfoxjumpsoverthe1.azydog,编码后:hJ4VZ653pOKBf647mPrRi64NjS0-eRKpkQm-jRaJm65FcNG-gM1.cft64FjNkc+编码解码/近拉.KhttpjTwebchacuomevcharsetxxencode)6 .UUencode编码UUenCode是一种二进制到文字的编码,最早在UniX邮件系统中使用,全称:Unix-to-Uniencoding,UUencode耨输

24、入文本以每三个字节为单位进行编码,如果最后剩卜.的资料少于三个字节,不够的部份用零补齐。三个字节共有24个Bit,以6-bit为单位分为4个组,每个组以十进制来表示所出现的字节的数值.这个数值只会落在。到63之间。然后将每个数加上32,所产生的结果刚好落在ASCI1.字符集中可打印字符(32空白95底线)的范囤之中.源文本:Thequickbrownfoxjumpsoverthe1.azydog,编码后:M5&AEC%U:6-K(&)R;W=N(&9O-!J=6UPR!O=F5R(1H92!1.87IY(&1O9PH*编例解WMi连拉KhHPW7 .UR1.编码Ur1.编码又叫百分号编码,是统

25、一资源定位(UR1.)编码方式。UR1.地址(常说网址)规定了常用地数字,字母可以直接使用,另外批作为特殊用户字符也可以直接用:等),剩下的其它所有字符必须通过xx编码处理.现在已经成为一种规能了,施本所有程序语言都有这种编码,如js:有encodeURI、encodeURICompoet.PHP有Ur1.enCOde、UrIdeCode等。编码方法很简单,在该字节ascii码的的16进制字符前面加.如空格字符.ascii码是32.时应16进制是20,那么Ur1.enCOde编码结果是:20源文本:Thequickbrownfoxjumpsoverthe1.azydog*编码后:%54%68%

26、65%20%71%75%69%63%6b%20%62%72%6f%77%6e%20%66%6f%78%20%6a%75%6d%70%73%20%6f%76%65%72%20%74%68%65%20%6c%61%7a%79%20%64%6f%67编码解码锥接(http:/W8 .Unicode编码Unicode编码有以下四种编码方式:源文本:The&xHex:&xOO54;&xOO68;&xOO65;,&Decima1.:&00084:&00104;&00101;,UHex:0054U0068U0065U+(Hex:,U+0054U+0068U+0065,i心解Hi1.(http,too1.sU

27、11ide.asp)9 .EscapeUnescape彘码EscapeZUnescape加定解码/编码解码,又叫u编码,采用UTF16BE模式,ESCaPe编码/加密,就是字符对应UTF-1616进制表示方式前面加u。UneSCaPe解码/解密,就是去掉.%u后,将16进制字符还原后,由Utf-16转科到自己目标字符如:字符“中二UTF-16BE是:-6d93,因此EScaPe是u%6d93源文本:The编码后:%UOO54%UoO68%UOO6510 .HTM1.实体编码Kif实体81*实体H.QU0tMX)nHMriC&QUOt;&4;j.,apostrophe4apos;&9W&e

28、rsandmp;&*冽穿greatcr-tfu&6;“620皂完够编码FdH分明(.CR/tags/htm1._ref_entities,htm1.)11 .敲击码敲击码(TaPCode)是一种以非常简单的方式对文本信息进行编码的方法。因该编码对信息通过使用一系列的点击声音来编码而命名,敲击码是基广5x5方格波利比奥斯方阵来实现的,不同点是是用K字母被整合到C中,敲击码表:12 345123412.莫尔斯电码孽尔斯电码(MorSeCode)是由美国人萨缪尔孽尔斯在1836年发明的一种时通时断的且通过不同的排列眼序来表达不同英文字母、数字和标点符号的信号代码,摩尔斯电码主要由以下5种它的代码组成

29、:1 .点(.)2 .划J1.1.Mzf(rif(http1,ciphersc1.assica1.-eraatbash-cipher)291.擞密码“(1)介绍“凯撒密码(CaeSareiPher或称恺撒加密、恺撒变换、变换加密位移加密)是种替换加密,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被苻换成密文。例,当偏移量是3的时候,所有的字母A将被音换成D,B变成E,以此类推.更多参州https:/en.wikipedia.org,Wiki/Caesajcipher)加密实例:明文:ThequickbrownfoxjumpsovertheIaZydog偏移量:1密文:U

30、ifrvjd1.cspogpykvnqtpwfsuifmbazephCaesarencryptionInputtxtThequickbrownfoxjumpsoverthe1.azydogTransfoanauonTranstormat)nTransformedtxtROTOThequickbrownfoxjumpsOVefthe1.azydogROT1Urfrvd1.cspxogpyKvnqtPWfSufmbazephROT2Vjgswke11)dtqyphqzIwocuqxgtv)gnct)afqtROT3WWitx1.fneurzqIramxpsvryuwithodctgROT4X1.iUymgONSafjsbnyqtwSZjVxpedchskROT5Ym1.VZnhPgwtosUcozruxIafWymQfewo你也可以使用Python的PyCiPher模块来加解密,如果提示没有这个模块可以通过.pipinsta1.1.PyCiPher,途看,其他方式来安装pycipher模块。fromimport1参考表(这里是向后移位加密,向前移位解密):机I1.密码位移规律发2三w18*i1.1.K1.iropqrstovvxtJk1.iiopqkstuvvxCdefcbijk1.iroDCDEFCBIJ

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号