DARK CODE / CYBER LAB
● آزمایشگاه یادگیری امن
LINUX • WINDOWS • CYBERSECURITY

DARK CODE

▌
⚠️ این وب‌سایت برای آموزش، مدیریت سیستم و امنیت دفاعی طراحی شده است. تمرین‌ها را فقط روی دستگاه‌ها و سرورهایی انجام دهید که مالک آن هستید یا اجازهٔ مدیریتشان را دارید. آموزش حدس‌زدن رمز و بازکردن قفل دیگران ارائه نمی‌شود.

کتابخانه دستورات و آموزش‌ها

کدها را با یک کلیک کپی کنید

Linux • وب‌کم

آموزش کار با دوربین کامپیوتر با Cheese

ابزار Cheese تصویر زنده وب‌کم را نمایش می‌دهد و امکان گرفتن عکس و ضبط ویدئو را فراهم می‌کند. این آموزش برای دوربین متصل به دستگاه خودتان است.

Terminal • Debian / Ubuntu / Kali
# نصب Cheese
sudo apt update
sudo apt install cheese

# اجرای برنامه
cheese

کاربرد: دستور اول فهرست بسته‌ها را به‌روز می‌کند؛ دستور دوم Cheese را نصب می‌کند؛ دستور سوم برنامه دوربین را باز می‌کند. برای بستن برنامه از پنجره آن خارج شوید یا کلید Ctrl+C را در ترمینال بزنید.

بررسی شناسایی وب‌کم
# نمایش دستگاه‌های ویدئویی
ls /dev/video*

# مشاهده اطلاعات USB برای بررسی اتصال
lsusb

اگر دوربین باز نشد: بررسی کنید سیستم فایل دستگاهی مانند /dev/video0 ساخته باشد، برنامه دیگری از دوربین استفاده نکند و دسترسی کاربر به دستگاه برقرار باشد. در بعضی توزیع‌ها افزودن کاربر به گروه video و سپس خروج و ورود دوباره لازم است: sudo usermod -aG video "$USER".

نکته حریم خصوصی: پیش از عکس‌گرفتن یا ضبط ویدئو، چراغ دوربین و مجوزهای دسترسی را بررسی کنید و فقط با اطلاع افراد حاضر از دوربین استفاده کنید.

لینوکس • مقدماتی

شناخت سیستم و مسیر فعلی

نمایش کاربر، مسیر کاری، نسخه سیستم‌عامل و اطلاعات کرنل.

Terminal / Bash
whoami
pwd
uname -a
cat /etc/os-release
hostnamectl

کاربرد: whoami نام کاربر، pwd مسیر فعلی، uname اطلاعات کرنل، os-release نسخه توزیع و hostnamectl اطلاعات میزبان را نمایش می‌دهد.

لینوکس • فایل‌ها

مدیریت فایل و پوشه

ساخت پوشه، کپی، جابه‌جایی، حذف و مشاهده محتوا.

Terminal / Bash
ls -lah
mkdir -p projects/demo
touch notes.txt
cp notes.txt notes-backup.txt
mv notes-backup.txt backup.txt
find . -type f
less notes.txt

کاربرد: ls فهرست، mkdir پوشه، touch فایل خالی، cp کپی، mv جابه‌جایی و find جست‌وجوی فایل است. مسیرها را پیش از حذف بررسی کنید.

لینوکس • دسترسی‌ها

مجوز فایل‌ها

مشاهده و تنظیم سطح دسترسی فایل‌های خودتان.

Terminal / Bash
ls -l
chmod 644 notes.txt
chmod 755 my-script.sh
chown "$USER":"$USER" notes.txt
umask

کاربرد: chmod مجوز خواندن/نوشتن/اجرا را تغییر می‌دهد؛ 644 برای فایل معمولی و 755 برای اسکریپت قابل اجرا نمونه‌های رایج‌اند. chown مالک را تغییر می‌دهد.

لینوکس • پردازش

مدیریت پردازش‌ها

بررسی مصرف منابع و پایان‌دادن به پردازش متعلق به خودتان.

Terminal / Bash
ps aux
top
free -h
df -h
du -sh .
pgrep -a firefox
kill -TERM PID

کاربرد: ps و top پردازش‌ها، free حافظه، df فضای دیسک و du حجم پوشه را نشان می‌دهند. kill -TERM درخواست پایان عادی به پردازش می‌فرستد.

لینوکس • بسته‌ها

نصب و به‌روزرسانی

نمونه دستورات توزیع‌های Debian/Ubuntu و Fedora.

Terminal / Bash
# Debian / Ubuntu
sudo apt update
sudo apt upgrade
sudo apt install curl git

# Fedora
sudo dnf check-update
sudo dnf upgrade
sudo dnf install curl git

دستور مناسب به توزیع لینوکس شما بستگی دارد.

لینوکس • لاگ‌ها

بررسی گزارش‌های سیستم

مشاهده خطاها و رویدادهای سرویس‌ها برای عیب‌یابی.

Terminal / Bash
journalctl -n 100
journalctl -p warning
journalctl -u ssh --since today
dmesg --level=err,warn

لاگ‌ها را برای پیدا کردن خطاهای غیرعادی و مشکلات سرویس بررسی کنید.

شبکه • پورت‌ها

مشاهده پورت‌های در حال گوش‌دادن

بررسی پورت‌ها و برنامه‌های فعال روی سیستم خودتان.

Terminal / Bash
ss -tulpen
ss -lnt
sudo lsof -i -P -n
ip address
ip route

این دستورات وضعیت محلی سیستم را نمایش می‌دهند و برای ممیزی دفاعی مناسب‌اند.

شبکه • فایروال

وضعیت فایروال UFW

بررسی و مدیریت امن فایروال در سرور خودتان.

Terminal / Bash
sudo ufw status verbose
sudo ufw enable
sudo ufw deny 8080/tcp
sudo ufw delete deny 8080/tcp
sudo ufw reload

پیش از فعال‌کردن فایروال روی سرور راه‌دور، دسترسی SSH مجاز را بررسی کنید تا ارتباط خودتان قطع نشود.

شبکه • سرویس‌ها

مدیریت سرویس با systemd

مشاهده، شروع، توقف و فعال‌سازی سرویس‌های مجاز.

Terminal / Bash
systemctl list-units --type=service
systemctl status nginx
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl enable nginx

کاربرد: status وضعیت، start شروع، stop توقف، restart راه‌اندازی مجدد و enable اجرای خودکار هنگام بوت را تنظیم می‌کند. nginx فقط نام یک نمونه سرویس است.

SSH • مدیریت سرور

اتصال امن به سرور

اتصال به سرور مجاز و خروج از نشست SSH.

Terminal
ssh username@server.example.com
ssh -p 2222 username@server.example.com
exit

آدرس و نام کاربری را از مدیر سرور دریافت کنید. اثر انگشت کلید میزبان را پیش از تأیید بررسی کنید.

SSH • کلید عمومی

ساخت کلید SSH

روش پیشنهادی برای ورود بدون ارسال رمز عبور در هر اتصال.

Terminal
ssh-keygen -t ed25519 -C "my-device"
ssh-add ~/.ssh/id_ed25519
ssh-copy-id username@server.example.com
ssh username@server.example.com

کلید خصوصی id_ed25519 را محرمانه نگه دارید و فقط کلید عمومی را روی سرور ثبت کنید.

SSH • نگهداری

بررسی سرویس SSH

وضعیت سرویس و اعتبارسنجی تنظیمات پیش از بارگذاری مجدد.

Terminal / Bash
sudo systemctl status ssh
sudo sshd -t
sudo systemctl reload ssh
sudo journalctl -u ssh -n 50

فایل تنظیمات را فقط با دسترسی مدیریتی و پس از تهیه نسخه پشتیبان تغییر دهید.

ExifTool • فراداده

خواندن متادیتای فایل

نمایش اطلاعات فنی تصویر و فایل‌های پشتیبانی‌شده.

Terminal
exiftool photo.jpg
exiftool -a -G1 -s photo.jpg
exiftool -FileType -ImageSize photo.jpg
exiftool -CreateDate photo.jpg

کاربرد: exiftool اطلاعات فراداده را می‌خواند؛ ‎-a همه تگ‌ها، ‎-G1 گروه تگ، ‎-s نام کوتاه تگ و ‎-ImageSize ابعاد تصویر را نمایش می‌دهد.

ExifTool • خروجی

ذخیره گزارش متادیتا

گرفتن گزارش متنی و بررسی گروهی فایل‌های پوشه خودتان.

Terminal
exiftool photo.jpg > metadata.txt
exiftool -r -csv ./my_photos > report.csv
exiftool -json photo.jpg > metadata.json

پوشه ورودی را به پوشه‌ای محدود کنید که مالک آن هستید یا اجازه بررسی آن را دارید.

Windows CMD

دستورات پایه CMD

نمایش مسیر، فهرست فایل‌ها و ساخت پوشه در ویندوز.

Command Prompt
whoami
cd
dir
mkdir project
type notes.txt
copy notes.txt backup.txt
ipconfig /all
systeminfo

کاربرد: whoami کاربر، cd مسیر، dir فهرست فایل‌ها، mkdir پوشه، type متن فایل، copy کپی فایل، ipconfig اطلاعات شبکه و systeminfo مشخصات سیستم را نشان می‌دهد.

Windows CMD

شبکه و عیب‌یابی

بررسی اتصال و مسیر شبکه در سیستم خودتان.

Command Prompt
ipconfig
ping 127.0.0.1
nslookup example.com
tracert example.com
netstat -ano

برای آزمایش از دامنه‌های عمومی یا شبکه‌ای که مجاز به بررسی آن هستید استفاده کنید.

Python • امنیت دفاعی

سنجش قدرت رمز عبور

بررسی محلی طول و تنوع رمز؛ این نمونه قفل پوشه را باز نمی‌کند و رمزها را حدس نمی‌زند.

Python 3
import string
from getpass import getpass

password = getpass("رمز آزمایشی: ")
checks = {
    "طول حداقل ۱۲": len(password) >= 12,
    "حروف کوچک": any(c.islower() for c in password),
    "حروف بزرگ": any(c.isupper() for c in password),
    "عدد": any(c.isdigit() for c in password),
    "نماد": any(c in string.punctuation for c in password),
}
for label, passed in checks.items():
    print(("✓ " if passed else "✗ ") + label)
print("نتیجه:", sum(checks.values()), "از", len(checks))

رمز واقعی خود را در سایت‌ها یا ابزارهای ناشناس وارد نکنید؛ برای آزمایش از رمز ساختگی استفاده کنید.

Python • فایل‌ها

محاسبه هش فایل برای بررسی سلامت

ساخت SHA-256 فایل و مقایسه آن با مقدار معتبر دریافتی.

Python 3
import hashlib

def sha256_file(path):
    digest = hashlib.sha256()
    with open(path, "rb") as file:
        for chunk in iter(lambda: file.read(65536), b""):
            digest.update(chunk)
    return digest.hexdigest()

print(sha256_file("myfile.zip"))

هش به شناسایی تغییر فایل کمک می‌کند؛ آن را با مقدار منتشرشده از منبع معتبر مقایسه کنید.

Nmap • شناسایی دفاعی

آشنایی با Nmap و اسکن میزبان خودتان

کاربرد: بررسی در دسترس بودن یک دستگاه در شبکه آزمایشگاهی و مشاهده سرویس‌های اعلام‌شده. فقط روی localhost، شبکه شخصی یا هدفی که مجوز کتبی بررسی آن را دارید اجرا کنید.

Terminal • Nmap
# بررسی میزبان محلی
nmap 127.0.0.1

# شناسایی سرویس‌های میزبان آزمایشگاهی خودتان
nmap -sV 192.168.1.10

# اسکن محدود چند پورت مشخص در دستگاه خودتان
nmap -p 22,80,443 127.0.0.1

# ذخیره گزارش متنی
nmap -oN nmap-report.txt 127.0.0.1

توضیح: ‎-sV تلاش می‌کند نام و نسخه سرویس را تشخیص دهد؛ ‎-p پورت‌های موردنظر را مشخص می‌کند؛ ‎-oN گزارش متنی می‌سازد. اسکن شبکه‌های عمومی یا دستگاه‌های دیگران بدون اجازه انجام ندهید.

انتقال فایل • SCP

ارسال فایل به کامپیوتر دیگر با SSH

کاربرد: انتقال امن یک فایل به دستگاهی که حساب کاربری و دسترسی مجاز SSH آن را دارید.

Linux / macOS Terminal
# ارسال یک فایل به پوشه خانگی مقصد
scp report.txt username@192.168.1.20:~/

# دریافت فایل از دستگاه مقصد به سیستم فعلی
scp username@192.168.1.20:~/report.txt ./

# ارسال یک پوشه به مقصد
scp -r project/ username@192.168.1.20:~/project/

# اگر SSH روی پورت دیگری تنظیم شده است
scp -P 2222 report.txt username@192.168.1.20:~/

توضیح: scp انتقال رمزگذاری‌شده روی SSH انجام می‌دهد؛ ‎-r برای پوشه و ‎-P برای تعیین پورت SSH است. به‌جای IP و username، اطلاعات دستگاه مجاز خودتان را قرار دهید.

انتقال فایل • SFTP

انتقال تعاملی فایل با SFTP

کاربرد: ورود به فضای فایل حساب خودتان روی سرور و مدیریت فایل‌ها با اتصال رمزگذاری‌شده.

Terminal
# اتصال به سرور مجاز
sftp username@192.168.1.20

# داخل محیط SFTP:
pwd
ls
put report.txt
get backup.zip
mkdir uploads
cd uploads
bye

توضیح: put فایل را ارسال می‌کند، get فایل را دریافت می‌کند، ls فهرست را نشان می‌دهد و bye نشست را می‌بندد.

Python • Requests

دریافت محتوای HTML یک وب‌سایت

کاربرد: دریافت صفحه عمومی یک وب‌سایت و ذخیره پاسخ HTML در فایل index.html. این نمونه برای صفحات عمومی و درخواست‌های مجاز است.

Python 3
import requests

url = "https://example.com"

response = requests.get(url, timeout=15)
response.raise_for_status()

with open("index.html", "w", encoding="utf-8") as file:
    file.write(response.text)

print("HTML downloaded successfully!")

توضیح خط‌به‌خط: requests.get درخواست HTTP می‌فرستد؛ timeout حداکثر زمان انتظار را تعیین می‌کند؛ raise_for_status خطاهای HTTP را گزارش می‌دهد؛ open فایل را برای نوشتن باز می‌کند؛ response.text متن صفحه را برمی‌گرداند. نصب کتابخانه: python -m pip install requests

موردی با این عبارت پیدا نشد.
ᚠ ✧ ⌘ ☽ ⟁
THE HIDDEN LAYER
رمزآلود، اما بر پایه دانش واقعی
0x4B / 0x4E / 0x4F
UNKNOWN ≠ UNTOUCHABLE

«هک، جادو نیست؛ پرسیدنِ سؤال درست از یک سیستم است. دانشمند امنیت، اول مرزها را می‌شناسد، بعد ضعف‌ها را برای محافظت پیدا می‌کند.»

نقشه راه یادگیری

از پایه تا مدیریت امن سیستم

۱. مبانی سیستم‌عاملترمینال، مسیرها، فایل‌ها، کاربران، مجوزها و پردازش‌ها.
۲. شبکه و سرورIP، DNS، پورت‌ها، فایروال، سرویس‌ها و SSH.
۳. تحلیل و امنیتلاگ‌خوانی، متادیتا، هش فایل، پشتیبان‌گیری و سخت‌سازی.

استگانوگرافی و رمزگذاری متن

آموزش آزمایشگاهی روی فایل‌ها و تصاویر متعلق به خودتان

تصویر • Python • Pillow

۱. قرار دادن پیام داخل تصویر

در این نمونه آموزشی، بیت‌های متن در کم‌ارزش‌ترین بیت کانال‌های رنگی تصویر PNG قرار می‌گیرند. فقط روی تصویر خودتان آزمایش کنید.

Python
from PIL import Image

message = "سلام از DARK Code"
img = Image.open("input.png").convert("RGB")
bits = ''.join(f'{b:08b}' for b in message.encode("utf-8")) + '00000000'

pixels = list(img.getdata())
if len(bits) > len(pixels) * 3:
    raise ValueError("ظرفیت تصویر کافی نیست")

out = []
i = 0
for pixel in pixels:
    channels = list(pixel)
    for c in range(3):
        if i < len(bits):
            channels[c] = (channels[c] & 254) | int(bits[i])
            i += 1
    out.append(tuple(channels))

img.putdata(out)
img.save("message.png")
print("Saved: message.png")

توضیح: فایل input.png ورودی است و message.png تصویر خروجی. تصویر خروجی را PNG نگه دارید؛ تبدیل به JPEG ممکن است داده پنهان را خراب کند.

تصویر • استخراج پیام

۲. خواندن پیام از تصویر

این کد بیت‌های ذخیره‌شده در تصویر نمونه را می‌خواند و تا نشانگر پایان پیام ادامه می‌دهد.

Python
from PIL import Image

img = Image.open("message.png").convert("RGB")
bits = ''.join(str(channel & 1)
    for pixel in img.getdata()
    for channel in pixel)

data = bytearray()
for i in range(0, len(bits) - 7, 8):
    byte = int(bits[i:i+8], 2)
    if byte == 0:
        break
    data.append(byte)

print(data.decode("utf-8", errors="replace"))

نصب کتابخانه: دستور python -m pip install pillow را اجرا کنید. این روش ساده آموزشی است و برای حفاظت محرمانه یا پیام‌رسانی امن طراحی نشده است.

متن • Hexadecimal

۳. تبدیل متن به هگزادسیمال

هگزادسیمال یا مبنای ۱۶ نمایش بایت‌ها با ارقام 0 تا 9 و حروف A تا F است.

Python
text = "Hello DARK Code"

# تبدیل متن به هگز
hex_text = text.encode("utf-8").hex()
print(hex_text)

# بازگردانی هگز به متن
restored = bytes.fromhex(hex_text).decode("utf-8")
print(restored)

نکته: هگز کردن، رمزنگاری نیست؛ فقط شکل نمایش داده را عوض می‌کند و هر کسی می‌تواند آن را برگرداند.

متن • کدگذاری و رمزگشایی

۴. تشخیص و بازگردانی متن‌های نامفهوم

گاهی متن به‌صورت Hex یا Base64 نمایش داده می‌شود. نمونه زیر هر دو قالب را به متن برمی‌گرداند.

Python
import base64

# نمونه Hex
hex_value = "48656c6c6f"
print(bytes.fromhex(hex_value).decode("utf-8"))

# نمونه Base64
encoded = "SGVsbG8gREFSSyBDb2Rl"
decoded = base64.b64decode(encoded)
print(decoded.decode("utf-8"))

تفاوت مهم: کدگذاری (Encoding) مثل Hex و Base64 برای نمایش و انتقال داده است؛ رمزنگاری (Encryption) برای محرمانگی به کلید نیاز دارد. هر متن نامفهومی الزاماً قابل رمزگشایی نیست.

کتابخانه پیشرفته کدها

نمونه کد + کاربرد + نکات اجرا

Python • تولید QR

ساخت QR Code برای متن یا لینک

کتابخانه qrcode تصویر QR می‌سازد؛ مناسب لینک سایت، راهنمای محصول یا اطلاعات عمومی.

Python 3
import qrcode

data = "https://example.com"
img = qrcode.make(data)
img.save("my-qr.png")
print("Saved: my-qr.png")

کاربرد و نکته: نصب: python -m pip install qrcode[pil] — فقط اطلاعات عمومی را داخل QR قرار دهید.

Python • اطلاعات فایل

خواندن مشخصات فایل و تصویر

نمایش نام، پسوند، حجم و ابعاد تصویر با pathlib و Pillow.

Python 3
from pathlib import Path
from PIL import Image

path = Path("photo.jpg")
print("Name:", path.name)
print("Suffix:", path.suffix)
print("Bytes:", path.stat().st_size)

with Image.open(path) as img:
    print("Format:", img.format)
    print("Size:", img.size)

کاربرد و نکته: نصب Pillow: python -m pip install pillow — این نمونه فراداده مکانی را استخراج نمی‌کند.

Python • تبدیل تصویر به Base64

نمایش تصویر به رشته Base64

برای جاسازی تصویر کوچک در داده‌های متنی یا تست API.

Python 3
import base64
from pathlib import Path

data = Path("photo.png").read_bytes()
encoded = base64.b64encode(data).decode("ascii")
Path("image_base64.txt").write_text(encoded)
print("Base64 length:", len(encoded))

کاربرد و نکته: Base64 رمزنگاری نیست و فایل را محرمانه نمی‌کند؛ برای تصاویر بزرگ مناسب نیست.

Python • فشرده‌سازی ZIP

ساخت فایل ZIP از یک پوشه

فشرده‌سازی فایل‌های شخصی برای پشتیبان‌گیری و انتقال.

Python 3
from pathlib import Path
from zipfile import ZipFile, ZIP_DEFLATED

folder = Path("my_documents")
with ZipFile("backup.zip", "w", ZIP_DEFLATED) as z:
    for file in folder.rglob("*"):
        if file.is_file():
            z.write(file, file.relative_to(folder))
print("backup.zip created")

کاربرد و نکته: نام پوشه my_documents را با پوشه‌ای که مالک آن هستید جایگزین کنید.

Python • تاریخ و ساعت

نمایش تاریخ و ساعت و اختلاف زمانی

برای ثبت زمان اجرای اسکریپت و ساخت نام فایل گزارش.

Python 3
from datetime import datetime, timezone

now = datetime.now().astimezone()
print("Local:", now.isoformat(timespec="seconds"))
print("UTC:", datetime.now(timezone.utc).isoformat())
print("File stamp:", now.strftime("%Y%m%d-%H%M%S"))

کاربرد و نکته: زمان محلی از تنظیمات سیستم خوانده می‌شود؛ ساعت دستگاه ممکن است دقیق نباشد.

Python • JSON Analyzer

خواندن و مرتب‌سازی JSON

اعتبارسنجی ساختار JSON، نمایش کلیدها و ذخیره نسخه مرتب‌شده.

Python 3
import json
from pathlib import Path

data = json.loads(Path("data.json").read_text(encoding="utf-8"))
print("Type:", type(data).__name__)
if isinstance(data, dict):
    print("Keys:", list(data.keys()))
Path("pretty.json").write_text(
    json.dumps(data, ensure_ascii=False, indent=2),
    encoding="utf-8"
)

کاربرد و نکته: فایل ورودی باید JSON معتبر باشد؛ فایل‌های ناشناس یا حساس را در ابزارهای آنلاین آپلود نکنید.

Python • فایل‌های تکراری

پیداکردن فایل‌های تکراری با SHA-256

فایل‌ها را با هش مقایسه می‌کند؛ چیزی را خودکار حذف نمی‌کند.

Python 3
import hashlib
from pathlib import Path

def digest(path):
    h = hashlib.sha256()
    with path.open("rb") as f:
        for block in iter(lambda: f.read(65536), b""):
            h.update(block)
    return h.hexdigest()

seen = {}
for file in Path("my_files").rglob("*"):
    if file.is_file():
        key = digest(file)
        if key in seen:
            print("Duplicate:", file, "==", seen[key])
        else:
            seen[key] = file

کاربرد و نکته: مسیر my_files را به پوشه خودتان تغییر دهید. قبل از حذف هر فایل، دستی بررسی کنید.

Python • ساخت رمز قوی

تولید رمز تصادفی برای حساب‌های خودتان

استفاده از مولد امن سیستم‌عامل برای ساخت رمز غیرقابل‌حدس.

Python 3
import secrets
import string

alphabet = string.ascii_letters + string.digits + "!@#$%^&*_-+"
password = "".join(secrets.choice(alphabet) for _ in range(20))
print(password)

کاربرد و نکته: رمز تولیدشده را در مخزن کد، پیام عمومی یا فایل اشتراکی قرار ندهید.

Python • تحلیل لاگ

شمارش خطاها در فایل گزارش

خواندن لاگ محلی و شمارش خطوط دارای ERROR و WARNING.

Python 3
from pathlib import Path

log = Path("app.log")
counts = {"ERROR": 0, "WARNING": 0}
for line in log.read_text(errors="replace").splitlines():
    for word in counts:
        if word in line:
            counts[word] += 1
print(counts)

کاربرد و نکته: فقط لاگ سیستم یا برنامه‌ای را بررسی کنید که مجاز به دسترسی به آن هستید.

امنیت فایل • SHA-256

محاسبه هش فایل

اثر انگشت دیجیتال فایل برای بررسی تغییر یا سلامت فایل.

Python 3
import hashlib
from pathlib import Path

file = Path("download.zip")
hash_value = hashlib.sha256(file.read_bytes()).hexdigest()
print(hash_value)

کاربرد و نکته: هش را با مقدار منتشرشده از منبع رسمی مقایسه کنید؛ هش به‌تنهایی فایل را امن نمی‌کند.

امنیت فایل • مقایسه هش

مقایسه دو فایل با SHA-256

بررسی اینکه دو نسخه فایل از نظر محتوای باینری یکسان هستند یا خیر.

Python 3
import hashlib
from pathlib import Path

def sha(path):
    return hashlib.sha256(Path(path).read_bytes()).hexdigest()

a = sha("original.bin")
b = sha("copy.bin")
print("MATCH" if a == b else "DIFFERENT")

کاربرد و نکته: مقایسه فقط برابری محتوای فایل را نشان می‌دهد، نه معتبر بودن منبع آن را.

رمزنگاری • AES با Fernet

رمزگذاری و بازکردن داده آزمایشی

نمونه ساده رمزنگاری متقارن با کتابخانه معتبر؛ کلید را محرمانه نگه دارید.

Python 3
from cryptography.fernet import Fernet

key = Fernet.generate_key()
box = Fernet(key)
message = "پیام آزمایشی DARK Code".encode("utf-8")
ciphertext = box.encrypt(message)
print("Encrypted:", ciphertext)
print("Decrypted:", box.decrypt(ciphertext).decode("utf-8"))
# کلید فقط برای همین نمونه در حافظه است.

کاربرد و نکته: نصب: python -m pip install cryptography — برای پروژه واقعی مدیریت امن کلید ضروری است.

متن • URL Encode/Decode

تبدیل متن برای آدرس اینترنتی

کاراکترهای ویژه را برای استفاده در query string کدگذاری یا بازگردانی می‌کند.

Python 3
from urllib.parse import quote, unquote

text = "سلام DARK Code & test"
encoded = quote(text, safe="")
print(encoded)
print(unquote(encoded))

کاربرد و نکته: URL encoding رمزنگاری نیست و اطلاعات حساس را پنهان نمی‌کند.

متن • HTML Entities

تبدیل کاراکترها به موجودیت HTML

برای نمایش امن متن کاربر در صفحه HTML از escape استفاده کنید.

Python 3
from html import escape, unescape

text = '<script>alert("test")</script>'
encoded = escape(text)
print(encoded)
print(unescape(encoded))

کاربرد و نکته: در برنامه وب، خروجی کاربر را متناسب با محل نمایش escape کنید؛ این نمونه جایگزین چارچوب امنیتی نیست.

متن • باینری

تبدیل متن به صفر و یک

نمایش بایت‌های UTF-8 به شکل رشته دودویی و بازگردانی آن.

Python 3
text = "Hi"
binary = " ".join(format(b, "08b") for b in text.encode("utf-8"))
print(binary)
raw = bytes(int(x, 2) for x in binary.split())
print(raw.decode("utf-8"))

کاربرد و نکته: برای متن فارسی نیز UTF-8 چندبایتی استفاده می‌شود؛ باینری‌سازی رمزنگاری نیست.

متن • تحلیل UTF-8

نمایش تعداد بایت و کدپوینت

تفاوت تعداد نویسه‌ها و تعداد بایت‌های متن را بررسی می‌کند.

Python 3
text = "سلام"
raw = text.encode("utf-8")
print("Characters:", len(text))
print("Bytes:", len(raw))
print("Hex:", raw.hex())
print("Code points:", [hex(ord(ch)) for ch in text])

کاربرد و نکته: برای فهم درست متن‌های فارسی و ایموجی، تفاوت نویسه و بایت مهم است.

شبکه • DNS Lookup

دریافت رکوردهای DNS دامنه

نمونه پرس‌وجوی DNS برای دامنه‌ای که مالک آن هستید یا اجازه بررسی‌اش را دارید.

Python 3
import socket

domain = "example.com"
for item in socket.getaddrinfo(domain, None):
    print(item[4][0])

کاربرد و نکته: این نمونه فقط آدرس‌های resolve شده را نمایش می‌دهد؛ از آن برای بررسی دامنه‌های مجاز استفاده کنید.

وب • HTTP Headers

مشاهده هدرهای پاسخ وب‌سایت

بررسی هدرهای امنیتی پاسخ یک وب‌سایت تحت مدیریت شما.

Python 3
import requests

url = "https://example.com"  # دامنه خودتان
r = requests.get(url, timeout=10)
for name, value in r.headers.items():
    print(f"{name}: {value}")
print("Status:", r.status_code)

کاربرد و نکته: نصب: python -m pip install requests — فقط درخواست عادی GET به سایت مجاز؛ هیچ اسکن یا تست نفوذی انجام نمی‌دهد.

وب • اعتبار گواهی TLS

نمایش تاریخ اعتبار گواهی TLS

بررسی گواهی TLS سرور با اتصال استاندارد و بدون دورزدن اعتبارسنجی.

Python 3
import socket, ssl
from datetime import datetime

host = "example.com"
ctx = ssl.create_default_context()
with socket.create_connection((host, 443), timeout=5) as sock:
    with ctx.wrap_socket(sock, server_hostname=host) as tls:
        cert = tls.getpeercert()
        print("TLS:", tls.version())
        print("Expires:", cert.get("notAfter"))

کاربرد و نکته: فقط دامنه خودتان یا مقصدی که اجازه بررسی آن را دارید وارد کنید؛ گواهی نامعتبر را نادیده نگیرید.

شبکه • مشاهده اتصال‌ها

نمایش اتصال‌ها و پورت‌های سیستم خودتان

ابزارهای محلی برای فهمیدن اینکه چه برنامه‌هایی روی سیستم شما اتصال دارند.

Linux / Bash
ss -tunap
ss -lntup
sudo lsof -i -P -n
ip route

کاربرد و نکته: این دستورات وضعیت سیستم خودتان را نشان می‌دهند؛ برای جست‌وجوی پورت روی دستگاه دیگر نیستند.

SSH • انتقال فایل با SFTP

انتقال فایل به سرور مجاز

SFTP فایل را روی کانال SSH منتقل می‌کند.

Terminal
sftp username@your-server.example
# داخل محیط sftp:
ls
pwd
put report.txt
get backup.zip
bye

کاربرد و نکته: نام سرور را با سرور خودتان جایگزین کنید و فایل‌های مجاز را انتقال دهید.

شبکه • فایروال UFW

قواعد پایه فایروال روی سرور خودتان

نمایش وضعیت و اجازه دادن به سرویس موردنیاز، پیش از فعال‌سازی فایروال.

Linux / Bash
sudo ufw status verbose
sudo ufw allow 22/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status numbered

کاربرد و نکته: پیش از فعال‌سازی روی سرور راه‌دور، دسترسی مدیریتی و قواعد موردنیاز را با مدیر سرور هماهنگ کنید.

تحلیل ترافیک • Wireshark Filters

فیلترهای مشاهده ترافیک نمونه

فیلترهای نمایشی برای تحلیل فایل PCAP آزمایشگاهی یا شبکه مجاز.

Wireshark Display Filters
dns
http
tls.handshake
ip.addr == 192.0.2.10
tcp.port == 443
frame contains "example"

کاربرد و نکته: این‌ها فیلتر نمایش هستند، نه دستور شنود مخفیانه. از فایل PCAP آزمایشی یا ترافیک مجاز استفاده کنید.

فایل • تشخیص نوع با Magic Bytes

بررسی امضای ابتدایی فایل

نوع احتمالی فایل را از چند بایت اول تشخیص می‌دهد؛ به پسوند اعتماد نکنید.

Python 3
from pathlib import Path

signatures = {
    b"\x89PNG\r\n\x1a\n": "PNG",
    b"\xff\xd8\xff": "JPEG",
    b"PK\x03\x04": "ZIP",
    b"%PDF": "PDF",
}
head = Path("sample.bin").read_bytes()[:8]
print(next((name for sig, name in signatures.items() if head.startswith(sig)), "Unknown"))

کاربرد و نکته: تشخیص امضا قطعی نیست؛ فایل را فقط از منبع قابل اعتماد دریافت و با ابزار امنیتی بررسی کنید.

Cyber Playground | ابزارهای تعاملی

ابزارهای سبک که در مرورگر اجرا می‌شوند

این بخش بدون ارسال متن یا فایل به سرور کار می‌کند. اطلاعات حساس را وارد نکنید و خروجی‌ها را قبل از استفاده بررسی کنید.

⌁ مبدل متن / Hex / Base64 / URL / Binary

خروجی اینجا نمایش داده می‌شود.

{ } مرتب‌ساز و اعتبارسنج JSON

نتیجه JSON

⌗ محاسبه SHA-256 فایل

یک فایل انتخاب کنید.

فایل در همین مرورگر خوانده می‌شود و به جایی آپلود نمی‌شود.

⌘ شمارنده و تحلیل متن

تعداد نویسه، کلمه و بایت UTF-8

▣ ساخت رمز تصادفی محلی

رمز فقط در مرورگر تولید می‌شود.

رمز را با کسی به اشتراک نگذارید و در سایت‌های ناشناس وارد نکنید.

⌨ ترمینال شبیه‌سازی‌شده

DARK Code Safe Shell v1.0\nاین ترمینال واقعی نیست؛ فقط چند فرمان نمایشی را اجرا می‌کند.\nفرمان‌های مجاز: help, pwd, ls, whoami, date, clear

این شبیه‌ساز به سیستم‌عامل، فایل‌ها یا شبکه دسترسی ندارد.

ارتباط با DARK Code

برای پیشنهاد آموزش، گزارش خطا یا ارتباط با مدیر سایت پیام بدهید.