PDA

View Full Version : مشکل در پایتون--نرم افزار برای دادن لایسنس بر اساس ای پی سرور و اجرا نشدن در ...



m4hdi.c
سه شنبه 06 اسفند 1392, 23:44 عصر
سلام دوستان !
من یه اسکریپت با زبان پایتون نوشتم که واسه مدیریت و امنیت سرور های لینوکس هست
توی اسکریپتم به راحتی میشه با زدن چند کلید سرور رو مدیریت یا نرم افزار هایی مثل : انتی شلر نصب بشه و یا سی پنل یا دایرکت ادمین نصب بشه و .... (بیشتر تنظیمات امنیتی)

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


----------------------
اگه کسی جواب سوال بالا رو میدونه لطفا به این سوالمم جواب بده :
اگه مثلا ما یه کدی بزنیم که چک کنه و کار هم بکنه اونوقت طرف میاد اون کد رو پاک میکنه و به راحتی اجرا میکنه http://forum.ubuntu.ir/Smileys/default/cheesy.gif
میخواستم بدونم راهی هست تا جلوی این مشکلرو بگیرم ؟
مثلا میشه من اطلاعات اصلی رو در هاست اپلود کنم ؟
یا میشه فایل های پایتون رو کد کنم تا کسی نتونه ویرایش کنه؟


باتشکر فراوان :X

n.nowroozi
چهارشنبه 07 اسفند 1392, 09:21 صبح
اسکریپتت تحت شبکه به اون سرور ها وصل میشه و تنظیمات رو اعمال میکنه؟ یا خود اسکریپت رو مستقیما روی سرور اجرا میکنی؟
----
میتونی pyo یا pyc کنی که به راحتی خونده نشه اما در نهایت هر قفلی شکسته میشه، دیر یا زود داره سوخت و سوز نداره :) به خصوص پایتون که ذاتا متن بازه

m4hdi.c
چهارشنبه 07 اسفند 1392, 13:28 عصر
داداش بابت این که جواب دادی بسیار ممنونم :X

من خودم کد میکنم و دیکد هم میشه کرد :D

دنبال اینم که یه کد ساده بنویسم تا به سرور خودم وصل بشه و کد هارو از اونجا فقط بخونه و اجرا کنه و در واقع کدی توی سرور طرف ذخیره نشه !

ایا امکانش هست بگید چجور میتونم یه کد بنویسم که وصل بشه به سرور اصلی (سرور خودم) بعد بدون این که کد هارو دانلود یا ذخیره کنه طبق همون اجرا کنه ؟

تمام مشکلات من همینه !
اگه کمکم کنی سورس اصلی رو حتما بهت میدم !

باتشکر فراوان

n.nowroozi
چهارشنبه 07 اسفند 1392, 13:47 عصر
میتونی یه سوکت سرور سمت سرور اصلیت که حاوی کدها هست بنویسی از اینور هم یه سوکت کلاینت بنویسی که وصل شه به اون . و بعد اینکه وصل شد کامندهارو دونه دونه بفرسته سمت کلاینتت تا اجرا شه. اگه کامندها سیستمی هست که آسونه اما اگه پایتونی هست یکم پیچیده تر میشه.

m4hdi.c
چهارشنبه 07 اسفند 1392, 14:20 عصر
ممنون بابت این که بهم یاد دادید !
اما میشه یه مطلب اموزش یه یه سایت واسه یادگیری این کار بهم بدید ؟
باتشکر فراوان

n.nowroozi
چهارشنبه 07 اسفند 1392, 14:27 عصر
من یه آموزش نوشتم میتونی ازش ایده بگیری:
http://pyhome.ir/weblog/2/

m4hdi.c
چهارشنبه 07 اسفند 1392, 14:28 عصر
من الان مشکل این که به سرور وصل بشه حل شد !
اما نمیدونم چجوری و با چه کدی , کد های اصلی رو در سرور طرف اجرا کنم ؟
یعنی توی سورسی که قراره در سرور طرف اجرا بشه باید چی بزارم تا کد هایی که در سرور خودم هست رو اجرا کنه ؟
الان به urllib2 میتونم فایل هامو از سرور بخونم اما نمیدونم چجوری میشه اجرا کرد !!!!


خداییش اگه کمکم کنی تا زنده ام دعا میکنمت :X
باتشکر فراوان

n.nowroozi
چهارشنبه 07 اسفند 1392, 14:53 عصر
این لینکی که دادم رو خوندی؟!

m4hdi.c
چهارشنبه 07 اسفند 1392, 15:01 عصر
اره خوندم اما به نتیجه ای نرسیدم !
من واسه اسکریپتم چند تا چیز نیاز دارم مثل : 1-دادن لایسنس بر اساس ای پی - 2-قراردادن پسورد هش شده 3-اجرا ی کد ها از سرور اصلی خودم (ندیدن سورس توسط مشتری)
تا الان خداروشکر به موارد 1 و 2 رسیدم :D
تنها مشکلم اینه که نمیدونم چجوری و با چه کدی میتونم فایل رو از سرور خودم اجرا کنم ؟
یه روش هست که به ذهنم میرسه اونم اینه که از دستور wget استفاده کنم و اونو از سرورم دانلود کنم -- اما من به هیچ وجه نمیخوام سورس به دست مردم یا مشتری ها برسه چون اونطوری زحمت هام به هدر میره و همه استفاده میکنن !

خواهش میکنم داداش یه کد بهم بده یا یه اموزش بهم بده تا بشه باهاش فایل رو از سرور خودم اجرا کرد !

باتشکر فراوان !!!!‌ :X

n.nowroozi
چهارشنبه 07 اسفند 1392, 15:34 عصر
دستوراتت سیستمی هست ؟

m4hdi.c
چهارشنبه 07 اسفند 1392, 16:15 عصر
اره
مثلا واسه نصب سیپنل اینو میزنم :



import os
os.system('wget http://myfileadresse.ir')



خواهش میکنم اگه ممکنه راه نماییم کنید !
باتشکر فراوان !

m4hdi.c
چهارشنبه 07 اسفند 1392, 16:40 عصر
داداش من وقتی این نرم افزار رو بفروشم کلی در امد دارم...
اگه شما بتونی این مشکلمو حل کنی یه درصدی + چند تا لایسنس به شما میدم !
--------------------------
لطفا اگه میشه یه اسکریپت یا یه کد واسه encode (کد) کردن بهم بده تا افرادی که هیچی نمیدونن نتونن سورس رو ببینن.
سوال 2:
لطفا اگه میشه بگو چجوری میتونم بعد از اجرا ی اسکریپت در سرور طرف و باز کردن اسکریپت اصلی در سرور خودم , چجوری میتونم اسکریپت اصلی در سرور خودم رو بدون نمایش سورس یا دانلود در سرور طرف اجرا کنم ؟
ممنون میشم کمکم کنی !

n.nowroozi
چهارشنبه 07 اسفند 1392, 17:00 عصر
نه عزیز من بابت پست هایی که میزارم چشم داشتی ندارم. چون من خودمم بالاخره از همین فروم ها شروع کردم و دیگران هم بدون چشم داشتی جواب سوال های من رو دادند.

ببین شما یک سری استرینگ داری که باید با دستور os.system اجرا بشند، پس من پیشنهاد میکنم که شما یک سوکت سروری داشت باش که بقیه بهش وصل بشن حالا میتونی موقع وصل شدن آی پی شون رو بگیری اگه مجاز بودند بری مرحله بعد. توی مرحله بعد شما همین استرینگ هایی که باید با دستور os.system اجرا بشند رو دونه دونه پاس میدی سمت کلاینت، کلاینت که هرکدوم رو اجرا کرد یک respone ازشون میگیری و مثلا کامند بعدی رو میدی سمتشون. این راهکاریه که اگه خودم بودم توی همچین موردی انجام میدادم. اینجوری دیگه فایلی نمیره سمت کلاینت ذخیره بشه و دستوراتت آنلاین اجرا میشند بعد میمونه بحث اینکه همین استرینگ هات رو بین راه گوش ندند که باید رمز نگاری کنی و ... که خودت فکر کنم بهتر در جریانی. واسه کد کردن هم میگم راه های دم دستیش همون pyc و pyo کردنشه اما همشون قابل بازگشایی هستند در نهایت. من چون زیاد به قفل گذاری و اینها اهمیت نمیدم نرفتم دنبالش.

n.nowroozi
چهارشنبه 07 اسفند 1392, 17:03 عصر
>>> import py_compile
>>> py_compile.compile('abc.py')
این مثلا بهتون یک خروجی pyc میده

m4hdi.c
چهارشنبه 07 اسفند 1392, 17:20 عصر
داداش بسیار ممنون !
من میدونم که شما هیچ چشم داشتی ندارید اما میخوام واسه تشکر و واسه این که وقتتونو به من میدید تشکر کنم :X
من الان با روشی که گفتید تونستم اونو به pyc کامپایل کنم !
الانه خیالم راحته که افرادی که خیلی حرفه ای نیستن به راحتی نمیتونن سورس رو ببینن.
سوال : ایا این رو میشه به اول برگردوند ؟-- یعنی میشه سورس رو فهمید ؟

-----------------------------------------------------------------------------------------------------------------------
اگه با روش بالا میشه سورس رو فهمید لطفا جواب سوال زیر رو هم بدید :‌ (باتشکر فراوان)
چجوری ارتباط بین سرور و کاینت برقرار کنم تا دستورات اجرا بشه ؟
میشه خودتون بی زحمت یه کد بنویسید که به سرور و به ادرس فایل اصلی وصل بشه و کد هارو از اونجا اجرا کنه ؟
اخه من گیج شدم و خیلی از توضیحات عالی شما سر در نیاوردم !
باسپاس فراوان !

m4hdi.c
چهارشنبه 07 اسفند 1392, 17:25 عصر
داداش کلا الان من نمیفهمم چجوری میشه سوکت واسه فایل پایتون در سرور بسازم و با سرور های دیگه بهش وصل بشم و در سوکت سرور چک کنه که اگه ای پی مطابقت داشته وارد بشه؟
چجوری ؟
بخدا گیج شدم ....

n.nowroozi
چهارشنبه 07 اسفند 1392, 17:27 عصر
آره میشه تاپیک پایین رو دنبال کن:
http://stackoverflow.com/questions/5287253/is-it-possible-to-decompile-a-compiled-pyc-file-into-a-py-file (http://stackoverflow.com/questions/5287253/is-it-possible-to-decompile-a-compiled-pyc-file-into-a-py-file)
من الان سر کارم شب اگه وقت شد سعی میکنم یک sample برات بزارم که کلیت کار دستت بیاد

m4hdi.c
چهارشنبه 07 اسفند 1392, 17:33 عصر
باشه !
بسیار ممنون !
خواهش میکنم لطفا اگه میشه تا اخر شب یه کد بنویس که بزارم داخل کد اصلی توی سرور و باهاش بشه از سرور های دیگه به سرور اصلی وصل شد و کد هارو خوند !
لطفا اگر ممکنه یه کد به کد بالا اضافه کن که بتونم باهاش ای پی هایی که وصل میشه رو تایید کنم !

بخدا اگه این کار رو برام بکنی اینقد دعا میکنمت که حد نداره !
ایشالا هرچی میخوای خدا بهت بده !
-------------------------------------------------------
داداش دلیلی هم که اینقد دارم تلاش میکنم تا این اسکریپت رو به ثمر برسونم اینه که روش خیلی زحمت کشیدم و واقعا مفید هست !
خداییش اگه کمکم کنی بهت سورس اصلی رو میدم !
یا علی

n.nowroozi
چهارشنبه 07 اسفند 1392, 23:47 عصر
کلیت کار میشه همین کدی که نوشتم دیگه خودت باقیش رو شخصی سازی کن . کامنت هم توش نوشتم که بدونی کجا باید چیرو بزاری
سرور:

from twisted.internet import protocol, reactor

class ServerProtocol(protocol.Protocol):
def connectionMade(self):
self.transport.write('your command')

def dataReceived(self, data):
#check data for response of client and then transport next command
self.transport.write('next command')

class ServerFactory(protocol.Factory):
def buildProtocol(self,addr):
#you can check the connection IP here in addr
return ServerProtocol()

reactor.listenTCP(8000,ServerFactory())

reactor.run()


کلاینت:




from twisted.internet import protocol, reactor
import os
class ClientProtocol(protocol.Protocol):

def dataReceived(self,data):
#here you must run command in data by os.system
os.system(data)
self.transport.write('status')

class ClientFactory(protocol.ClientFactory):

def buildProtocol(self,addr):

return ClientProtocol()

def clientConnectionFailed(self, connector, reason):

print 'Connection Failed'

reactor.stop()

def clientConnectionLost(self,connector,reason):

print 'Connection lost'

reactor.stop()

reactor.connectTCP('localhost', 8000, ClientFactory())

reactor.run()


موفق باشی