دسترسی به فایل html فقط توسط mmb

sorooshk

Active Member
سلام

با تشکر فراوان از Nevercom عزیز.
لینکی را که دادید دیدم و برایم جالب بود خیلی خوب کار میده و تست کردم.
فقط ای کاش فایل ها روی کامپیوتر کاربر ریخته نمیشدند که مجبور بشیم از Wipe یا Fast Wipe استفاده کنیم برای حذف اونها.

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

ولی روش جالبی هست. ای کاش این نقطه ضعف را نداشت.

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

sorooshk

Active Member
سلام مجدد

من صفحه دوم لینکی را که در بالا داده بودید خوندم و متوجه یک موضوع شدم.
و اون هم اینه که شما گفته بودید بعد از لود شدن فایل فورا میتونیم اون را حذف کنیم. خوب با این کار آیا فایل همچنان در برنامه دیده میشه؟
منظورم اینه که با این کار ما یه مرتبه صفحه Browser من وسط نمایش دادن فایل ننویسه The Page Cannot be Found

چه جوری میتونه این فایل را نشون بده وقتی که ما کامل اون را حذف کردیم؟؟؟؟؟
 

evil_gates

اين نيز بگذرد ...
دوست عزيز

روش جناب nevercom روش مناسبي براي حفظ فايلها از دسترسي مستقيم هست.

من ميخواستم روش ديگه اي هم پيشنهاد كنم.

يك ديتابيس بسازيد و سورس فايل htm رو به صورت يك متغير رشته اي به ديتابيس ارسال كنيد. (منظورم از سورس متن مقاله به همراه تگهاي html هست)

يك فايل خالي از نوع متني و بدون هيچ نوع پسوندي هم ايجاد كنيد و تو برنامه embedded كنيد.

بعد در زمان اجراي برنامه اول مقداري كه تو ديتابيس ذخيره كرده بوديد رو بخونيد و تو يك متغير رشته اي بريزيد و مقدار اين متغير رو با StrToFile به فايل embedded شده بفرستيد و با دستور Browser آدرس فايل embedded رو تو شي HTML درون mmb بارگذاري كنيد.

مقاله شما تو شي HTML نمايش داده ميشه و البته كاربر به سورس فايل هم دسترسي نداره.

اگه كاربر بخواد كنجكاوي كنه و در زمان اجرا بره تو temp و فايلي كه اونجا باز شده رو هم ببينه باز هم جز يكسري كد چيز مناسبي گيرش نمياد.
 
آخرین ویرایش:

sorooshk

Active Member
سلام
عجب روش های پر مغز و جالبی کم کم این تاپیک داره هیجان انگیز میشه. شاید این روش شما را هم امتحان کردم.

فقط جناب Nevercom من بر اساس توضیحات شما کد زیر را نوشتم ولی هر کاریش می کنم کار نمیده:

کد:
Art$='<SrcDir>\Articles\Test.htm.Encrypt'
Out$='<Windows>'
Key$='123'
param$=Art$+'|'+Out$+'|'+Key$
PluginSet("PlugIn","param$")
PluginRun("PlugIn","DeCrypt")
PluginGet("PlugIn","status")
If (status=0) Then
  Art$=Out$+'\Test.htm'
  Page("Articles")
End
If (status=1) Then
  Message("File or key error, Check your input.","")
End

همش status من مساوی 1 می شود و پیغام خطا میده. هر کاریش می کنم درست نمیشه. مسیر ها را عوض کردم فایل ها را عوض کردم نوع آدرس دهی و چیزهای دیگه ولی چیزی درست نمیشه میشه بفرمایید عیب کد بالا کجا هست؟
ضمنا من فایل هایم را با همان مثال شما Encrypt می کنم و بعد به برنامه خودم میدم که Decrypt کنه فایل را ولی نمیتونه و خطا میده.
 

evil_gates

اين نيز بگذرد ...
ببخشيد به جاي جناب nevercom فضولي كردم و پاسخ دادم

تو كد بالا فكر ميكنم متغير $Out شما درست مقدار دهي نشده.

وقتي شما فايل رو Encrypt ميكنيد در واقع فايلتون رو كد كرديد. وقتي قصد داريد فايلي Decrypt كنيد يعني فايل كد شده رو برگردونيد به حالت قبل خودش.

بنابراين خروجي دستور Decrypt بايد توليد فايلي باشه. هر فايل هم قاعدتا نام و مسيري داره.

ميشه بگيد خروجي اين دستور كه همون مقدار متغير $Out هست چه فايلي رو توليد خواهد كرد؟
 

sorooshk

Active Member
سلام و با تشکر از شما

خوب یعنی من باید به دستور Out$ چه چیزی اضافه کنم؟

اصولا فایل Decrypt شده توی مثال فوق همون فایل Test.htm میشه.

یعنی باید به آخر دستور Out$ مقدار نام فایل Test.htm را اضافه کنم؟
 

sorooshk

Active Member
آفرین خیلی جالب توضیح دادید

کد بالا را به کد زیر تغییر دادم و نتیجه که کار هم داد این شد:
کد:
Art$='<SrcDir>\Articles\Test.htm.Encrypt'
Out$='<Windows>'+'Test.htm'
Key$='123'
param$=Art$+'|'+Out$+'|'+Key$
PluginSet("PlugIn","param$")
PluginRun("PlugIn","DeCrypt")
PluginGet("PlugIn","status")
If (status=0) Then
  Art$=Out$
  Page("Articles")
End
If (status=1) Then
  Message("File or key error, Check your input.","")
End

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

باز هم تشکر تشکر تشکر
 

sorooshk

Active Member
یک مشکل جدید
همه چیز خوب کار میکنه به غیر از دستور Wipe حالا مقاله توی خروجی دیده میشه ولی با استفاده از دستورات Wipe یا FastWipe هر کاری میکنم مقاله پاک نمیشه. چرا؟؟؟؟

این هم از کد جدید که Wipe را داخلش نوشتم ولی کار نمیده به نظر شما مشکل کجاست؟

کد:
Art$='<SrcDir>\Articles\Test.htm.Encrypt'
Out$='<Windows>'+'Test.htm'
Key$='123'
param$=Art$+'|'+Out$+'|'+Key$
PluginSet("PlugIn","param$")
PluginRun("PlugIn","DeCrypt")
PluginGet("PlugIn","status")
If (status=0) Then
  Art$=Out$
  Page("Articles")
  PluginSet("PlugIn","Out$")
  PluginRun("PlugIn","FastWipe")
End
If (status=1) Then
  Message("File or key error, Check your input.","")
End
 

evil_gates

اين نيز بگذرد ...
تو كد بالا قاعدتا بايد پاسخ بگيريد. لطفا با PluginGet چك كنيد ببينيد چه نتيجه اي از اجراي اين دستور پلاگين بدست مياد.
 

sorooshk

Active Member
سلام
من هم تو همین موندم که چرا جواب نمیده status هم گرفتم موقعیت همون شماره 0 هست که میگه همه چی درست کار میکنه ولی وقتی میرم تو مسیری که فایل ذخیره شده هنوز فایل هست و پاک نشده.

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

کد های حذف مقاله را در Load صفحه Articles هم قرار دادم که بتونه اونجا مقاله را حذف کنه ولی باز فرقی نمیکنه و همچنان مقاله موجود می باشد.

به نظر شما علت چیست؟
 

sorooshk

Active Member
سلام مجدد

راهش را پیدا کردم همان طور که قبلا هم گفتم مشکل به خاطر هدایت مقاله بود که من مقاله را به صفحه Articles هدایت می کنم.

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

البته در هنگام اجرای سی دی احتمالا چون Load شدن مقاله بیشتر وقت می برد شاید نیاز باشد که مدت 2 ثانیه را بیشتر کنم.

ولی چیزی که هست اینه که بعید میدونم کاربری بتونه حدس بزنه که مقاله من در کجا Decrypt میشه و تا بیاد این چیزها را متوجه بشه مقاله حذف شده.

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

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

باز هم تشکر.
 

saadatmsg

Active Member
دوست من مي تونين يه نمونه از كاري كه انجام دادين براي دوستان بذاريد تا ما هم بتونيم ازش استفاده كنيم؟
.
.
.
.
البته باز هم ميل خودتونه
 

sorooshk

Active Member
سلام

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

جالبه تو نمایشگاه های کامپیوتر که این سی دی ها را میفروختیم همه فکر می کردند با زبان های برنامه نویسی مثل c# این کار را انجام دادیم. و غیر قابل باور بود برایشان که با mmb این کارها انجام شده.

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

بنابراین متاسفانه نمیتونم فایلی را که ساختم به صورت مستقیم برای شما بگذارم.

به همین منظور یک پروژه جدید به صورت دمو ایجاد می کنم و کارهایی را که انجام دادم در داخل اون انجام میدم و براتون در همین پست ارسال می کنم. شاید امشب یا فردا بتونم این کار را انجام بدم.

امیدوارم این پروژه بتونه به همه کمک بکند.

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

saadatmsg

Active Member
بله دوست من منظور من هم اين نبود كه شما پروژتونو براي ما بفرستيد. منظورم اين بود كه شما يه نمونه از كاري كه انجام دادين به عنوان يك نمونه با هر محتوايي كه مي خواين برامون ارسال كنين. چون ما نمي خوايم از محتويات پروژه شما با خبر بشيم فقط مي خواهيم روش كاري كه انجام دادين و كدهايي كه استفاده كردينو ياد بگيريم.

چون اين مشكل خيلي از دوستان ماست كه كسي به محتويات داخل cd شون دسترسي نداشته باشه

ممنون از شما
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
سلام

با تشکر فراوان از Nevercom عزیز.
لینکی را که دادید دیدم و برایم جالب بود خیلی خوب کار میده و تست کردم.
فقط ای کاش فایل ها روی کامپیوتر کاربر ریخته نمیشدند که مجبور بشیم از Wipe یا Fast Wipe استفاده کنیم برای حذف اونها.

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

ولی روش جالبی هست. ای کاش این نقطه ضعف را نداشت.

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

فقط فایلها رو Encrypt کردید و اون رو در MMB لود کردیم، دیگه به فایل نیازی نیست، یعنی در MMB لود شده و وجود فایل اصلی نیاز نیست.
و اینکه ما بلافاصله پس از لود فایل اون رو پاک میکنیم که این امر هم زمانبر نیست و ضمن اینکه وقتی که فایل Wipe میشه نمیشه اون رو کپی کرد.

پس نگران این موضوع نباشید
 

sorooshk

Active Member
سلام دوستان گرامی و عزیز:

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

توضیحات پروژه مثال کار با پلاگین Fyeo :

برنامه های مورد نیاز:
1. برنامه MMB
2. برنامه Encrypt Web Pro
3. پلاگین Fyeo

روش کار:

ابتدا فایل مورد نظر خودمان را که در این مثال یک فایل HTML به نام MMB.htm می باشد را توسط برنامه قدرتمند Encrypt Web Pro رمزگذاری می کنیم. کار با این برنامه را به خود شما واگذار می کنم. فقط همین را بگویم که توسط این برنامه می توانید

از موارد زیر جلوگیری نمایید:
پرینت شدن فایل
استفاده از دکمه Print Screen
باز شدن صفحه وب توسط مرورگرهای فایر فاکس و اپرا.
بازشدن رمز صفحه
راست کلیک در صفحه و .....

:nokte: حتما به برنامه بگین که اجازه نده فایل شما با FireFox و Opera دیده بشن چون اگر کاربر با این دو تا مرورگر فایل را ببینه میتونه از PrintScreen استفاده کنه و از فایل شما عکس بگیره حتی در حالتی که به برنامه گفته باشین که PrintScreen را ببنده.

بعد از این که فایل ما توسط این برنامه رمز گذاری شد با پلاگین Fyeo و مثالی که دوست گرامیمان Nevercom در این تاپیک : http://forum.majidonline.com/showthread.php?t=95761&p=660551&postcount=7 نوشته اند فایل خودمان را رمزگذاری

می کنیم. فقط یادتان نرود که کلید رمز شما چه چیزی هست.

حالا میرسیم به پروژه ای که من نوشتم.

ابتدا پلاگین Fyeo و فایل HTML خودم را Embed می کنم.
در صفحه Home یک Text ایجاد می کنیم و کدهای زیر را به عنوان Action به آن میدهم.


کد:
Art$='<Embedded>\MMB.htm.Encrypt'

Out$='<Temp>'+'MMB.htm'

Key$='Majidonline.com'

param$=Art$+'|'+Out$+'|'+Key$

PluginSet("PlugIn","param$")
PluginRun("PlugIn","DeCrypt")
PluginGet("PlugIn","status")

If (status=0) Then
  Art$=Out$
  Page("Article")
End

در قسمت Art$ مسیر و نام فایلی را که میخواهم Decrypt شود را می دهم. برای راحتی کار مسیر Embed استفاده کرده ام ولی بهتر است که مسیر ها Embed نباشد چون حجم فایل exe شما به شدت افزایش خواهد یافت.

در Out$ به برنامه میگم که قرار هست فایل من در چه مسیری و با چه نامی Decrypt شود.

آقا اجازه؟؟؟ چرا از پوشه Temp سیستم استفاده کردید؟

سوال خوبی بود چون هم مسیر این پوشه طولانی هست و طول میکشه کاربر اون را پیدا کنه و هم این که در پوشه Temp نمی توانید هیچ فایل را Copy و Paste نمایید. یعنی دستورات Copy و Paste شما در این پوشه غیر فعال می باشند در چنین

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

در Key$ کد رمزی را که در هنگام رمزگذاری ایجاد کرده ام می نویسم که در اینجا عبارت Majidonline.com می باشد. دقت کنید که در این قسمت کلید حساس به حروف کوچک و بزرگ می باشد.

دستور param$ را دقیقا به همان صورتی که نوشتم بنویسید.
دستورات Pluginset , PluginRun, PluginGet را هم بنویسید.

بعد بررسی می کنیم که اگر فایل خوب Decrypt شده است ما به صفحه Article منتقل شویم.
در صفحه Article یک پلاگین دوباره اضافه نموده (همان Fyeo) و یک اسکریپت ایجاد می کنم به نام ScriptWipe و کد زیر را در آن می نویسیم:


کد:
PluginSet("PlugIn","Out$")
PluginRun("PlugIn","Wipe")

توسط دستورات فوق می توانیم فایل Decrypt شده را حذف کنیم.

آقا اجازه ؟؟؟ خوب این کد کی اجرا میشه؟

این کد باید در Load صفحه Article یعنی وقتی صفحه باز میشه اجرا بشه.

پس کد زیر را در Load صفحه Article می نویسیم:


کد:
Browser("Browser","Art$")
ScriptTimer("ScriptWipe","1000")

توسط خط اول کد بالا می توانیم فایل HTML ای را که Decrypt شده است به مرورگری که در برنامه از قبل ایجاد کرده ایم بدهیم که آن را برای ما باز کند و توسط خط دوم می توانیم بعد از 1 ثانیه اسکریپت ScriptWipe را اجرا کنیم که منجر به حذف فوری

فایل ما می شود.

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

نکته: پروژه فوق بر اساس پروژه ای بود که من باید برای کارم انجام می دادم و شما می توانید آن را به صورت دیگری هم بنویسید.

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

پیوست ها

  • MyDecryptionExample.zip
    52 کیلوبایت · بازدیدها: 59
آخرین ویرایش:

saadatmsg

Active Member
دوست من واقعا از آموزشتون ممنون . خيلي استفاده بردم فايلي كه فرستادي تست كردم از هر جهت امنيت داشت.

فقط يه سوال ديگه : نميشه كاري كرد كه فايل html ما با ie هم باز نشه . يعني اصلا نشه از خارج از برنامه بازش كرد؟
 

evil_gates

اين نيز بگذرد ...
دوست من واقعا از آموزشتون ممنون . خيلي استفاده بردم فايلي كه فرستادي تست كردم از هر جهت امنيت داشت.

فقط يه سوال ديگه : نميشه كاري كرد كه فايل html ما با ie هم باز نشه . يعني اصلا نشه از خارج از برنامه بازش كرد؟

دوست عزيز
وقتي شما فايلي رو كد ميكنيد ديگه عملا نميتونيد قبل از ديكريپت شدن و خارج از پروژه ازش استفاده كنيد. منظور خاصي از اين سوال داشتيد؟
 

saadatmsg

Active Member
بله راستش من رفتم كد قسمت پاك كردن فايل html رو غير فعال كردم و از داخل پوشه temp خارجش كردم .تونستم با IE بازش كنم اما پرينت اسكرين نشد ، سورس ديده نشد ، كپي نشد و .... كه همه چيز درست كار مي كرد.

ولي چون تونستم با IE بازش كنم بابت همين بود كه اين سوالو پرسيدم.
 

جدیدترین ارسال ها

بالا