Semua yang anda ingin ketahui tentang alamat MAC

Semua yang anda ingin ketahui tentang alamat MACSemua orang tahu bahawa enam bait ini, biasanya dipaparkan dalam format perenambelasan, diberikan kepada kad rangkaian di kilang, dan nampaknya rawak. Sesetengah orang tahu bahawa tiga bait pertama alamat ialah ID pengilang, dan tiga bait yang selebihnya diberikan kepada mereka. Ia juga diketahui bahawa anda boleh menetapkan sendiri sewenang-wenangnya alamat. Ramai orang telah mendengar tentang "alamat rawak" dalam Wi-Fi.

Mari kita fikirkan apa itu.

Alamat MAC (alamat kawalan akses media) ialah pengecam unik yang diberikan kepada penyesuai rangkaian, digunakan dalam rangkaian piawaian IEEE 802, terutamanya Ethernet, Wi-Fi dan Bluetooth. Secara rasmi ia dipanggil "pengecam jenis EUI-48". Dari namanya jelas bahawa alamat adalah 48 bit panjang, i.e. 6 bait. Tiada piawaian yang diterima umum untuk menulis alamat (berbanding dengan alamat IPv4, di mana oktet sentiasa dipisahkan dengan titik). Ia biasanya ditulis sebagai enam nombor perenambelasan yang dipisahkan oleh titik bertindih: 00:AB:CD:EF:11: 22, walaupun sesetengah pengeluar peralatan memilih notasi 00 -AB-CD-EF-11-22 dan juga 00ab.cdef.1122.

Dari segi sejarah, alamat telah dipancarkan ke dalam ROM cipset kad rangkaian tanpa keupayaan untuk mengubah suainya tanpa pengaturcara kilat, tetapi pada masa kini alamat itu boleh ditukar secara pengaturcaraan daripada sistem pengendalian. Anda boleh menetapkan alamat MAC kad rangkaian secara manual dalam Linux dan MacOS (sentiasa), Windows (hampir selalu, jika pemandu membenarkan), Android (root sahaja); Dengan iOS (tanpa akar) muslihat sedemikian adalah mustahil.

Struktur alamat

Alamat terdiri daripada sebahagian daripada pengecam pengilang, OUI dan pengecam yang diberikan oleh pengilang. Penetapan pengecam OUI (Pengecam Unik Organisasi). tawaran organisasi IEEE. Sebenarnya, panjangnya boleh bukan sahaja 3 bait (24 bit), tetapi 28 atau 36 bit, dari mana blok (Blok Alamat MAC, MA) alamat jenis Besar (MA-L), Sederhana (MA-M) dan Kecil terbentuk (MA-S) masing-masing. Saiz blok yang dikeluarkan, dalam kes ini, akan menjadi 24, 20, 12 bit atau 16 juta, 1 juta, 4 ribu alamat. Pada masa ini terdapat kira-kira 38 ribu blok yang diedarkan, mereka boleh dilihat menggunakan banyak alat dalam talian, sebagai contoh IEEE atau Wireshark.

Siapa pemilik alamat?

Pemprosesan mudah tersedia untuk umum memunggah pangkalan data IEEE menyediakan banyak maklumat. Sebagai contoh, sesetengah organisasi telah mengambil banyak blok OUI untuk diri mereka sendiri. Berikut adalah wira kami:

Penjual
Bilangan blok/rekod
Bilangan alamat, juta

Cisco Systems Inc
888
14208

Apple
772
12352

Samsung
636
10144

Huawei Technologies Co.Ltd
606
9696

Intel Corporation
375
5776

Kumpulan ARRIS Inc.
319
5104

Nokia Corporation
241
3856

Swasta
232
2704

Texas Instruments
212
3392

perbadanan zte
198
3168

Pihak Berkuasa Pendaftaran IEEE
194
3072

Hewlett Packard
149
2384

Ketepatan Hon Hai
136
2176

TP-LINK
134
2144

Dell Inc.
123
1968

Juniper Networks
110
1760

Sagemcom Broadband SAS
97
1552

Fiberhome Telecommunication Technologies Co. LTD
97
1552

Xiaomi Communications Co Ltd
88
1408

Guangdong Oppo Mobile Telecommunications Corp.Ltd
82
1312

Google hanya mempunyai 40 daripadanya, dan ini tidak menghairankan: mereka sendiri tidak menghasilkan banyak peranti rangkaian.

Blok MA tidak disediakan secara percuma, ia boleh dibeli dengan harga yang berpatutan (tanpa yuran langganan) masing-masing untuk $3000, $1800 atau $755. Menariknya, untuk wang tambahan (setahun) anda boleh membeli "menyembunyikan" maklumat awam mengenai blok yang diperuntukkan. Kini terdapat 232 daripadanya, seperti yang dapat dilihat di atas.

Bilakah kita akan kehabisan alamat MAC?

Kita semua agak bosan dengan cerita yang telah berlaku selama 10 tahun bahawa "alamat IPv4 hampir kehabisan." Ya, blok IPv4 baharu tidak lagi mudah diperoleh. Adalah diketahui bahawa alamat IP teragih sangat tidak sekata; Terdapat blok gergasi dan kurang digunakan yang dimiliki oleh syarikat besar dan agensi kerajaan AS, bagaimanapun, dengan sedikit harapan untuk mengagihkannya kepada mereka yang memerlukan. Percambahan NAT, CG-NAT dan IPv6 telah menjadikan masalah kekurangan alamat awam kurang meruncing.

Alamat MAC mempunyai 48 bit, yang mana 46 boleh dianggap "berguna" (mengapa? baca terus), yang memberikan 246 atau 1014 alamat, iaitu 214 kali lebih banyak daripada ruang alamat IPv4.
Pada masa ini, kira-kira setengah trilion alamat telah diedarkan, atau hanya 0.73% daripada jumlah keseluruhan. Kami masih sangat jauh daripada kehabisan alamat MAC.

Bit rawak

Ia boleh diandaikan bahawa OUI diedarkan secara rawak, dan vendor kemudiannya juga secara rawak memberikan alamat kepada peranti rangkaian individu. Adakah begitu? Mari lihat pengedaran bit dalam pangkalan data alamat MAC peranti 802.11 yang saya gunakan, yang dikumpulkan oleh sistem kebenaran yang berfungsi dalam rangkaian wayarles WNAM. Alamat milik peranti sebenar yang disambungkan ke Wi-Fi selama beberapa tahun di tiga negara. Di samping itu terdapat pangkalan data kecil peranti LAN berwayar 802.3.

Mari kita pecahkan setiap alamat MAC (enam bait) setiap sampel kepada bit, bait demi bait, dan lihat kekerapan kejadian bit "1" dalam setiap 48 kedudukan. Jika bit ditetapkan dengan cara sewenang-wenangnya, maka kebarangkalian untuk mendapat "1" hendaklah 50%.

Pemilihan Wi-Fi No. 1 (RF)
Sampel Wi-Fi No. 2 (Belarus)
Pilihan Wi-Fi No. 3 (Uzbekistan)
pensampelan LAN (RF)

Bilangan rekod dalam pangkalan data
5929000
1274000
366000
1000

Nombor bit:
% bit "1"
% bit "1"
% bit "1"
% bit "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%

Mengapa ketidakadilan dalam 7 dan 8 bit? Hampir selalu ada sifar.

Sesungguhnya, piawaian mentakrifkan bit ini sebagai istimewa (Wikipedia):
Semua yang anda ingin ketahui tentang alamat MAC

Bit kelapan (dari awal) bait pertama alamat MAC dipanggil bit Unicast/Multicast dan menentukan jenis bingkai (bingkai) yang dihantar dengan alamat ini, biasa (0) atau siaran (1) (multicast atau siaran). Untuk komunikasi penyesuai rangkaian unicast biasa, bit ini ditetapkan kepada "0" dalam semua paket yang dihantar kepadanya.

Bit ketujuh (dari awal) bait pertama alamat MAC dipanggil bit U/L (Universal/Tempatan) dan menentukan sama ada alamat itu unik di peringkat global (0), atau unik setempat (1). Secara lalai, semua alamat "dijahit pengilang" adalah unik di peringkat global, jadi sebahagian besar alamat MAC yang dikumpul mengandungi bit ketujuh yang ditetapkan kepada "0". Dalam jadual pengecam OUI yang diberikan, hanya kira-kira 130 entri mempunyai bit U/L "1", dan nampaknya ini adalah blok alamat MAC untuk keperluan khas.

Daripada bit keenam hingga pertama bait pertama, bit bait kedua dan ketiga dalam pengecam OUI, dan lebih-lebih lagi bit dalam 4-6 bait alamat yang diberikan oleh pengilang diedarkan lebih kurang sama rata .

Oleh itu, dalam alamat MAC sebenar penyesuai rangkaian, bit sebenarnya setara dan tidak mempunyai makna teknologi, kecuali dua bit perkhidmatan bait tinggi.

Prevalensi

Tertanya-tanya pengeluar peralatan wayarles mana yang paling popular? Mari gabungkan carian dalam pangkalan data OUI dengan data daripada sampel No. 1.

Penjual
Bahagian peranti, %

Apple
26,09

Samsung
19,79

Huawei Technologies Co. Ltd
7,80

Xiaomi Communications Co Ltd
6,83

Sony Mobile Communications Inc
3,29

LG Electronics (Komunikasi Mudah Alih)
2,76

ASUSTek KOMPUTER INC.
2,58

TCT mudah alih ltd
2,13

perbadanan zte
2,00

tidak ditemui dalam pangkalan data IEEE
1,92

Lenovo Mobile Communication Technology Ltd.
1,71

HTC Corporation
1,68

Pembuatan Murata
1,31

InPro Comm
1,26

Microsoft Corporation
1,11

Shenzhen TINNO Mobile Technology Corp.
1,02

Motorola (Wuhan) Mobility Technologies Communication Co. Ltd.
0,93

Nokia Corporation
0,88

Shanghai Wind Technologies Co. Ltd
0,74

Syarikat Komunikasi Mudah Alih Lenovo (Wuhan) Limited
0,71

Amalan menunjukkan bahawa lebih makmur kontinjen pelanggan rangkaian wayarles di lokasi tertentu, semakin besar bahagian peranti Apple.

Keunikan

Adakah alamat MAC unik? Secara teorinya, ya, kerana setiap pengeluar peranti (pemilik blok MA) dikehendaki memberikan alamat unik untuk setiap penyesuai rangkaian yang dihasilkannya. Walau bagaimanapun, beberapa pengeluar cip, iaitu:

  • 00:0A:F5 Airgo Networks, Inc. (kini Qualcomm)
  • 00:08:22 InPro Comm (kini MediaTek)

tetapkan tiga bait terakhir alamat MAC kepada nombor rawak, nampaknya selepas setiap peranti but semula. Terdapat 1 ribu alamat sedemikian dalam sampel No. 82 saya.

Anda boleh, tentu saja, menetapkan diri anda sebagai alamat asing yang tidak unik dengan sengaja menetapkannya "seperti jiran anda", mengenal pastinya dengan penghidu atau memilihnya secara rawak. Anda juga boleh menetapkan sendiri alamat bukan unik secara tidak sengaja dengan, sebagai contoh, memulihkan konfigurasi sandaran penghala seperti Mikrotik atau OpenWrt.

Apakah yang akan berlaku jika terdapat dua peranti pada rangkaian dengan alamat MAC yang sama? Semuanya bergantung pada logik peralatan rangkaian (penghala berwayar, pengawal rangkaian wayarles). Kemungkinan besar, kedua-dua peranti sama ada tidak akan berfungsi atau akan berfungsi secara berselang-seli. Dari sudut pandangan piawaian IEEE, perlindungan terhadap pemalsuan alamat MAC dicadangkan untuk diselesaikan menggunakan, sebagai contoh, MACsec atau 802.1X.

Bagaimana jika anda memasang MAC dengan bit ketujuh atau kelapan ditetapkan kepada "1", i.e. alamat tempatan atau multicast? Kemungkinan besar, rangkaian anda tidak akan memberi perhatian kepada perkara ini, tetapi secara rasmi alamat sedemikian tidak akan mematuhi piawaian, dan lebih baik tidak berbuat demikian.

Cara rawak berfungsi

Kami tahu bahawa untuk mengelakkan pengesanan pergerakan orang ramai dengan mengimbas dan mengumpul gelombang udara, sistem pengendalian MAC telefon pintar telah menggunakan teknologi rawak selama beberapa tahun. Secara teorinya, apabila mengimbas gelombang udara untuk mencari rangkaian yang diketahui, telefon pintar menghantar paket (kumpulan paket) jenis permintaan siasatan 802.11 dengan alamat MAC sebagai sumber:

Semua yang anda ingin ketahui tentang alamat MAC

Rawak yang didayakan membolehkan anda menentukan bukan yang "dijahit", tetapi beberapa alamat sumber paket lain, berubah dengan setiap kitaran pengimbasan, dari semasa ke semasa, atau dengan cara lain. Adakah ia berfungsi? Mari kita lihat statistik alamat MAC yang dikumpulkan dari udara oleh apa yang dipanggil "Radar Wi-Fi":

Keseluruhan sampel
Sampel hanya dengan sifar bit ke-7

Bilangan rekod dalam pangkalan data
3920000
305000

Nombor bit:
% bit "1"
% bit "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%

Gambarnya berbeza sama sekali.

Bit ke-8 bait pertama alamat MAC masih sepadan dengan sifat Unicast alamat SRC dalam paket permintaan siasatan.

Bit ke-7 ditetapkan kepada Setempat dalam 92.2% kes, i.e. Dengan tahap keyakinan yang adil, kita boleh menganggap bahawa begitu banyak alamat yang dikumpul adalah rawak, dan kurang daripada 8% adalah benar. Dalam kes ini, pengedaran bit dalam OUI untuk alamat sebenar sedemikian kira-kira bertepatan dengan data dalam jadual sebelumnya.

Pengilang yang manakah, menurut OUI, memiliki alamat rawak (iaitu dengan bit ke-7 dalam "1")?

Pengeluar oleh OUI
Kongsi antara semua alamat

tidak ditemui dalam pangkalan data IEEE
62.45%

Google Inc.
37.54%

berehat
0.01%

Selain itu, semua alamat rawak yang diberikan kepada Google tergolong dalam OUI yang sama dengan awalan DA:A1:19. Apakah awalan ini? Jom tengok masuk sumber Android.

private static final MacAddress BASE_GOOGLE_MAC = MacAddress.fromString("da:a1:19:0:0:0");

Android Stock menggunakan OUI berdaftar khas apabila mencari rangkaian wayarles, salah satu daripada beberapa rangkaian dengan set bit ketujuh.

Kira MAC sebenar daripada satu rawak

Jom lihat di sana:

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;
    }

Seluruh alamat, atau tiga bait bawahnya, adalah tulen Random.nextLong(). "Pemulihan proprietari MAC sebenar" ialah penipuan. Dengan tahap keyakinan yang tinggi, kami boleh menjangkakan bahawa pengeluar telefon Android menggunakan OUI lain yang tidak berdaftar. Kami tidak mempunyai kod sumber iOS, tetapi kemungkinan besar algoritma serupa digunakan di sana.

Perkara di atas tidak membatalkan kerja mekanisme lain untuk menyahnamakan pelanggan Wi-Fi, berdasarkan analisis medan lain bingkai permintaan siasatan, atau korelasi frekuensi relatif permintaan yang dihantar oleh peranti. Walau bagaimanapun, menjejaki pelanggan dengan pasti menggunakan cara luaran adalah amat bermasalah. Data yang dikumpul akan lebih sesuai untuk menganalisis beban purata/puncak mengikut lokasi dan masa, berdasarkan bilangan yang besar, tanpa merujuk kepada peranti dan orang tertentu. Hanya mereka "di dalam", pengeluar OS mudah alih sendiri, dan aplikasi yang dipasang mempunyai data yang tepat.

Apakah yang boleh berbahaya apabila orang lain mengetahui alamat MAC peranti anda? Serangan penafian perkhidmatan boleh dilancarkan untuk rangkaian berwayar dan tanpa wayar. Untuk peranti wayarles, lebih-lebih lagi, dengan beberapa kebarangkalian adalah mungkin untuk merakam momen penampilannya di tempat di mana sensor dipasang. Dengan memalsukan alamat, anda boleh cuba "berpura-pura" sebagai peranti anda, yang hanya boleh berfungsi jika tiada langkah keselamatan tambahan digunakan (keizinan dan/atau penyulitan). 99.9% orang di sini tidak perlu risau.

Alamat MAC adalah lebih rumit daripada yang kelihatan, tetapi lebih mudah daripada yang mungkin.

Sumber: www.habr.com

Tambah komen