日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux小知识--通过MAC地址查询厂家OUI(成功率很高)

發布時間:2023/12/10 linux 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux小知识--通过MAC地址查询厂家OUI(成功率很高) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MAC地址

英文全稱:Medium Access Control,直譯為介質訪問控制,它通常被固化在每個以太網網卡(NIC,Network Interface Card)。MAC地址也叫做硬件地址,它采用48位(6字節)的十六進制格式。一個特點,全球唯一。

OUI

英文全稱:Organizationally unique identifier (OUI) ,翻譯過來是“組織唯一標識符”,由簽發給各類組織的唯一標識符。其實通常就是各類大小公司。

二者關系

MAC地址通常為6個字節,48位,那么組成如下

前三個字節,就是OUI,后3個字節,則歸這個OUI自己分配。

不過目前,在IEEE的網站上出現了另一種分法,將OUI分成了大中小三類,

大類MA-L:和前面說的長度一樣,3個字節,24位,CSV中的格式如下

中類MA-M:長度變為了,3.5個字節,(好奇怪的說法),還是叫28位吧,例如

小類MA-S:長度變為了,4.5個字節,36位,例如:

所以,我們通過MAC地址判斷廠家,最全的方式,就是分類判斷。
首先:將所有的規則,整合到一個CSV文件中。例如



然后,通過遍歷每行的方式,讀取該文件,根據標記OUI的長度,與MAC地址的前24位,或者28位,或者36位做比較,才能獲得最準確的OUI。

下面是查詢函數

#define oui_txt "/etc/full_oui.txt" /* mac:輸入mac地址,xx:xx:xx:xx:xx:xx格式 oui:輸出廠商 返回值 -1:出錯 0:未查找到 1:查找到,在oui中返回 */ int hz_get_oui(char* mac,char*oui) {FILE *fp = NULL;char values[1024]={0};bool is_exist=false;char mac_header[9]={0};if((fp = fopen(oui_txt,"r")) == NULL) {printf("!!!open[%s] is error!\n",hz_addoui_txt);return -1;}fseek(fp,0,SEEK_SET);mac_header[0]=toupper(mac[0]);mac_header[1]=toupper(mac[1]);mac_header[2]=toupper(mac[3]);mac_header[3]=toupper(mac[4]);mac_header[4]=toupper(mac[6]);mac_header[5]=toupper(mac[7]);mac_header[6]=toupper(mac[9]);mac_header[7]=toupper(mac[10]);mac_header[8]=toupper(mac[12]);while(!feof(fp)){//本機信息memset(values,0,1024);fgets(values,1024,fp);if(strlen(values)<2){printf("parse worklog:line too short\n");}else{if(values[6]==','){if(memcmp(mac_header,values,6)==0){strcpy(oui,values+7);is_exist=true;break;}}else if(values[7]==','){if(memcmp(mac_header,values,7)==0){strcpy(oui,values+8);is_exist=true;break;}}else if(values[9]==','){if(memcmp(mac_header,values,9)==0){strcpy(oui,values+10);is_exist=true;break;}}}}if(fp)fclose(fp);if(is_exist)return 1;elsereturn 0; }

配合代碼的完整的OUI文件
在此下載

補充

奇怪的MAC地址

我們偶爾會看到一些IP地址,并無法查找到對應的OUI。

例如

這里就涉及到了前面MAC地址中OUI部分的兩位
I/G(Individual/Group)位
如果I/G=0,則是某臺設備的MAC地址,即單播地址;
如果I/G=1,則是多播地址(組播+廣播=多播)。

G/L(Global/Local,也稱為U/L位,其中U表示Universal)位
如果G/L=0,則是全局管理地址,由IEEE分配;
如果G/L=1,則是本地管理地址,是網絡管理員為了加強自己對網絡管理而指定的地址。

這里就可以看出,有些MAC地址不是給某個設備用的,而是多播地址;
也有一些MAC地址,是本地MAC地址,只在某個局域網內使用,不會影響其他人的地址。就像局域網IP一樣。

那么就fe:fc:fe:f6:a5:bc而言,前三個字節為
FE FC FE,轉化為二進制
1111 1110 -1111 1100-1111 1110
其中IG為0,表示是某個設備地址,GL為1,表示為本地MAC地址。
那么綜上,這類MAC就可能是經過掩蓋之后的假的MAC地址了。

我們常說有2的48次方個MAC地址可供網絡設備使用,這些地址可以多到給地球上每一粒沙子分配一個地址,其實這個數量要打折扣的,因為MAC地址雖然有這么多,但真正用在網卡上并且全球唯一的只有2的46次方個:第48bit一定是0,第47bit一定是0。

掩蓋MAC地址

那么接著上一步的思想,如何讓自己的電腦MAC地址變為這種酷酷的本地MAC地址,其實很簡單,可以在網卡的配置上,打開,隨機硬件地址

那么MAC地址就會變成隨機的本地MAC地址。防止別人跟蹤你哦。

插播廣告

簡單介紹一下,最近鬧得沸沸揚揚的Log4j2漏洞,大概就是一個apache里面,大家基本都用的模塊Log4j2,用來產生并記錄一些日志。
只不過這幾天發現,這個模塊有一個漏洞,如果要記錄的內容,是含有特定格式的字符串,那么就會有一個替換過程,如果是某些遠程請求,則會替換為請求結果,那這里如果遠程請求返回一些帶有攻擊的代碼,那么服務器就有可能中招。

個人覺得這應該是一個隱藏的后門程序,其次就是也反映出了當前大家與開源程序的關系:
大家(至少大部分人吧)并不會去深入研究自己用的每個開源軟件,畢竟所有人都在用,也沒出什么問題,那這就是好東西,還有人偶爾維護更新一下,那更是人見人愛。
想起了當年那句話:造不如買,買不如租。

最后

今天是個國人應該警醒的日子。話不能多說,都在心里記著。
俗話說:君子報仇,十年不晚,這一晃都大幾十年了,該提上日程了。

總結

以上是生活随笔為你收集整理的Linux小知识--通过MAC地址查询厂家OUI(成功率很高)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。