Monero 節點探測在這里指通過技術手段識別 Monero 區塊鏈節點,目的是識別 Monero 網絡節點的規模,以及關鍵節點地址,Monero(XMR,門羅幣)是一種以隱私反追蹤為主要賣點的加密貨幣,故意隱藏錢包地址和交易,允許人們秘密使用貨幣。
Monero 區塊鏈技術主要由分布式存儲,P2P 網絡,共識機制組成,其工作驗證算法 CryptoNight 是為 AES 密集型和消耗 CPU 的操作,顯著降低了 GPU 對 CPU 的優勢。受到網絡黑產攻擊者、自動化僵尸網絡控制者的熱烈歡迎,為肉雞控制者提供了一種利用 CPU 算力進行變現的一種技術手段,目前比較知名的挖礦團伙有 watchdogs miner,ddgbotnet 挖礦團伙,pm miner,kingsing miner,8220 挖礦團伙等,他們長期偏向于 Linux 服務器進行挖礦攻擊活動,挖掘的都是 Monero 幣,已知的幾個團伙目前收益最高的約在 1000 萬RMB。
分布式存儲指的是網絡上大部分節點都保存了整條區塊鏈,P2P 網絡指的是節點即可以當作服務端,也可以當作客戶端,共識機制指的是 proof of Work,工作量證明。
門羅幣區塊鏈網絡結構圖,用如下比特幣區塊鏈網絡結構圖來表示。錢包 W (wallet)
挖礦 M (Mining),區塊鏈數據庫 B,網絡路由節點 N,SPV 簡化交易驗證輕節點,Bitcoin protocol 可以理解為 monero protocol,S 代表 Stratum 礦機和礦池之間的 TCP 通訊協議,P 指的是 poo l礦池。此外,Solo Miners 指的是獨立礦工,pool miners 指的是使用礦池礦工,兩者的區別在于挖礦者是否需要搭建 monero 的全節點,另外礦池礦工是共享收益,且需要交一定比例的收益。磨刀不誤砍柴工,簡要理解區塊鏈:節點的功能存儲區塊鏈數據庫以及進行網絡路由通訊,普通用戶轉賬就是在節點區塊鏈數據庫插入數據,但這個數據需要有礦工以特定方式進行運算,然后將運算后的結果同步到節點里,經過特定算法確認才會同步到其他節點數據庫中,超過 51% 節點同步完成才算是完成交易過程,礦池的核心工作是給礦工分配任務,統計工作量并分發收益。從節點中獲取待運算的數據,發送給礦工進行運算,然后拿運算后的結果同步到節點數據庫中,運算成功獲得一部分獎勵,根據每個礦工的 Hash 量,之后來分配獲得的獎勵,獨立礦工則不是按勞分配收益,挖礦成功則獲得成功的一整份收益,如果不成功則沒有收益。挖礦本質上是執行 Hash 函數的過程,而 Hash 函數是一個單輸入單輸出函數,輸入數據就是一個區塊頭,普通礦工會登錄礦池,提交自己的礦池賬號(可以是錢包地址,也可以是代號)和密碼(可以沒有),礦池記錄該賬號的會話,礦池發送任務數據發送給礦工,礦工將結果數據發送給礦池。
Stratum 是挖礦的數據結構,如下 json 格式
礦池源碼:Powerpool,支持混合挖礦,源碼地址https://github.com/sigwo/powerpool
門羅幣節點源碼 https://github.com/monero-project/monero
門羅幣挖礦機源碼 https://github.com/xmrig/xmrig
門羅錢包工具 https://www.getmonero.org/downloads/#cli
Stratum 協議源碼 https://github.com/stratum/stratum
Monero 區塊鏈的節點位置主要分布在中國、美國、歐洲,在其他國家和地區也有少量分布,節點的分布和國家區塊鏈用戶數量有關,區塊鏈節點越多,說明該區塊鏈的用戶也越多。
源碼下載地址:
https://github.com/monero-project/monerolinux平臺編譯好的程序下載:https://getmonero.org/downloads/https://downloads.getmonero.org/gui/linux64https://downloads.getmonero.org/cli/linux64需要安裝最新版本才能正常使用,本人原先測試的是 0.13 版本,現在最新版是 0.17 版本。
使用 setsid ./monerd 啟動門羅幣節點初始化程序,或者使用其他節點地址來初始化節點信息。./monerod --bootstrap-daemon-address node.moneroworld.com:18089
這條命令指的是使用目標節點當作指定的同步數據的節點,可以理解為主從復制,從目標節點拷貝數據到本地。
Monerod 程序自帶查詢網絡節點的參數,可以使用 bootstrap-daemon-address 參數來同步遠程的節點中的區塊數據,以及存儲的其他 monero 幣網絡節點的數據,使用 --seed-node 參數和 print_pl 參數就能夠將所有同步到的所有存儲的網絡節點以字符串的方式打印出來,下方示例是網絡流量示例。
./monerod --seed-node test.com print_pl得到解析后的網絡節點(這里要注意的是,需要先將目標節點信息同步到本地即步驟 2,這樣執行才有結果)。Monerod 節點程序每次只能同步一個節點存儲的節點數據,每次同步的時候除了同步節點數據外,還會同步其他區塊數據。
以下是節點查詢時的流量數據:第一次連接其他節點時的流量數據,可以看到第二次的響應包中包含其他節點存儲的其他節點的數據,通過解析返回結果,又重新進行查詢即可獲得全網節點 IP 和端口。
新的 Monero 節點需要加入整個 Monero 節點的 P2P 網絡當中,需要和其他的一個或多個 P2P 節點進行連接以融入 P2P 網絡節點,Monero 的網絡節點主要包含直連型和隱藏網絡型,直連型指的是直接使用節點就能進行連接,而隱藏網絡型則需要使用 Tor 或者其他代理的方式進行連接。
Monero 節點核心代碼在 Github 上有公開,Github 的項目地址為 github.com/monero-project/monero,Monero 節點項目程序最新版默認硬編碼配置了 14 節點 IP,這些節點也屬于整個 Monero 區塊鏈網絡中的核心節點。
以下是 Monero 項目中核心節點的 IP 信息:在其他來源直接下載的編譯程序中節點的配置會有些許差別,這個是在 getmonero 下載的 0.16 版本程序中硬編碼存儲的 24 個節點地址,有部分和上方節點重合。212.83.175.67:280805.9.100.248:28080163.172.182.165:28080195.154.123.123:28080212.83.172.165:28080192.110.160.146:28080162.210.173.150:38080162.210.173.151:38080192.110.160.146:38080107.152.130.98:18080212.83.175.67:180805.9.100.248:18080163.172.182.165:18080161.67.132.39:18080198.74.231.92:18080195.154.123.123:18080212.83.172.165:18080192.110.160.146:1808088.198.163.90:1808095.217.25.101:18080209.250.243.248:18080104.238.221.81:1808066.85.74.134:18080
除了默認配置節點外,還可以使用其他平臺公開的可信 Monero 節點。
TOR 遠程節點具有隱藏源 IP 的能力可以避免被追蹤,以下是公開的部分 TOR 遠程節點。
查詢出來的節點數據,如果包含 white 標志,說明是活躍節點。如果是 gray 標志,則表明一段時間內未交互,無法確定開放狀態。對于節點的爬取,有兩種方式,第一種去重只爬取 white 節點,第二種爬取所有節點,在爬取之前判斷節點對應端口是否開放,然后進行爬取,第二種爬取方法爬取時間相對較長,但爬取到的活躍節點數更多。
幾種實現方法:
1. 使用掃描器構造請求包全網探測。
2. 使用腳本程序構造對應協議探測包與對應節點進行交互,然后同步存儲的節點信息,接著對節點進行逐個節點信息讀取,構造對應協議包的過程比較復雜,需要較長的編碼時間。
3. 使用 shell 腳本,調用 monerod 程序的自帶讀取遠程節點存儲節點信息的功能,存儲到本地,然后不斷遍歷 IP 列表,最后將存儲的信息匯總。
從覆蓋度層面來說,2 和 3 方式實現探測到的節點數量會大于方式 1 探測到的節點數量,因為這些節點的端口非固定端口,使用掃描器全網探測的方式無法完全覆蓋全部端口,而且探測次數更少。
從投入的時間來講,使用方式 3 實現最少。
本人這里選擇用 shell 腳本進行自動化爬取,通過 monero 節點程序直接進行讀取,首先需要準備環境信息,1)安裝 nc 命令;2)將 monero 節點程序放在外網可訪問處;3)生成一個基礎特定格式的 monero 節點列表文件,monero_node1,里面的格式示例:38 個 A+192.168.1.1 空格,下面就是全部代碼:
在 2019 年 5 月的時候進行探測的結果,總節點數有 15709 個,總節點包含開放的活躍節點和未開放不活躍節點,這些信息是通過遍歷所有活躍的節點中存儲的連接過該節點的 IP 總和。探測活躍節點數為 1812。通過活躍節點之間存儲的 IP 關系進行繪圖分析,將所有的信息梳理成節點 IP ->節點 IP 存儲的其他 IP,用來得到 IP 間的連接關系,可以看到下圖中的大紅原點屬于該門羅幣節點的主要節點,總共有 35 個 IP 地址,除了 Monero 源碼中配置的 14 個外,還有不同的區塊鏈服務商也有提供 21 個核心節點。
大家可以根據 monero 活躍節點關系圖想出一些針對 Monero 的攻擊方式,對應攻擊方式同樣也可以用到相似類型區塊鏈當中,以下前兩種是個人的想法,其他的是網上摘錄下來的。如果大家有新的攻擊思路也可以在下方評論區進行留言討論。
我這里舉例幾種攻擊方法:
1)挖礦算力盜竊攻擊,通過在網絡設備中監控 monero 挖礦提交的相關 hash 區塊,將它同時提交到自己指定的核心網絡節點中,只要自己的網絡速度夠快,這個 hash 塊就會被竊取,這種是針對挖礦者還有礦池的攻擊。
2)Monero 節點接入 IP 監控,削弱 Monero 區塊鏈的隱蔽性,可以知道所有交易發生時的接入 IP,針對那些不是使用平臺和 Tor 等隱藏網絡的使用者的連接 IP 會暴露,可以通過 IP 進一步分析連接者的身份。
3)日蝕攻擊:日蝕攻擊是一種針對 P2P 網絡的攻擊。這種攻擊方法與共識算法關系不大,理論上講對 PoW、PoS、DbFT 等共識算法都有效,但是它非常依賴于節點在 P2P 網絡處理上的漏洞,因此實施攻擊不具備普適性。
4)51% 算力攻擊:51% 算力攻擊是區塊鏈最著名的攻擊方式之一。在一個 POW 共識的區塊鏈網絡中,算力即是權力。當超過 50% 的算力都由一人控制時,此人就可以任意的撤銷和阻止交易,進而實現雙花。這種攻擊在大型網絡中較難實現,在小型網絡中發生的可能性更高。在 POS 共識中與之類似的有幣齡累計攻擊和長距離攻擊。
5)Ddos 攻擊,分布式拒絕服務攻擊,可以通過門羅 P2P 相關協議進行交互,使得目標節點資源耗盡,無法處理其他的正常服務,通常和其他攻擊方式一起使用。
關于如何用代碼搞定Monero活躍節點探測就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
(資料圖片僅供參考)據時間視頻消息,【意大利遇干旱一小鎮禁止理發店給顧客洗兩遍頭:違者最高罰500歐】#意大利一小鎮禁理發店給顧客洗兩遍頭#近日,意大利遭遇持續干旱,該國最大的河流達到70年來的最低水位。小鎮卡斯泰納索推出《節水令》,其中禁止理發店為顧客理發時沖洗兩遍頭發。鎮長Carlo稱,洗頭兩次的慣例,每天會浪費數千公升的水資源。違反要求的理發店將受到最高500歐元(約人民幣3499元)的處罰...
恒大公布三種投資產品兌付方案是什么?為了解決恒大財富投資產品的兌付問題,恒大公布了三種兌付方案供投資者選擇,分別是現金分期兌付、實物資產兌付和抵付購房尾款兌付。投資者可以在三個方案中選擇其中一個,也可以任意組合兩個或三個方案兌付。值得一提的是,就在三天前的9月10日下午,許家印親自主持了“恒大財富座談會”,宣稱“要確保所有到期的理財產品盡快兌付,不虧一分錢&rd...
廣發證券開戶傭金一般為萬分之一2.5,起點5元,買賣雙向收取。營業部可根據投資者的資金量、交易量和委托方式綜合考慮設置,具體可咨詢開戶營業部。A股票的交易費用還包括印花稅和轉讓費:印花稅:交易金額的千分之一,只賣出收費,買入無印花稅;轉讓費:上海A股票雙向收取交易金額的十萬分之二。A股包含在傭金里面,不單獨收取。廣發證券開戶傭金套餐是什么?下面一起來看看其實,廣發證券開戶傭金套餐是傭金費率與服務內...