در این تاپیک میخواهیم بررسی کنیم که چگونه از طریق سی شارپ می توانیم به کانفیگ یک روتر دسترسی داشته باشیم و اطلاعات آنرا پردازش نمائیم...بطورکلی در تاپیک فوق برنامه نویسی برای روتر مورد بررسی قرار میگیرد.
در این تاپیک میخواهیم بررسی کنیم که چگونه از طریق سی شارپ می توانیم به کانفیگ یک روتر دسترسی داشته باشیم و اطلاعات آنرا پردازش نمائیم...بطورکلی در تاپیک فوق برنامه نویسی برای روتر مورد بررسی قرار میگیرد.
من این کار رو کردم ، ولی با VB.NET ، یک برنامه برای یک ISP نوشتم که Accounting مشترکین Wireless را انجام می داد ، سر یک تاریخ مشخص پورت مربوط به مشترک را ShutDown می کرد. همچنین چون سوییچ L3 بود ، این امکان را به کاربران داده بودم که پهنای باند را روی پورت تعیین کنند. فرامینی از قبیل Port Security هم برای کاربران قرار داده بودم.
بعد از آن یک برنامه نوشتم که به مودم ADSL وصل می شد و شروع می کرد به Config کردن آن ، این کار را در کمتر از 4 ثانیه انجام می داد و مودم را Reload می کرد. البته یک اینترفیس نوشتم برای کاربران که username و password مربوط به سرویس ADSL را از آنها می گرفت.
من بیشتر دنیال کلاسی در داتنت می گردم که بتنونم کانفیگ یک روتر رو بخونم و پردازش کنم.....و حتی نتیجه یک دستور هم برام برگردونه ...مثلا اینکه کدام اینترفیس روتر الان آپه و .....
سلام بر دوستان عزيز
آقا من بخدا مخلص شما هستم! تو را به خدا اين تاپيك را كامل كنيد و ما را از علوم خويش بهره مند سازيد
من مدتهاست كه دنبال مقاله و سورس براي كار با روترها توي سي شارپ هستم! امادريغ از يك خط مطلب مفيد
من حاضرم عروسي همه تان بيام برقصم ولي تو را بخدا اين تاپيك را كامل كنيد و ما را از علوم خفيه خويش اگاه سازيد
دوستان من هم خیلی دوست دارم در این زمینه اطلاعاتی داشته باشم و بتوانم کد بنویسم.
پس از دوستانی که در این زمینه اطلاعاتی دارند لطف کنند کمک کنند.
با تشکر پیشاپیش...
آقای قاسمی میگم شما مثل اینکه خیلی عروسی و رقص رو دوست دارین نه؟؟؟؟؟؟؟؟؟؟؟!!!!!!!!من حاضرم عروسي همه تان بيام برقصم
از طریق پرتکل SNMP میشه...دوستان در این زمینه باید به Namespace :system.net.socket نگاهی بیاندازید.....من هم تحقیقاتم را شروع کردم ...به نتیجه رسیدم اطلاع رسانی میکنم......
از طریق SNMP شما خیلی نمی توانی روی دستگاه فرمان اجرا کنی ، SNMP بیشتر برای برنامه های گزارش گیری یا اینکه Live Report ها مثل ترافیک هر Interface بکار می ره . البته در Cisco شما می توانی برای SNMP هم read - write داشته باشی ، ولی SNMP روی سیسکو ، برای همه فرمانها پشتیبانی نمی شه.
شما از طریق Socket می تونی به Device با استفاده از Telnet وصل شی ، و فرمانها را مستقیم به Device ارسال کنی و نتیجه آنها رو هم بگیری.
با سلام .
من می خوام یک برنامه بنویسم که user و password مودم wifi را به دست بیاره.
چه کار باید بکنم؟
لطفا راهنمایی کنید
من هم با توجه به جستجوئی که در اینترنت داشتم .....به نتیجه شما رسیدم....فکر کنم در حال حاضر بهترین راهه....
سلام وعرض ادب
مهندس امکانش هست توابعی که برای کار با روتر رو استفاده میکنید رو برام ارسال کنید
میخوام به روتر با نام کاربری و رمز عبور وصل بشم و یه سری کانفیگ از سوییچ بخونم و یه سری کانفیگ بزنم روی روتر.
برای دسترسی به کانفیگ یک روتر و پردازش اطلاعات آن در سی شارپ، شما می توانید از کتابخانههایی مانند SNMPSharpNet و SharpSnmpLib استفاده کنید.
البته باید توجه داشت که این مثال فقط یک نمونه ساده است و برای دسترسی به کانفیگ کامل یک روتر، باید از OID های مختلفی استفاده کرد که هر کدام اطلاعات مختلفی را در اختیار قرار می دهند . اگر نیاز هست بیشتر توضیح بدم
using Lextm.SharpSnmpLib;
using Lextm.SharpSnmpLib.Messaging;
// Define connection information
var agentAddress = new IpAddress("192.168.1.1");
var agentPort = 161;
var community = new OctetString("public");
// Create SNMP request
var pdu = new Pdu(
PduType.Get,
new Variable(
new ObjectIdentifier("1.3.6.1.2.1.2.2.1.8.1"))); // OID for interface status
// Send SNMP request and get response
var response = Messenger.Get(
VersionCode.V2,
agentAddress,
new OctetString("public"),
pdu,
5000);
// Process response
if (response != null && response.ErrorStatus == 0)
{
foreach (var v in response.VariableBindings)
{
Console.WriteLine("{0} ({1}): {2}",
v.Oid.ToString(),
SnmpConstants.GetTypeName(v.Value.Type),
v.Value.ToString());
}
}
else
{
Console.WriteLine("Error in SNMP response. Error status: {0}", response.ErrorStatus);
}
آخرین ویرایش به وسیله پرستو پارسایی : سه شنبه 12 اردیبهشت 1402 در 20:15 عصر
برای بدست آوردن Username و Password یک روتر : به طور معمول، اطلاعات یوزرنیم و پسورد روتر در کانفیگ ذخیره می شوند و برای دسترسی به آنها باید از OID های مربوط به مدیریت کانفیگ ،استفاده کنید
برای مثال OID های مربوط به یوزرنیم و پسورد در قالب زیر هستند
- یوزرنیم: 1.3.6.1.4.1.9.9.96.1.1.1.1.7
- پسورد: 1.3.6.1.4.1.9.9.96.1.1.1.1.11
برای مثال :
using Lextm.SharpSnmpLib;
using Lextm.SharpSnmpLib.Messaging;
// Define connection information
var agentAddress = new IpAddress("192.168.1.1");
var agentPort = 161;
var community = new OctetString("public");
// Create SNMP request for username
var usernamePdu = new Pdu(
PduType.Get,
new Variable(
new ObjectIdentifier("1.3.6.1.4.1.9.9.96.1.1.1.1.7"))) ; // OID for username
// Send SNMP request and get response
var usernameResponse = Messenger.Get(
VersionCode.V2,
agentAddress,
community,
usernamePdu,
5000);
// Process username response
if (usernameResponse != null && usernameResponse.ErrorStatus == 0)
{
var username = usernameResponse.VariableBindings[0].Value.ToString();
Console.WriteLine("Username: {0}", username);
}
else
{
Console.WriteLine("Error in SNMP response. Error status: {0}", usernameResponse.ErrorStatus);
}
// Create SNMP request for password
var passwordPdu = new Pdu(
PduType.Get,
new Variable(
new ObjectIdentifier("1.3.6.1.4.1.9.9.96.1.1.1.1.11")) ); // OID for password
// Send SNMP request and get response
var passwordResponse = Messenger.Get(
VersionCode.V2,
agentAddress,
community,
passwordPdu,
5000);
// Process password response
if (passwordResponse != null && passwordResponse.ErrorStatus == 0)
{
var password = passwordResponse.VariableBindings[0].Value.ToString();
Console.WriteLine("Password: {0}", password);
}
else
{
Console.WriteLine("Error in SNMP response. Error status: {0}", passwordResponse.ErrorStatus);
}
در این مثال، ابتدا درخواست Get برای دریافت یوزرنیم و پسورد ارسال میشود و پس از دریافت پاسخ، اطلاعات مربوطه از متغیرهای VariableBindings خوانده می شوند و در نهایت در کنسول نمایش داده میشود
اگر هم میخواهید نتیجه را در مسیج باکس دریافت کنید بجای کنسول از کد زیر استفاده کنید
using Lextm.SharpSnmpLib;
using Lextm.SharpSnmpLib.Messaging;
using System.Windows.Forms;
var agentAddress = new IpAddress("192.168.1.1");
var agentPort = 161;
var community = new OctetString("public");
var usernamePdu = new Pdu(
PduType.Get,
new Variable(
new ObjectIdentifier("1.3.6.1.4.1.9.9.96.1.1.1.1.7"))) ;
var usernameResponse = Messenger.Get(
VersionCode.V2,
agentAddress,
community,
usernamePdu,
5000);
if (usernameResponse != null && usernameResponse.ErrorStatus == 0)
{
var username = usernameResponse.VariableBindings[0].Value.ToString();
MessageBox.Show("Username: " + username);
}
else
{
MessageBox.Show("Error in SNMP response. Error status: " + usernameResponse.ErrorStatus);
}
var passwordPdu = new Pdu(
PduType.Get,
new Variable(
new ObjectIdentifier("1.3.6.1.4.1.9.9.96.1.1.1.1.11")) );
var passwordResponse = Messenger.Get(
VersionCode.V2,
agentAddress,
community,
passwordPdu,
5000);
if (passwordResponse != null && passwordResponse.ErrorStatus == 0)
{
var password = passwordResponse.VariableBindings[0].Value.ToString();
MessageBox.Show("Password: " + password);
}
else
{
MessageBox.Show("Error in SNMP response. Error status: " + passwordResponse.ErrorStatus);
}
آخرین ویرایش به وسیله پرستو پارسایی : سه شنبه 12 اردیبهشت 1402 در 21:25 عصر
کد فوق دریافت اطلاعات از روتر هست یعنی Read اگر ایجاد تغییرات نیاز هست یعنی Write بفرمائید تا درج کنم
ممنون از لطفتون کدهای معادل VB.net این سورس کد رو دارید؟
برای اعمال PortSecurity بر روی سوئیچ ، شما میتوانید از دستورات CLI آن استفاده کنید . این دستورات به شما این امکان را میدهند تا محدودیت هایی بر روی پورت های سوئیچ تعیین کنید تا فقط دستگاه های مجاز به آنها دسترسی داشته باشد.
1- ابتدا به سوئیچ خود متصل شوید و با استفاده از دستورات CLI به حالت کانفیگ شدن بروید
2- با استفاده از دستورات "interface[interface-name] به پورت مورد نظر متصل شوید . برای مثال ، اگر میخواهید PortSecurity را بر روی پورت 1/1 اعمال کنید ، دستور زیر را وارد کنید
Switch(config)#interface GigabitEthernet1/1
3- سپس با استفاده از دستورات "switchport port-security " امکان portSecurity را برای پورت فراهم کنید . این دستور به شما این امکان را می دهد تا محدودیت هایی را برا دستگاه هایی که به پورت متصل شده اند ، تعیین کنید . بطور مثال شما میتوانید تعداد دستگاه هایی که به پورت متصل مشوند را محدود کنید . یا مشخص کنید فقط دستگاه هایی با MAC خاصی به پورت متصل شوند.
Switch(config-if)#switchport port-security
4 - برای تعیین یک آدرس MAC خاص از کد زیر استفاده کنید
Switch(config-if)#switchport port-security mac-address 0011.2233.4455
5- در صورتی که بخواهید تعداد دستگاه هایی که به پورت متصل می شوند را محدود کنید از کد زیر استفاده نمائید در کد زیر فقط دو دستگاه متصل میشود
Switch(config-if)#switchport port-security maximum 2
6 - در صورتی که اگر دستگاه نا معتبر متصل شد ، بخواهید بلافاصله پورت را مسدود کنید از کد زیر استفاده کنید
Switch(config-if)#switchport port-security violation shutdown
در نهایت با دستور Exit از حالت کانفیگ خارج شوید و تغییرات را ذخیره نمائید
Switch(config-if)#exit
Switch(config)#exit
Switch#write memory
آخرین ویرایش به وسیله پرستو پارسایی : چهارشنبه 13 اردیبهشت 1402 در 18:31 عصر
ممنون از لطفتون ولی من با دستورات سیسکو کاملا آشنا هستم و بلدم کار کنم
بنده کدهای این دستورات در VB.net رو میخواستم(یه جورایی خودم میخوام یه برنامه بنویسم مثل Putty یا SecureCRT
سوال رو تو بخش خودش مطرح کنید تا پاسخ مناسب دریافت کنید سوال شما را در بخش وی بی دات نت پاسخ دادم
آخرین ویرایش به وسیله پرستو پارسایی : شنبه 16 اردیبهشت 1402 در 22:10 عصر