编码解码方式

编码:将原始信息转为编码信息进行传输,解决一些特殊字符、不可见字符的传输问题
解码:将编码信息转为原始信息
https://www.iamwawa.cn/

1、hex

将信息转为十六进制

s="flag"
s1 = s.encode().hex()  #编码,中文字符的解码编码都要加utf-8
s2 = int(s1,16) #转为十进制
s3 = ord('a')  #单字符直接使用ord()
s4 = hex(s2)  #十进制转16进制,并会在前面自动补0x,s4[2:]可以去掉0x,如果是long,末尾加L,可使用[2:-1]
print(s1,s2,s3,s4)  #666c6167 1718378855 97 0x666c6167
f = "你好!"
f1 = f.encode("utf-8").hex()  #中文字符编码
def dec(s):
    if len(s)%2 != 0:  #decode解码时必须保证hex编码的字符串是偶数,如果是奇数,要补0
        s = "0"+s
    return bytes.fromhex(s).decode() #使用fromhex()方法将十六进制字符串转换为字节串,然后使用decode()方法将字节串解码为原始字符串
string = "576f726c6421"
result = dec(string)
print(result)
from Crypto.Util.number import long_to_bytes,bytes_to_long  #将长整型转换为字节串的函数
flag = b"flag{123}"
print(bytes_to_long(flag))
print(long_to_bytes(bytes_to_long(flag)))

2、urlencode

用于浏览器和网站之间的数据交换,在特殊字符hex的基础上,每个字符前加一个“%”,遇到%时,连带%的三个字符对应明文的一个字符
https://www.iamwawa.cn/urldecode.html

flag = b"flag{123!@#$}"
import urllib
f2 = urllib.parse.quote(flag)
print(f2)   #flag%7B123%21%40%23%24%7D
f3 = urllib.parse.unquote(f2)
print(f3)   #flag{123!@#$}

3、morsecode(摩斯电码)

'.‘和’-‘组成,使用’/'分隔
https://www.iamwawa.cn/morse.html
下面是莫斯电码(Morse code)的对照表:

字母:
A: .-       N: -.       0: -----
B: -...     O: ---      1: .----
C: -.-.     P: .--.     2: ..---
D: -..      Q: --.-     3: ...--
E: .        R: .-.      4: ....-
F: ..-.     S: ...      5: .....
G: --.      T: -        6: -....
H: ....     U: ..-      7: --...
I: ..       V: ...-     8: ---..
J: .---     W: .--      9: ----.
K: -.-      X: -..-
L: .-..     Y: -.--
M: --       Z: --..
标点符号和特殊字符:
.: .-.-.-       ,: --..--       ?: ..--..
': .----.       !: -.-.--       /: -..-.
(: -.--.        ): -.--.-       &: .-...
": .-..-.       ;: -.-.-.       =: -...-
+: .-.-.        -: -....-       _: ..--.-
$: ...-..-      @: .--.-.       space: /
[: -.--.-
]: -.--.-
morse_code_dict = {
    'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.', 'G': '--.', 'H': '....',
    'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.', 'O': '---', 'P': '.--.',
    'Q': '--.-', 'R': '.-.', 'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-',
    'Y': '-.--', 'Z': '--..',
    '0': '-----', '1': '.----', '2': '..---', '3': '...--', '4': '....-', '5': '.....', '6': '-....',
    '7': '--...', '8': '---..', '9': '----.',
    '.': '.-.-.-',  ',': '--..--', '?': '..--..', '/':'-..-.',   '!': '-.-.--', '@': '.--.-.', '(':'-.--.',
    ')': '-.--.-',  '&':'.-...',   ';': '-.-.-.', '=': '-...-',  '+': '.-.-.',  '-': '-....-', '_': '..--.-',
    '$': '...-..-', '@':'.--.-.',  '[': '-.--.-', ']': '-.--.-'
}
#解码
def decode_morse_code(morse_code):
    morse_code_dict = {
        '.-': 'A', '-...': 'B', '-.-.': 'C', '-..': 'D', '.': 'E',
        '..-.': 'F', '--.': 'G', '....': 'H', '..': 'I', '.---': 'J',
        '-.-': 'K', '.-..': 'L', '--': 'M', '-.': 'N', '---': 'O',
        '.--.': 'P', '--.-': 'Q', '.-.': 'R', '...': 'S', '-': 'T',
        '..-': 'U', '...-': 'V', '.--': 'W', '-..-': 'X', '-.--': 'Y',
        '--..': 'Z', '.----': '1', '..---': '2', '...--': '3', '....-': '4',
        '.....': '5', '-....': '6', '--...': '7', '---..': '8', '----.': '9',
        '-----': '0', '/': ' '
    }
    words = morse_code.split(' / ')
    decoded_text = ''
    for word in words:
        letters = word.split(' ')
        for letter in letters:
            if letter in morse_code_dict:
                decoded_text += morse_code_dict[letter]
        decoded_text += ' '

    return decoded_text.strip()
    # return decoded_text
# morse_code = "- .... . / .-- --- .-. -. .. -. --. / - --- / -.-. --- -- .--. .. .-. . / .- -. -.. / .. ... / -... .-. --- .-- -. / .. ... / - --- / .- / -.-. .- -. / --- ..-. / - .... . / .-- .. -.. . / - --- / -.-. --- -- .--. .. .-. ."
morse_code = "-- --- .-. ... . -.-. --- -.. . .. ... ... --- .. -. - . .-. . ... - .. -. --."
decoded_text = decode_morse_code(morse_code)
print(decoded_text.lower())

4、jsfuck

由“()+[]!”组成的编码

5、uuencode

二进制文件转为可见字符文本的文件,将连续3字节扩展为4字节,取值从32(空白)到95(底线),没有小写字母
https://www.qqxiuzi.cn/bianma/uuencode.php

6、base家族:base16、base32、base64

将特殊字符和不可见字符转为常见字符
base64:a-z,A-Z,0-9,+,/,=
base32:A-Z,2-7,=
base16:A-F,0-9,= base64.b16encode(“flag”).lower() == “flag”.encode().hex()
判断:最后有没有=,“=”用于补位
https://www.qqxiuzi.cn/bianma/base64.htm

import base64
print(base64.b32encode(flag))

参考书目:FlappyPig-CTF特训营:技术详解、解题方法与竞赛技巧

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 范围 本标准规定了QR码符号的要求。它规定了QR码模式2符号的特征,数据字符编码,符号格式,尺寸特征,纠错规则,参考译码算法,符号质量要求,以及可由用户选择的应用参数,在附录中给出了QR码模式1符号不同于模式2的特性。 2 一致性 QR码符号(及设计用于生成或识读QR码符号的设备)如果满足QR码模式2或模式1规定的要求,应认作符合本规范。然而要注意,模式2是推荐用于新的和开放式系统应用的符号方式。 3 引用标准 下列标准文件所包含的条文,通过在本标准中引用而构成为本标准的条文。对于注明日期的引用标准,以后进行的补充和修改并不适用,然而,鼓励基于国际标准的协议各方对应用以下标准文件最新版本的可能性进行调研,无注明日期的引用标准适用于提交应用的最近的版本。ISO和IEC的成员仍然是当前有效标准的注册机构。 ISO/IEC 15424 信息技术—— 自动识别和数据采集技术 —— 数据载体/符号标识 ISO/IEC 15416 信息技术—— 自动识别和数据采集技术 —— 条码印刷质量测试规范 —— 线性条码 EN 1556 条码——术语 JIS X0201 信息交换用JIS 8位字符集 JIS X0208—1997 信息交换用日语图形字符集 ANSI X 3.4 编码字符集——信息交换用7位美国国家标准码(7位ASCII) AIM国际技术规范 扩展解释:第一部分:识别方案与协议(称作“AIM ECI规范”) 4 术语和定义 EN1556中的术语和下列各项适用于本标准: 4.1 校正图形(Alignment Pattern) 用于确立矩阵符号位置的一个固定的参照图形,译码软件可以通过它在图象有中等程度损坏的情况下,再同步图像模块的坐标映象。 4.2 字符计数指示符(Character Count Indicator) 定义某一模式下的数据串长度的位序列。 4.3 ECI指示符(ECI designator) 6位数字,用于标识具体的ECI任务。 4.4 编码区域(encoding region) 在符号中没有被功能图形占用,可以对数据或纠错码字进行编码的区域。 4.5 扩充解释(Extended Channel Interpretation (ECI)) 在某些码制中,对输出数据流允许有与缺省字符集不同的解释的协议。 4.6 扩展图形(Extension Pattern) 模式1中,不表示数据的一种功能图形。 4.7 格式信息(Format Information) 一种功能图形,它包含符号使用的纠错等级以及使用的掩模图形的信息,以便对编码区域的剩余部分进行译码。 4.8 功能图形(function pattern) 符号中用于符号定位与特征识别的特定图形。 4.9 掩模图形参考(Mask Pattern Reference) 用于符号的三位掩模图形标识符。 4.10 掩模(masking) 在编码区域内,用掩模图形对位图进行XOR操作,其目的是使符号中深色与浅色模块数的比例均衡,并且减少影响图像快速处理的图形出现。 4.11 模式(mode) 将特定的字符集表示成位串的方法。 4.12 模式指示符(Mode Indicator) 4位标识符,指示随后的数据序列所用的编码模式。 4.13 填充位(Padding Bit) 值为0,不表示数据,用于填充数据位流最后一个码字中终止符后面的空位。 4.14 位置探测图形(Position Detection Pattern) 组成寻象图形的三个相同的图形之一。 4.15 剩余位(Remainder Bit) 值为0,不表示数据,当编码区域不能正好被8位的码字填满时,用于填充最后一个码字后的空位。 4.16 剩余码字(Remainder Codeword) 一种填充码字,当所有的数据码字和纠错码字不能正好填满符号的容量时,用于填充所空码字位置,它们紧跟在最后一个纠错码字之后。 4.17 段(segment) 以同一ECI或编码模式编码的数据序列。 4.18 分隔符(Separator) 全部由浅色模块组成的功能图形,宽度为一个模块,用于将位置探测图形与符号的其余部分分开。 4.19 终止符(Terminator) 用于结束表示数据位流的位图0000。 4.20 定位图形(Timing Pattern) 深色与浅色模块交错的图形,便于决定符号中模块的坐标。 4.21 版本(Version) 用于表示符号规格的系列。某一特定版本是根据它在所允许的规格系列中的位置来确定的。QR码所允许规格系列为21×21模块(版本1)~177×177模块(版本40)。它也可同时指示符号所应用的纠错等级。 4.22 版本信息(Version Information) 在模式2符号中,包含符号版本的信息及该数据纠错位的功能图形。
二维码编码解码器源码 本源码实现可以在C#中使用的1D/2D编码解码器。条形码的应用已经非常普遍,几乎所有超市里面的商品上面都印有条形码;二维码也开始应用到很多场合,如火车票有二维码识别、网易的首页有二维码图标,用户只需要用手机扫描一下就可以看到手机版网易的网址,免去了输入长串字符的麻烦。 条形码的标准: 条形码的标准有ENA条形码、UPC条形码、二五条形码、交叉二五条形码、库德巴条形码、三九条形码和128条形码等,而商品上最常使用的就是EAN商品条形码。EAN商品条形码亦称通用商品条形码,由国际物品编码协会制定,通用于世界各地,是目前国际上使用最广泛的一种商品条形码。我国目前在国内推行使用的也是这种商品条形码。EAN商品条形码分为EAN-13(标准版)和EAN-8(缩短版)两种。 二维码的编码标准: 全球现有的二维码多达200种以上,其中常见的技术标准有PDF417(美系标准),QRCode(日系标准),Code49,Code16K,CodeOne,DM(韩系标准),GM(中国标准),CM(中国标准)等20余种。用得最多的是QRcode。 下面借助google的开源项目zxing来实现1D/2D的编码解码 zxing的功能还是很强大的,最初是用java编写,并支持Android、ios、symbian等手机操作系统。 不过不知是何原因,该官网连一个例子也没有,文档也是字典式的把所有类列出来,一点都没为读者考虑。 下面我把如果使用zxing完成上图所示例子讲解一遍,供初学者参考: 1.我们新建一个Winform测试项目; 2.从官网下载zxing开源项目,大概16m的样子,解压缩后打开zxing-2.1\csharp目录,将该目录拷贝到我们新建的Winform项目下(方便调试和看源码,并非一定要如此); 3.winform项目中添加对zxing项目的引用; 4.按上图所示例子建好控件,“生成条形码”的代码如下: 其中需要注意BarcodeFormat参数,可以打开定义看到具体的编码方式,自己百度每种编码方式对输入的要求。 这里EAN_13编码要求是13位长度的数字,并且满足:把所有偶数序号位上的数相加求和,用求出的和乘3,再把所有奇数序号上的数相加求和,用求出的和加上刚才偶数序号上的数,然后得出和能被10整除。(这个规则校验在UPCEANReader类的checkStandardUPCEANChecksum方法里面,如果不需要,可以去掉) 注意编码问题,在com.google.zxing.qrcode.encoder.Encoder类中修改默认编码为utf-8,否则解码出现的是乱码。 System.String DEFAULT_BYTE_MODE_ENCODING = "UTF-8"; 此处之前是"ISO-8859-1",之所以改成UTF-8是因为,在解码的时候程序会猜测可能的编码,如果猜测失败则默认是UTF-8,代码在com.google.zxing.qrcode.decoder.DecodedBitStreamParser类的guessEncoding方法中。 所以此开源项目也缺少全局性思考,连编码解码的默认编码方式都不一致。 经网友反映,还是有些中文会出现解码成乱码,而有些又可以,估计还是guessEncoding方法猜测编码出现了偏差,直接将guessEncoding方法写成返回UTF8就行了。 4.实现图片解码,即把条形码或二维码图片解码成其真实内容,当然在pc上应用不大,但可能只是还没发现而已,代码如下: opFilePath是图片路径,你可以用openFileDialog控件打开文件来得到路径。 注意: 点解码按钮前要先选择一张二维码或条形码图片,即先点击“…”按钮选择图片,然后再点“解码”按钮。
二维码编码解码器源码 本源码实现可以在C#中使用的1D/2D编码解码器。条形码的应用已经非常普遍,几乎所有超市里面的商品上面都印有条形码;二维码也开始应用到很多场合,如火车票有二维码识别、网易的首页有二维码图标,用户只需要用手机扫描一下就可以看到手机版网易的网址,免去了输入长串字符的麻烦。 条形码的标准: 条形码的标准有ENA条形码、UPC条形码、二五条形码、交叉二五条形码、库德巴条形码、三九条形码和128条形码等,而商品上最常使用的就是EAN商品条形码。EAN商品条形码亦称通用商品条形码,由国际物品编码协会制定,通用于世界各地,是目前国际上使用最广泛的一种商品条形码。我国目前在国内推行使用的也是这种商品条形码。EAN商品条形码分为EAN-13(标准版)和EAN-8(缩短版)两种。 二维码的编码标准: 全球现有的二维码多达200种以上,其中常见的技术标准有PDF417(美系标准),QRCode(日系标准),Code49,Code16K,CodeOne,DM(韩系标准),GM(中国标准),CM(中国标准)等20余种。用得最多的是QRcode。 下面借助google的开源项目zxing来实现1D/2D的编码解码 zxing的功能还是很强大的,最初是用java编写,并支持Android、ios、symbian等手机操作系统。 不过不知是何原因,该官网连一个例子也没有,文档也是字典式的把所有类列出来,一点都没为读者考虑。 下面我把如果使用zxing完成上图所示例子讲解一遍,供初学者参考: 1.我们新建一个Winform测试项目; 2.从官网下载zxing开源项目,大概16m的样子,解压缩后打开zxing-2.1\csharp目录,将该目录拷贝到我们新建的Winform项目下(方便调试和看源码,并非一定要如此); 3.winform项目中添加对zxing项目的引用; 4.按上图所示例子建好控件,“生成条形码”的代码如下: 其中需要注意BarcodeFormat参数,可以打开定义看到具体的编码方式,自己百度每种编码方式对输入的要求。 这里EAN_13编码要求是13位长度的数字,并且满足:把所有偶数序号位上的数相加求和,用求出的和乘3,再把所有奇数序号上的数相加求和,用求出的和加上刚才偶数序号上的数,然后得出和能被10整除。(这个规则校验在UPCEANReader类的checkStandardUPCEANChecksum方法里面,如果不需要,可以去掉) 注意编码问题,在com.google.zxing.qrcode.encoder.Encoder类中修改默认编码为utf-8,否则解码出现的是乱码。 System.String DEFAULT_BYTE_MODE_ENCODING = "UTF-8"; 此处之前是"ISO-8859-1",之所以改成UTF-8是因为,在解码的时候程序会猜测可能的编码,如果猜测失败则默认是UTF-8,代码在com.google.zxing.qrcode.decoder.DecodedBitStreamParser类的guessEncoding方法中。 所以此开源项目也缺少全局性思考,连编码解码的默认编码方式都不一致。 经网友反映,还是有些中文会出现解码成乱码,而有些又可以,估计还是guessEncoding方法猜测编码出现了偏差,直接将guessEncoding方法写成返回UTF8就行了。 4.实现图片解码,即把条形码或二维码图片解码成其真实内容,当然在pc上应用不大,但可能只是还没发现而已,代码如下: opFilePath是图片路径,你可以用openFileDialog控件打开文件来得到路径。 注意: 点解码按钮前要先选择一张二维码或条形码图片,即先点击“…”按钮选择图片,然后再点“解码”按钮。
LonWorks是一种用于建立、控制和监测智能建筑系统的开放标准和协议。它基于网络、通信和控制技术,旨在实现建筑内部各种设备和系统的互联互通,提高建筑的可操作性和能源效率。 LonWorks的解码是指将使用LonWorks协议的通信数据进行解析和还原的过程。LonWorks通信数据采用了特定的编码方式,通过解码可以获得其中的信息内容。 解码过程中需要参考LonWorks协议规范,了解LonWorks协议的数据格式和通信规则。LonWorks通信数据包含了不同的字段和数据类型,解码时需要根据这些字段和数据类型进行解析。 解码的过程涉及到解析LonWorks通信帧的各个字段,如源地址、目的地址、控制码等,并根据LonWorks协议规定的格式将它们还原为对应的数据。 LonWorks解码需要使用专门的工具和设备,如LonWorks网络分析仪、LonWorks协议分析软件等。这些工具可以帮助解析和还原LonWorks通信数据,实现对LonWorks网络的监测和控制。 通过LonWorks解码,可以获得建筑内部各个设备和系统的运行状态、能源使用情况等信息,从而实现对建筑系统的集中控制和管理。同时,LonWorks解码也可以帮助识别和解决网络通信故障和问题,提高建筑系统的可靠性和稳定性。 总而言之,LonWorks解码是将使用LonWorks协议的通信数据进行解析和还原的过程,它为建筑系统的控制和监测提供了基础,同时也是解决网络故障和问题的重要环节。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值