ساخت ابزار تشخیص دهنده ی شرکت سازنده ی دستگاه از روی مَک آدرس آن با پایتون :: Mr Python | مستر پایتون

ساخت ابزار تشخیص دهنده ی شرکت سازنده ی دستگاه از روی مَک آدرس آن با پایتون

  • ۵۶۱

ساخت ابزار تشخیص دهنده ی شرکت سازنده ی دستگاه از روی مَک آدرس آن در پایتون

درود به همه !

 

همینطور که احتمالا میدونید هر دستگاهی یک مک آدرس یکتا (uniq) داره که توسط اون مک آدرس توی شبکه شناخته میشه . مک آدرس از شش قسمت تشکیل شده که این قسمت ها با علامت (:) از هم جدا میشن . هر قسمت یه عدد در مبنای ۱۶ هستش . امروز میخوایم از طریق مک آدرس یک دستگاه ، شرکت سازنده اونو تشخیص بدیم . باید بدونید که سه قسمت اول هر مک آدرس مشخص میکنه مال چه شرکتی هستش . ۳ قسمت اول مک آدرس هر دستگاه میتونه مشخص کننده ی شرکت سازندش باشه چون هر شرکت سازنده سخت افزار های شبکه ، معمولا ۳ قسمت اول تمام مک آدرس هاش یکسانه . با استفاده از همین موضوع ما اسکریپتی مینویسیم که تشخیص بده هر مک آدرس از چه شرکتیه . یه هکر ، خوب میتونه بفهمه این به چه دردی میخوره . برای مثال وقتی شما بتونید شرکت سازنده ی روتری که قرار است به آن نفوذ کنید رو بفهمید ، میتونید داخل سایت هایی مثل exploit-db دنبال آسیب پذیری های دیوایس های اون شرکت بگردید .

یک مک آدرس به فرم زیر هستش :

XX:XX:XX:XX:XX:XX

همینطور که میبینید از ۶ قسمت تشکیل شده که هر قسمت دو کاراکتره .(هر قسمت یه عدد در مبنای ۱۶)

 

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

برای مثال یه لیستی مثل لیست زیر :

FCD733    TP-LINK TECHNOLOGIES CO.,LTD.
FCD817    Beijing Hesun Technologies Co.Ltd.
FCD848    Apple, Inc.
FCDB96    ENERVALLEY CO., LTD
FCDBB3    Murata Manufacturing Co., Ltd.
FCDC4A    G-Wearables Corp.
FCDD55    Shenzhen WeWins wireless Co.,Ltd
FCE186    A3M Co., LTD
FCE192    Sichuan Jinwangtong Electronic Science&Technology Co,.Ltd
FCE1D9    Stable Imaging Solutions LLC
FCE1FB    Array Networks
FCE23F    CLAY PAKY SPA
FCE33C    HUAWEI TECHNOLOGIES CO.,LTD
FCE557    Nokia Corporation
FCE892    Hangzhou Lancable Technology Co.,Ltd
FCE998    Apple, Inc.
FCECDA    Ubiquiti Networks Inc.
FCEDB9    Arrayent
FCF136    Samsung Electronics Co.,Ltd

همینطور که میبینید ابتدا ۳ قسمت اول هر مک آدرس ( بدون علامت (:) ) نوشته شده و سپس شرکت سازنده ی اون مک آدرس ذکر شده . برای مثال مورد آخر لیست رو ببینید . هر مک آدرسی که با FCF136 شروع بشه از سامسونگه .

بین مک آدرس و شرکت سازنده به اندازه ی یک tab فاصله وجود داره . (بعدا در اسکریپت از همین tab برای تفکیکشون استفاده میکنیم)

 

خب من یه فایلی از  اینترنت پیدا کردم که یه لیست بلندی از مک آدرس های شرکت ها رو داخل خودش داره (حدودا  مک آدرس های ۲۳۰۰۰ تا کمپانی رو مشخص کرده) . داخل اسکریپت امروز من از همین لیست استفاده میکنم . لیست رو میتونید از لینک زیر دانلود کنید :

دانلود فایل
حجم: 663 کیلوبایت

 

سورس اسکریپت :

macaddress = input("Mac Address : ").upper()

macaddress = macaddress.replace(":","") # Delete All (:) in Mac address

if len(macaddress) > 6:
    macaddress = macaddress[0:6]

macfile = open("macs.txt") # open macfile

print(".........................")

num = 0 # Sequence

for mac in macfile:
    mac = mac.strip("\n") # Delete (\n) at end of line
    device = mac.split("\t")[1]  # device company
    mac = mac.split("\t")[0] # device mac address
    
    if macaddress in mac:
        num += 1
        print("{}  -  {}".format(num,device))

توضیح سورس کد : در ابتدا ما مک آدرس رو از کاربر پرسیدیم . سپس در همون خط با استفاده از متود upper اونو به حروف بزرگ تبدیل کردیم (به خاطر اینکه تمام مک آدرس های داخل لیستمون با حروف بزرگ نوشته شدن) . سپس اومدیم با استفاده از replace علامت های (:) رو از مک آدرس حذف کردیم  . بعد چک کردیم اگه تعداد حروف مک آدرس بزرگتر از ۶ بود ، فقط ۶ تای اولشو برداره چون داخل لیستمون فقط ۳ قسمت اول (۶ کاراکتر اول) هر مک آدرس نوشته شده .

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

در خط بعد یه حلقه  for روی فایل مک آدرس ها که باز کردیم اجرا کردیم تا به تک تک خط هاش دسترسی داشته باشیم . در خط اول حلقه اومدیم n\ آخر هر خط رو حذف کردیم . سپس در دو خط بعد با استفاده از متود split اومدیم نام شرکت سازنده و ۳ قسمت مک آدرس رو توی هر خط تفکیک کردیم و ریختیم داخل دو متغییر device  و mac .

حالا یه شرط گذاشتیم که اگر مک آدرسی که کاربر وارد کرده داخل mac (۳ قسمت اول مک آدرس شرکت) بود یعنی پس منطبقه بیا اولا یکی به num اضافه کن چون یک مورد منطبق پیدا شده ، و سپس برای کاربر چاپ کن که مک آدرسی که وارد کرده احتمالا  از فلان شرکت سازندس . اگه کاربر ۳ قسمت اول مک آدرس یا بیشتر رو وارد کنه قطعا فقط یک مورد منطبق توی لیست هست ولی اگه مثلا دو قسمت اول مک آدرس رو وارد کنه ممکنه چندین مورد منطبق پیدا کنه .

 

خب من اسکریپت رو اجرا میکنم و  ۳ قسمت اول یه مک آدرس مربوط به مودم D-link رو میدم و در تصویر زیر میبینیم که چی میشه :

همینطور که میبینید تشخیص درستی داد .

حالا این دفعه فقط دو قسمت اولشو میدم :

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

 

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

 

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

 

یا حق !

Telegram Channel : @mrpythonblog

نظرات: (۰) هیچ نظری هنوز ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی