[python/工具] python z3庫學(xué)習 減乘除位與運算 ctf一把梭

今天在vidar的分享會上
s神跟我們講了一個python的庫叫做z3

可以在python中用這個庫解決任何方程(只要有解)
網(wǎng)上找不到任何中文資料=。=看來我只能自己寫了

z3庫的介紹

Z3 在工業(yè)應(yīng)用中實際上常見于軟件驗證、程序分析等。然而由于功能實在強大,也被用于很多其他領(lǐng)域。CTF 領(lǐng)域來說,能夠用約束求解器搞定的問題常見于密碼題、二進制逆向、符號執(zhí)行、Fuzzing 模糊測試等。此外,著名的二進制分析框架 angr 也內(nèi)置了一個修改版的 Z3。

z3的安裝過程

我差點就放棄這個庫了,就是因為一直安裝不上。。
后來詢問了s神,s神跟我說要用源碼安裝
給個地址https://pypi.org/project/z3-solver/4.5.1.0/#files(whl文件下載地址)
只能python2,所以我裝在虛擬機上了
千萬千萬不要使用pip install z3,不知道為什么就是不一樣。。

安裝好了!

z3如何使用!

驚了這個庫可以解決所有的方程,如果有解
首先要給所有的設(shè)置一個變量,他有很多種變量
Int型他代表整數(shù)所有的解都只能是整數(shù),當然也可以用Ints一次性設(shè)置多個變量



還有就是Real型的這個代表的是有理數(shù),可以解出所有的有理數(shù)
以及BitVec(常用的)



可以設(shè)置幾位主要是re選手用的吧,這里可以解決位與方程用這個!超級強,后面一個變量設(shè)置這個變量有幾位,方便位與運算
  • Int型解方程


首先是給變量賦值
設(shè)置一個解方程的類Solver
然后一個一個添加(這樣比較直觀)
check一下看看有沒有解,最后得出一個解,當然還有另外一種方法

  • Real型解方程


直接用solve函數(shù)就可以了

  • BitVec型解方程

這些都不算什么,平常都可以解出來
現(xiàn)在有平常解不出來的東西!!!就是向量(位與運算)


!!!!驚了這都能解出來以后我再也不用擔心計組了

z3 的學(xué)習連接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • GitHub 地址: https://github.com/happy-python/check_code 核心代...
    與蟒唯舞閱讀 1,347評論 0 2
  • 最近在看一部電視劇,雖然主要講一群媽媽的故事,但是仔細看里面的內(nèi)容,還是有點感受。但我所說的感受不是說電視劇...
    8e0b8093b46f閱讀 293評論 2 4
  • 我的夢 被滂沱的大雨打濕了 雨 來也匆匆 去也匆匆 低垂的烏云 還來不及散去 飽滿的雨珠 還來不及落下 像無數(shù)的耳...
    江城楚子閱讀 446評論 9 1
  • 冬天,整個世界成了只大冰箱。通往教學(xué)樓的小道旁矗立著兩排挺拔光禿的銀杏樹,前段時間還一片金黃,紛紛灑落的小扇子送走...
    竹園大神閱讀 478評論 64 10