16 ричный код символа

Коды ASCII символов

Управляющие символы (большинство непечатные; наиболее важные подсвечены жёлтым)

Печатные символы (стандартные)

Символ Dec Hex Oct Описание
32 20 040 Пробел
! 33 21 041 Восклицательный знак
« 34 22 042 Кавычка (» в HTML)
# 35 23 043 Решётка (знак числа)
$ 36 24 044 Доллар
% 37 25 045 Проценты
& 38 26 046 Амперсанд
39 27 047 Закрывающая одиночная кавычка (апостроф)
( 40 28 050 Открывающая скобка
) 41 29 051 Закрывающая скобка
* 42 2a 052 Звёздочка, умножение
+ 43 2b 053 Плюс
, 44 2c 054 Запятая
45 2d 055 Дефис, минус
. 46 2e 056 Точка
/ 47 2f 057 Наклонная черта (слеш, деление)
0 48 30 060 Ноль
1 49 31 061 Один
2 50 32 062 Два
3 51 33 063 Три
4 52 34 064 Четыре
5 53 35 065 Пять
6 54 36 066 Шесть
7 55 37 067 Семь
8 56 38 070 Восемь
9 57 39 071 Девять
: 58 3a 072 Двоеточие
; 59 3b 073 Точка с запятой
62 3e 076 Знак больше
? 63 3f 077 Знак вопроса
@ 64 40 100 эт, собака
A 65 41 101 Заглавная A
B 66 42 102 Заглавная B
C 67 43 103 Заглавная C
D 68 44 104 Заглавная D
E 69 45 105 Заглавная E
F 70 46 106 Заглавная F
G 71 47 107 Заглавная G
H 72 48 110 Заглавная H
I 73 49 111 Заглавная I
J 74 4a 112 Заглавная J
K 75 4b 113 Заглавная K
L 76 4c 114 Заглавная L
M 77 4d 115 Заглавная M
N 78 4e 116 Заглавная N
O 79 4f 117 Заглавная O
P 80 50 120 Заглавная P
Q 81 51 121 Заглавная Q
R 82 52 122 Заглавная R
S 83 53 123 Заглавная S
T 84 54 124 Заглавная T
U 85 55 125 Заглавная U
V 86 56 126 Заглавная V
W 87 57 127 Заглавная W
X 88 58 130 Заглавная X
Y 89 59 131 Заглавная Y
Z 90 5a 132 Заглавная Z
[ 91 5b 133 Открывающая квадратная скобка
\ 92 5c 134 Обратная наклонная черта (обратный слеш)
] 93 5d 135 Закрывающая квадратная скобка
^ 94 5e 136 Циркумфлекс, возведение в степень, знак вставки
_ 95 5f 137 Нижнее подчёркивание
` 96 60 140 Открывающая одиночная кавычка, гравис, знак ударения
a 97 61 141 Строчная a
b 98 62 142 Строчная b
c 99 63 143 Строчная c
d 100 64 144 Строчная d
e 101 65 145 Строчная e
f 102 66 146 Строчная f
g 103 67 147 Строчная g
h 104 68 150 Строчная h
i 105 69 151 Строчная i
j 106 6a 152 Строчная j
k 107 6b 153 Строчная k
l 108 6c 154 Строчная l
m 109 6d 155 Строчная m
n 110 6e 156 Строчная n
o 111 6f 157 Строчная o
p 112 70 160 Строчная p
q 113 71 161 Строчная q
r 114 72 162 Строчная r
s 115 73 163 Строчная s
t 116 74 164 Строчная t
u 117 75 165 Строчная u
v 118 76 166 Строчная v
w 119 77 167 Строчная w
x 120 78 170 Строчная x
y 121 79 171 Строчная y
z 122 7a 172 Строчная z
< 123 7b 173 Открывающая фигурная скобка
| 124 7c 174 Вертикальная черта
> 125 7d 175 Закрывающая фигурная скобка
126 7e 176 Тильда (приблизительно)

Расширенный набор символов (ANSI) в русской кодировке Win-1251

Источник

ASCII таблица

ASCIIA merican S tandard C ode for I nformation I nterchange.

ASCII была разработана (1963 год) для кодирования символов, коды которых помещались в 7 бит (128 символов). Со временем кодировка была расширена до 8-ми бит (256 символов), коды первых 128-и символов не изменились.

Управляющие символы ASCII (код символа 0-31)

Первые 32 символа в ASCII-таблице не имеют печатных кодов и используются для управления периферийными устройствами, телетайпами, принтерами и т.д.

DEC OCT HEX BIN Symbol HTML Number HTML Name Description
0 000 0x00 00000000 NUL \0 & #000; Null char
1 001 0x01 00000001 SOH & #001; Start of Heading
2 002 0x02 00000010 STX & #002; Start of Text
3 003 0x03 00000011 ETX & #003; End of Text
4 004 0x04 00000100 EOT & #004; End of Transmission
5 005 0x05 00000101 ENQ & #005; Enquiry
6 006 0x06 00000110 ACK & #006; Acknowledgment
7 007 0x07 00000111 BEL & #007; Bell
8 010 0x08 00001000 BS & #008; Back Space
9 011 0x09 00001001 HT \t & #009; Tab
10 012 0x0A 00001010 LF \n & #010; Новая строка
11 013 0x0B 00001011 VT & #011; Vertical Tab
12 014 0x0C 00001100 FF & #012; Form Feed
13 015 0x0D 00001101 CR \r & #013; Возврат каретки
14 016 0x0E 00001110 SO & #014; Shift Out / X-On
15 017 0x0F 00001111 SI & #015; Shift In / X-Off
16 020 0x10 00010000 DLE & #016; Data Line Escape
17 021 0x11 00010001 DC1 & #017; Device Control 1 (oft. XON)
18 022 0x12 00010010 DC2 & #018; Device Control 2
19 023 0x13 00010011 DC3 & #019; Device Control 3 (oft. XOFF)
20 024 0x14 00010100 DC4 & #020; Device Control 4
21 025 0x15 00010101 NAK & #021; Negative Acknowledgement
22 026 0x16 00010110 SYN & #022; Synchronous Idle
23 027 0x17 00010111 ETB & #023; End of Transmit Block
24 030 0x18 00011000 CAN & #024; Cancel
25 031 0x19 00011001 EM & #025; End of Medium
26 032 0x1A 00011010 SUB & #026; Substitute
27 033 0x1B 00011011 ESC & #027; Escape
28 034 0x1C 00011100 FS & #028; File Separator
29 035 0x1D 00011101 GS & #029; Group Separator
30 036 0x1E 00011110 RS & #030; Record Separator
31 037 0x1F 00011111 US & #031; Unit Separator
DEC OCT HEX BIN Symbol HTML Number HTML Name Description
Печатные символы ASCII (код символа 32-127)

Буквы, цифры, знаки препинания и другие символы расположенные на клавиатуре (англ.).

Источник

HackWare.ru

Этичный хакинг и тестирование на проникновение, информационная безопасность

ASCII и шестнадцатеричное представление строк. Побитовые операции со строками

В литературе, которую я изучаю (например, по обратному инженерингу), для строк как само собой разумеющееся используются ASCII значения или запись в виде шестнадцатеричной строки. Подразумевается что читатели не только должны на лету конвертировать строки между обычным представлением, ASCII кодами символов, шестнадцатеричной и двоичной записью, но и должны уметь делать побитовые операции со строками.

На самом деле, это действительно не особенно сложная тема — достаточно один раз понять суть, а затем при необходимости можно пользоваться таблицами ASCII/Hex/Bin значений символов, либо конвертировать используя соответствующие утилиты или встроенные в языки программирования функции. Если у вас пробел в этих знаниях, то это статья должна вам помочь.

Смотрите также:

Для кого эта статья

Вам абсолютно точно нужно понимать суть ASCII кодирования символов, а также шестнадцатеричную запись строк если вы:

Примечание: правда, я исхожу из того, что вы знаете что такое:

По идее, это охватывается базовым курсом информатики и логики на любых специальностях в ВУЗе (некоторые учат это уже в школе) и это должен знать каждый — поэтому я не будут на этом останавливаться. Если вы не знаете даже этого, то прежде чем читать эту заметку, начните с ликвидации ваших более базовых пробелов про системы счисления.

Что такое ASCII

Не будем тратить время на экскурсы в историю о появлении ASCII — рассмотрим только с практической точки зрения.

А с практической точки зрения в ASCII каждому символу соответствует его порядковый номер. Этот порядковый номер можно записать десятичным числом, например, символу «h» соответствует 104, а символу «i» соответствует 105.

Любое десятичное число можно конвертировать в шестнадцатеричное, двоичное или восьмеричное число. Зачем конвертировать? Главная причина в том, что компьютер в своей основе не работает с десятеричными числами, а использует двоичные, которые удобно записывать в более компактном виде — конвертировать в шестнадцатеричные. Поэтому в определённых программах широко используются эти записи: в шестнадцатеричных редакторах, отладчиках. Также шестнадцатеричную/двоичную запись строк программист может использовать для различных манипуляций, например, с целью шифрования или другой обработки. Например, для тех же самых побитовых операций, к которым мы вернёмся позже.

Итак, вот таблицы символов, с их цифровым представлением в различных системах счисления:

Контрольные символы ASCII (некоторые из них больше не актуальны, так как подразумевают использование в телетайп связи)

Во многих языках программирования символ обозначается как «\n». Нажатие на клавишу ↵ Enter при выводе текста переводит строку.

В настоящее время символ вставляется нажатием комбинации клавиш Ctrl + Z и используется для обозначения конца файла в операционных системах «DOS» и «Windows».

Код этого символа происходит из первых текстовых процессоров с памятью на перфоленте: в них удаление символа происходило «забиванием» его кода дырочками (обозначавшими логические единицы).

Печатные символы ASCII

Описание 32 20 00100000 Space пробел 33 21 00100001 ! воскллицательный знак 34 22 00100010 « двойные кавычки 35 23 00100011 # шарп, номер 36 24 00100100 $ доллар 37 25 00100101 % проценты 38 26 00100110 & амперсант 39 27 00100111 единичная кавычка 40 28 00101000 ( левая скобка 41 29 00101001 ) правая скобка 42 2A 00101010 * звездочка 43 2B 00101011 + плюс 44 2C 00101100 , запятая 45 2D 00101101 минус 46 2E 00101110 . точка 47 2F 00101111 / слэш 48 30 00110000 0 ноль 49 31 00110001 1 один 50 32 00110010 2 два 51 33 00110011 3 три 52 34 00110100 4 четыре 53 35 00110101 5 пять 54 36 00110110 6 шесть 55 37 00110111 7 семь 56 38 00111000 8 восемь 57 39 00111001 9 девять 58 3A 00111010 : двоеточие 59 3B 00111011 ; точка с запятой 60 3C 00111100 больше чем 63 3F 00111111 ? знак вопроса 64 40 01000000 @ сабака 65 41 01000001 A 66 42 01000010 B 67 43 01000011 C 68 44 01000100 D 69 45 01000101 E 70 46 01000110 F 71 47 01000111 G 72 48 01001000 H 73 49 01001001 I 74 4A 01001010 J 75 4B 01001011 K 76 4C 01001100 L 77 4D 01001101 M 78 4E 01001110 N 79 4F 01001111 O 80 50 01010000 P 81 51 01010001 Q 82 52 01010010 R 83 53 01010011 S 84 54 01010100 T 85 55 01010101 U 86 56 01010110 V 87 57 01010111 W 88 58 01011000 X 89 59 01011001 Y 90 5A 01011010 Z 91 5B 01011011 [ левая квадратная скобка 92 5C 01011100 \ обратный слэш 93 5D 01011101 ] правая квадратная скобка 94 5E 01011110 ^ каретка 95 5F 01011111 _ подчёркивание 96 60 01100000 ` акцент 97 61 01100001 a 98 62 01100010 b 99 63 01100011 c 100 64 01100100 d 101 65 01100101 e 102 66 01100110 f 103 67 01100111 g 104 68 01101000 h 105 69 01101001 i 106 6A 01101010 j 107 6B 01101011 k 108 6C 01101100 l 109 6D 01101101 m 110 6E 01101110 n 111 6F 01101111 o 112 70 01110000 p 113 71 01110001 q 114 72 01110010 r 115 73 01110011 s 116 74 01110100 t 117 75 01110101 u 118 76 01110110 v 119 77 01110111 w 120 78 01111000 x 121 79 01111001 y 122 7A 01111010 z 123 7B 01111011 < левая фигурная скобка 124 7C 01111100 | вертикальная черта 125 7D 01111101 > правая фигурная скобка 126 7E 01111110

Расширенные символы ASCII

Десятичное значение Шестнадцатеричное Двоичное Символ Описание
128 80 10000000 €
129 81 10000001 
130 82 10000010 ‚
131 83 10000011 ƒ
132 84 10000100 „
133 85 10000101
134 86 10000110 †
135 87 10000111 ‡
136 88 10001000 ˆ
137 89 10001001 ‰
138 8A 10001010 Š
139 8B 10001011 ‹
140 8C 10001100 Œ
141 8D 10001101 
142 8E 10001110 Ž
143 8F 10001111 
144 90 10010000 
145 91 10010001 ‘
146 92 10010010 ’
147 93 10010011 “
148 94 10010100 ”
149 95 10010101 •
150 96 10010110 –
151 97 10010111 —
152 98 10011000 ˜
153 99 10011001 ™
154 9A 10011010 š
155 9B 10011011 ›
156 9C 10011100 œ
157 9D 10011101 
158 9E 10011110 ž
159 9F 10011111 Ÿ
160 A0 10100000 пробел
161 A1 10100001 ¡
162 A2 10100010 ¢ цент
163 A3 10100011 £ фунт
164 A4 10100100 ¤ знак валюты
165 A5 10100101 ¥ иена, юань
166 A6 10100110 ¦ сломанный бар
167 A7 10100111 § знак параграфа
168 A8 10101000 ¨
169 A9 10101001 © копирайт
170 AA 10101010 ª порядковый индикатор
171 AB 10101011 «
172 AC 10101100 ¬
173 AD 10101101
174 AE 10101110 ® зарегистрированная торговая марка
175 AF 10101111 ¯
176 B0 10110000 ° градус
177 B1 10110001 ± плюс-минус
178 B2 10110010 ²
179 B3 10110011 ³
180 B4 10110100 ´
181 B5 10110101 µ мю
182 B6 10110110 знак абзаца
183 B7 10110111 ·
184 B8 10111000 ¸
185 B9 10111001 ¹
186 BA 10111010 º порядковый индикатор
187 BB 10111011 »
188 BC 10111100 ¼
189 BD 10111101 ½
190 BE 10111110 ¾
191 BF 10111111 ¿ перевернутый знак вопроса
192 C0 11000000 À
193 C1 11000001 Á
194 C2 11000010 Â
195 C3 11000011 Ã
196 C4 11000100 Ä
197 C5 11000101 Å
198 C6 11000110 Æ
199 C7 11000111 Ç
200 C8 11001000 È
201 C9 11001001 É
202 CA 11001010 Ê
203 CB 11001011 Ë
204 CC 11001100 Ì
205 CD 11001101 Í
206 CE 11001110 Î
207 CF 11001111 Ï
208 D0 11010000 Ð
209 D1 11010001 Ñ
210 D2 11010010 Ò
211 D3 11010011 Ó
212 D4 11010100 Ô
213 D5 11010101 Õ
214 D6 11010110 Ö
215 D7 11010111 × знак умножения
216 D8 11011000 Ø
217 D9 11011001 Ù
218 DA 11011010 Ú
219 DB 11011011 Û
220 DC 11011100 Ü
221 DD 11011101 Ý
222 DE 11011110 Þ
223 DF 11011111 ß
224 E0 11100000 à
225 E1 11100001 á
226 E2 11100010 â
227 E3 11100011 ã
228 E4 11100100 ä
229 E5 11100101 å
230 E6 11100110 æ
231 E7 11100111 ç
232 E8 11101000 è
233 E9 11101001 é
234 EA 11101010 ê
235 EB 11101011 ë
236 EC 11101100 ì
237 ED 11101101 í
238 EE 11101110 î
239 EF 11101111 ï
240 F0 11110000 ð
241 F1 11110001 ñ
242 F2 11110010 ò
243 F3 11110011 ó
244 F4 11110100 ô
245 F5 11110101 õ
246 F6 11110110 ö
247 F7 11110111 ÷ крестик
248 F8 11111000 ø
249 F9 11111001 ù
250 FA 11111010 ú
251 FB 11111011 û
252 FC 11111100 ü
253 FD 11111101 ý
254 FE 11111110 þ
255 FF 11111111 ÿ

Как отличить двоичное, шестнадцатеричное и десятичное написание друг от друга

Конкретные нотации могут различаться в зависимости от языка программирования или используемой программы (printf, printf, xxd, hexdump и так далее), но обычно используются следующие правила:

По умолчанию целочисленный литерал (число) — это десятичное целое число.

Для обозначения двоичного целочисленного литерала перед ним используется 0b или 0B (ноль B). Иногда буква b ставится позади числа.

Для обозначения восьмеричного целочисленного литерала, перед ним используется 0 (ноль).

А для обозначения шестнадцатеричного целочисленного литерала, перед ним используется 0x или 0X (ноль X).

В Radare2 можно увидеть такую запись:

Обратите внимание на переменную eax, значение которой равно 0x6d, а затем дано пояснение 109 ascii. То есть в шестнадцатеричном виде значение переменной eax равно 0x6d, в десятеричном это 109 что соответствует символу m.

ASCII и HTML

Если в HTML коде перед десятичным кодом ASCII символа поставить &#, то веб-браузер отобразит этот символ.

К примеру, если использовать &#39, то веб-браузер покажет (одинарную кавычку). Некоторые преобразователи строк внутри веб-приложения также могут конвертировать написание символов &#XX в их ASCII представления. Поэтому безобидная запись &#39 внутри веб-приложения может превратиться в одинарную кавычку, которая может нарушить SQL запрос.

Аналогично можно использовать &#x, после которой нужно указать код символа в шестнадцатеричной системе, например, &#x27 также покажет кавычку. Для разделения символов друг от друга, используйте точку с запятой, например, ‘hi’

Многие программы понимают шестнадцатеричную запись, правда вид записи может различаться от конкретной программы и языка программирования.

В JavaScript шестнадцатеричные строки записываются в виде экранированной последовательности:

Можно записать код символов в восьмеричной системе счисления:

Аналогично Bash понимает такие строки:

И PHP их обрабатывает верно:

Побитовые операции над строками

К побитовым операторам относятся:

Если вспомнить школьный/ВУЗовский курс логики, то там такие операции выполняются с нулями и единицами. То есть их можно выполнить с бинарными данными, например, с двоичными числами.

В языках программирования можно делать побитовые операции с десятичными числами, например Побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR) в PHP:

Дело в том, что числа будут автоматически переведены в двоичный вид и операция будет выполнена уже над двоичными числами.

8 и 5 в двоичном виде это соответственно 1000 и 101, можно также из записать так: 1000 и 0101.

Получаем конечное число: 1101

То есть в PHP операция проделана правильно, даже не смотря на то, что мы указали не двоичные числа, а десятичные.

Когда говорят о побитовых операциях со строками, то имеют в виду, что используется ASCII код символа (который затем переводиться в двоичный вид). После выполнения требуемой операции, выполняется обратное преобразование — число переводиться в ASCII символ.

Кстати, про ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR) — у этой операции есть интересное свойство:

То есть можно взять строки и выполнить между ними операцию XOR. В результате получиться бессмысленный набор символов. Затем если между этой бессмысленной строкой и любой из первоначальных строк вновь выполнить операцию XOR, то получиться вторая начальная строка.

На этом основано простейшее симметричное шифрование: исходный текст шифруется паролем с помощью XOR. То есть с первым символом текста и первыми символом пароля делается операция XOR, затем со вторым символом шифруемого текста и вторым символом пароля делается операция XOR и так далее, пока шифруемый текст не кончится. Поскольку пароль обычно короче шифруемого текста, то когда он заканчивается, вновь выполняется переход к первому символу пароля и так далее много раз.

В результате получается бессмысленный набор символов, которые можно расшифровать этим же паролем выполняя эту же операцию XOR.

Правда, зашифрованные таким образом тексты часто приводятся для тренировки в литературе по взлому шифров: если текст достаточно длинный, то с помощью статистического анализа того, как часто в нём встречаются символы и сравнивая эту частотность с естественной частотностью букв в языке, сначала вычисляют длину пароля, а затем и сам пароль. То есть это крайне ненадёжный шифр.

Вычитание числа из строки и прибавление к строкам числа

В статье «Анализ вредоносной программы под Linux: плохое самодельное шифрование» рассматривается шифрование, которое основано на прибавлении или вычитании числа к символу строки (на основе позиции символов). Как я думаю вы уже поняли, используется аналогичный приём: берётся ASCII код символа и из этого числа делается вычитание или находиться сумма с ним, а затем полученное число опять переводят в ASCII символ.

Побитовые операции с цифрами: нужно переводить в двоичную систему сами цифры или брать двоичные значения ASCII каждого символа?

Допустим, мы хотим сделать побитовую операцию 5 OR 7. Какой будет результат? Микропроцессор не работает ни с числами в десятичной системе, ни с ASCII строками — микропроцессор работает только двоичными числами.

То есть возникает вопрос:

2. Это ASCII строки?

Рассмотрим оба эти варианта, чтобы понять, насколько они различаются.

Число 5 в двоичной системе это 101, а число 7 в двоичной системе это 111.

В результате выполнения

Будет получено 111. То есть результатом данной операции является число 7.

5 и 7 — это ASCII строки

Смотрим таблицу ASCII символов, там цифре 5 соответствует код 00110101, а цифре 7 соответствует код 00110111. Делаем побитовую операцию OR между ними:

00110101 OR 00110111

Получаем: 110111, что в таблице ASCII символов также соответствует символу «7».

Итак, в принципе, можно напрямую переводить данные цифры в их двоичные значения, либо можно использовать двоичные значения их символов. Самое главное, придерживаться одной и той же схемы и преобразовывать с учётом выбранного пути. Ведь если вы делаете логическую операцию (например OR), с ASCII значением, а затем начинаете толковать полученный результат как число, то такое число (в нашем примере), будет равно 110111 = 55 (в десятичной системе). Или наоборот, вы сделали побитовую операцию между 101 OR 111, а затем полученный результат 111 начинаете трактовать как ASCII код символа — то тогда вместо числа вы получите управляющий символ «звуковой сигнал: звонок».

Заключение

Подытожим: у всех символов (печатных и непечатных) есть свой код ASCII. Кстати, ASCII — это ведь одна из многих кодировок. Существует много разных кодировок, например, очень популярна UTF8 и там у символов свои собственные коды. Причём используя экранированные последовательности можно записывать символы UTF8 по аналогии, как это показано с ASCII.

О том, как разными способами записать один и тот же символ (на примере “>”) смотрите здесь: https://security.stackexchange.com/questions/205967/character-escape-sequences-for

Эти техники могут использоваться в обходе фильтрации символов и слов.

Источник

Читайте также:  тел код мерсин турция
Компьютерный онлайн портал