天天看點

python絕技 — 掃描藍牙RFCOMM信道

RFCOMM協定

  RFCOMM通過藍牙L2CAP協定模拟了RS232序列槽。這會與另一台裝置建立一個藍牙連接配接,模拟一條普通的串行線纜,使使用者能夠用其他裝置控制這一台裝置,通過藍牙打電話,發短信,讀取手機通訊錄,以及轉接或上網等功能。

  我們編寫一個掃描器,找出允許未經認證建立RFCOMM通道的裝置。

代碼

#!/usr/bin/env python
#--*--coding=utf-8--*--
#P191
#sudo pip install pybluez

import time
from bluetooth import *
def rfcommCon(addr,port):
	sock = BluetoothSocket(RFCOMM)
	try:
		sock.connect((addr,port))
		print "[+] RFCOMM port : " +str(port)+\' open\'
		sock.close()
	except Exception,e:
		print \'[-] RFCOMM port :\' +str(port)+\' closed\'

for port in range(1,30):
	rfcommCon(\'FE:XX:XX:XX:XX:57\',port)
      

  

  思路:我們建立一個RFCOMM類型的藍牙套接字(BluetoothSocket),接下來我們向 connect() 函數傳遞一個含有MAC位址和目标端口的元組。如果連接配接成功,即可知道目标RFCOMM通道是否開發并是否處于監聽狀态。如果函數抛出異常,說明無法建立連接配接。

運作結果

python絕技 — 掃描藍牙RFCOMM信道