自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何在Ubuntu 16.04下隨機化你的WiFi MAC地址

系統(tǒng) Linux
你的設(shè)備的 MAC 地址可以在不同的 WiFi 網(wǎng)絡(luò)中記錄你的活動。這些信息能被共享后出售,用于識別特定的個體。但可以用隨機生成的偽 MAC 地址來阻止這一行為。

[[212908]]

你的設(shè)備的 MAC 地址可以在不同的 WiFi 網(wǎng)絡(luò)中記錄你的活動。這些信息能被共享后出售,用于識別特定的個體。但可以用隨機生成的偽 MAC 地址來阻止這一行為。

每一個諸如 WiFi 或者以太網(wǎng)卡這樣的網(wǎng)絡(luò)設(shè)備,都有一個叫做 MAC 地址的唯一標(biāo)識符,如:b4:b6:76:31:8c:ff。這就是你能上網(wǎng)的原因:每當(dāng)你連上 WiFi,路由器就會用這一地址來向你接受和發(fā)送數(shù)據(jù),并且用它來區(qū)別你和這一網(wǎng)絡(luò)的其它設(shè)備。

這一設(shè)計的缺陷在于唯一性,不變的 MAC 地址正好可以用來追蹤你。連上了星巴克的 WiFi? 好,注意到了。在倫敦的地鐵上? 也記錄下來。

如果你曾經(jīng)在某一個 WiFi 驗證頁面上輸入過你的真實姓名,你就已經(jīng)把自己和這一 MAC 地址建立了聯(lián)系。沒有仔細(xì)閱讀許可服務(wù)條款、你可以認(rèn)為,機場的免費 WiFi 正通過出售所謂的 ‘顧客分析數(shù)據(jù)’(你的個人信息)獲利。出售的對象包括酒店,餐飲業(yè),和任何想要了解你的人。

我不想信息被記錄,再出售給多家公司,所以我花了幾個小時想出了一個解決方案。 

MAC 地址不一定總是不變的

幸運的是,在不斷開網(wǎng)絡(luò)的情況下,是可以隨機生成一個偽 MAC 地址的。

我想隨機生成我的 MAC 地址,但是有三個要求:

  1. MAC 地址在不同網(wǎng)絡(luò)中是不相同的。這意味著,我在星巴克和在倫敦地鐵網(wǎng)絡(luò)中的 MAC 地址是不相同的,這樣在不同的服務(wù)提供商中就無法將我的活動系起來。
  2. MAC 地址需要經(jīng)常更換,這樣在網(wǎng)絡(luò)上就沒人知道我就是去年在這兒經(jīng)過了 75 次的那個人。
  3. MAC 地址一天之內(nèi)應(yīng)該保持不變。當(dāng) MAC 地址更改時,大多數(shù)網(wǎng)絡(luò)都會與你斷開連接,然后必須得進入驗證頁面再次登陸 - 這很煩人。 

操作網(wǎng)絡(luò)管理器NetworkManager

我第一次嘗試用一個叫做 macchanger 的工具,但是失敗了。因為網(wǎng)絡(luò)管理器NetworkManager會根據(jù)它自己的設(shè)置恢復(fù)默認(rèn)的 MAC 地址。

我了解到,網(wǎng)絡(luò)管理器 1.4.1 以上版本可以自動生成隨機的 MAC 地址。如果你在使用 Ubuntu 17.04 版本,你可以根據(jù)這一配置文件實現(xiàn)這一目的。但這并不能完全符合我的三個要求(你必須在隨機random穩(wěn)定stable這兩個選項之中選擇一個,但沒有一天之內(nèi)保持不變這一選項)

因為我使用的是 Ubuntu 16.04,網(wǎng)絡(luò)管理器版本為 1.2,不能直接使用高版本這一新功能。可能網(wǎng)絡(luò)管理器有一些隨機化方法支持,但我沒能成功。所以我編了一個腳本來實現(xiàn)這一目標(biāo)。

幸運的是,網(wǎng)絡(luò)管理器 1.2 允許模擬 MAC 地址。你在已連接的網(wǎng)絡(luò)中可以看見 ‘編輯連接’ 這一選項。

網(wǎng)絡(luò)管理器也支持鉤子處理 —— 任何位于 /etc/NetworkManager/dispatcher.d/pre-up.d/ 的腳本在建立網(wǎng)絡(luò)連接之前都會被執(zhí)行。 

分配隨機生成的偽 MAC 地址

我想根據(jù)網(wǎng)絡(luò) ID 和日期來生成新的隨機 MAC 地址。 我們可以使用網(wǎng)絡(luò)管理器的命令行工具 nmcli 來顯示所有可用網(wǎng)絡(luò):

  1. > nmcli connection
  2. NAME UUID TYPE DEVICE
  3. Gladstone Guest 618545ca-d81a-11e7-a2a4-271245e11a45 802-11-wireless wlp1s0
  4. DoESDinky 6e47c080-d81a-11e7-9921-87bc56777256 802-11-wireless --
  5. PublicWiFi 79282c10-d81a-11e7-87cb-6341829c2a54 802-11-wireless --
  6. virgintrainswifi 7d0c57de-d81a-11e7-9bae-5be89b161d22 802-11-wireless --

因為每個網(wǎng)絡(luò)都有一個唯一標(biāo)識符(UUID),為了實現(xiàn)我的計劃,我將 UUID 和日期拼接在一起,然后使用 MD5 生成 hash 值:

  1. # eg 618545ca-d81a-11e7-a2a4-271245e11a45-2017-12-03
  2.  
  3. > echo -n "${UUID}-$(date +%F)" | md5sum
  4.  
  5. 53594de990e92f9b914a723208f22b3f -

生成的結(jié)果可以代替 MAC 地址的最后八個字節(jié)。

值得注意的是,最開始的字節(jié) 02 代表這個地址是自行指定的。實際上,真實 MAC 地址的前三個字節(jié)是由制造商決定的,例如 b4:b6:76 就代表 Intel。

有可能某些路由器會拒絕自己指定的 MAC 地址,但是我還沒有遇到過這種情況。

每次連接到一個網(wǎng)絡(luò),這一腳本都會用 nmcli 來指定一個隨機生成的偽 MAC 地址。

最后,我查看了 ifconfig 的輸出結(jié)果,我發(fā)現(xiàn) MAC 地址 HWaddr 已經(jīng)變成了隨機生成的地址(模擬 Intel 的),而不是我真實的 MAC 地址。

  1. > ifconfig
  2. wlp1s0 Link encap:Ethernet HWaddr b4:b6:76:45:64:4d
  3. inet addr:192.168.0.86 Bcast:192.168.0.255 Mask:255.255.255.0
  4. inet6 addr: fe80::648c:aff2:9a9d:764/64 Scope:Link
  5. UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
  6. RX packets:12107812 errors:0 dropped:2 overruns:0 frame:0
  7. TX packets:18332141 errors:0 dropped:0 overruns:0 carrier:0
  8. collisions:0 txqueuelen:1000
  9. RX bytes:11627977017 (11.6 GB) TX bytes:20700627733 (20.7 GB)  

腳本

完整的腳本也可以在 Github 上查看。

  1. #!/bin/sh
  2.  
  3. # /etc/NetworkManager/dispatcher.d/pre-up.d/randomize-mac-addresses
  4.  
  5. # Configure every saved WiFi connection in NetworkManager with a spoofed MAC
  6. # address, seeded from the UUID of the connection and the date eg:
  7. # 'c31bbcc4-d6ad-11e7-9a5a-e7e1491a7e20-2017-11-20'
  8.  
  9. # This makes your MAC impossible(?) to track across WiFi providers, and
  10. # for one provider to track across days.
  11.  
  12. # For craptive portals that authenticate based on MAC, you might want to
  13. # automate logging in :)
  14.  
  15. # Note that NetworkManager >= 1.4.1 (Ubuntu 17.04+) can do something similar
  16. # automatically.
  17.  
  18. export PATH=$PATH:/usr/bin:/bin
  19.  
  20. LOG_FILE=/var/log/randomize-mac-addresses
  21.  
  22. echo "$(date): $*" > ${LOG_FILE}
  23.  
  24. WIFI_UUIDS=$(nmcli --fields type,uuid connection show |grep 802-11-wireless |cut '-d ' -f3)
  25.  
  26. for UUID in ${WIFI_UUIDS}
  27. do
  28. UUID_DAILY_HASH=$(echo "${UUID}-$(date +F)" | md5sum)
  29.  
  30. RANDOM_MAC="02:$(echo -n ${UUID_DAILY_HASH} | sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4:\5/')"
  31.  
  32. CMD="nmcli connection modify ${UUID} wifi.cloned-mac-address ${RANDOM_MAC}"
  33.  
  34. echo "$CMD" >> ${LOG_FILE}
  35. $CMD &
  36. done
  37.  
  38. wait

更新:使用自己指定的 MAC 地址可以避免和真正的 intel 地址沖突。感謝 @_fink 

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2020-10-25 10:40:41

Windows

2020-10-22 10:26:37

Windows10

2022-09-11 19:55:46

MAC 地址WiFi 地址

2019-09-08 15:43:19

UbuntuLinuxIP地址

2017-08-02 15:15:55

UbuntuNoSQLOrientDB

2018-02-25 11:03:00

LinuxUbuntuEncryptpad

2017-02-22 10:06:11

UbuntuCeph存儲

2018-02-23 14:50:30

2017-05-10 10:37:55

2020-03-18 17:43:15

LinuxMAC地址

2016-07-28 13:30:49

UbuntuQQWine

2017-04-07 09:00:46

UbuntuVim文本選擇

2019-03-06 09:00:38

ASLRLinux命令

2017-06-02 14:30:51

UbuntuOTRSLinux

2015-12-07 14:47:15

UbuntuGIMP 2.8.16Linux

2018-03-22 12:44:13

2021-03-12 10:06:58

人工智能機器學(xué)習(xí)技術(shù)

2018-12-09 13:50:47

UbuntuLinux IP地址

2016-09-22 08:48:52

UbuntuFedoraXFCE 桌面

2011-08-29 14:12:50

UbuntuXBMC
點贊
收藏

51CTO技術(shù)棧公眾號