㈠ 如何安装android SDK和设置ADB
安装Android SDK和设置ADB步骤:
注:在安装前,首先要配置JDK环境变量,JDK在java官网下载即可。
一、 JDK环境配置:
1. 安装好jdk后右击"我的电脑">属性>高级>单击"环境变量"按钮
2. 点击"系统变量"选项框中的"新建"按钮
3. 在变量名右边的文本框中输入 JAVA_HOME
4. 在变量值右边的文本框中输入jdk的安装路径(如盘符:*Javajdk1.*)直到jdk文件夹根目录,之后点确定保存退出
7.在变量名右边的文本框中输入CLASSPATH
8.在变量值右边的文本框中输入".;%JAVA_HOME%jrelib t.jar.;%JAVA_HOME%lib ools.jar" 点确定>确定>确定后保存退出
二、测试
1. 配置好环境后:开始>运行>cmd 在命令窗口输入java -version
2. 回车后如果显示有java version "1.*.x"则说明安装好再输入java>回车>javac>回车后,显示相关jdk相关信息则说明配置成功
三、SDK安装成功后,配置环境变量(SDK安装需要“翻墙”在Google上网才能下载安装包)
1. 鼠标右键击"我的电脑">属性>高级系统设置>高级>单击"环境变量"按钮
2. 在系统变量中,双击下拉列表中变量为"Path"的项
3.在弹出的对话框中的变量值右边的文本框的最后输入adb.exe和fastboot.exe所在的盘符,如”; C:Workandroid-sdk_r07-windowsandroid-sdk-windowsplatform-tools”点击确定退出设置即可
四、ADB调试
1. 将手机设置为debug模式,在开发者选项中
2. 手机通过USB线插上电脑,连接成功以后,第一次连接的手机会在手机屏幕上显示一串字符,直接选择接受。
3. 打开CMD,输入:ADB devices,看是否出现以下
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
248227000396 device
如果出现
adb server is out of date.killing
ADB server didn't ACK
* failed to start daemon *
请按照以下步骤操作:
1. 关闭所有的防火墙软件
2. 在cmd窗口输入:C:Usersxxxx>adb nodaemon server, 系统提示“ cannot bind 'tcp:5037' 这是ADB所需要的5037端口被占用了,关掉占用的进程即可。
总结:安装Android SDK和设置ADB时,先要安装JDK,配置环境变量,然后安装SDK,配置环境变量,最后ADB调试 顺序不能弄反,JDK、SDK、ADB和fastboot工具要提前下载好
㈡ 怎样在Ubuntu下安装Android SDK/ADB
Ubuntu电脑安装Android SDK/ADB
第一步,你要下载linux版Android SDK的安装或文件包,然后你需要从Android SDK Manager内下载Platform Tools
Package
请从Google官方获取Android
SDK安装或文件包,通常情况,你下载的文件名为android-sdk_rxx-linux.tgz的形式,rxx代表版本,比如,r16版,即android-sdk_r16-linux.tgz,r24版,即android-sdk_r24-linux.tgz
请放置Android SDK安装或文件包在你的用户主目录
在你的Ubuntu电脑上打开终端窗口
解压Android SDK文件:
cd ~
tar -zxvf android-sdk_r16-linux.tgz
在~/android-sdk-linux/tools字目录,有一个叫做android的可执行文件,尽管名字是android,但它实际上是Android
SDK Manager
运行Android SDK Manager:
./~/android-sdk-linux/tools/android
选择Android SDK
Tools与Android SDK Platform-tools项,点Install
packages安装Platform Tools
Package工具包。包括ADB与Fastboot可执行的文件在内的工具包都会被下载,由于下载的文件较多而需要一定的时间,你能去喝点东西
你下载的Platform Tools
Package工具包文件将位于新创建的~/android-sdk-linux/platform-tools目录
第二步,修改ADB与Fastboot可执行文件的默认PATH路径环境。PATH环境变量可以是在~/.profile(或~/.bash_profile)或者~/.bashrc文件内修改,~/.profile文件是读取所有交互式Shell的登录,~/.bashrc文件读取所有非交互式Shell的登录(如sftp),在大多数默认情况下,~/.profile文件导入所有~/.bashrc文件的设置。PATH命令设定的改变必须包括/android-sdk-linux/tools与/android-sdk-linux/platform-tools目录
kevdog的PATH命令设定通过Ubuntu系统内初始的默认编辑器Gedit在~/.bashrc文件底部增加了一行:
export
PATH=${PATH}:${HOME}/android-sdk-linux/tools:${HOME}/android-sdk-linux/platform-tools
第三步,我们需要为Ubuntu创建udev设备管理规则,从而让设备在通过USB端口连接到电脑时能被正确地识别
将设备连接到电脑,然后执行命令:
lsusb
你会看到类似于下面的输出信息:
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation
2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004
Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001:
ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 063: ID 04e8:6860
Samsung Electronics Co., Ltd
由于kevdog的设备是Samsung的某款设备,因此你能看到相应的识别信息:
Bus 001 Device 063: ID
04e8:6860 Samsung Electronics Co., Ltd
我们来解释下上面的识别信息:
Bus 001 Device
063,设备端的名称是/dev/bus/usb/001/063,即这个信息可以帮助我们确定设备端的名称
04e8,vendorID,即供货商编号
6860,proctID,即产品编号
使用设备端的名称/dev/bus/usb/001/063可以让我们查询设备的属性,查询这些属性有时很有必要,因为udev设备管理匹配设备是基于特定标准的。为此,我们需要一个正确的udev设备匹配规则集,这个过程的第一步就是查询能被连接或插入到我们规则集的准则,这可以通过udevadm程序来实现,并且有两种方式现,它们生成的输出信息为我们的设备构建udev设备管理规则:
udevadm查询udev设备管理规则方法1:
udevadm info -q all -n <name of device
node>
根据原作者的实际情况,设备端名称是/dev/bus/usb/001/063,因此命令是:
udevadm info -q all -n /dev/bus/usb/001/063
你会看到类似于下面的输出信息:
$ udevadm info -q all -n /dev/bus/usb/001/063
P:
/devices/pci0000:00/0000:00:1d.7/usb1/1-8
N: bus/usb/001/063
S:
libmtp-1-8
S: GalaxyNexus
E: UDEV_LOG=3
E:
DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb1/1-8
E: MAJOR=189
E:
MINOR=62
E: DEVNAME=/dev/bus/usb/001/063
E: DEVTYPE=usb_device
E:
DRIVER=usb
E: PRODUCT=4e8/6860/216
E: TYPE=0/0/0
E: BUSNUM=001
E: DEVNUM=063
E: SUBSYSTEM=usb
E: ID_MTP_DEVICE=1
E:
ID_MEDIA_PLAYER=samsung_galaxy-s2
E: ID_VENDOR=samsung
E:
ID_VENDOR_ENC=samsung
E: ID_VENDOR_ID=04e8
E: ID_MODEL=Galaxy
E:
ID_MODEL_ENC=Galaxy
E: ID_MODEL_ID=6860
E: ID_REVISION=0216
E:
ID_SERIAL=samsung_Galaxy_0146B06501005018
E:
ID_SERIAL_SHORT=0146B06501005018
E: ID_BUS=usb
E:
ID_USB_INTERFACES=:ffff00:ff4201:
E: DEVLINKS=/dev/libmtp-1-8
/dev/GalaxyNexus
E: TAGS=:udev-acl:
我们使用的规则从有E:(E=ENV=Device
Property设备属性值)的行开始
udevadm查询udev设备管理规则方法2:
udevadm info -a -p $(udevadm info -q path
-n <name of device node>)
根据原作者的实际情况,设备端名称是/dev/bus/usb/001/063,因此命令是:
udevadm info -a -p
$(udevadm info -q path -n /dev/bus/usb/001/063)
你会看到类似于下面的输出信息:
$ udevadm info -a -p $(udevadm info -q path -n /dev/bus/usb/001/063)
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found,
all possible attributes in the udev rules key format.
A rule to match, can
be composed by the attributes of the device
and the attributes from one
single parent device.
looking at device
'/devices/pci0000:00/0000:00:1d.7/usb1/1-8':
KERNEL=="1-8"
SUBSYSTEM=="usb"
DRIVER=="usb"
ATTR{configuration}==""
ATTR{bNumInterfaces}==" 2"
ATTR{bConfigurationValue}=="1"
ATTR{bmAttributes}=="80"
ATTR{bMaxPower}=="500mA"
ATTR{urbnum}=="29"
ATTR{idVendor}=="04e8"
ATTR{idProct}=="6860"
ATTR{bcdDevice}=="0216"
ATTR{bDeviceClass}=="00"
ATTR{bDeviceSubClass}=="00"
ATTR{bDeviceProtocol}=="00"
ATTR{bNumConfigurations}=="1"
ATTR{bMaxPacketSize0}=="64"
ATTR{speed}=="480"
ATTR{busnum}=="1"
ATTR{devnum}=="63"
ATTR{devpath}=="8"
ATTR{version}==" 2.00"
ATTR{maxchild}=="0"
ATTR{quirks}=="0x0"
ATTR{avoid_reset_quirk}=="0"
ATTR{authorized}=="1"
ATTR{manufacturer}=="samsung"
ATTR{proct}=="Galaxy"
ATTR{serial}=="0146B06501005018"
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1':
KERNELS=="usb1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{configuration}==""
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="e0"
ATTRS{bMaxPower}==" 0mA"
ATTRS{urbnum}=="1403"
ATTRS{idVendor}=="1d6b"
ATTRS{idProct}=="0002"
ATTRS{bcdDevice}=="0300"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="480"
ATTRS{busnum}=="1"
ATTRS{devnum}=="1"
ATTRS{devpath}=="0"
ATTRS{version}==" 2.00"
ATTRS{maxchild}=="8"
ATTRS{quirks}=="0x0"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{authorized}=="1"
ATTRS{manufacturer}=="Linux 3.0.0-14-generic
ehci_hcd"
ATTRS{proct}=="EHCI Host Controller"
ATTRS{serial}=="0000:00:1d.7"
ATTRS{authorized_default}=="1"
looking at parent device '/devices/pci0000:00/0000:00:1d.7':
KERNELS=="0000:00:1d.7"
SUBSYSTEMS=="pci"
DRIVERS=="ehci_hcd"
ATTRS{vendor}=="0x8086"
ATTRS{device}=="0x27cc"
ATTRS{subsystem_vendor}=="0x103c"
ATTRS{subsystem_device}=="0x3010"
ATTRS{class}=="0x0c0320"
ATTRS{irq}=="20"
ATTRS{local_cpus}=="ff"
ATTRS{local_cpulist}=="0-7"
ATTRS{dma_mask_bits}=="32"
ATTRS{consistent_dma_mask_bits}=="32"
ATTRS{broken_parity_status}=="0"
ATTRS{msi_bus}==""
ATTRS{companion}==""
looking at
parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""
我们使用的规则从有ATTRS(ATTRS=Device
Attributes设备属性)的行开始
不管是ENV,还是ATTRS,我们可以构建一个udev设备管理规则集。规则集的名称可以随意,根据原作者的意图,我们叫做51-android.rules:
你能这样建立规则集文件:
gksu gedit /etc/udev/rules.d/51-android.rules
之后,请在规则集文件中加入相关的规则,以原作者的规则来看,注意是一行一个:
SUBSYSTEM=="usb",
ENV{ID_VENDOR_ID}=="04e8", ENV{ID_MODEL}=="Galaxy", MODE="0666",
SYMLINK+="GalaxyNexus"
SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="04e8",
ENV{ID_MODEL_ID}=="6860", MODE="0666", SYMLINK+="GalaxyNexus"
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProct}=="6860",
ATTR{proct}=="Galaxy" MODE="0666", SYMLINK+="GalaxyNexus"
如上面所加的规则,这些规则匹配准则是SUBSYSTEM,
ENV,ATTR,它只会修改设备的模式MODE(0666=rw-rw-rw-)与创建链接于/dev/GalaxyNexus的GalaxyNexus标识。当然,更多的指令可以分配给设备,如插入或移除设备时的执行命令,你能这样指定指令:
ACTION=="add", RUN+="<name of action>"
ACTION==”remove”,
RUN+="<name of action>"
例如,我们要设定设备在插入或弹出时播放一个声音或MP3文件,可以如下指令设定:
ACTION=="add", RUN+="/usr/local/bin/NexusMount.sh"
ACTION==”remove”, RUN+="/usr/local/bin/NexusUnmount.sh"
需要注意的是,每个ACTION指令设定必须在它自己的命令行;目录必须正确;指令可以是多重设定
一旦规则构建完成,我们需要保存/etc/udev/rules.d/51-android.rules规则文件
在你执行规则集前,测试一下通常是一个好主意,因为那样你能很容易地找出编写规则集的错误:
你能使用udevadm工具简单地完成规则集的测试:
udevadm info -q path -n d=<device
name>
根据原作者的设备端名/dev/bus/usb/001/063,测试行为:
udevadm test --action="SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="04e8",
ENV{ID_MODEL}=="Galaxy" MODE="0666", SYMLINK+="GalaxyNexus"" $(udevadm info -q
path -n /dev/bus/usb/001/063)
虽然测试输出行相当长,两行输出信息正确地识别规则集的指令设定:
udev_rules_apply_to_event: MODE 0666
/etc/udev/rules.d/51-android.rules:1
udev_rules_apply_to_event: LINK
'GalaxyNexus' /etc/udev/rules.d/51-android.rules:1
一旦你确认了规则集正确,请重启udev设备管理服务:
sudo service udev restart
第四步,退出电脑的登录,然后重新登录回
在设备插入的情况下,执行ADB命令,如确认设备连接:
$ adb devices
你会看到设备识别号信息,根据原作者的设备,它是
0146B06501005018 device
如果你的设备已启动在Fastboot模式,许多设备不启动可能也行,你能执行Fastboot命令,如标准的Fastboot设备:
$
fastboot devices
㈢ Flutter 的 SSH / SFTP 插件 - ssh
用于创建 SSH / SFTP 客户端的 Flutter 插件,iOS 端封装了 NMSSH ,Android 端封装了 JSch 。支持 SSH 执行命令、实时 Shell 和基本的 SFTP 操作,同时支持密码或密钥验证。
GitHub
Dart Pub
在 pubspec.yaml 文件中添加 ssh 依赖:
请参考 example 。
㈣ 如何将使用crt连接android手机
以N900为例
1、在N900端安装两个软件分别是:openssh client和openssh server
2、然后设置你的N900的网络IP了
打开控制面板
打开你的网络连接
选择你的WIFI然后编辑
一直下一步到最后一步点击高级按键
设置你的N900IP(这里请根据你自己的无线路由设置。。不同牌子的无线路由设置不同。。祥情请参照你自己的无线路由的说明书)
VanDyke CRT 和 VanDyke SecureCRT是最常用的终端仿真程序,简单的说就是windows下登录UNIX或Liunx服务器主机的软件。二者不同的是SecureCRT支持SSH?(SSH1和SSH2)
[概念解释]什么是SSH?
SSH的英文全称是Secure Shell。
传统的网络服务程序,如:ftp和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而通过使用SSH客户端与服务器端通讯时,用户名及口令均进行了加密,有效防止了对口令的窃听。同时通过SSH的数据传输是经过压缩的,所以可以提高数据的传输速度,既然如此我们为什么不使用它呢。SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x和2.x。至于具体如何安装服务器端,普通用户就不需要关心了。
3、首先要下载SecureCRT,
安装过程很简单,安装完成后,第一次启动SecureCRT会有如下提示:
用户需要指定一个目录,用来存放SecureCRT的配置信息。此目录默认为C:\Documents and Settings\用户名\Application Data\VanDyke\Config,如果是升级SecureCRT需要保持此文件夹与旧版本一致,如果重装系统,一定要备份此目录。
如果需要更改,启动SecureCRT后点击Options => Global Options => General修改 Configuration folder即可。
2
基本设置
1、退出主机自动关闭窗口
Options => Global Options => General => Default Session => Edit Default Settings...
Terminal中将Close on disconnect 选上,当用户从主机中退出后可以自动关闭当前连接的窗口。
2、修改默认卷屏行数
当你做一个操作,屏幕输出有上百行,当需要将屏幕回翻时,这个设置会有很大帮助,默认为500行,可以改为10000行,不用担心找不到了。
Terminal => Emulation => Scrollback 修改为10000。
3、修改SFTP默认下载路径(可选):
对于使用SSH的连接中,可以使用SFTP下载文件,在这里可以设置文件的下载目录(默认为下载到“我的文档”中)
Connection => SSH2 => SFTP Tab => Initial directories => Local directory
4、拷贝与粘贴的设置
通过鼠标操作即可拷贝或粘贴所需内容是一个非常方便的设置
Options => Global Options => Terminal => Mouse
选中Copy on select 和 Paste on middle button
这样设置后,只要用鼠标选中所需内容,则将内容拷贝到剪切板中,点击鼠标中键即可粘贴内容。
另外可以设置使用Windows下的拷贝粘贴快捷键,Options => Global Options => General => Default Session => Edit Default Settings... => Terminal => Mapped keys => Use windows and paste hotkeys
6、Tabs设置
从Secure5.0以后,增加了Tabs(标签)选项,多个连接可以在同一个窗口下打开,类似IE7.0的风格。将Double-click 选项修改为 Close Tab,双击标签可关闭连接窗口。
3
界面介绍
1、菜单
1)File 文件
Connect... 连接,打开一个连接或者编辑已有的连接,创建新连接。
Quick Connect... 快速连接,快速连接对话框,快速连接主机的最便捷方式
Connect in Tab... 在Tab中打开一个新的会话窗口。
Clone Session 克隆当前会话窗口。
Connect SFTP Tab 打开SFTP窗口,对于SSH连接,此选项可用。在此会话窗口中可使用SFTP命令传输文件。
Reconnect 重新连接
Disconnect 中断当前会话窗口的连接
Log Session 把当前窗口的会话记录到log文件中。
Raw Log Session 将更详细的会话记录到log文件中,包括服务器更详细的响应信息。
Trace Options 在log文件中记录协议会话信息选项。(包括客户端与主机互相连接时的一些信息内容)
2)Edit 编辑
拷贝粘贴等
3) View 视图
显示各种工具条
4) Options 选项
包括全局选项和Session选项
5) Transfer 传递文件
使用Xmodem/Zmodem上传下载文件
6) Script 脚本
运行一个脚本文件,或记录一个新的脚本。(类似Word中的宏功能)
7) Tools 工具
键盘映射编辑,密钥生成工具等
8) Help 帮助
2、对话框和按钮
点击File => Connect可出现Connect对话框。
从左至右按钮依次为:
连接(激活选中的连接条目);快速连接(快捷连接新的主机);新建连接(在对话框中新增一个连接条目);剪切;复制;粘贴;删除(对话框中的条目);新建文件夹,属性(显示选中条目的属性),创建条目的桌面快捷方式,帮助。
Connect对话框下方有两个选项:
Show dialog on start (启动SecureCRT时显示Connect对话框);
Open in a tab (以新标签卡的形式打开一个会话),选中此选项,新的会话窗口如下图所示:
4
使用方法
1、新建连接
File => Connect => 点击 New Session 按钮,出现以下窗口,填写连接的名字,协议(SSH1,SSH2,Telnet, Rlogin等)
点击SSH2选项,填写主机名或者IP地址,端口号,用户名。另外可设置会话窗口的颜色方案,点击Appearance选项,可自己设计或者选择已有的颜色方案,更改字体,光标等。
2、快速连接
点击快速连接按钮出现下面的对话框,填入主机信息和用户名即可快速连接。
下面有两个选项Save session(保存快速连接的信息到连接对话框中);Open in a tab (以新标签卡的形式打开一个会话)
3、使用SSH连接主机
按照上面的介绍新建一个SSH连接,如果是第一次连接会有如下提示,点击Accept & Save即可。
基本上只要完成了上述步骤之后你的电脑就可以SSH到你的N900了
㈤ csdn上有没有android手机做sftp的例子
貌似没有,不过我在网上找,最后整理了一下!写出了这个方法!
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.util.Date;
importjava.util.Properties;
importjava.util.Vector;
importandroid.content.Context;
importandroid.telephony.TelephonyManager;
importandroid.text.format.DateFormat;
importandroid.text.format.Time;
importcom.jcraft.jsch.Channel;
importcom.jcraft.jsch.ChannelSftp;
importcom.jcraft.jsch.JSch;
importcom.jcraft.jsch.Session;
importcom.jcraft.jsch.SftpException;
publicclassSftp_upload{
/**
*连接sftp服务器
*@paramhost主机
*@paramport端口
*@paramusername用户名
*@parampassword密码
*@return
*/
publicChannelSftpconnect(Stringhost,intport,Stringusername,Stringpassword){
ChannelSftpsftp=null;
try{
JSchjsch=newJSch();
jsch.getSession(username,host,port);
SessionsshSession=jsch.getSession(username,host,port);
System.out.println("Sessioncreated.");
sshSession.setPassword(password);
PropertiessshConfig=newProperties();
sshConfig.put("StrictHostKeyChecking","no");
sshSession.setConfig(sshConfig);
sshSession.connect();
System.out.println("Sessionconnected.");
System.out.println("OpeningChannel.");
Channelchannel=sshSession.openChannel("sftp");
channel.connect();
sftp=(ChannelSftp)channel;
System.out.println("Connectedto"+host+".");
//System.out.println("登录成功");
}catch(Exceptione){
}
returnsftp;
}
/**
*上传文件
*@paramdirectory上传的目录
*@paramuploadFile要上传的文件
*@paramsftp
*/
publicvoipload(Stringdirectory,StringuploadFile,ChannelSftpsftp){
try{
sftp.cd(directory);
Filefile=newFile(uploadFile);
StringcurrentTime=DateFormat.format("yyyy_MM_dd_hh_mm_ss",newDate()).toString();//获取时间
Stringfilename=currentTime+".wav";//文件名为当前时间来保存
sftp.put(newFileInputStream(file),filename);System.out.println("上传成功!");
}catch(Exceptione){
e.printStackTrace();
}
}
/**
*下载文件
*@paramdirectory下载目录
*@paramdownloadFile下载的文件
*@paramsaveFile存在本地的路径
*@paramsftp
*/
publicvoiddownload(Stringdirectory,StringdownloadFile,StringsaveFile,ChannelSftpsftp){
try{
sftp.cd(directory);
Filefile=newFile(saveFile);
sftp.get(downloadFile,newFileOutputStream(file));
}catch(Exceptione){
e.printStackTrace();
}
}
/**
*删除文件
*@paramdirectory要删除文件所在目录
*@paramdeleteFile要删除的文件
*@paramsftp
*/
publicvoiddelete(Stringdirectory,StringdeleteFile,ChannelSftpsftp){
try{
sftp.cd(directory);
sftp.rm(deleteFile);
}catch(Exceptione){
e.printStackTrace();
}
}
/**
*列出目录下的文件
*@paramdirectory要列出的目录
*@paramsftp
*@return
*@throwsSftpException
*/
publicVectorlistFiles(Stringdirectory,ChannelSftpsftp)throwsSftpException{
returnsftp.ls(directory);
}
//上传文件
publicstaticvoidSftp_server(Stringfile,Stringimsi){
StringImsi=imsi;
Sftp_uploadsf=newSftp_upload();
Stringhost="192.168.1.60";
intport=22;
Stringusername="root";
Stringpassword="123456";
Stringdirectory="/data/test/wav";
//StringuploadFile="c:\audiocheck\test.wav";
StringuploadFile=file;
//StringdownloadFile="/data/test/wav/lame.sh";
//StringsaveFile="c:\audiocheck\content.txt";
//StringdeleteFile="c:\audiocheck\content.txt";
ChannelSftpsftp=sf.connect(host,port,username,password);
//sf.download(directory,downloadFile,saveFile,sftp);
//sf.delete(directory,deleteFile,sftp);
try{
sftp.cd(directory);
sftp.mkdir(Imsi);//创建目录
System.out.println("finished");
}catch(Exceptione){
e.printStackTrace();
}
directory="/data/test/wav/"+imsi;
sf.upload(directory,uploadFile,sftp);//上传文件到服务器
}
}
这是源代码
这个是上传
//imsi也就是手机的型号来创建文件夹的,这些你都可以修改的。
Stringfile=mWorkdir+"/"+"resFile.wav";//要上传的文件
Sftp_upload.Sftp_server(file,imsi);//上传文件
System.out.println("已上传");
㈥ 如何获取安卓ios上的im记录,通过metasploit控制安卓
安卓设备已获取root权限,安装SSHDroid(通过ssh、ftp连接手机)
Apple设备越狱,安装OpenSSH插件
0×01 安卓:
很多安卓手机的用户都会遇到这么一个尴尬的问题:手机用久了就不知不觉变得慢了,最后慢到什么都迟钝了。为了解决这个问题和大多数人一样我选择了root设备。
安卓设备在root以后可以对系统文件存在最高级别的操作权限。比如,你在安卓设备上安装了微信,那么root以后通过adb shell你能对微信App的文件配置进行读取修改等操作。
Android应用程序的数据库文件通常会保存在
/data/data/packagename/database 文件夹下,微信App文件存放路径为:/data/data/com.tencent.mm/MicroMsg
首先通过FTP把文件down到本地:
以34位编码(类似于乱码)命名的文件夹中可找到微信账号的加密数据库文件 :EnMicroMsg.db
用数据库管理器打开:提示加密或者不是数据库文件
这里可以用Windows环境下的SQLite Database Browser浏览器打开:
提示输入密码:
那么,加密数据库使用的密码是什么呢?我们又该如何获取到这个密码?通过上网查资料了解到:微信采用手机的IMEI值和微信UIN值的组合来对数据进行加密。
微信账号uin:即user information 微信用户信息识别码,获取微信UIN的方式有两种:
1.通过微信app的“system_config_prefs.xml”配置文件获取微信账号uin;
2.通过抓取WEB版微信聊天的数据包获取到uin。
1.1 App 配置文件
find / -name “system_config_prefs.xml”
/data/data/com.tencent.mm/shared_prefs/system_config_prefs.xml
cat /data/data/com.tencent.mm/shared_prefs/system_config_prefs.xml | grep uin
<int name="default_uin" value="146****21" />
1.2 谷歌chrome浏览器登陆WEB版微信:
登陆后新建窗口并访问chrome://net-internals/#events
发送信息 抓包 find uin值
uin:146****21
通过上述两种方法找到的uin值是相同的。
安卓拨号界面输入*#06#获得手机IMEI码:354**********85
IMEI值+uin值组合即为354**********85146****21
md5: http://www.spriteking.com/cmd5/ 左侧加密
得到32位小写md5值:取其前七位:1cbf8b8输入到sql浏览器中。
linux、Mac用户也可以在终端执行:
echo -n "354**********85146****21" | md5sum | cut -c -7
成功打开微信的数据库文件:
Wechat2txt.py:gist.github.com
import os
import sys
import re
import hashlib
import csv
import time
import locale
import getopt
def get_db():
os.popen('adb root').close()
text = os.popen(
'adb shell ls /data/data/com.tencent.mm/MicroMsg/*/EnMicroMsg.db').read()
return text.splitlines()[- 1] if text else ''
def get_default_uin():
os.popen('adb root').close()
text = os.popen(
'adb shell cat /data/data/com.tencent.mm/shared_prefs/system_config_prefs.xml').read()
default_uin = re.findall(
'name="default_uin" value=http://www.ithao123.cn/"([0-9]+)"', text)
return default_uin[0] if default_uin else 0
def get_device_ID():
text = os.popen('adb shell mpsys iphonesubinfo').read()
device_ID = re.findall('Device ID = ([0-9]+)', text)
return device_ID[0] if device_ID else 0
def get_md5():
default_uin = get_default_uin()
device_ID = get_device_ID()
if default_uin and device_ID:
return hashlib.md5(device_ID + default_uin).hexdigest()[0: 7]
return ''
def parse_msgcsv(msgcsv):
locale.setlocale(locale.LC_ALL, '')
if hasattr(msgcsv, 'title'):
msgcsv = [ooOoo0O + '\n' for ooOoo0O in msgcsv.splitlines()]
pass
OooO0 = csv.reader(msgcsv)
OooO0.next()
for ooOoo0O in OooO0:
try:
II11iiii1Ii, OO0o, Ooo, O0o0Oo, Oo00OOOOO, O0O, O00o0OO, name, iIi1ii1I1, o0, I11II1i, IIIII = ooOoo0O[
: 12]
pass
except:
continue
ooooooO0oo = 'me' if (Oo00OOOOO == '1') else name
IIiiiiiiIi1I1 = time.localtime(int(O00o0OO) / 1000)
I1IIIii = time.strftime("%Y-%m-%d %a %H:%M:%S", IIiiiiiiIi1I1)
yield [name, I1IIIii, ooooooO0oo, iIi1ii1I1, o0]
pass
pass
def get_names(chat):
names = {}
for name, I1IIIii, ooooooO0oo, iIi1ii1I1, o0 in chat:
names[name] = 1
pass
return names.keys()
def oo(chat, name=''):
text = []
name = name.lower()
for name, I1IIIii, ooooooO0oo, iIi1ii1I1, o0 in chat:
iIi1ii1I1 = iIi1ii1I1.replace('\n', '\n ')
o0 = ('\t' + o0) if o0 else ''
if not name:
text.append('%s: %s %s: %s %s' %
(name, I1IIIii, ooooooO0oo, iIi1ii1I1, o0))
pass
elif name.lower() == name:
text.append('%s %s: %s %s' %
(I1IIIii, ooooooO0oo, iIi1ii1I1, o0))
pass
pass
return '\n'.join(text) + '\n'
def IIIii1II1II(dbn, key=''):
child_stdin, child_stdout = os.popen2(['sqlcipher', dbn])
if key:
child_stdin.write('PRAGMA key=%s;\n' % ` key `)
child_stdin.write('pragma cipher_use_hmac=off;\n')
pass
child_stdin.write('.tables\n')
child_stdin.close()
return child_stdout.read().split()
def decrypt(dbn, key='', table='message'):
table = table or 'message'
child_stdin, child_stdout = os.popen2(['sqlcipher', dbn])
child_stdin.write('.header on\n')
child_stdin.write('.mode csv\n')
if key:
child_stdin.write('PRAGMA key=%s;\n' % ` key `)
child_stdin.write('pragma cipher_use_hmac=off;\n')
pass
child_stdin.write('select * from %s;\n' % ` table `)
child_stdin.close()
return child_stdout.read()
def wechat2txt(names=[]):
in_file = 'EnMicroMsg.db'
out_file = 'message.csv'
db = get_db()
md5 = get_md5()
os.popen('adb wait-for-device')
os.popen('adb pull %s %s' % (db, in_file)).close()
msgcsv = decrypt(in_file, md5)
if msgcsv.find('\n') < 0:
return 1
file(out_file, 'w').write(msgcsv)
msgs = list(parse_msgcsv(msgcsv))
if not msgs:
return 1
if not names:
names = get_names(msgs)
pass
for name in names:
filename = 'message.%s.txt' % name
text = oo(msgs, name)
if len(text) > 4:
file(filename, 'w').write(text)
pass
pass
pass
help_msg = '''Usage: wechat2txt.py [OPTIONS] [NAME]...
OPTIONS:
-h display this help and exit
'''
def main():
try:
opts, args = getopt.getopt(sys.argv[1:], 'h')
except getopt.error, e:
print help_msg
return 1
for opt, arg in opts:
if opt == '-h':
print help_msg
return 1
pass
names = args
text = wechat2txt(names)
return not text
if __name__ == "__main__":
sys.exit(main())
0×02 苹果:
Apple设备越狱后可通过Cydia安装各种小插件,通常情况我会安装OpenSSH来使自己能通过终端连接到Apple设备中,并使用sftp传输文件:
iOS中,应用文件夹以hash值命名,要导出微信、QQ的聊天记录其难度相对安卓来说稍微复杂很多。
在实际操作中我们可以通过巧用Linux命令(find、grep、xargs)来绕过这些坑。
find /var/mobile/Containers/Data -name "MM.sqlite"
mkdir /cache
find /var/mobile/Containers/Data -name "MM.sqlite" |xargs -I {} dirname {} | xargs -I {} cp -r {}/../../ /cache
附上出处链接:http://www.07net01.com/program/2016/07/1603637.html
㈦ winscp安卓可以用吗
有,用es文件浏览器,在我的网络哪儿,进去之后,在点击右上角,选择sftp,输入就OK了。
㈧ android手机上看代码有什么好软件
在安卓手机上的话我推荐920文本编辑器。
对于编辑器我没有太多要求,只要有行号、代码高亮、多窗口就行了,920编辑器完全符合我的要求。
软件名称:920编辑器
软件简介: 920文本编辑器(920 Text Editor)是一款运行于Android手机上功能强大的文本编辑器。 特色功能: 多标签,你可以在不同的标签打开不同的文件,方便你在不同的文本之本切换编辑 语法高亮 显示行号 显示空白字符(制表符,换行符) 自动检测打开的文件编码,同时你也可以转换当前文件编码 方便的工具栏,你可以快捷进行文件新建、打开、保存、另存为、撤销/重做、一些常用符号、返回上次编辑位置等等 最近打开的文件历史列表 正则查找、替换或替换全部 更改字体和字体大小 “自动换行” 开关等等。
下载链接:http://hexianghui.net/resource/11.html
注:我提供的是汉化版的,网络提供的是英文版。
好了,安卓代码编辑器软件的介绍就到这里了,祝你学有所成!
㈨ android 系统开发用什么ide
1. JavaIDEdroid
JavaIDEdroid是一个IDE(集成开发环境),可以运行于Android上,并且允许你直接在本地创建Android应用,而不需要通过Mac、Windows或Linux上的Android SDK。JavaIDEdroid开始配有aapt工具、Java编译器、dx工具、DexMerger工具、ApkBuilder、zipsigner库(该库同样有zipalign功能)、SpongyCastle库、BeanShell Interpreter和JavaRunner。
2. Java Editor
Java Editor是一个非常容易使用的Java编辑器,它功能有限,但它可以彩色语法:函数、变量、方法、常量,支持自动完成。可以打开默认文件扩展jav&java。
3. Terminal IDE
Terminal IDE是一个高度可扩展的终端应用程序。它有完整的Java / C / C++ / HTML / Android开发工具包,并且可以在任何Android设备上运行。它使用命令行,编辑器中设置了C/ java / HTML作为开发人员开发的主要选择项。
4. DroidEdit
DroidEdit是一个文本和源码编辑器(类似于PC上的Notepad++),用于安卓平板和手机。DroidEdit支持安卓平板电脑的外部连接键盘,如Asus Transformer或其他第三方键盘。同时它还支持多种语言, 如C、 C++、 C#、 Java、HTML、CSS、Javascript、Python、Ruby、Lua、LaTeX和SQL。
5. Syntax Highlighted代码编辑器
Syntax Highlighted支持HTML、CSS、JavaScript、PHP编辑器、Python、Java、C、C++、CoffeeScript、Haskell、Clojure和Groovy。虽然其主要定位是Web这一块,但是Java编码员也可以使用它,它本身携有很多功能,如查找/替换、撤销和重做功能。
6. Code Peeker Pro:源码阅读器
Code Peeker Pro可以让语法高亮显示,并允许你查找代码片段。虽然它不是一个编辑器。但它是一个有用的代码阅读器,且被Google Play选中作为教育项目的一部分。Code Peeker Pro可以打开和高亮任何支持的代码语言,如C/C++ (c、cc、cpp、h、hpp)、C#(c-sharp、csharp、cs)、CSS, Java、JavaScript (js、jscript)、PHP、Python (py)、Ruby (rails、ror)、XML (xml、xaml、xslt、HTML、xhtml)、ActionScript 3 (as3)、AppleScript、Cold Fusion、Delphi/Pascal、Diff/patch files、Erlang、Groovy、JavaFX (jfx)、Perl (pl)、PowerShell (ps)、Sass、Scala、SQL、Terminal scripts (bash、shell、sh、rc、conf)、Visual Basics (vb、vbnet) 和Verilog & System Verilog (v、sv)。
它还可以标记重要代码的位置、内置一个文件浏览器、支持内外部SD卡,同时也支持其他文件浏览器,如Dropbox等。
7. Sand IDE Pro
Sand是一个Android平台的Java集成开发环境(IDE)(支持Java1.3到Java1.6,注意的是Android不支持Java1.7)。
Sand IDE是一个Java编辑器,并支持Java关键字高亮显示、显示行号、撤销/重做,也是一个全功能的Java编译器,能够运行Java程序并支持程序的输入/输出。
最近一些新的平板电脑开始采用Intel芯片,不过不用担心,Sand IDE支持所有类型的CPU架构(x86、ARM、MIPS)。
8. AIDE——Android IDE
AIDE是一个可以直接在自己Android设备上开发应用的IDE,关于它的有交互式编程课程、应用开发的分布教程以及Java编程技巧。你可以直观的设计应用、用编辑器编写代码、实时检查错误、代码重构、智能代码导航……。
9. Anacode
Anacode是另一个IDE和源代码编辑器,支持Java、HTML、CSS、PHP、JavaScript和C/C++,并允许你在Android设备上构建和运行。 你也可以在内置或系统浏览器上编写和测试HTML、JavaScript和CSS,并上传到FTP。
10. Quoda代码编辑器
Quoda也类似于Notepad++支持SFTP/FTP(S)服务和云存储(如Dropbox和谷歌),语法高亮是通过各种各样的主题和字体来显示的,并适用于各种编程语言(包括HTML、XML、CSS、JavaScript、PHP、C、C++、C#、Java、ActionScript、Lisp、Markdown、Haskell等等)。为减少程序员的代码工作,提高其开发的效率,Quoda提供了代码模板和片段的支持,并且增加了键盘上额外的按键,使你能够提高打字速度。另外,其它值得一提的特性还包括查找及替换、注释及取消注释、HTML文件预览、网站源码下载、HTML清洁器等。