PDA

View Full Version : خواندن یک فایل از کامپوتر دیگر درون Lan



pernia
چهارشنبه 19 فروردین 1388, 09:48 صبح
سلام رفقا.
من داخل یه شبکه Lan کوچولو با حدودا 20 تا کامپیوتر هستم...
اینا رو در نظر بگیرید:
A) ادرس سیستم من اینه: 198.168.1.200
B) قصد دارم با یه برنامه برم داخل یه کامپیوتر دیگه به آدرس 192.168.1.105 و تعدادی فایل txt رو بخونم
C) سیستم 192.168.1.117 یه شاخه برام share کرده به ادرس D:\Pernia که فایل های txt مورد نظر من اونجاست...
D) من به راحتی به وسیله دستور open میتونم برم درون اون دایرکتوری که برامshare کردن
ولی به شرطی که قبلا با ویندوز وارد اون مسیر بشم و با ظاهر شدن پنجره زیر

http://www.freeimagehosting.net/uploads/a074614cdf.gif

یوزر پسوورد کاربری 192.168.1.117 رو زده باشم و remember my password رو هم تیک بزنم....


حالا راهش چیه که بدون کمک از این روش اتصال ، من یوزر پسوورد رو از داخل برنامه ای که با VB6 نوشتم وارد کنم و بتونم که محتوای فایل های txt رو بخونم؟

scarce
پنج شنبه 20 فروردین 1388, 18:48 عصر
شما می تونید یک کلینت و سرور درست کنید در واقع دو تا برنامه که یکی در سیستم کاربر و دیگری در سیستم مدیر

Babak.Hassanpour
پنج شنبه 20 فروردین 1388, 20:29 عصر
دوست عزیز یه راه ساده بهتون یاد میدم که احتیاجی به کلاینت - سرور و کدهای پیچیده نداشته باشه
شما به راحتی می تونی از Map Drive تو ویندوز پوشه یه اشتراک گذاشته شده تو شبکه رو مپ کنی و ازون به بعد دقیقا مثل وقتی داشتی با لوکال کار میکردی باهاش کار کنی. به تصویر دقت کن متوجه میشی

http://barnamenevis.org/forum/attachment.php?attachmentid=29822&stc=1&d=1239294477


http://barnamenevis.org/forum/attachment.php?attachmentid=29823&stc=1&d=1239294478

موفق باشی

soheil_programmer
شنبه 22 فروردین 1388, 21:24 عصر
اگه خواستي با استفاده از برنامه نويسي درايو map كني بهم pm بده تا راهشو بهت بگم...

Babak.Hassanpour
شنبه 22 فروردین 1388, 21:37 عصر
اگه خواستي با استفاده از برنامه نويسي درايو map كني بهم pm بده تا راهشو بهت بگم...

البته با عرض پوزش از دوست عزیزم

اینم واسه شما یا اونایی که حال پی ام دادن ندارن و صد البته به خاطر اینکه دوستمون هم مجبور نشن به هرکی پی ام داد فوروارد کنه
این با دوخط کد ساده :



Shell ("net use X: \\Server\Share /user:Administrator password
Shell ("net use \\Server\Share /savecred /persistent:yes")



اینم با API :



Option Explicit
Private Const CONNECT_UPDATE_PROFILE = &H1
Private Const RESOURCE_CONNECTED As Long = &H1&
Private Const RESOURCE_GLOBALNET As Long = &H2&
Private Const RESOURCETYPE_DISK As Long = &H1&
Private Const RESOURCEDISPLAYTYPE_SHARE& = &H3
Private Const RESOURCEUSAGE_CONNECTABLE As Long = &H1&
Private Declare Function WNetAddConnection2 Lib "mpr.dll" _
Alias "WNetAddConnection2A" (lpNetResource As NETCONNECT, _
ByVal lpPassword As String, ByVal lpUserName As String, _
ByVal dwFlags As Long) As Long
Private Type NETCONNECT
dwScope As Long
dwType As Long
dwDisplayType As Long
dwUsage As Long
lpLocalName As String
lpRemoteName As String
lpComment As String
lpProvider As String
End Type


Public Function MapDrive(LocalDrive As String, _
RemoteDrive As String, Optional Username As String, _
Optional Password As String) As Boolean
'Example:
'MapDrive "Q:", "\\RemoteMachine\RemoteDirectory (file://\\RemoteMachine\RemoteDirectory)", _
'"MyLoginName", "MyPassword"
Dim NetR As NETCONNECT
NetR.dwScope = RESOURCE_GLOBALNET
NetR.dwType = RESOURCETYPE_DISK
NetR.dwDisplayType = RESOURCEDISPLAYTYPE_SHARE
NetR.dwUsage = RESOURCEUSAGE_CONNECTABLE
NetR.lpLocalName = Left$(LocalDrive, 1) & ":"
NetR.lpRemoteName = RemoteDrive
MapDrive = (WNetAddConnection2(NetR, Username, Password, _
CONNECT_UPDATE_PROFILE) = 0)

End Function



برید لذت ببرید

pernia
دوشنبه 24 فروردین 1388, 12:19 عصر
اره والا واقعا لذت داشت
تصمیم گرفتم موقع اجرا فقط همین رو صدا بزنم داخل shell
net use 192.168.1.117 /user:administrator 30 persistance:no
map net drive هم عالی بود
اصل مشکل که حل شد
اما اینا مجوز های شبکه هستن درسته! و کاربر رو هم تحت تاثیر قرار میدن...
حالا اگر تصمیم بگیریم که کاربر نتونه بیاد داخل اون دایرکتوری share شده ،و فقط این نرم افزار ما باشه که میتونه بره بخونه، دیگه راهی نیست؟

Babak.Hassanpour
دوشنبه 24 فروردین 1388, 13:08 عصر
این رو بدونید که درایو جدید که با مپ کردن ایجاد شده فقط روی سیستم شما وجود داره روی شبکه کاربران همون پوشه به اشتراک گذاشته شده رو میبینند که اونم با یوزرنیم و پسورد محافظت میشه.
احتمالا منظورتون اینه که کاربر لوکال که به سیستم دسترسی داره (غیر از خودتون )وارد درایو مپ شده نشه .
اگه اینطوره راه های زیادی هست .مثلا مخفی کردن درایو مپ شده از طریق رجیستری.با اینکار دیگه درایو دیده نمیشه ولی برنامه شما میتونه باهاش ارتباط داشته باشه


راه های محافظت از طریق مانیتورینگ پوشه هم هست که به محض ورود کاربر پوشه باز شده رو میبنده.اساس کار پیداکردن کپشن پنجره و بستن اونه.

راه دیگه قفل کردن پوشه در مواقعی که برنامه کاری باهاش نداره و از قفل درآوردن اون هنگام کار باهاشه.

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

کلی راه دیگه هم هست.
شاید دوستان راه های بهتر دیگری هم بدونند.من هم جستجو میکنم ، پیدا کردم می گم

pernia
دوشنبه 24 فروردین 1388, 14:36 عصر
در اوردن CAPTION ها رو بلدم ولی به نظر من این یه جور بدجنسیه (شرمنده اگه بی ادبیه) چون ممکنه با همون نام کاربر بیچاره یه دایرکتوری داشته باشه و بره داخلش و بعد اسیر ما بشه...
اما افرین پس مشخصه که اگه
net use 192.168.1.117 /user:administrator 30 persistance:no
رو اجرا کنیم بالاخره کاربر زرنگ باشه میره داخلش درسته؟
و در واقع مجوز بهش دادیم که وارد بشه حالا اینکه میخوایم جلوشو بگیریم فکر کنم کد های مخرب زیادی باید براش تولید بشه؟
البته تا نظر دوستان چی باشه..

Babak.Hassanpour
دوشنبه 24 فروردین 1388, 14:53 عصر
اگه شما درایوی به نام Z رو با عملیات مپ کردن ایجاد کنی (با این فرض که از قبل درایوی به این نام نبوده ) فکر میکنی چقدر احتمال داره که یه درایو Z دیگه بعدا توسط کاربر روی سیستم ایجاد بشه ؟
در ضمن اگه شما این درایو رو به محض ایجاد مخفی کنید فکر می کنید چند درصد احتمال داره کاربر عادی متوجه وجود همچین درایوی بشه؟خیلی کم

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

pernia
سه شنبه 25 فروردین 1388, 13:53 عصر
درود.
حق با تو بابک جون.
متینه فرمایشات شما.
توی این شبکه ، کاربران همگی با هم رابطه دارن و به هم دیگه یوزر لیمیت میدن... خوب
حالا ما میخوایم توی کامپیوتر اونا موقعی که خودشون قصد دارن وارد سیستم همدیگه بشن همون یوزرنیم رو دوباره ازشون بخواد . اما موقعی که نرم افزار من کار میکنه و یوزرنیم رو در net use قرارداده دیگه اونا هم نیازی نیست یوزرنیم رو دوباره وارد کنن و راحت وارد میشن چون نرم افزار من از ویندوز خواسته بازش کنه دیگه درسته!
قصد داشتم اینا نفهمن که ما یوزرنیم رو داریم و استفاده میكنیم. میخواستم فقط نرم افزار من راحت وارد بشه اما اونا گیر کنن و نیاز به ورود مجدد یوزرنیم و پسورد باشه ... که با این دستور (که کارم رو انصافا راه انداخت) ظاهرا نمیشه تا این حد توقع داشت ...
مرسی

Babak.Hassanpour
سه شنبه 25 فروردین 1388, 14:31 عصر
سلام دوست عزیز
دو تا سوال دارم:
1: برنامه شما قراره روی یک سیستم نصب بشه یا چند سیستم؟
2:به کامپیوتری که پوشه ی شیر شده داره، دسترسی فیزیکی (برای ساختن یک اکانت جدید) دارید؟

pernia
چهارشنبه 26 فروردین 1388, 07:09 صبح
پاسخ:
1) چند سیستم
2)اره

:متفکر:

Babak.Hassanpour
چهارشنبه 26 فروردین 1388, 09:14 صبح
خوب دو سوال دیگه هم دارم.اینکه روی هر یک از سیستم ها چند کاربر دارید(یعنی چند کاربر از یک سیستم مشترک استفاده می کنند )؟
دوم اینکه برای کاربران ، یوزرنیم و پسورد برای لاگین به کامپیوتر ایجاد شده ؟و آیا همه دسترسی در سطح ادمین هم دارند؟

pernia
پنج شنبه 27 فروردین 1388, 07:14 صبح
جواب
1) یک نفر
2) هر کس در سیستم خودش فقط یه یوزر limit داره
:متفکر:
بابک به خاطر توجهات متشکرم..

soheil_programmer
چهارشنبه 02 اردیبهشت 1388, 08:53 صبح
متاسفانه کدهای شما اصلا کار نکرد نه اون حالت Prompt نه API! تابع مورد نظر مقدار False را مدام بر میگرداند!


البته با عرض پوزش از دوست عزیزم

اینم واسه شما یا اونایی که حال پی ام دادن ندارن و صد البته به خاطر اینکه دوستمون هم مجبور نشن به هرکی پی ام داد فوروارد کنه
این با دوخط کد ساده :



Shell ("net use X: \\Server\Share /user:Administrator password
Shell ("net use \\Server\Share /savecred /persistent:yes")



اینم با API :



Option Explicit
Private Const CONNECT_UPDATE_PROFILE = &H1
Private Const RESOURCE_CONNECTED As Long = &H1&
Private Const RESOURCE_GLOBALNET As Long = &H2&
Private Const RESOURCETYPE_DISK As Long = &H1&
Private Const RESOURCEDISPLAYTYPE_SHARE& = &H3
Private Const RESOURCEUSAGE_CONNECTABLE As Long = &H1&
Private Declare Function WNetAddConnection2 Lib "mpr.dll" _
Alias "WNetAddConnection2A" (lpNetResource As NETCONNECT, _
ByVal lpPassword As String, ByVal lpUserName As String, _
ByVal dwFlags As Long) As Long
Private Type NETCONNECT
dwScope As Long
dwType As Long
dwDisplayType As Long
dwUsage As Long
lpLocalName As String
lpRemoteName As String
lpComment As String
lpProvider As String
End Type


Public Function MapDrive(LocalDrive As String, _
RemoteDrive As String, Optional Username As String, _
Optional Password As String) As Boolean
'Example:
'MapDrive "Q:", "\\RemoteMachine\RemoteDirectory (file://\\RemoteMachine\RemoteDirectory)", _
'"MyLoginName", "MyPassword"
Dim NetR As NETCONNECT
NetR.dwScope = RESOURCE_GLOBALNET
NetR.dwType = RESOURCETYPE_DISK
NetR.dwDisplayType = RESOURCEDISPLAYTYPE_SHARE
NetR.dwUsage = RESOURCEUSAGE_CONNECTABLE
NetR.lpLocalName = Left$(LocalDrive, 1) & ":"
NetR.lpRemoteName = RemoteDrive
MapDrive = (WNetAddConnection2(NetR, Username, Password, _
CONNECT_UPDATE_PROFILE) = 0)

End Function



برید لذت ببرید

Babak.Hassanpour
یک شنبه 02 خرداد 1389, 13:37 عصر
احتمالا یک جای کار اشتباه کرده اید.چون من این کد ها را تست کرده ام.

tdodangeh
چهارشنبه 12 خرداد 1389, 09:40 صبح
پس از مپ کردن چطوری می شه اون درایو رو غیر قابل مشاهده کرد؟

Babak.Hassanpour
چهارشنبه 12 خرداد 1389, 14:21 عصر
پس از مپ کردن چطوری می شه اون درایو رو غیر قابل مشاهده کرد؟

از طریق رجیستری

tdodangeh
پنج شنبه 13 خرداد 1389, 08:17 صبح
Start - run - regedit - hkey-current-user - network

من با راهنمایی شما تا اینجا رفتم ، اگر ممکن توضیح بدید چیکار کنم؟ ممنون میشم

Babak.Hassanpour
پنج شنبه 13 خرداد 1389, 14:21 عصر
این مسیرشه:


Software\Microsoft\Windows\CurrentVersion\Policies \Explorer


این کلیدیه که باید ساخته بشه:


NoDrives


از اینجا به بعد برای مخفی کردن هر درایو باید یه عدد رو وارد کنی
مثلا اگه بخواهی درایو A مخفی بشه باید بنویسی 1
برای درایو های دیگه هم به ترتیب :
2
4
8
16
32
64
128
و...

اینم یه نمونه سورس کد که ضمیمه کردم
موفق باشید

hoseinbiglari
سه شنبه 19 فروردین 1393, 09:02 صبح
سلام : دوست عزیز این دستور را چطوری باهاش قطع ارتباط کنم؟
Shell ("net use X: \\Server\Share /user:Administrator password