CyberChaos(さいばかおす)

プログラミング言語、トランスパイラ、RPA、ChatGPT、データマイニング、リバースエンジニアリングのための忘備録

GhidraでPythonファイルをデコンパイルしてみた。

2023-03-25 21:37:29 | リバースエンジニアリング

こちらがクラックしようとしている所www

拡大写真

ソースコード

import numpy as np
import matplotlib.pyplot as plt

if __name__ == '__main__':
# 正弦波のデータ作成
f = 100
rate = 44100
T = np.arange(0, 0.01, 1 / rate)
s = []
for t in T:
v = np.sin(2 * np.pi * f * t)
s.append(v)

plt.plot(T, s)
plt.xlabel('Time')
plt.ylabel('Gain')
plt.show()

# フーリエ変換
fft_data = np.abs(np.fft.rfft(s))
freqList = np.fft.rfftfreq(len(s), 1.0 / rate) # 横軸
plt.loglog(freqList, 10 * np.log(fft_data))
plt.xlabel('Frequency')
plt.ylabel('Power')
plt.show()

# 逆フーリエ変換
r = np.fft.irfft(fft_data, len(T))
plt.plot(T, r)
plt.xlabel('Time')
plt.ylabel('Gain')
plt.show()

背景が水色で赤色の文字のところがキャプチャー画像に見えていて該当するところ。

拡張子がpyの生のPythonファイルはIDLEとかスパイダーとかなくてもソースコードが余裕でバレバレになることが分かった。

まだGhidraの使い方は全然分からなくて、適当にやってみただけだが、マジで恐ろしい代物だ。

もっと勉強して使いこなせるようになりたいものだ。


モルワイデ図法で世界地図を描画するPythonプログラム

2023-03-25 19:57:03 | python
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

# モルワイデ図法で世界地図を描画
m = Basemap(projection='moll', lon_0=0, resolution='c')

# 海岸線を描画
m.drawcoastlines(linewidth=0.5)

# 国境線を描画
m.drawcountries(linewidth=0.5)

# 緯度・経度のグリッド線を描画
m.drawparallels(np.arange(-90, 90, 30), labels=[1,0,0,0], fontsize=10)
m.drawmeridians(np.arange(-180, 180, 60), labels=[0,0,0,1], fontsize=10)

# プロットを表示
plt.show()


世界地図を描くpythonプログラム

2023-03-25 15:53:20 | python

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt

# 地図の設定(横メルカトル図法)
m = Basemap(projection='merc', llcrnrlat=-80, urcrnrlat=80,
llcrnrlon=-180, urcrnrlon=180, lat_ts=20, resolution='c')

# 国境線の描画
m.drawcoastlines()
m.drawcountries()

# ラベルの描画
m.drawmapboundary(fill_color='aqua')
m.fillcontinents(color='coral',lake_color='aqua')

# 地図の表示
plt.show()

ChatGPT Very Good Job!!!


任意の3点を通る円を描くVBAソースコード

2023-03-25 15:14:22 | VBA

Sub DrawCircleFromThreePoints()

    Dim x1, x2, x3, y1, y2, y3 As Double
    Dim a, b, c, d, e, f As Double
    Dim xCenter, yCenter, radius As Double
    Dim s, t As Double
    Dim Msg As String
    
    '3つの点を取得
    x1 = InputBox("最初の点のx座標を入力してください")
    y1 = InputBox("最初の点のy座標を入力してください")
    x2 = InputBox("2番目の点のx座標を入力してください")
    y2 = InputBox("2番目の点のy座標を入力してください")
    x3 = InputBox("3番目の点のx座標を入力してください")
    y3 = InputBox("3番目の点のy座標を入力してください")
    
    '円の中心と半径を計算
    a = x1 - x2
    b = y1 - y2
    c = x1 - x3
    d = y1 - y3
    e = (x1 * x1 - x2 * x2 + y1 * y1 - y2 * y2) / 2
    f = (x1 * x1 - x3 * x3 + y1 * y1 - y3 * y3) / 2
    
    s = (d * e - b * f) / (a * d - b * c)
    t = (a * f - c * e) / (a * d - b * c)
    
    xCenter = s
    yCenter = t
    radius = Sqr((x1 - xCenter) ^ 2 + (y1 - yCenter) ^ 2)
    
    '結果を表示
    Msg = "中心座標: (" & xCenter & ", " & yCenter & ")" & vbNewLine
    Msg = Msg & "半径: " & radius
    MsgBox Msg
    
    '円を描画
    With ActiveSheet.Shapes.AddShape(msoShapeOval, xCenter - radius, yCenter - radius, radius * 2, radius * 2)
        .Line.Weight = 1
    End With
    
End Sub


PythonでB♭の音を鳴らすプログラム

2023-03-25 14:30:57 | python

import numpy as np
from scipy.io import wavfile

frequency = 471.0  # 生成するサイン波の周波数
seconds = 10.0      # 生成する音の秒数
rate = 47100       # 出力する wav ファイルのサンプリング周波数

phases = np.cumsum(2.0 * np.pi * frequency / rate * np.ones(int(rate * seconds)))
# 波形を生成
wave = np.sin(phases)  # -1.0 〜 1.0 の値のサイン波
# import scipy.signal して、
# wave = scipy.signal.sawtooth(phases) とすると鋸歯状波、
# wave = scipy.signal.square(phases) とすると矩形波になる

# 16bit の wav ファイルに書き出す
wave = (wave * float(2 ** 15 - 1)).astype(np.int16)  # 値域を 16bit にする
wavfile.write("sine.wav", rate, wave)

ちなみに

frequency = 441.0  
rate = 44100    にするとAの音になる。

frequency = 396.0  
rate = 39600  ならG

frequency = 417.0  
rate = 41700  ならG♯

frequency = 369.0  
rate = 36900  ならF♯

frequency = 349.3  
rate = 34930  ならF

 


インストールされているライブラリーをリストアップするPythonプログラム

2023-03-25 11:59:06 | python
端末内のインストールされているPythonライブラリーを自動で調べてリストアップするPythonプログラムを作って

import subprocess

# pipコマンドを使用して、端末内にインストールされているパッケージを取得する
output = subprocess.check_output(['pip', 'freeze']).decode()
installed_packages = [line.split('==')[0] for line in output.split('\n') if line]

# インストールされているパッケージのリストを出力する
print('Installed packages:')
for package in installed_packages:
print(package)




ChatGPT Good Job!


任意の3つのライブラリーを自動でインストールするPythonプログラム

2023-03-25 11:45:01 | python
インストールされていないライブラリーを調べてリストアップし、インストールされていないライブラリーを自動でインストールするPythonプログラムを作って

import subprocess

# 必要なライブラリを指定する
required_libraries = ['numpy', 'matplotlib', 'scipy']

# インストールされていないライブラリを格納するリスト
not_installed_libraries = []

# 必要なライブラリがインストールされているかどうかを確認する
for lib in required_libraries:
try:
__import__(lib)
except ImportError:
not_installed_libraries.append(lib)

# インストールされていないライブラリがあれば、自動的にインストールする
if not_installed_libraries:
subprocess.check_call(['pip', 'install'] + not_installed_libraries)

ちょっとずれてるな。質問の意図を全て反映していない。
これじゃ任意の3つのライブラリーを列挙してインストールされていなければ自動でインストールする、というプログラムだろ?

まあ、実行したら上手く行ったからいいけど。


任意のライブラリーがインストールされているかどうか調べ、インストールされていなければ自動でインストールするPythonプログラム

2023-03-25 11:11:58 | python
下の例はpycatiaライブラリーがインストールされているかどうか調べ、インストールされていなければ自動でインストールするPythonプログラムのソースコードである。
※Pydroidで動作確認済。

import subprocess

try:
import pycatia
except ImportError:
subprocess.check_call(['pip', 'install', 'pycatia'])

ちなみにpycatiaの部分を他のライブラリーに置き換えることで、他のライブラリーにも適用できる。

ただし、talibみたいに一筋縄ではいかないライブラリーもあるので注意。

巷に溢れているPythonのソースコードには、こういう配慮が無さすぎる。

新型3Dスキャナー「Revopoint RANGE」

2023-03-25 06:57:12 | Civil3D

新型3Dスキャナー「Revopoint RANGE」がクラウドファンディング中。大型物体・人体スキャンもできるプロシューマー向け

新型3Dスキャナー「Revopoint RANGE」がクラウドファンディング中。大型物体・人体スキャンもできるプロシューマー向け

Revopointは、新型3Dスキャナー「Revopoint RANGE」を発売します。本デバイスは、大型物体の3Dスキャン向けプロシューマー向けの3Dスキャナー。現在クラウドファンディング...

Mogura VR News