Բոլորը գիտեն, որ այս վեց բայթերը, որոնք սովորաբար ցուցադրվում են տասնվեցական ձևաչափով, վերագրվում են ցանցային քարտին գործարանում և պատահական թվացող են: Ոմանք գիտեն, որ հասցեի առաջին երեք բայթը արտադրողի ID-ն է, իսկ մնացած երեք բայթը հատկացված է նրանց: Հայտնի է նաև, որ դուք կարող եք ինքներդ ձեզ սահմանել կամայական հասցեն։ Շատերը լսել են Wi-Fi-ում «պատահական հասցեների» մասին:
Եկեք պարզենք, թե ինչ է դա:
MAC հասցեն (մեդիա մուտքի վերահսկման հասցեն) եզակի նույնացուցիչ է, որը նշանակված է ցանցային ադապտերին, որն օգտագործվում է IEEE 802 ստանդարտների ցանցերում, հիմնականում՝ Ethernet, Wi-Fi և Bluetooth: Պաշտոնապես այն կոչվում է «EUI-48 տեսակի նույնացուցիչ»: Անվանից ակնհայտ է, որ հասցեն 48 բիթ է, այսինքն. 6 բայթ. Հասցե գրելու համար ընդհանուր ընդունված ստանդարտ չկա (ի տարբերություն IPv4 հասցեի, որտեղ ութնյակները միշտ բաժանվում են կետերով): Սովորաբար այն գրվում է որպես վեց տասնվեցական թվեր, որոնք բաժանված են երկու կետով՝ 00:AB:CD:EF:11: 22, չնայած որոշ սարքավորումներ արտադրողներ նախընտրում են 00 -AB-CD-EF-11-22 և նույնիսկ 00ab.cdef.1122 նշումը:
Պատմականորեն հասցեները տեղադրվում էին ցանցային քարտի չիպսեթի ROM-ում՝ առանց դրանք փոփոխելու առանց ֆլեշ ծրագրավորողի, սակայն մեր օրերում հասցեն կարող է ծրագրային կերպով փոխվել օպերացիոն համակարգից: Դուք կարող եք ձեռքով սահմանել ցանցային քարտի MAC հասցեն Linux-ում և MacOS-ում (միշտ), Windows-ում (գրեթե միշտ, եթե վարորդը թույլ է տալիս), Android-ում (միայն արմատավորված); iOS-ով (առանց root) նման հնարք անհնար է։
Հասցեի կառուցվածքը
Հասցեն բաղկացած է արտադրողի նույնացուցիչի մի մասից՝ OUI-ից և արտադրողի կողմից նշանակված նույնացուցիչից: OUI (կազմակերպապես եզակի նույնացուցիչ) նույնացուցիչների նշանակում
Ո՞ւմ են պատկանում հասցեները:
Հեշտ մշակում հանրությանը հասանելի
Վաճառող
Բլոկների/գրառումների քանակը
Հասցեների թիվը, միլիոն
Cisco Systems Inc
888
14208
Apple
772
12352
Samsung
636
10144
Huawei Technologies Co.Ltd
606
9696
Intel կորպորացիան
375
5776
ARRIS Group Inc.
319
5104
Nokia կորպորացիան
241
3856
Անձնական
232
2704
TEXAS INSTRUMENTS
212
3392
zte կորպորացիա
198
3168
IEEE գրանցման մարմին
194
3072
Hewlett Packard
149
2384
Hon Hai Precision
136
2176
TP LINK
134
2144
Dell Inc.
123
1968
Juniper Networks- ը
110
1760
Sagemcom Լայնաշերտ SAS
97
1552
Fiberhome Telecommunication Technologies Co. ՍՊԸ
97
1552
Xiaomi Communications Co Ltd
88
1408
Guangdong Oppo Mobile Telecommunications Corp.Ltd
82
1312
Google-ն ունի դրանցից ընդամենը 40-ը, և դա զարմանալի չէ. նրանք իրենք շատ ցանցային սարքեր չեն արտադրում:
MA բլոկները անվճար չեն տրամադրվում, դրանք կարելի է ձեռք բերել ողջամիտ գնով (առանց բաժանորդային վճարի) համապատասխանաբար $3000, $1800 կամ $755։ Հետաքրքիր է, որ հավելյալ գումարի համար (տարեկան) կարելի է ձեռք բերել հատկացված բլոկի մասին հանրային տեղեկատվության «թաքցնելը»: Այժմ դրանք 232-ն են, ինչպես երևում է վերևում:
Ե՞րբ ենք մեզ սպառելու MAC հասցեները:
Մենք բոլորս բավականին հոգնել ենք այն պատմություններից, որոնք շարունակվում են արդեն 10 տարի, որ «IPv4 հասցեները սպառվում են»: Այո, նոր IPv4 բլոկներ այլևս հեշտ չէ ձեռք բերել: Հայտնի է, որ IP հասցեները
MAC հասցեն ունի 48 բիթ, որից 46-ը կարելի է համարել «օգտակար» (ինչու՞, շարունակեք կարդալ), որը տալիս է 246 կամ 1014 հասցե, ինչը 214 անգամ ավելի է, քան IPv4 հասցեների տարածքը։
Ներկայումս բաշխված է մոտավորապես կես տրիլիոն հասցե կամ ընդհանուր ծավալի միայն 0.73%-ը։ Մենք դեռ շատ, շատ հեռու ենք MAC հասցեների սպառումից:
Պատահականության բիթերը
Կարելի է ենթադրել, որ OUI-ները բաշխվում են պատահականորեն, և վաճառողը այնուհետև պատահականորեն հասցեներ է հատկացնում առանձին ցանցային սարքերին: Այդպե՞ս է։ Եկեք նայենք բիթերի բաշխվածությանը իմ տրամադրության տակ գտնվող 802.11 սարքերի MAC հասցեների տվյալների բազաներում, որոնք հավաքագրվել են անլար ցանցերում գործող թույլտվության համակարգերով:
Եկեք բաժանենք նմուշներից յուրաքանչյուրի յուրաքանչյուր MAC հասցեն (վեց բայթ) բիթ առ բայթ և նայենք 1 դիրքերից յուրաքանչյուրում «48» բիտի առաջացման հաճախականությանը: Եթե բիթը դրված է ամբողջովին կամայական կերպով, ապա «1» ստանալու հավանականությունը պետք է լինի 50%:
Wi-Fi-ի ընտրություն թիվ 1 (ՌԴ)
Wi-Fi նմուշ թիվ 2 (Բելառուս)
Wi-Fi-ի ընտրություն թիվ 3 (Ուզբեկստան)
LAN նմուշառում (RF)
Տվյալների բազայում գրանցումների քանակը
5929000
1274000
366000
1000
Բիթ համարը:
% բիթ «1»
% բիթ «1»
% բիթ «1»
% բիթ «1»
1
48.6%
49.2%
50.7%
28.7%
2
44.8%
49.1%
47.7%
30.7%
3
46.7%
48.3%
46.8%
35.8%
4
48.0%
48.6%
49.8%
37.1%
5
45.7%
46.9%
47.0%
32.3%
6
46.6%
46.7%
47.8%
27.1%
7
0.3%
0.3%
0.2%
0.7%
8
0.0%
0.0%
0.0%
0.0%
9
48.1%
50.6%
49.4%
38.1%
10
49.1%
50.2%
47.4%
42.7%
11
50.8%
50.0%
50.6%
42.9%
12
49.0%
48.4%
48.2%
53.7%
13
47.6%
47.0%
46.3%
48.5%
14
47.5%
47.4%
51.7%
46.8%
15
48.3%
47.5%
48.7%
46.1%
16
50.6%
50.4%
51.2%
45.3%
17
49.4%
50.4%
54.3%
38.2%
18
49.8%
50.5%
51.5%
51.9%
19
51.6%
53.3%
53.9%
42.6%
20
46.6%
46.1%
45.5%
48.4%
21
51.7%
52.9%
47.7%
48.9%
22
49.2%
49.6%
41.6%
49.8%
23
51.2%
50.9%
47.0%
41.9%
24
49.5%
50.2%
50.1%
47.5%
25
47.1%
47.3%
47.7%
44.2%
26
48.6%
48.6%
49.2%
43.9%
27
49.8%
49.0%
49.7%
48.9%
28
49.3%
49.3%
49.7%
55.1%
29
49.5%
49.4%
49.8%
49.8%
30
49.8%
49.8%
49.7%
52.1%
31
49.5%
49.7%
49.6%
46.6%
32
49.4%
49.7%
49.5%
47.5%
33
49.4%
49.8%
49.7%
48.3%
34
49.7%
50.0%
49.6%
44.9%
35
49.9%
50.0%
50.0%
50.6%
36
49.9%
49.9%
49.8%
49.1%
37
49.8%
50.0%
49.9%
51.4%
38
50.0%
50.0%
49.8%
51.8%
39
49.9%
50.0%
49.9%
55.7%
40
50.0%
50.0%
50.0%
49.5%
41
49.9%
50.0%
49.9%
52.2%
42
50.0%
50.0%
50.0%
53.9%
43
50.1%
50.0%
50.3%
56.1%
44
50.1%
50.0%
50.1%
45.8%
45
50.0%
50.0%
50.1%
50.1%
46
50.0%
50.0%
50.1%
49.5%
47
49.2%
49.4%
49.7%
45.2%
48
49.9%
50.1%
50.7%
54.6%
Ինչու՞ նման անարդարություն 7 և 8 բիթում: Գրեթե միշտ զրոներ կան։
Իրոք, ստանդարտը սահմանում է այս բիթերը որպես հատուկ (
MAC հասցեի առաջին բայթի ութերորդ (սկզբից) բիթը կոչվում է Unicast/Multicast բիթ և որոշում է, թե ինչ տեսակի շրջանակ (շրջանակ) է փոխանցվում այս հասցեով՝ սովորական (0) կամ հեռարձակում (1) (multicast կամ հեռարձակում). Սովորական, unicast ցանցային ադապտերների հաղորդակցության համար այս բիթը դրված է «0»՝ իրեն ուղարկված բոլոր փաթեթներում:
MAC հասցեի առաջին բայթի յոթերորդ (սկզբից) բիթը կոչվում է U/L (Ունիվերսալ/Տեղական) բիթ և որոշում է՝ հասցեն գլոբալ եզակի է (0), թե տեղական (1): Լռելյայնորեն, բոլոր «արտադրողի կողմից կարված» հասցեները գլոբալ եզակի են, ուստի հավաքված MAC հասցեների ճնշող մեծամասնությունը պարունակում է յոթերորդ բիթ, որը սահմանված է «0»: Նշանակված OUI նույնացուցիչների աղյուսակում միայն մոտ 130 մուտք ունի «1» U/L բիթ, և, ըստ երևույթին, դրանք հատուկ կարիքների համար MAC հասցեների բլոկներ են:
Առաջին բայթի վեցերորդից մինչև առաջին բիթերը, OUI նույնացուցիչներում երկրորդ և երրորդ բայթերի բիթերը, և նույնիսկ ավելին, արտադրողի կողմից նշանակված հասցեի 4-6 բայթերի բիթերը քիչ թե շատ հավասարաչափ են բաշխվում: .
Այսպիսով, ցանցային ադապտերի իրական MAC հասցեում բիթերը իրականում համարժեք են և չունեն տեխնոլոգիական նշանակություն, բացառությամբ բարձր բայթի երկու սպասարկման բիթերի:
Տարածվածությունը
Հետաքրքիր է, թե որ անլար սարքավորումներ արտադրողներն են ամենատարածվածը: Համատեղենք OUI տվյալների բազայում որոնումը թիվ 1 նմուշի տվյալների հետ։
Վաճառող
Սարքերի մասնաբաժինը, %
Apple
26,09
Samsung
19,79
Huawei Technologies Co. ՍՊԸ
7,80
Xiaomi Communications Co Ltd
6,83
Sony Mobile Communications Inc
3,29
LG Electronics (Բջջային հաղորդակցություն)
2,76
ASUSTek COMPUTER INC.
2,58
TCT mobile ltd
2,13
zte կորպորացիա
2,00
չի գտնվել IEEE տվյալների բազայում
1,92
Lenovo Mobile Communication Technology Ltd.
1,71
HTC կորպորացիան
1,68
Մուրատա Արտադրություն
1,31
InPro Comm
1,26
Microsoft կորպորացիան
1,11
Shenzhen TINNO Mobile Technology Corp.
1,02
Motorola (Wuhan) Mobility Technologies Communication Co. ՍՊԸ
0,93
Nokia կորպորացիան
0,88
Shanghai Wind Technologies Co. ՍՊԸ
0,74
Lenovo Mobile Communication (Wuhan) Company Limited
0,71
Պրակտիկան ցույց է տալիս, որ որքան ավելի բարեկեցիկ է անլար ցանցի բաժանորդների կոնտինգենտը տվյալ վայրում, այնքան ավելի մեծ է Apple սարքերի տեսակարար կշիռը:
ԵԶԱԿԻՈՒԹՅՈՒՆԸ
Արդյո՞ք MAC հասցեները եզակի են: Տեսականորեն, այո, քանի որ յուրաքանչյուր սարքի արտադրող (MA բլոկի սեփականատեր) պարտավոր է տրամադրել եզակի հասցե իր արտադրած ցանցային ադապտերներից յուրաքանչյուրի համար: Այնուամենայնիվ, չիպերի որոշ արտադրողներ, մասնավորապես.
- 00:0A:F5 Airgo Networks, Inc. (այժմ Qualcomm)
- 00:08:22 InPro Comm (այժմ MediaTek)
MAC հասցեի վերջին երեք բայթերը դրեք պատահական թվի, ըստ երևույթին, յուրաքանչյուր սարքի վերագործարկումից հետո: Իմ թիվ 1 նմուշում նման հասցե կար 82 հազար։
Դուք, իհարկե, կարող եք ինքներդ ձեզ օտար, ոչ եզակի հասցե սահմանել՝ նպատակաուղղված դնելով այն «ինչպես ձեր հարևանին», նույնացնելով այն sniffer-ի հետ կամ ընտրելով այն պատահականորեն: Հնարավոր է նաև պատահաբար ինքներդ ձեզ ոչ եզակի հասցե սահմանել՝ օրինակ՝ վերականգնելով երթուղիչի պահուստային կոնֆիգուրացիան, ինչպիսին է Mikrotik-ը կամ OpenWrt-ը:
Ի՞նչ կլինի, եթե ցանցում նույն MAC հասցեով երկու սարք կա: Ամեն ինչ կախված է ցանցային սարքավորումների տրամաբանությունից (լարային երթուղիչ, անլար ցանցի վերահսկիչ): Ամենայն հավանականությամբ, երկու սարքերն էլ կամ չեն աշխատի, կամ կաշխատեն ընդհատումներով: IEEE ստանդարտների տեսանկյունից, MAC հասցեների կեղծումից պաշտպանությունն առաջարկվում է լուծել, օրինակ, MACsec-ի կամ 802.1X-ի միջոցով:
Ինչ անել, եթե տեղադրեք MAC, որի յոթերորդ կամ ութերորդ բիթը դրված է «1», այսինքն. լոկալ, թե՞ բազմակի հեռարձակման հասցե: Ամենայն հավանականությամբ, ձեր ցանցը ուշադրություն չի դարձնի դրան, բայց պաշտոնապես նման հասցեն չի համապատասխանի ստանդարտին, և ավելի լավ է դա չանել:
Ինչպես է աշխատում պատահականացումը
Մենք գիտենք, որ եթերային ալիքները սկանավորելու և հավաքելու միջոցով մարդկանց տեղաշարժին հետևելը կանխելու համար սմարթֆոնների MAC օպերացիոն համակարգերը մի քանի տարի օգտագործում են պատահականության տեխնոլոգիա: Տեսականորեն, երբ սկանավորում է եթերային ալիքները՝ փնտրելով հայտնի ցանցերը, սմարթֆոնը ուղարկում է 802.11 զոնդի հարցման տիպի փաթեթ (փաթեթների խումբ)՝ որպես աղբյուր MAC հասցեն.
Միացված պատահականությունը թույլ է տալիս նշել ոչ թե «կարված», այլ փաթեթի աղբյուրի որոշ այլ հասցե՝ փոփոխվելով սկանավորման յուրաքանչյուր ցիկլով, ժամանակի ընթացքում կամ այլ կերպ: Արդյոք դա աշխատում է: Դիտարկենք այսպես կոչված «Wi-Fi ռադարի» կողմից օդից հավաքված MAC հասցեների վիճակագրությունը.
Ամբողջական նմուշ
Ընտրանք միայն զրոյական 7-րդ բիթով
Տվյալների բազայում գրանցումների քանակը
3920000
305000
Բիթ համարը:
% բիթ «1»
% բիթ «1»
1
66.1%
43.3%
2
66.5%
43.4%
3
31.7%
43.8%
4
66.6%
46.4%
5
66.7%
45.7%
6
31.9%
46.4%
7
92.2%
0.0%
8
0.0%
0.0%
9
67.2%
47.5%
10
32.3%
45.6%
11
66.9%
45.3%
12
32.3%
46.8%
13
32.6%
50.1%
14
33.0%
56.1%
15
32.5%
45.0%
16
67.2%
48.3%
17
33.2%
56.9%
18
33.3%
56.8%
19
33.3%
56.3%
20
66.8%
43.2%
21
67.0%
46.4%
22
32.6%
50.1%
23
32.9%
51.2%
24
67.6%
52.2%
25
49.8%
47.8%
26
50.0%
50.0%
27
50.0%
50.2%
28
50.0%
49.8%
29
50.0%
49.4%
30
50.0%
50.0%
31
50.0%
49.7%
32
50.0%
49.9%
33
50.0%
49.7%
34
50.0%
49.6%
35
50.0%
50.1%
36
50.0%
49.5%
37
50.0%
49.9%
38
50.0%
49.8%
39
50.0%
49.9%
40
50.0%
50.1%
41
50.0%
50.2%
42
50.0%
50.2%
43
50.0%
50.1%
44
50.0%
50.1%
45
50.0%
50.0%
46
50.0%
49.8%
47
50.0%
49.8%
48
50.1%
50.9%
Պատկերը բոլորովին այլ է.
MAC հասցեի առաջին բայթի 8-րդ բիթը դեռևս համապատասխանում է ՊԵԿ հասցեի Unicast բնույթին զոնդավորման հարցման փաթեթում:
7-րդ բիթը դրված է Local-ի 92.2% դեպքերում, այսինքն. Վստահության բավականաչափ աստիճանի դեպքում մենք կարող ենք ենթադրել, որ հավաքագրված հասցեներից հենց այդքան շատ են պատահական, և 8%-ից պակաս իրական են: Այս դեպքում OUI-ում բիթերի բաշխումը նման իրական հասցեների համար մոտավորապես համընկնում է նախորդ աղյուսակի տվյալների հետ:
Ո՞ր արտադրողին է պատկանում, ըստ OUI-ի, պատահականացված հասցեները (այսինքն՝ «7»-ի 1-րդ բիթով):
Արտադրող՝ OUI-ի կողմից
Կիսվեք բոլոր հասցեներով
չի գտնվել IEEE տվյալների բազայում
62.45%
Google Inc.
37.54%
հանգստանալ
0.01%
Ավելին, Google-ին հատկացված բոլոր պատահական հասցեները պատկանում են նույն OUI-ին` նախածանցով DA:A1:19. Ի՞նչ է այս նախածանցը: Եկեք ներս նայենք
private static final MacAddress BASE_GOOGLE_MAC = MacAddress.fromString("da:a1:19:0:0:0");
Stock Android-ը անլար ցանցեր որոնելիս օգտագործում է հատուկ, գրանցված OUI, որը յոթերորդ բիթ ունեցող քչերից է:
Հաշվեք իրական MAC-ը պատահականից
Տեսնենք այնտեղ.
private static final long VALID_LONG_MASK = (1L << 48) - 1;
private static final long LOCALLY_ASSIGNED_MASK = MacAddress.fromString("2:0:0:0:0:0").mAddr;
private static final long MULTICAST_MASK = MacAddress.fromString("1:0:0:0:0:0").mAddr;
public static @NonNull MacAddress createRandomUnicastAddress(MacAddress base, Random r) {
long addr;
if (base == null) {
addr = r.nextLong() & VALID_LONG_MASK;
} else {
addr = (base.mAddr & OUI_MASK) | (NIC_MASK & r.nextLong());
}
addr |= LOCALLY_ASSIGNED_MASK;
addr &= ~MULTICAST_MASK;
MacAddress mac = new MacAddress(addr);
if (mac.equals(DEFAULT_MAC_ADDRESS)) {
return createRandomUnicastAddress(base, r);
}
return mac;
}
Ամբողջ հասցեն կամ դրա ստորին երեք բայթը մաքուր է Random.nextLong(). «Իրական MAC-ի գույքային վերականգնումը» խաբեություն է: Վստահության բարձր աստիճանով՝ մենք կարող ենք ակնկալել, որ Android հեռախոս արտադրողներն օգտագործում են այլ, չգրանցված OUI-ներ: Մենք չունենք iOS աղբյուրի կոդը, բայց, ամենայն հավանականությամբ, այնտեղ օգտագործվում է նմանատիպ ալգորիթմ:
Վերոնշյալը չի չեղարկում Wi-Fi-ի բաժանորդների անանունացման այլ մեխանիզմների աշխատանքը՝ հիմնված զոնդի հարցման շրջանակի այլ դաշտերի վերլուծության կամ սարքի կողմից ուղարկվող հարցումների հարաբերական հաճախականության հարաբերակցության վրա: Այնուամենայնիվ, արտաքին միջոցների միջոցով բաժանորդին հուսալիորեն հետևելը չափազանց խնդրահարույց է: Հավաքագրված տվյալները ավելի հարմար կլինեն միջին/գագաթնակետային բեռը ըստ գտնվելու վայրի և ժամանակի վերլուծելու համար՝ հիմնված մեծ թվերի վրա, առանց կոնկրետ սարքերի և մարդկանց հղումների: Ճշգրիտ տվյալներ ունեն միայն «ներսում», բջջային ՕՀ արտադրողներն իրենք և տեղադրված հավելվածները։
Ի՞նչը կարող է վտանգավոր լինել ձեր սարքի MAC հասցեն ուրիշի իմացության մեջ: Ծառայությունների մերժման հարձակումները կարող են իրականացվել լարային և անլար ցանցերի համար: Անլար սարքի համար, ընդ որում, որոշ հավանականությամբ հնարավոր է գրանցել դրա հայտնվելու պահը այն վայրում, որտեղ տեղադրված է սենսորը։ Հասցեն կեղծելով՝ դուք կարող եք փորձել «ձևացնել», որ ձեր սարքն է, ինչը կարող է աշխատել միայն այն դեպքում, եթե անվտանգության լրացուցիչ միջոցներ չկիրառվեն (լիազորում և/կամ գաղտնագրում): Այստեղի մարդկանց 99.9%-ը անհանգստանալու ոչինչ չունի:
MAC հասցեն ավելի բարդ է, քան թվում է, բայց ավելի պարզ, քան կարող էր լինել:
Source: www.habr.com