画像チェッカー by 【chatGPT】様
画像チェッカー by 【chatGPT】様
online Backup
windows 11
pythonスクリプト
# ==== 【chatGPT】
## ✅ 改良済み安全バージョン(誤検出対策)
import os
def get_file_type(path):
try:
with open(path, "rb") as f:
sig = f.read(32) # ← 少し拡大して精度UP
except Exception:
return "Unreadable"
if sig.startswith(b"\x89PNG"):
return "PNG"
elif sig.startswith(b"\xFF\xD8"):
return "JPEG"
elif sig.startswith(b"RIFF") and b"WEBP" in sig:
return "WEBP"
elif sig[:2] == b"BM":
return "BMP"
elif sig[:4] in (b"II*\x00", b"MM\x00*"):
return "TIFF"
elif sig.startswith(b"GIF8"):
return "GIF"
elif sig.startswith(b"%PDF"):
return "PDF"
elif sig.startswith(b"\x00\x00\x01\x00"):
return "ICO"
else:
return "Unknown"
folder = r"S:\___ext_chk"
log_path = os.path.join(folder, "偽装可能性.txt")
found = 0
with open(log_path, "w", encoding="utf-8") as log:
for root, _, files in os.walk(folder):
for file in files:
path = os.path.join(root, file)
ext = os.path.splitext(file)[1][1:].upper()
# 💡 同義語正規化
if ext == "JPG":
ext = "JPEG"
real_type = get_file_type(path)
if real_type != "Unreadable" and real_type != "Unknown" and real_type != ext:
found += 1
log.write(f"{path}\n ↳ 拡張子={ext or '(なし)'}, 実体={real_type}\n\n")
print(f"✅ チェック完了!{found} 件の偽装可能性ファイルを発見しました。")
print(f"📄 結果ログ: {log_path}")
# ==== おわり
## 🔍 まとめ
# | 問題箇所 | 内容 | 状態 |
# | ------------ | ------ | ------ |
# | JPEG↔JPG 同一視 | 誤検出の主因 | ❌ 修正必須 |
# | ログパス | パス誤り | ❌ 修正済 |
# | WEBP判定 | 精度低 | ⚠ 修正推奨 |
# | Unknown除外 | 微妙 | ⚙ 任意改善 |
# 🧠 **最重要:**
# > 偽装検出が多発した原因は「JPGがJPEG扱いされない」ことが主因です。
# > 判定ロジック自体は正しい(シグネチャは正確)ですが、
# > 拡張子との突き合わせルールが甘かったために“偽装っぽく”見えただけです。
# # ==============================
無償の労働力に 心から 感謝♪
じじぃ~
