SageMath
簡単に言えば数学の高速計算ソフトウェア? pythonで書けるので学習コストも低い
オンライン上でも試せるらしい。
https://sagecell.sagemath.org/
CTFの勉強をしていてcryptoで桁の大きい数を扱うのでローカルのpythonだと計算ができなくて困っていたら何やらSageMathというものを使えばいいということを耳にした。
早速インストール
macだったのでこのgithubからインストール。
https://github.com/3-manifolds/Sage_macOS/releases
使ってみる
ソフトウェアをインストールすれば、jupyter notebookもそのまま使えるとのことだったので、
Classic Jupyterと開きたいフォルダとを選択。
無事jupyter notebook開けたんですけど、cryptoの問題を解くときによく使うpycryptodomeをimportしてもエラーが出たのでその備忘録。
from Crypto.Util.number import *
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
Cell In [23], line 1
----> 1 from Crypto.Util.number import *
ModuleNotFoundError: No module named 'Crypto'
ChatGPTに聞くとsysをimportしてsys.pathをprintしろということだったので
import sys
print(sys.path)
---------------------------------------------------------------------------
['/Users/yamaguchiyutaka/study/TsukuCTF2023/crypto', '/private/var/tmp/sage-10.2-current/local/var/lib/sage/venv-python3.11.1/lib/python311.zip', '/private/var/tmp/sage-10.2-current/local/var/lib/sage/venv-python3.11.1/lib/python3.11', '/private/var/tmp/sage-10.2-current/local/var/lib/sage/venv-python3.11.1/lib/python3.11/lib-dynload', '', '/private/var/tmp/sage-10.2-current/local/var/lib/sage/venv-python3.11.1/lib/python3.11/site-packages']
pycryptodomeが入った場所を確認する。
!pip show pycryptodome
---------------------------------------------------------------------------
Name: pycryptodome
Version: 3.19.0
Summary: Cryptographic library for Python
Home-page: https://www.pycryptodome.org
Author: Helder Eijs
Author-email: helderijs@gmail.com
License: BSD, Public Domain
Location: /Users/yamaguchiyutaka/.sage/local/lib/python3.11/site-packages
Requires:
Required-by:
sys.pathにpycryptodomeを追加。
import sys
sys.path.append('/Users/yamaguchiyutaka/.sage/local/lib/python3.11/site-packages')
解決しました!
やはりむやみやたらにローカルにpipするのはまずいのかな?
まあ、ChatGPT最強ということがわかりました。