PDA

View Full Version : قفل گذاری روی فیلم آموزشی



titi808
چهارشنبه 12 مهر 1396, 00:18 صبح
سلام

من میخوام برای فیلمهای آموزی قفل بذارم ( یه پلیر اختصای که فقط اون بتونه فیلمها رو پخش کنه و بعد پلیر رو روش قفل نرم افزاری بزارم ) ولی نیاز به سورس و مثال دارم


اگر راه بهتری هم سراغ دارین ممنون میشم راهنمایی کنید

با تشکر

danialafshari
چهارشنبه 12 مهر 1396, 09:19 صبح
با سلام
شما میتونید دو نرم افزار تهیه کنید و نحوه ی ساختش همانند قفل نرم افزاری هست
یک نرم افزار کدساز که طرف سازنده نصبه و یک نرم افزار شبیه به پلیر که نه تنها پلیر هست بلکه وظیفه Decode را هم دارد
در نرم افزار سمت مشتری یک کد تولید میشود که از سخت افزارهای سیستم استخراج شده و پس از ارسال برای شما یک فایل باید تحویل بدید که Encode شده باشد که شامل کد محصول و کد سیستم و کد فعال سازی باشد
قبلاً درباره کد نرم افزاری صحبت کردم میتونید در سایت جستجو کنید
در کل شما باید فایل آموزشی را Encode و Decode کنید
موفق باشید

titi808
چهارشنبه 12 مهر 1396, 11:04 صبح
با سلام
شما میتونید دو نرم افزار تهیه کنید و نحوه ی ساختش همانند قفل نرم افزاری هست
یک نرم افزار کدساز که طرف سازنده نصبه و یک نرم افزار شبیه به پلیر که نه تنها پلیر هست بلکه وظیفه Decode را هم دارد
در نرم افزار سمت مشتری یک کد تولید میشود که از سخت افزارهای سیستم استخراج شده و پس از ارسال برای شما یک فایل باید تحویل بدید که Encode شده باشد که شامل کد محصول و کد سیستم و کد فعال سازی باشد
قبلاً درباره کد نرم افزاری صحبت کردم میتونید در سایت جستجو کنید
در کل شما باید فایل آموزشی را Encode و Decode کنید
موفق باشید

در مورد روش و قفل مشکلی ندارم
برای کد و دیکد کردن فیلمها مشکل دارم و نیاز به یه سورس دارم
خیلی تو گیت هاب و نت گشتم ولی چیز درد بخوری پیدا نکردم

abdullah20
پنج شنبه 13 مهر 1396, 14:05 عصر
سلام
اگر میخواید اینکار را در سی شارپ انجام بدید باید فیلم ها را در دیتابیس ذخیره کنید

titi808
پنج شنبه 13 مهر 1396, 16:45 عصر
سلام
اگر میخواید اینکار را در سی شارپ انجام بدید باید فیلم ها را در دیتابیس ذخیره کنید


نمونه سورسی چیزی ندارین ؟
ولی معمولا فیلمها رو انکد میکنند بصورتی که فقط پلیر اختصاصی بتونه پخششون کنه و عد رو پلیر قفل میزارن
دیتابیس زیاد دردی دوا نمیکنه

danialafshari
پنج شنبه 13 مهر 1396, 18:28 عصر
در مورد روش و قفل مشکلی ندارم
برای کد و دیکد کردن فیلمها مشکل دارم و نیاز به یه سورس دارم
خیلی تو گیت هاب و نت گشتم ولی چیز درد بخوری پیدا نکردم
با سلام
مطمئنید خوب گشتید؟
قبلاً با این کد کار میکردم که از code project گرفتم


private void EncryptFile(string inputFile, string outputFile)
{


try
{
string password = @"myKey123"; // Your Key Here
UnicodeEncoding UE = new UnicodeEncoding();
byte[] key = UE.GetBytes(password);


string cryptFile = outputFile;
FileStream fsCrypt = new FileStream(cryptFile, FileMode.Create);


RijndaelManaged RMCrypto = new RijndaelManaged();


CryptoStream cs = new CryptoStream(fsCrypt,
RMCrypto.CreateEncryptor(key, key),
CryptoStreamMode.Write);


FileStream fsIn = new FileStream(inputFile, FileMode.Open);


int data;
while ((data = fsIn.ReadByte()) != -1)
cs.WriteByte((byte)data);




fsIn.Close();
cs.Close();
fsCrypt.Close();
}
catch
{
MessageBox.Show("Encryption failed!", "Error");
}
}



private void DecryptFile(string inputFile, string outputFile)
{


{
string password = @"myKey123"; // Your Key Here


UnicodeEncoding UE = new UnicodeEncoding();
byte[] key = UE.GetBytes(password);


FileStream fsCrypt = new FileStream(inputFile, FileMode.Open);


RijndaelManaged RMCrypto = new RijndaelManaged();


CryptoStream cs = new CryptoStream(fsCrypt,
RMCrypto.CreateDecryptor(key, key),
CryptoStreamMode.Read);


FileStream fsOut = new FileStream(outputFile, FileMode.Create);


int data;
while ((data = cs.ReadByte()) != -1)
fsOut.WriteByte((byte)data);


fsOut.Close();
cs.Close();
fsCrypt.Close();


}
}

استفاده :

private void btnEncrypt1_Click(object sender, EventArgs e)
{
EncryptFile(@"D:\(1) Pad.avi", @"C:\Test\Encrypt.avi");
}


private void btnDecrypt_Click(object sender, EventArgs e)
{
DecryptFile(@"C:\Test\Encrypt.avi", @"C:\Test\Decrypt.avi");
}

336699
پنج شنبه 13 مهر 1396, 18:44 عصر
با سلام
مطمئنید خوب گشتید؟
قبلاً با این کد کار میکردم که از code project گرفتم


private void EncryptFile(string inputFile, string outputFile)
{


try
{
string password = @"myKey123"; // Your Key Here
UnicodeEncoding UE = new UnicodeEncoding();
byte[] key = UE.GetBytes(password);


string cryptFile = outputFile;
FileStream fsCrypt = new FileStream(cryptFile, FileMode.Create);


RijndaelManaged RMCrypto = new RijndaelManaged();


CryptoStream cs = new CryptoStream(fsCrypt,
RMCrypto.CreateEncryptor(key, key),
CryptoStreamMode.Write);


FileStream fsIn = new FileStream(inputFile, FileMode.Open);


int data;
while ((data = fsIn.ReadByte()) != -1)
cs.WriteByte((byte)data);




fsIn.Close();
cs.Close();
fsCrypt.Close();
}
catch
{
MessageBox.Show("Encryption failed!", "Error");
}
}



private void DecryptFile(string inputFile, string outputFile)
{


{
string password = @"myKey123"; // Your Key Here


UnicodeEncoding UE = new UnicodeEncoding();
byte[] key = UE.GetBytes(password);


FileStream fsCrypt = new FileStream(inputFile, FileMode.Open);


RijndaelManaged RMCrypto = new RijndaelManaged();


CryptoStream cs = new CryptoStream(fsCrypt,
RMCrypto.CreateDecryptor(key, key),
CryptoStreamMode.Read);


FileStream fsOut = new FileStream(outputFile, FileMode.Create);


int data;
while ((data = cs.ReadByte()) != -1)
fsOut.WriteByte((byte)data);


fsOut.Close();
cs.Close();
fsCrypt.Close();


}
}

استفاده :

private void btnEncrypt1_Click(object sender, EventArgs e)
{
EncryptFile(@"D:\(1) Pad.avi", @"C:\Test\Encrypt.avi");
}


private void btnDecrypt_Click(object sender, EventArgs e)
{
DecryptFile(@"C:\Test\Encrypt.avi", @"C:\Test\Decrypt.avi");
}



با این روش ، فایل Decrypt شده در پارتیشن c ذخیره میشه و کل مبحث قفل گذاری زیر سوال میره :ناراحت:

خب ما باید کاری کنیم که کاربر به فایل Decrypt شده دسترسی نداشته باشه :متفکر:

danialafshari
پنج شنبه 13 مهر 1396, 18:50 عصر
با این روش ، فایل Decrypt شده در پارتیشن c ذخیره میشه و کل مبحث قفل گذاری زیر سوال میره :ناراحت:
این یک مثال بود و صرفاً هر جایی که میخاد میتونه قرارش بده
میتونه به عنوان یک فایل temp قرا داده باشه
بعدش این سناریو مال زمانی هست که نرم افزار ارائه شده و میخواهد فایل تصویری را به مشتری بصورت آپدیت تحویل داده شود
اگر هم فایل ها آماده باشن که اصلاً نیازی به کدگذاری نیست و میتواند از Assembly.GetExecutingAssembly() استفاده کند

abdullah20
جمعه 14 مهر 1396, 09:13 صبح
نمونه سورسی چیزی ندارین ؟
ولی معمولا فیلمها رو انکد میکنند بصورتی که فقط پلیر اختصاصی بتونه پخششون کنه و عد رو پلیر قفل میزارن
دیتابیس زیاد دردی دوا نمیکنه

عرض کردم اگر میخواید در سی شارپ اینکار را انجام بدید روشش اینه
یعنی رمزنگاری کردن فیلم ها
حالا شما وقتی رمزنگاری را انجام دادید دوست داشتید داخل دیتابیس ذخیره کنید دوست داشتید همون فیلم های رمزگاری شده را داخل ی پوشه کنار برنامه بذارید و وقتی برنامه اجرا شد از داخل برنامه پخش کنید ولی خب داخل دیتبایس باشه بهتره

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

ولی روش بهتر همونی هستش که بنده گفتم

محمد رضا فاتحی
جمعه 14 مهر 1396, 10:36 صبح
با عرض اجازه از بزرگان و اساتید!
به نظر من روش اینکریپت کردن و بازیابی روی هارد هرچند تو بهترین مسیر هم باشه به راحتی قابل پیدا کردنه تو همین سی سارپ خودمون کافیه دو تا خط کد بزنی با filesystemwatcher کل دل و روده هارد(تغییراتش) میاد بیرون...

کپی روی دیتابیس هم خوبه ولی هم از نظر حجم دیتابیس به مشکل می خورین هم بازهم مشکل بازیابی تو مورد قبل رو داره
به نظر بنده بهترین روش خوندن فایل از Strame است
اینو بخونید...
https://stackoverflow.com/questions/12405635/play-videos-from-memory-stream

abdullah20
جمعه 14 مهر 1396, 13:25 عصر
با عرض اجازه از بزرگان و اساتید!
به نظر من روش اینکریپت کردن و بازیابی روی هارد هرچند تو بهترین مسیر هم باشه به راحتی قابل پیدا کردنه تو همین سی سارپ خودمون کافیه دو تا خط کد بزنی با filesystemwatcher کل دل و روده هارد(تغییراتش) میاد بیرون...

کپی روی دیتابیس هم خوبه ولی هم از نظر حجم دیتابیس به مشکل می خورین هم بازهم مشکل بازیابی تو مورد قبل رو داره
به نظر بنده بهترین روش خوندن فایل از Strame است
اینو بخونید...
https://stackoverflow.com/questions/12405635/play-videos-from-memory-stream

کلا روال و روشش همینه و باید به صورت استریم پخش کنیم
یعنی چون ما نمیخوایم فیلم ها را روی هارد ذخیره کنیم باید به صورت استریم پخش کنیم
خب حالا این بایت هایی که میخوایم به صورت استریم پخش کنیم را از کجا بیاریم؟
یا باید داخل دیتابیس ذخیره کنیم یا فیلم ها را رمزنگاری کنیم بذارم داخل پوشه

در مورد دیتابیس هم اره دیگه وقتی فیلم ذخیره بشه حجم میره بالا ولی مشکلی نداره
ما نمیخوایم کاری با دیتابیس انجام بدیم که حجم دیتابیس مهم باشه