一.分類
兩大類,數字和字元。
數字有10進製和16進製制兩種表現形式,字元以ascii碼的形式儲存,兩者最終都會歸於一串2進製數,也可以說一串16進製制數。一串二進位制數儲存在那裡,不同的讀取方式會有不同的效果
二.兩類函式(四個函式)
1.10進製ascii碼與字元相互轉換
ord()
引數:單個字元
返回值:字元對應的ascii碼
f=
'z'flag0=
ord(f)
print
(flag0)
>>
>
122
#驗證ord()的引數是單個字元
f='zy'
flag0=
ord(f)
print
(flag0)
>>
>typeerror:
ord(
) expected a character, but string of length 2 found
chr()
引數:單個十進位制ascii碼,若不是ascii碼,或者不是10進製ascii碼都會報錯
返回值:ascii碼對應的十進位制字元
f=
122flag1=
chr(f)
print
(flag1)
2.10進製ascii碼與字元相互轉換
hex()
引數:乙個10進製數或乙個16進製制數
10進製數
返回值:乙個以0x開頭的16進製制形式的字串
f=
16flag=
hex(f)
print
(flag)
>>
>
'0x10'
16進製制數
返回值:以0x開頭的16進製制字串,樣式不變,但變成字串
f=
0x7e
flag=
hex(f)
print
(flag)
>>
>
'0x7e'
作用:10進製轉16進製制
p.s.不要前面0x的寫法
flag0=
hex(destr)[2
:]
bytes.fromhex()
引數:乙個不以0x開頭的16進製制字串
可顯ascii碼
返回值:ascii碼對應的字元
f=
'7a'
flag0=
bytes
.fromhex(f)
print
(flag0)
>>
> b'z'
不在ascii碼範圍和非可顯ascii碼
返回值:原樣式返回字串
#超出範圍
f='8e'
flag0=
bytes
.fromhex(f)
print
(flag0)
>>
>b'\x8e'
#非可顯字元
f='1f'
flag0=
bytes
.fromhex(f)
print
(flag0)
>>
>b'\x1f'
作用:16進製制數根據ascii碼轉換成byte型別字元(2個16進製製組乙個字元)
3.byte型別轉換成str型別
flag =
str(flag1,
'utf-8'
)
CTF中干擾逆向分析的幾種技術的介紹和解題思路
常見的干擾逆向分析的技術 花指令,反除錯,加殼,控制流混淆,雙程序保護,虛擬機器保護技術 這是一種比較簡單的技巧,在原始的 中插入一段無用的,能夠干擾反彙編引擎的 解題思路 花指令主要影響的是靜態分析,在ida中,可以手動將花指令patch為nop空指令 反除錯技術是指在程式執行過程中探測其是否處於...
數字與字元的操作
字元 串 轉換為數字 double atof const char string int atoi const char string int64 atoi64 const char string long atol const char string 將整形數字按指定的進製轉換成字元 串 char...
C 中數字與字串的轉換
1 字串數字之間的轉換 1 string char string str ok char p str.c str 2 char string char p ok string str p 3 char cstring char p ok cstring m str p 或者 cstring m st...