خوش آمدید عزیز

لایسنس گذاری بر روی اسکریپت های پایتونی


عاقا مستقیم سورس رو میزارم

یه قسمت کلاینت مانند داره و یه قسمت سرور

توی قسمت کلاینت باید یه عددی (من گذاشتم برای خودم 1384) رو بجای rand بزارید

این سورس کلاینت

import platform,socket,re,uuid,json,psutil,logging,base64,hashlib,os

rand = 1384

def getSystemInfo():
    try:
        info={}
        info['platform']=platform.system()
        info['platform-release']=platform.release()
        info['platform-version']=platform.version()
        info['architecture']=platform.machine()
        info['hostname']=socket.gethostname()
        info['ip-address']=socket.gethostbyname(socket.gethostname())
        info['mac-address']=':'.join(re.findall('..', '%012x' % uuid.getnode()))
        info['processor']=platform.processor()
        info['ram']=str(round(psutil.virtual_memory().total / (1024.0 **3)))+" GB"
        return json.dumps(info)
    except Exception as e:
        logging.exception(e)
def get_serial():
    text = base64.b64encode(getSystemInfo().encode()).decode()
    text2 = hashlib.sha256(hashlib.md5(("".join(sorted(text))).encode()).hexdigest().encode()).hexdigest()
    text3 = "".join(sorted(text2))
    text4 = hashlib.md5(text3.encode()).hexdigest()
    return text4
def is_it_serial(serial):
    global rand
    ser_created_system = serial_creator(get_serial()[:10],rand)
    ser_created_user = serial
    if ser_created_system == ser_created_user:
        return True
    else:
        return False
    
def serial_creator(serial,rand):
    ser = serial
    for i in range(10):
        ser = hashlib.md5(ser.encode()).hexdigest()
    return ser

try:
    verify_code = open("/serial_verifyer/conf.config",'r').read()
    if is_it_serial(verify_code):
        print("correct!")
    else:
        print("serial number is not correct :( ")
except:
    try:
        os.mkdir("/serial_verifyer")
    except:
        pass
    serial_code = "%s_%s" % (get_serial()[:10],rand)
    print(serial_code)
    verify_code = input("Enter the verify code : ")
    if is_it_serial(verify_code):
        print("correct!")
        open("/serial_verifyer/conf.config",'w').write(verify_code)
    else:
        print("serial number is not correct :( ")

 

نکته بعدی تو استفاده از قسمت کلاینت اینه که  کل برنامتونو میزارید داخل یه function مثلا به اسم asdoijasoiosajd و بجای print("correct!") فانکشنتونو صدا میکنید. بجای print("serial number is not correct :( ") هم هرچی خودتون میخواین میزارین برای اینکه بگه آره سریال اشتباهه

و این هم قسمت سرور مانندش :

import hashlib

def serial_creator(serial,rand):
    ser = serial
    for i in range(10):
        ser = hashlib.md5(ser.encode()).hexdigest()
    return ser

data = input("Enter code : ").split("_")
print(serial_creator(data[0],int(data[1])))

و اما چطوری کار میکنه

بعد از اینکه نرم افزار قسمت کلاینت ساخته شد (میتونید همین الان تستش کنین. دقیقا با کپی پیست کردن) و رانش کردید یه کد به شما میده. اون کد رو باید بزنید داخل نرم افزار سرور مانند و بعد از اون سرور مانند هم به شما یه کد دیگه میده که باید اون رو بدید به ارباب رجوع و اون هم بزنه و لاینسنس فعال میشه

ولی چطوری برای دفعات بعدی چک میکنه که درسته لایسنسش؟ میاد یه پوشه درست میکنه تو یه مسیری و یه فایل هم داخلش میزاره و کدی که ما به نرم افزار دادیم رو توش مینویسه و چک میکنه که این کد درسته یا نه. اگه اشتباه بود باید لایسنس جدید براش بزنین :)

و اما چطوری کد درست میشه؟ این کد از اطلاعات سخت افزاری و نرم افزاری درست میشه. میتونید تابع getSystemInfo() رو همینطوری صدا کنین ببینید چی بهتون بر میگرونه :)

شاد باشیییییییییییینننننننن

Name

Email