CoolFace
Datasetpublic

ysn-rfd/text-dataset-tiny-code-script-py-format

USED of tahamajs/medicine_ds_persian for .parquet file USED of Alijafarixcs2/persian-it-llama2-2k for .parquet file USED of Abirate/english_quotes for .jsonl file NEW FILES (05/12/2025) NEW FILES (12/26/2025) NEW FILES (02/15/2026)

sourceHugging Faceapache-2.0updated 4mo agoView on Hugging Face
3likes1.6kdownloads
verifier.py116 linesDownload Raw Back to cert
1from PIL import Image
2import qrcode
3import base64
4import hashlib
5from pyzbar.pyzbar import decode
6from cryptography.hazmat.primitives.asymmetric import padding
7from cryptography.hazmat.primitives import hashes, serialization
8from cryptography.exceptions import InvalidSignature
9
10# فایل تصویر گواهی
11CERT_IMAGE_PATH = "openai_certificate_yasin_realistic.png"
12
13# کلید عمومی PEM
14PUBLIC_KEY_PATH = "public_key.pem"
15
16# داده‌های گواهی (باید دقیقا مثل داده‌های اولیه باشه)
17cert_info = {
18    "Name": "Yasin",
19    "Last Name": "Aryanfard",
20    "User ID": "YSNRFD",
21    "Membership Date": "April 1, 2023",
22    "Issued Date": "June 28, 2025",
23    "Certificate ID": "OPENAI-YSN-APR2023-CERT1001",
24    "Signed By": "ChatGPT-4o",
25    "Model ID": "GPT4O-REP-TRUST-2025",
26    "Issuer": "OpenAI, Inc."
27}
28
29def extract_qr_signature(image_path):
30    img = Image.open(image_path)
31    decoded_objs = decode(img)
32    for obj in decoded_objs:
33        data = obj.data.decode('utf-8')
34        if data.startswith("-----"):  # اگر کلید عمومی یا امضای بزرگ باشه
35            continue
36        return data  # اولین داده QR کد که امضا هست
37    return None
38
39def extract_stego_message(img):
40    pixels = img.load()
41    width, height = img.size
42    bits = []
43    for y in range(height):
44        for x in range(width):
45            r, g, b, *rest = pixels[x, y]
46            bits.append(str(r & 1))
47    # تبدیل بیت‌ها به کاراکترها
48    chars = []
49    for i in range(0, len(bits), 8):
50        byte = bits[i:i+8]
51        if len(byte) < 8:
52            break
53        byte_str = ''.join(byte)
54        char = chr(int(byte_str, 2))
55        if char == '\x00':  # پایان پیام فرضی
56            break
57        chars.append(char)
58    return ''.join(chars)
59
60def verify_signature(public_key, signature, data):
61    try:
62        public_key.verify(
63            signature,
64            data,
65            padding.PSS(
66                mgf=padding.MGF1(hashes.SHA256()),
67                salt_length=padding.PSS.MAX_LENGTH
68            ),
69            hashes.SHA256()
70        )
71        return True
72    except InvalidSignature:
73        return False
74
75def main():
76    # بارگذاری تصویر
77    img = Image.open(CERT_IMAGE_PATH).convert("RGBA")
78
79    # استخراج امضا از QR
80    digital_signature_base64 = extract_qr_signature(CERT_IMAGE_PATH)
81    if not digital_signature_base64:
82        print("❌ امضا دیجیتال در QR کد یافت نشد!")
83        return
84
85    print("📥 امضا دیجیتال استخراج شده از QR کد.")
86
87    # استخراج پیام استگانوگرافی (CertificateID و VerificationCode)
88    stego_msg = extract_stego_message(img)
89    print(f"📥 پیام مخفی استگانوگرافی: {stego_msg}")
90
91    # بازسازی رشته داده برای امضا (باید دقیقاً مثل زمان ساخت گواهی)
92    data_string = "\n".join(f"{k}: {v}" for k, v in cert_info.items()).encode('utf-8')
93
94    # بارگذاری کلید عمومی
95    with open(PUBLIC_KEY_PATH, "rb") as f:
96        public_key = serialization.load_pem_public_key(f.read())
97
98    # تبدیل امضا به بایت
99    signature_bytes = base64.b64decode(digital_signature_base64)
100
101    # بررسی امضا
102    if verify_signature(public_key, signature_bytes, data_string):
103        print("✅ امضا دیجیتال معتبر است.")
104    else:
105        print("❌ امضا دیجیتال نامعتبر است یا داده‌ها تغییر کرده‌اند!")
106
107    # بررسی کد تأیید در پیام استگانوگرافی
108    expected_verification_code = f"VER-{hashlib.sha256(data_string).hexdigest()[:8].upper()}-{cert_info['Certificate ID'][-4:]}"
109    if expected_verification_code in stego_msg:
110        print("✅ کد تأیید در پیام مخفی استگانوگرافی معتبر است.")
111    else:
112        print("❌ کد تأیید در پیام مخفی یافت نشد یا اشتباه است!")
113
114if __name__ == "__main__":
115    main()
116