通过 Linux 下的蓝牙工具破解手机
许多现代手机都可以拍照和拍摄短视频。这非常适合拍摄即兴照片,并在稍后与朋友和家人分享。现代手机通常还具有可替换的主题和铃声,本质上是 30 秒的音频片段。在较新的手机上,铃声通常是 MP3 文件,取代了旧的非标准格式。根据许多无线运营商的说法,将您的媒体文件从手机中取出的唯一方法是使用运营商的数据传输服务给自己发送电子邮件。这可能会变得相当昂贵,尤其是当您拍摄大量照片时。一些手机带有标准的 USB 连接,可以作为 USB 大容量存储设备挂载。许多手机,包括我现在拥有的手机 (Motorola V551),都使用非标准的 USB 连接。因此,我没有购买专用的 USB 数据线,而是决定使用标准的 USB 蓝牙适配器连接到它。该适配器应该适用于任何支持蓝牙协议的手机。
蓝牙是一种无线通信协议,可实现高达 3Mbps 的传输速度和高达 100 米的距离。它目前用于各种设备,例如打印机、键盘、鼠标、无线耳机和 GPS 接收器。蓝牙规范最初由爱立信移动平台的工程师 Sven Mattison 和 Jaap Haartsen 于 1994 年开发,并已被全球 6,000 多家公司采用为标准。大多数现代手机现在都包含某种蓝牙无线功能。
通过使用蓝牙,您可以将文件推送到手机或从手机中拉取文件,如果您想存档用手机拍摄的照片,并且不想为每个文件支付 0.25 美元或更多费用来发送电子邮件,这非常方便。这还允许您从您拥有的 MP3 格式的歌曲创建铃声(许多手机允许您播放标准的 MP3 音频文件)。而且,一些用户将能够通过 PPP 和其他实用程序连接到互联网。在本文中,我们主要关注 Linux 中可用于访问支持蓝牙的手机上的文件的工具。这包括底层命令行实用程序以及 KDE 和 GNOME 下提供的 GUI 应用程序。来自专有的 Windows/Mac 应用程序的类似功能将花费您 15-40 美元。
除了拥有支持蓝牙的手机外,您还需要为您的计算机配备蓝牙连接。许多较新的笔记本电脑都带有内置的蓝牙卡,但大多数台式机都没有。如果您没有内置的蓝牙功能,则需要购买某种蓝牙发射器。最常见的是 USB 1.1 和 2.0 适配器,您可以从零售电子产品店和手机供应商处购买。我购买了一个 D-Link DBT-120 蓝牙适配器,大约 25 美元。即使蓝牙是一个行业标准,最好还是查看硬件兼容性列表,以确保特定型号在 Linux 下能够正常工作。 DBT-120 支持 723Kbps 的非对称速度和 433Kbps 的对称速度。虽然速度不是很快,但对于小文件传输来说,这些速度是合理的。较新的适配器型号将为您提供高达 3Mbps 的速度。
过去,Linux 用户必须重新编译他们的内核才能使蓝牙模块正常工作。幸运的是,几乎所有较新的 Linux 发行版现在默认情况下都在内核中启用了蓝牙。
BlueZ 软件包是 Linux 中蓝牙的默认工具集。您可能需要在开始之前安装蓝牙实用程序。例如,在 Debian 中,您至少应该安装 bluez-utils 软件包。
将蓝牙适配器连接到您的计算机后,您应该检查所有内核模块是否都正确加载
root@host# lsmod | grep blue
这应该产生如下内容
Bluetooth: Core ver 2.8 Bluetooth: HCI device and connection manager initialized Bluetooth: HCI socket layer initialized Bluetooth: HCI USB driver ver 2.9 Bluetooth: L2CAP ver 2.8 Bluetooth: L2CAP socket layer initialized Bluetooth: RFCOMM socket layer initialized Bluetooth: RFCOMM TTY layer initialized Bluetooth: RFCOMM ver 1.7 Bluetooth: HIDP (Human Interface Emulation) ver 1.1
一切看起来都很好。接下来,您需要一些关于您系统的信息
root@host# hciconfig -a
上面的命令会输出很多行。您尤其需要查找这一行
Name: 'BlueZ mycomputername'
在某些情况下,您将看不到 BlueZ 部分,并且计算机名称可能带有尾随 -0。
接下来,使用您喜欢的文本编辑器打开文件 /etc/bluetooth/hcid.conf,并更改以下行
name "BlueZ %h (%d)";
为
name "BlueZ mycomputername";
接下来,创建一个 PIN 码,以便计算机访问手机。打开 /etc/bluetooth/pin 文件,并添加以下内容
PIN:1234
实际的 PIN 码可以是您喜欢的任何内容,并且它可能不会包含在单独的文件中,具体取决于您的发行版。它可能是您的 hcid.conf 文件的一部分,被称为密码而不是 PIN 码。
PIN 码的原因是蓝牙设备需要配对或绑定在一起。这是一种标准的蓝牙安全措施,可防止设备之间出现不必要的连接。第一次通过蓝牙连接到您的手机时,手机会通知您正在尝试建立连接,并提示您输入 PIN 码。如果手机上输入的 PIN 码与配置文件中的 PIN 码不匹配,则连接将被拒绝。大多数手机会为您提供在后续连接上自动连接设备或提示干预的选项。
接下来,重新启动连接计算机上的蓝牙服务器
root@host# /etc/init.d/bluetooth restart
一些手机具有“查找我”模式,需要在扫描时将其打开。查看您的特定手机的蓝牙连接菜单。现在,您已准备好查看蓝牙适配器是否可以看到您的手机或任何其他具有蓝牙功能的附近设备。所以,键入
root@host# hcitool scan
这会返回以下内容
Scanning ... 00:0F:86:89:EC:3D Blackberry 7290 00:14:9A:C9:BB:62 Motorola Phone 00:16:CB:2A:7D:DB Mac_1
每个设备名称都与其 MAC 地址一起列出。
Mac_1 是我的 USB 蓝牙适配器。 Motorola Phone 是我在手机的蓝牙设置菜单中指定的名称。 BlackBerry 7290 也是一个附近的设备,我的适配器也在接收它。
另一个有用的命令是sdptool search DUN。这提供了您设备的详细信息
Inquiring ... Searching for DUN on 00:16:CB:2A:7D:DB ... Searching for DUN on 00:14:9A:C9:BB:62 ... Service Name: Dial-up networking Gateway Service Description: Dial-up networking Gateway Service Provider: Generic Cellphone Service Service RecHandle: 0x10001 Service Class ID List: "Dialup Networking" (0x1103) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 1 Language Base Attr List: code_ISO639: 0x656e encoding: 0x6a base_offset: 0x100 code_ISO639: 0x6672 encoding: 0x6a base_offset: 0xd800 code_ISO639: 0x6573 encoding: 0x6a base_offset: 0xd803 code_ISO639: 0x7074 encoding: 0x6a base_offset: 0xd806 Profile Descriptor List: "Dialup Networking" (0x1103) Version: 0x0100
现在,您已准备好开始将文件推送到手机或从手机中拉取文件。让我们研究一下 KDE 和 GNOME 中可用的工具。
KDE 蓝牙框架构建在 BlueZ 堆栈之上,并且可以在直观的 GUI 界面中利用命令行工具的所有功能。最初,它是一个附加应用程序,但由于蓝牙设备的激增,它已合并到基线 KDE 桌面中。访问您的数据的最简单方法是通过 Konqueror 文件管理器。将蓝牙适配器插入您的计算机后,您应该会在 Kicker 面板上看到蓝牙图标。打开 Konqueror,然后在导航工具栏中输入bluetooth:///。
您应该会看到附近启用蓝牙的设备的列表(图 1)。单击您的手机,您应该会看到可用服务的列表(图 2)。对于推送和拉取文件,我们最关心的是 OBEX 文件传输和 OBEX 对象推送。选择 OBEX 文件传输会显示您设备上的媒体文件文件夹(图 3)。就我而言,我有单独的音频、图片和视频剪辑文件夹。单击任何文件夹应显示您设备上当前的文件。现在,您只需在 Konqueror 中复制并粘贴即可将文件复制/移动到计算机上的主文件夹。第一次执行此操作时,系统会提示您在手机上输入 PIN 码。除非在手机的蓝牙设置中指定,否则后续的文件传输不需要 PIN 码。如果您想将文件从计算机复制到您的设备,请选择 OBEX 对象推送。
系统会显示一个弹出窗口,询问您是否要打开 kbluetooth 客户端。选择“是”,您应该会在客户端的左侧(设备选择器)列中看到您的设备列表(图 4)。客户端应用程序的顶部显示您的系统文件夹。屏幕的右侧包含一个空白区域,标题为“要发送的文件”。只需进入您的一个系统文件夹,然后单击要复制到手机的文件。现在,将其拖放到“要发送的文件”窗格中。单击“发送”按钮。您的手机会提醒您并询问您是否要接受来自计算机的文件传输。单击“是”,文件传输开始(图 5)。文件传输完成后,您应该能够在您的手机或 PDA 上找到该文件。没有比这更容易的了。 Konqueror 再次证明了它是一个多么出色的文件管理器。
KMobileTools 应用程序仍被认为是 alpha 软件,但它看起来很有前途。它是一个 KDE 附加应用程序,允许您使用 KAddressbook 应用程序备份、编辑和导入手机的联系人列表到您的计算机。这允许您将手机或 PDA 上的联系人列表与您的电子邮件联系人列表同步。您不再需要为您的手机和电子邮件客户端维护单独的联系人列表。
另一个有趣的功能是能够从计算机远程控制您的手机。您可以让手机拨打保存在联系人列表中的号码,或者通过拨出号码字段键入另一个号码。您还可以通过手机发送 SMS 消息。如果您需要发送长消息并且不想通过手机的键盘输入来伤害您的拇指,这非常方便。 KMobileTools 还会显示手机的电池电量百分比和信号强度状态。
为了不被 KDE 超越,GNOME 桌面还提供了一组有用的工具,用于将文件传输到您的蓝牙设备。有一个基于 GNOME 的 hcitool 前端,可以通过键入gnome-bluetooth-admin从终端会话启动。单击“扫描”按钮,您应该会看到附近蓝牙设备的列表。打开 Nautilus 文件管理器,然后键入bluetooth:///在导航工具栏中,应该会出现一个代表您的手机或PDA的图标。接下来,打开另一个Nautilus会话,拖动您要传输的文件图标,然后将它们放到蓝牙设备的图标上。您应该在手机上看到一条消息,询问您是否要接受来自计算机的文件。您还可以右键单击要发送的文件的图标,然后选择“通过蓝牙发送”来初始化文件传输。传输完成后,您应该在手机上看到新文件。
另一个很棒的应用程序是Phone Manager,它是GNOME对KMobileTools的回应。Phone Manager允许您监视设备的状态,发送和阅读手机的短信,并将您的联系人列表与Evolution的地址簿集成。
现在您可以将文件推送到手机并从手机拉取文件,让我们创建一些铃声。为什么要创建自定义铃声?您可以偷懒,从您的服务提供商那里以每个 2.50 美元的价格购买它们,或者您可以获得一些乐趣,学习一些新东西并为自己省钱。就我个人而言,我更喜欢后者。许多较新的手机允许您播放标准的MP3文件,无需进行任何调整。
如果您的手机存储空间有限,最好在Audacity中减小音频文件的大小。第一步是将您的歌曲导入到Audacity的新项目中。将歌曲修剪成大约30秒的片段,选择您喜欢的歌曲片段。接下来,修改片段,使其变为单声道。(这将进一步缩小文件大小。)单击音轨的文件名,然后选择“拆分立体声轨道”。单击轨道左上角的 X 删除片段的右声道。选择剩余的声道,然后单击音轨名称旁边的向下箭头。您将看到一个下拉菜单,其中包含“单声道”、“左声道”和“右声道”条目。选择“单声道”。
接下来,您需要标准化该片段。首先,按 Ctrl-A 选择整个轨道。然后,在 Audacity 主工具栏中的“效果”下拉菜单中选择“标准化”条目。
现在,您可以对铃声的MP3文件进行编码了。单击“文件”,然后选择“将选定内容导出为MP3”。将新的MP3文件简单地移动到手机上的音频文件夹中,如本文前面所述。这是使用FOSS应用程序创建自定义铃声的好方法。
如果您的启用蓝牙的手机或PDA具有GPRS或EDGE网络功能,则可以使用它作为调制解调器。需要注意的是,许多手机提供商会锁定手机的此功能,除非客户拥有数据套餐。数据套餐的价格差异很大,具体取决于您允许的吞吐量以及您使用的运营商。我获得了一个每月 25 美元的入门计划。无限数据套餐可能每月花费 60 美元左右。对于可能前往宽带不易获得但手机服务可用的地区的公路旅行者来说,这是一个不错的选择。在我的手机提供商的网站上,没有提到Linux用户可以使用此服务。但是,该提供商为Windows用户提供了一个自定义应用程序。该应用程序为用户提供使用其服务的 Internet 访问权限。Mac OS X 用户被降级为客户支持网站上的操作方法文档。
只有当我要求与技术支持人员交谈时,提供商才公开承认可以在Linux下进行连接。然后,我收到一个自定义脚本,该脚本调用 WvDial PPP 拨号应用程序。该脚本包含要传递给手机并连接到拨号服务的特定初始化参数。技术支持人员最初声称只有通过定制的摩托罗拉USB电缆将手机连接到笔记本电脑,我才能使用此服务。方便的是,他们以 30 美元的价格出售此电缆,并立即提出要卖给我。我沟通说,我能够使用通用的蓝牙适配器无缝地将数据传递到手机和从手机传递数据。此时,技术支持人员承认 USB 电缆不是必需的。然后,我支付了一个月的服务费用,并被告知客户支持不为Linux用户提供任何帮助。那里没什么新鲜的。随后,我发送了一封电子邮件给客户支持,要求他们在他们的支持页面上承认数据服务在Linux下可以完美运行。截至本文撰写之时,我尚未收到他们的回复。
Linux下可用于蓝牙设备的工具非常强大。它们提供了Windows和Mac下可用的类似封闭应用程序的所有功能,而且是免费的。再次,Linux社区应该因开发如此出色的程序而受到赞扬。命令行工具可以很好地了解访问蓝牙设备中使用的协议和服务。GUI应用程序非常直观,以至于普通Linux用户可以在短时间内很好地使用它们。Linux 在不断增长的通信设备和管理它们的应用程序领域中占有一席之地。
资源
Linux的BlueZ蓝牙协议栈:www.bluez.org
KDE蓝牙框架:bluetooth.kmobiletools.org
GNOME蓝牙子系统操作指南:usefulinc.com/software/gnome-bluetooth
Gentoo蓝牙Wiki:gentoo-wiki.com/HOWTO_mobile_phone,_Bluetooth_and_GNOME
通用Linux和蓝牙链接:www.holtmann.org/linux/bluetooth
KMobileTools应用程序:www.kmobiletools.org
GNOME Phone Manager:live.gnome.org/PhoneManager
Audacity音频编辑器:audacity.sourceforge.net
Patrick M. Davila 是一名程序员,自 1998 年以来一直是 Linux 爱好者。他是The Linux Link Tech Show的联合主持人,这是互联网上持续运行时间最长的 Linux 节目。当不摆弄 Linux 时,Patrick 喜欢音乐、啤酒、足球和与家人共度时光。