NCTF中密碼學(xué)的學(xué)習(xí)
keyboard
幾個(gè)wp中用到的函數(shù)
.split(' ')
split(分隔符撮胧,分割幾次)從左向右尋找秒旋,以某個(gè)元素為中心將左右分割成兩個(gè)元素并放入列表中哟玷,該分隔符丟棄(此處分隔元素為' ')擴(kuò)展
rsplit(分隔符济榨,分割幾次)從右向左尋找搭儒,以某個(gè)元素為中心將左右分割成兩個(gè)元素并放入列表中蹲姐,該分隔符丟棄
splitlines(分隔符,分割幾次)根據(jù)換行符(\n)分割并將元素放入列表中元潘,該分隔符丟棄
len()
Python len() 方法返回對象(字符畔乙、列表、元組等)長度或項(xiàng)目個(gè)數(shù)翩概。
index() 函數(shù)用于從列表中找出某個(gè)值第一個(gè)匹配項(xiàng)的索引位置牲距。
list.index(x[, start[, end]])
參數(shù)
x-- 查找的對象。
start-- 可選钥庇,查找的起始位置牍鞠。
end-- 可選,查找的結(jié)束位置评姨。
①自己用vs code編寫實(shí)現(xiàn)
雜項(xiàng)
鍵盤俠
看了wp終于知道自己hxd總是只讀不能寫入的原因了难述,這次終于學(xué)會在屬性中取消了只讀~
學(xué)到了兩個(gè)分離文件的方法,binwalk和foremost
1.binwalk操作指令
binwalk -e 用于按照定義的配置文件中的提取方法從固件中提取探測到的文件系統(tǒng)吐句。
dd if=(原文件名) of=(提取文件名)skip=數(shù)據(jù)地址(從輸入文件開頭跳過x個(gè)塊后再開始復(fù)制) bs=1(設(shè)置每次讀寫塊的大小為1字節(jié))
(分離文件記得放在binwalk)
2.foremost
指令 foremost+文件名
foremost會自動輸出一個(gè)output文件夾
②但是我的這兩種分離keyboard圖片都可以分離出doc的文字胁后,而沒有需要解密的密文。嗦枢。重點(diǎn)標(biāo)記一下有待解決的問題择同。
3.base85
原來python3中也可以base解碼,引入base64模塊
base64原理
字符選用了"A-Z净宵、a-z敲才、0-9、+择葡、/" 64個(gè)可打印字符紧武,這是標(biāo)準(zhǔn)的Base64協(xié)議規(guī)定。
第一步敏储,將待轉(zhuǎn)換的字符串每三個(gè)字節(jié)分為一組阻星,每個(gè)字節(jié)占8bit,那么共有24個(gè)二進(jìn)制位。
第二步妥箕,將上面的24個(gè)二進(jìn)制位每6個(gè)一組滥酥,共分為4組。
第三步畦幢,在每組前面添加兩個(gè)0坎吻,每組由6個(gè)變?yōu)?個(gè)二進(jìn)制位,總共32個(gè)二進(jìn)制位宇葱,即四個(gè)字節(jié)瘦真。
第四步,根據(jù)Base64編碼對照表(見下圖)獲得對應(yīng)的值黍瞧。
base64.PNG
出處:https://blog.csdn.net/wo541075754/article/details/81734770
若不足三字節(jié)诸尽,在有數(shù)據(jù)的字節(jié)處用0補(bǔ)齊,而沒有數(shù)據(jù)時(shí)則用=填充印颤,當(dāng)一串編碼以=或==結(jié)尾您机,就很有可能是base64加密的
base64是每6個(gè)bit映射為一個(gè)ascii字符,用64個(gè)ascii字符來表示年局。
每3個(gè)字節(jié)編碼后對應(yīng)4個(gè)字符往产,大小增加1/3
base85是每4個(gè)字節(jié)編碼為一個(gè)85進(jìn)制的表示,用85個(gè)ascii字符來表示某宪。
每4個(gè)字節(jié)編碼后對應(yīng)5個(gè)字符,大小增加1/4(③還是不太懂)
故base編碼的文本比原文本要長锐朴,base85編碼也稱為ascii85編碼兴喂,其出現(xiàn)是在base64的基礎(chǔ)上進(jìn)一步壓縮數(shù)據(jù)量。
對昨天的補(bǔ)充
rsa分解N的幾種方式
使用pow函數(shù)來進(jìn)行求解焚志,而不能直接m**e % n衣迷,Python在處理此類運(yùn)算進(jìn)行了優(yōu)化
1.如果N小于512bit,可以直接用本地工具進(jìn)行分解(④今天又是沒裝好yafu的一天)
2.如果N在768bit或者更高,可以使用factordb
低解密指數(shù)攻擊
標(biāo)志為e很大時(shí)
下面是推導(dǎo)過程