㈠ 如何安裝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清潔器等。