最近在學習搭建數據庫服務,因為跟產品相關所以需要從流量中拿到mysql的數據包。然后就想着在本機搭建mysql數據庫,然后連接,用wireshark抓就行了。
MySQL搭建用的是XAMPP,想說XAMPP真的是很強大啊,方便簡單,對測試小白來說搭建簡單的環境真是神器存在,說岔了......開啟web服務和mysql服務之后,一通操作,什么添加用戶,新建數據庫表,然而wireshark並沒抓到包。
換種方法,在自己的虛擬機上裝了一個MySQL數據庫,然后本機用SecureCRT利用ssh登上虛擬機,再一通連接數據庫等各種操作,這時候抓的包都是ssh協議的。恩...一定是哪里不對,思考思考,上面兩種辦法的源地址和目的地址都是同一個啊,應該會有影響,所以決定用另一種方法,遠程連接mysql,這下應該就可以了
遠程連接mysql:遠程連接之前需要配置Mysql允許遠程連接,改表法,授權法,百度之后通通試一遍,這里參考https://www.cnblogs.com/skyWings/p/5952795.html ,配置完成之后,本機進入DOS命令窗口,連接MySQL,開始抓包:mysql -h "ip" -u root -p "password"
這里顯示連接成功,wireshark也終於抓到mysql數據包,喜悅之情有點難以自抑啊....
那為啥第一次抓不到包呢,后來經查資料發現:(以下內容很重要很基礎,最容易被忽略)
當自己電腦既是客戶端又是服務器時,互相訪問時流量並沒有經過網卡,windows系統又沒有提供本地回環網絡的接口,wireshark在windows系統上默認使用的是WinPcap來抓包的,用它監控網絡的話只能看到經過網卡的流量,看不到訪問localhost的流量,所以才會出現第一次連接始終沒有數據包的狀況。解決這個問題的兩種辦法是:要么服務器和客戶端不要在同一台機器上,要么用Npcap來替換掉WinPcap,Npcap提供環回接口
雖然內容很基礎,但是通過這次操作,發現了以前一直忽略的問題,也算學到了新知識點,還是有點成就感的。