踩坑adb——我的一次使用adb命令的踩坑之旅
昨晚正在测case的时候,突然冒出来一同事(我们都叫他肖总),来了一句:BUG基(同事都叫我BUG基,你懂的),我这复现了一个问题,但是开发那边说叫我把log导出来,我这不会导,你知道怎么导吗?
作为一只BUG基,我怎么可能会放过这个装比的机会呢,哈哈。
叫肖总导log的那个开发啥也没说,就只在jira系统的comments最后写了一句“导出 *** :adb pull/cache/recovery/ ./”。其实当时我是崩溃的,我擦,肖总,你妹,这开发不是说了导出 *** 了吗?你直接复制粘贴打上去命令不就行了吗?然而,装比心理作怪,我还是决定了帮他。
那么下一步是什么?没错,是时候展现装比的技术了!
拿过Pad的之一步,那当然是先装驱动啦。没驱动你怎么使用adb命令?为什么这么说呢。驱动一般指的是设备驱动程序(Device Driver),是一种可以使 计算机 和设备通信的特殊程序。相当于 硬件 的接口, 操作系统 只有通过这个接口,才能控制 硬件 设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。那么ADB又是什么东东?Android Debug Bridge,我们一般简称为adb,它是一个非常强大的命令行工具,通过这个工具你能够与你的android设备进行交互。意思也就是说,ADB命令需要通过驱动程序提供的接口来控制硬件设备,因为我们的文件是存储在硬件设备上的呀。
那装驱动要在什么状态下安装?废话,肯定是开机状态啦。当然在安装驱动前,要先开启开发者模式的ADB调试,这里我就不说为什么了,自己想。
那再下一步就是我们要用开发给的adb命令,导出/cache/recovery/这个文件夹的内容。或许有人会问,这开发不是已经给了文件的路劲了吗,直接在Pad上复制粘贴到SD卡又或者直接用PC从Pad复制粘贴到PC就可以了呀。对于这个,我只想说,废话,这么简单的,你会想不到吗?你以为我是猪啊。然而我并不是猪,我是BUG基。
对于上面那个想法,条件并不成立,当我们连接Pad时,windows是屏蔽部分文件的,反正我这里是这个情况,而用Pad直接复制粘贴到SD卡也是不成立,当我复制的时候,会提示“操作失败,目标无法复制”,至于为什么会出现这个提示,请往下看。
既然上面两个 *** 都不行,那我们就只有用adb命令了。
在执行操作之前,我们要先看移动设备是否跟PC连接,那么就需要用adb devices这个命令查看当前连接的设备,这里可能返回的状态有三种:
I.device设备已经成功连接到了adb-server
II.offline设备并没有连接到adb或者没有响应
III.no device并没有设备/模拟器连接
这里说的三种状态显示的可能跟显示情况不大一样,譬如我连接是正常的,返回的是
或许有人知道这里的意思是什么,但是是否有想到过前面的那个daemon是什么呢?当然有人会说,只要复制粘贴会用就可以了,对于这个回答,我默默表示不回答。
这个daemon还得要从ADB说起,ADB包含了以下三部分的cs模式的程序:
而在解释上图的意思之前,我想先引入两个概念,那就是端口和通信(已理解的可以略过)。
端口
计算机"端口"是英文port的译义,可以认为是计算机与外界通讯交流的出口。其中硬件领域的端口又称接口,如:USB端口、串行端口等。软件领域的端口一般指 *** 中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。
端口最主要的作用就是通信和数据传输,把数据报顺利的传送到目的主机是没有问题的。那么问题出在哪里呢?我们知道大多数 操作系统 都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据报传送给众多同时运行的进程中的哪一个呢?显然这个问题有待解决,端口机制便由此被引入进来。
本地 操作系统 会给那些有需求的进程分配协议端口(protocal port,即我们常说的端口),每个协议端口由一个正整数标识,如:80,139,445,等等。当目的主机接收到数据报后,将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。说到这里,端口的概念似乎仍然抽象,那么继续跟我来,别走开。
端口其实就是队, 操作系统 为各个进程分配了不同的队,数据报按照目的端口被推入相应的队中,等待被进程取用,在极特殊的情况下,这个队也是有可能溢出的,不过操作系统允许各进程指定和调整自己的队的大小。
通信
通信(Communication)就是信息的传递,是指由一地向另一地进行信息的传输与交换,其目的是传输消息。其实这里的通信,意思就是说用特定的逻辑信号,实现双方的互相信息传输,譬如说在命令行输入adb devices命令,意思就是说我想要对方输出设备列表给我看,这里的输入”adb devices”就是发送给对方的信号,而输出的设备列表就是对方反馈回来的信号,这个整个过程就是通信的过程。
说了这么多,其目的就在于扫盲,下面我们来说上面提到的ADB三部分的cs模式的程序(我把上面的图拉下来,防止大家看不到):
1) adb client
从图中,我们知道client是运行在PC端的,每当我们发起一个adb命令的时候,就会开启一个client程序。当然,当我们开启DDMS或者ADT的时候,也会自动创建client。
当我们开启一个client的时候,它首先会去检测后台是否已经有一个server程序在运行着,否则会开启一个adb-server进程。
所有的client都是通过5037端口与adb-server进行通信的。
2 ) adb daemon ( adbd )
从图中,我们知道daemon是作为一个后台进程运行在模拟器/真实Android设备中的。
daemon使用端口的范围是5554-5585,每个模拟器/设备连接到PC端时,总会开启这么一个后台进程,并且为其分配了两个连续的端口,比如:
Emulator 1,console: 5554
Emulator 1, adb:5555
也正因为每个设备都分一组两个端口,也已adb连接手机的更大数量为16。
说回端口的作用,在这两个端口中,其中偶数端口是用于server与设备进行交互的,可以让server直接从设备中读取数据,而奇数端口是用来与设备的adbd进行连接通信的。
3) adb server
从图中,我们同样可以知道,server也是作为一个后台的程序运行在PC端的,他负责管理client进程以及adb daemon之间的通信。
当一个server开启的时候,他会自动绑定并且监听5037端口,接收client通过该端口发送过来的命令。同时server还会对5555-5585间的奇数端口进行扫描,进行对已连接设备的定位。
完成了上面一大堆吧啦吧啦的扫盲,大家应该知道了图1的意思了吧,那么我们就要解决问题了。
我们来看开发给我们的adb命令
不知大家是否看到使用adb命令都要在前面输入adb,譬如开发给的“adb pull /cache/recovery/ ./”这个命令就有adb在前面。那么为什么要在命令前面加上一个adb呢,原因在于如果我们不加adb,windows系统会默认为对windows执行命令,而不是通过ADB命令行工具对手机执行操作命令。后面的“pull /cache/recovery/ ./”通过前面学习Linux命令结构(linux命令结构为command [options] [arguments...])大概可知道pull指的是命令动作,后面那两个,指的其实就是参数,/cache/recovery/指的是Pad设备的文件路径,而./指的是当前运行命令行的路劲,譬如下面的提到的C:\Users\301001958这个路径。
好了,继续回到我们的装比之路,刚开始的时候,我不小心把” adb pull /cache/recovery/ ./ ”打成了“adb pull /cache/recovery/./”,也就是,我没有把中间的空格打上,结果弹出了这样的提示,啊,真是瞎了我的眼……
于是,我马上改过来,修改成了“adb pull /cache/recovery/ ./”,结果还是弹出了一样的提示。
我擦,这怎么办怎么办,难道真的要装比不成,反遭雷劈?别急,我们先来看看这里提示的意思,这里的这个remote的意思是指的远端设备,在这指的就是Pad,而object '/cache/recovery/' does not exist的意思就是说Pad的/cache/recovery/这个文件夹对象不存在。
这咋回事啊?怎么会就不存在呢?于是乎,我再进入Recovery mode查看,得到的结果如下:
我擦,这怎么回事?明明有这个文件夹的存在,于是我再次开机在命令行输入adb -help,验证一下这个adb命令的用法,结果吧啦吧啦的出现了一大坨黑色的字,看着都头晕啊,不过还是让我找到了想要的信息,如下图:
看到了这里,我瞬间脸黑了,我靠,这完全就是跟我想的那样没错嘛,怎么就说文件夹对象不存在呢。
于是我还是找上了大家最喜欢的——度娘。找了一番,找到了一个似乎有用的信息,如下图:
正如上面所说,难道是因为没有文件夹没有读写权限?于是,我又输入了adb remount,得出结果如下:
额,看到这里,我不想说话了,不过这里,已经算是弄出了点端倪,大家应该也知道了前面直接在Pad的系统里面复制提示无法复制了吧,最主要就是不够权限的原因,因为一旦系统运行文件随便被更改,系统就有可能出现运行错误或者崩溃。只是我竟天真的以为这里的root,指的是我们经常用的那个一键root软件,只要用软件一键root了,就可以快乐的解决问题了,可想而知,得到的结果依然是像是碰到了蜜蜂窝一样,被蛰着千疮百孔啊,面目全非……这些什么鸟一键root软件,根本就无法root得了我们这些开发中的Pad嘛,还试了一大堆都不行,至于为什么,暂时我没有深究,大家有空可以去研究研究。
到了这里,我只想说:盖伦,请给我一把大宝剑……
无奈,问题最终还是得要解决,于是我继续再找度娘玩去了。
经过了一番查找,我似乎终于找到了答案如何获得root权限了,就是仅仅只需要用“adb root”这个命令就可以让adb获得root权限,二话不说,赶紧开干啊,输入adb root,得出的结果是:adbd restart as root,我擦,蓝瘦香菇,明明只需要几个命令……就可以获得root权限,我为什么能搞得那么复杂,我不行了,盖伦,借你的大宝剑扶我起来……
但是似乎有一件很重要的事是,正因为我前面用了一键root软件,我才能在adb命令使用root权限,前面的功夫也并不是全是无用功,来到这里,我们就只需执行最后一步就是用开发给的命令,把文件拖出来,不过,我把开发给的最后一个参数改了,也就是“./”这个参数,改成了我自己电脑桌面的一个文件夹路径,如我在桌面起了个叫做FileLog的文件夹,如我FileLog的文件夹路径为C:\Users\301001958\Desktop\FileLog,那么我执行的就是adb pull /cache/recovery/ C:\Users\301001958\Desktop\FileLog,然后按Enter执行命令,文件就巴拉拉的复制到了我的FileLog文件夹里面,到这里问题解决完毕。
回顾整个过程,踩的坑着实不少,一个简简单单的命令,一个简简单单的操作,都能把自己搞死,不过在这整个过程里面,也是一个不断扩展知识的过程,也是一个不断挑战自我的过程,到最后的解决,是满心的舒畅。
这整个过程里,给我更大的感悟是,乐于助人,助的有时候不仅仅是别人,助的也是自己,因为在这个过程中,我的知识获得了拓展,获得了成长,也获得了成就感,获得了兴趣,用此文,希望能助正在踩坑的你,走出这个坑,不管是大坑还是小坑,又或者是神坑,在这个写作分享的过程中,也让我对整个知识面理解更全面更深了一步。
文章写得不是那么好,太长了点,请轻喷。
致正在踩坑的你我。 2017.02.26 By BUG基
端口扫描工具哪个好???
扫描界的元老级人物当然是nmap了,就来黑客帝国中的片段也用nmap,但是这些都是普通级别的,专业的扫描器好几十万到上百万呢,那扫描的信息才叫准,例如绿盟新出的扫描器,相当权威了,让这个扫描器为你扫描一下系统安全性,就要付出好几万的信息费用。
请教端口问题
一、端口简介
随着计算机 *** 技术的发展,原来物理上的接口(如键盘、鼠标、网卡、显示卡等输入/输出接口)已不能满足 *** 通信的要求,TCP/IP协议作为 *** 通信的标准协议就解决了这个通信难题。TCP/IP协议集成到操作系统的内核中,这就相当于在操作系统中引入了一种新的输入/输出接口技术,因为在TCP/IP协议中引入了一种称之为"Socket(套接字)"应用程序接口。有了这样一种接口技术,一台计算机就可以通过软件的方式与任何一台具有Socket接口的计算机进行通信。端口在计算机编程上也就是"Socket接口"。
有了这些端口后,这些端口又是如何工作呢?例如一台服务器为什么可以同时是Web服务器,也可以是FTP服务器,还可以是邮件服务器等等呢?其中一个很重要的原因是各种服务采用不同的端口分别提供不同的服务,比如:通常TCP/IP协议规定Web采用80号端口,FTP采用21号端口等,而邮件服务器是采用25号端口。这样,通过不同端口,计算机就可以与外界进行互不干扰的通信。
据专家们分析,服务器端口数更大可以有65535个,但是实际上常用的端口才几十个,由此可以看出未定义的端口相当多。这是那么多黑客程序都可以采用某种 *** ,定义出一个特殊的端口来达到入侵的目的的原因所在。为了定义出这个端口,就要依靠某种程序在计算机启动之前自动加载到内存,强行控制计算机打开那个特殊的端口。这个程序就是"后门"程序,这些后门程序就是常说的木马程序。简单的说,这些木马程序在入侵前是先通过某种手段在一台个人计算机中植入一个程序,打开某个(些)特定的端口,俗称"后门"(BackDoor),使这台计算机变成一台开放性极高(用户拥有极高权限)的FTP服务器,然后从后门就可以达到侵入的目的。
二、端口的分类
端口的分类根据其参考对象不同有不同划分 *** ,如果从端口的性质来分,通常可以分为以下三类:
(1)公认端口(Well Known
Ports):这类端口也常称之为"常用端口"。这类端口的端口号从0到1024,它们紧密绑定于一些特定的服务。通常这些端口的通信明确表明了某种服务的协议,这种端口是不可再重新定义它的作用对象。例如:80端口实际上总是HTTP通信所使用的,而23号端口则是Telnet服务专用的。这些端口通常不会像木马这样的黑客程序利用。为了使大家对这些常用端口多一些认识,在本章后面将详细把这些端口所对面应的服务进行列表,供各位理解和参考。
(2) 注册端口(Registered
Ports):端口号从1025到49151。它们松散地绑定于一些服务。也是说有许多服务绑定于这些端口,这些端口同样用于许多其他目的。这些端口多数没有明确的定义服务对象,不同程序可根据实际需要自己定义,如后面要介绍的远程控制软件和木马程序中都会有这些端口的定义的。记住这些常见的程序端口在木马程序的防护和查杀上是非常有必要的。常见木马所使用的端口在后面将有详细的列表。
(3) 动态和/或私有端口(Dynamic and/or Private
Ports):端口号从49152到65535。理论上,不应把常用服务分配在这些端口上。实际上,有些较为特殊的程序,特别是一些木马程序就非常喜欢用这些端口,因为这些端口常常不被引起注意,容易隐蔽。
如果根据所提供的服务方式的不同,端口又可分为"TCP协议端口"和"UDP协议端口"两种。因为计算机之间相互通信一般采用这两种通信协议。前面所介绍的"连接方式"是一种直接与接收方进行的连接,发送信息以后,可以确认信息是否到达,这种方式大多采用TCP协议;另一种是不是直接与接收方进行连接,只管把信息放在网上发出去,而不管信息是否到达,也就是前面所介绍的"无连接方式"。这种方式大多采用UDP协议,IP协议也是一种无连接方式。对应使用以上这两种通信协议的服务所提供的端口,也就分为"TCP协议端口"和"UDP协议端口"。
使用TCP协议的常见端口主要有以下几种:
(1) FTP:定义了文件传输协议,使用21端口。常说某某计算机开了FTP服务便是启动了文件传输服务。下载文件,上传主页,都要用到FTP服务。
(2)
Telnet:它是一种用于远程登陆的端口,用户可以以自己的身份远程连接到计算机上,通过这种端口可以提供一种基于DOS模式下的通信服务。如以前的BBS是纯字符界面的,支持BBS的服务器将23端口打开,对外提供服务。
(3)
*** TP:定义了简单邮件传送协议,现在很多邮件服务器都用的是这个协议,用于发送邮件。如常见的免费邮件服务中用的就是这个邮件服务端口,所以在电子邮件设置中常看到有这么 *** TP端口设置这个栏,服务器开放的是25号端口。
(4)
POP3:它是和 *** TP对应,POP3用于接收邮件。通常情况下,POP3协议所用的是110端口。也是说,只要你有相应的使用POP3协议的程序(例如Foxmail或Outlook),就可以不以Web方式登陆进邮箱界面,直接用邮件程序就可以收到邮件(如是163邮箱就没有必要先进入网易网站,再进入自己的邮箱来收信)。
使用UDP协议端口常见的有:
(1)
HTTP:这是大家用得最多的协议,它就是常说的"超文本传输协议"。上网浏览网页时,就得在提供网页资源的计算机上打开80号端口以提供服务。常说"WWW服务"、"Web服务器"用的就是这个端口。
(2) DNS:用于域名解析服务,这种服务在Windows
NT系统中用得最多的。因特网上的每一台计算机都有一个 *** 地址与之对应,这个地址是常说的IP地址,它以纯数字+"."的形式表示。然而这却不便记忆,于是出现了域名,访问计算机的时候只需要知道域名,域名和IP地址之间的变换由DNS服务器来完成。DNS用的是53号端口。
(3) SNMP:简单 *** 管理协议,使用161号端口,是用来管理 *** 设备的。由于 *** 设备很多,无连接的服务就体现出其优势。
(4)
OICQ:OICQ程序既接受服务,又提供服务,这样两个聊天的人才是平等的。OICQ用的是无连接的协议,也是说它用的是UDP协议。OICQ服务器是使用8000号端口,侦听是否有信息到来,客户端使用4000号端口,向外发送信息。如果上述两个端口正在使用(有很多人同时和几个好友聊天),就顺序往上加。
在计算机的6万多个端口,通常把端口号为1024以内的称之为常用端口,这些常用端口所对应的服务通常情况下是固定的。表1所列的都是服务器默认的端口,不允许改变,一般通信过程都主要用到这些端口。
表1
服务类型默认端口服务类型默认端口
Echo7Daytime13
FTP21Telnet23
*** TP25Time37
Whois43DNS53
Gopher70Finger79
WWW80POP3110
NNTP119IRC194
另外 *** 服务器常用以下端口:
(1). HTTP协议 *** 服务器常用端口号:80/8080/3128/8081/9080
(2). SOCKS *** 协议服务器常用端口号:1080
(3). FTP协议 *** 服务器常用端口号:21
(4). Telnet协议 *** 服务器常用端口:23
三、端口在黑客中的应用
像木马之类的黑客程序,就是通过对端口的入侵来实现其目的的。在端口的利用上,黑客程序通常有两种方式,那就是"端口侦听"和"端口扫描"。
"端口侦听"与"端口扫描"是黑客攻击和防护中经常要用到的两种端口技术,在黑客攻击中利用它们可以准确地寻找攻击的目标,获取有用信息,在个人及 *** 防护方面通过这种端口技术的应用可以及时发现黑客的攻击及一些安全漏洞。下面首先简单介绍一下这两种端口技术的异同。
"端口侦听"是利用某种程序对目标计算机的端口进行监视,查看目标计算机上有哪能些端口是空闲、可以利用的。通过侦听还可以捕获别人有用的信息,这主要是用在黑客软件中,但对于个人来说也是非常有用的,可以用侦听程序来保护自己的计算机,在自己计算机的选定端口进行监视,这样可以发现并拦截一些黑客的攻击。也可以侦听别人计算机的指定端口,看是否空闲,以便入侵。
"端口扫描"(port
scanning)是通过连接到目标系统的TCP协议或UDP协议端口,来确定什么服务正在运行,然后获取相应的用户信息。现在有许多人把"端口侦听"与"端口扫描"混为一谈,根本分不清什么样的情况下要用侦听技术,什么样的情况下要用扫描技术。不过,现在的这类软件也似乎对这两种技术有点模糊了,有的干脆把两个功能都集成在一块。
"端口侦听"与"端口扫描"有相似之处,也有区别的地方,相似的地方是都可以对目标计算机进行监视,区别的地方是"端口侦听"属于一种被动的过程,等待别人的连接的出现,通过对方的连接才能侦听到需要的信息。在个人应用中,如果在设置了当侦听到有异常连接立即向用户报告这个功能时,就可以有效地侦听黑客的连接企图,及时把驻留在本机上的木马程序清除掉。这个侦听程序一般是安装在目标计算机上。用在黑客中的"端口侦听"通常是黑客程序驻留在服务器端等待服务器端在进行正常活动时捕获黑客需要的信息,然后通过UDP协议无连接方式发出去。而"端口扫描"则是一种主动过程,它是主动对目标计算机的选定端口进行扫描,实时地发现所选定端口的所有活动(特别是对一些网上活动)。扫描程序一般是安装在客户端,但是它与服务器端的连接也主要是通过无连接方式的UDP协议连接进行。
在 *** 中,当信息进行传播的时候,可以利用工具,将 *** 接口设置在侦听的模式,便可将 *** 中正在传播的信息截获或者捕获到,从而进行攻击。端口侦听在 *** 中的任何一个位置模式下都可实施进行,而黑客一般都是利用端口侦听来截取用户口令。
四、端口侦听原理
以太网(Ethernet)协议的工作方式是将要发送的数据包发往连接在一起的所有计算机。在包头中包括有应该接收数据包的计算机的正确地址,因为只有与数据包中目标地址一致的那台计算机才能接收到信息包。但是当计算机工作在侦听模式下,不管数据包中的目标物理地址是什么,计算机都将可以接收到。当同一 *** 中的两台计算机通信的时候,源计算机将写有目的计算机地址的数据包直接发向目的计算机,或者当 *** 中的一台计算机同外界的计算机通信时,源计算机将写有目的计算机IP地址的数据包发向网关。但这种数据包并不能在协议栈的高层直接发送出去,要发送的数据包必须从TCP/IP协议的IP协议层交给 *** 接口--数据链路层。 *** 接口不会识别IP地址的,在 *** 接口中,由IP协议层来的带有IP地址的数据包又增加了一部分以太网的帧头信息。在帧头中,有两个域分别为只有 *** 接口才能识别的源计算机和目的计算机的物理地址,这是一个48位的地址,这个48位的地址是与IP地址相对应的。换句话说,一个IP地址也会对应一个物理地址。对于作为网关的计算机,由于它连接了多个 *** ,它也就同时具备有很多个IP地址,在每个 *** 中它都有一个。而发向 *** 外的帧中继携带的是网关的物理地址。
以太网中填写了物理地址的帧从 *** 端口中(或者从网关端口中)发送出去,传送到物理的线路上。如果局域网是由一条粗同轴电缆或细同轴电缆连接成的,那么数字信号在电缆上传输信号就能够到达线路上的每一台计算机。再当使用集线器的时候,发送出去的信号到达集线器,由集线器再发向连接在集线器上的每一条线路。这样在物理线路上传输的数字信号也就能到达连接在集线器上的每个计算机了。当数字信号到达一台计算机的 *** 接口时,正常状态下 *** 接口对读入数据帧进行检查,如数据帧中携带的物理地址是自己的或者物理地址是广播地址,那么就会将数据帧交给IP协议层软件。对于每个到达 *** 接口的数据帧都要进行这个过程的。但是当计算机工作在侦听模式下,所有的数据帧都将被交给上层协议软件处理。
当连接在同一条电缆或集线器上的计算机被逻辑地分为几个子网的时候,那么要是有一台计算机处于侦听模式,它可以接收到发向与自己不在同一个子网(使用了不同的掩码、IP地址和网关)的计算机的数据包,在同一个物理信道上传输的所有信息都可以被接收到。
在UNIX系统上,当拥有超级权限的用户要想使自己所控制的计算机进入侦听模式,只需要向Interface( *** 接口)发送I/O控制命令,就可以使计算机设置成侦听模式了。而在Windows
9x的系统中则不论用户是否有权限都将可以通过直接运行侦听工具就可以实现。
在端口处于侦听时,常常要保存大量的信息(也包含很多的垃圾信息),并将对收集的信息进行大量的整理,这样就会使正在侦听的计算机对其他用户的请求响应变的很慢。同时侦听程序在运行的时候需要消耗大量的处理器时间,如果在这时就详细的分析包中的内容,许多包就会来不及接收而被漏走。所以侦听程序很多时候就会将侦听得到的包存放在文件中等待以后分析。分析侦听到的数据包是很头疼的事情,因为 *** 中的数据包都非常之复杂。两台计算机之间连续发送和接收数据包,在侦听到的结果中必然会加一些别的计算机交互的数据包。侦听程序将同一TCP协议会话的包整理到一起就相当不容易,如果还期望将用户详细信息整理出来就需要根据协议对包进行大量的分析。
现在 *** 中所使用的协议都是较早前设计的,许多协议的实现都是基于一种非常友好的,通信的双方充分信任的基础。在通常的 *** 环境之下,用户的信息包括口令都是以明文的方式在网上传输的,因此进行端口侦听从而获得用户信息并不是一件难点事情,只要掌握有初步的TCP/IP协议知识就可以轻松的侦听到想要的信息的。
五、端口扫描原理
"端口扫描"通常指用同一信息对目标计算机的所有所需扫描的端口进行发送,然后根据返回端口状态来分析目标计算机的端口是否打开、是否可用。"端口扫描"行为的一个重要特征是:在短时期内有很多来自相同的信源地址传向不同的目的地端口的包。
对于用端口扫描进行攻击的人来说,攻击者总是可以做到在获得扫描结果的同时,使自己很难被发现或者说很难被逆向跟踪。为了隐藏攻击,攻击者可以慢慢地进行扫描。除非目标系统通常闲着(这样对一个没有listen端口的数据包都会引起管理员的注意),有很大时间间隔的端口扫描是很难被识别的。隐藏源地址的 *** 是发送大量的欺骗性的端口扫描包(1000个),其中只有一个是从真正的源地址来的。这样,即使全部包(1000)都被察觉,被记录下来,也没有人知道哪个是真正的信源地址。能发现的仅仅是"曾经被扫描过"。也正因为这样那些黑客们才乐此不彼地继续大量使用这种端口扫描技术来达到他们获取目标计算机信息、并进行恶意攻击。
通常进行端口扫描的工具目前主要采用的是端口扫描软件,也通称之为"端口扫描器",端口扫描可以为提供三个用途:
(1)识别目标系统上正在运行的TCP协议和UDP协议服务。
(2)识别目标系统的操作系统类型(Windows 9x, Windows NT,或UNIX,等)。
(3)识别某个应用程序或某个特定服务的版本号。
端口扫描器是一种自动检测远程或本地计算机安全性弱点的程序,通过使用扫描器你可不留痕迹的发现远程服务器的各种TCP协议端口的分配及提供的服务,还可以得知它们所使用的软件版本!这就能让间接的了解到远程计算机所存在的安全问题。
端口扫描器通过选用远程TCP/IP协议不同的端口的服务,记录目标计算机端口给予的回答的 *** ,可以搜集到很多关于目标计算机的各种有用信息(比如:是否有端口在侦听?是否允许匿名登陆?是否有可写的FTP目录,是否能用TELNET等。
端口扫描器并不是一个直接攻击 *** 漏洞的程序,它仅仅能帮助发现目标机的某些内在的弱点。一个好的扫描器还能对它得到的数据进行分析,帮助查找目标计算机的漏洞。但它不会提供一个系统的详细步骤。
端口扫描器在扫描过程中主要具有以下三个方面的能力:
(1) 发现一个计算机或 *** 的能力;
(2) 一旦发现一台计算机,就有发现目标计算机正在运行什么服务的能力;
(3) 通过测试目标计算机上的这些服务,发现存在的漏洞的能力。
编写扫描器程序必须要很多TCP/IP协议程序编写和C,Perl和或SHELL语言的知识。需要一些Socket编程的背景,一种在开发客户/服务应用程序的 *** 。
六、常用端口
在计算机的6万多个端口,通常把端口号为1024以内的称之为常用端口,这些常用端口所对应的服务通常情况下是固定的,所以了解这些常用端口在一定程序上是非常必要的,下表2列出了计算机的常用端口所对应的服务(注:在这列表中各项"="前面的数字为端口号,"="后面的为相应端口服务。)。
1=tcpmux(TCP协议 Port Service Multiplexer)401=ups(Uninterruptible Power
Supply)
2=compressnet=Management Utility402=genie(Genie Protocol)
3=compressnet=Compression Process403=decap
5=rje(Remote Job Entry)404=nced
7=echo=Echo405=ncld
9=discard406=imsp(Interactive Mail Support Protocol)
11=systat,Active Users407=timbuktu
13=daytime408=prm- *** (Prospero Resource Manager Sys. Man.)
17=qotd(Quote of the Day)409=prm-nm(Prospero Resource Manager Node Man.)
18=msp(Message Send Protocol)410=decladebug(DECLadebug Remote Debug
Protocol)
19=Character Generator411=rmt(Remote MT Protocol)
20=FTP-data(File Transfer [Default Data])412=synoptics-trap(Trap
Convention Port)
21=FTP(File Transfer [Control])413= *** sp
22=ssh414=infoseek
23=telnet415=bnet
24private mail system416=silverplatter
25= *** tp(Simple Mail Transfer)417=onmux
27=nsw-fe(NSW User System FE)418=hyper-g
29=msg-icp419=ariel1
31=msg-auth420= *** pte
33=Display Support Protocol421=ariel2
35=private printer server422=ariel3
37=time423=opc-job-start(IBM Operations Planning and Control Start)
38=rap(Route Access Protocol)424=opc-job-track(IBM Operations Planning and
Control Track)
39=rlp(Resource Location Protocol)425=icad-el(ICAD)
41=graphics426= *** artsdp
42=nameserver(WINS Host Name Server)427=svrloc(Server Location)
43=nicname(Who Is)428=ocs_cmu
44=mpm-flags(MPM FLAGS Protocol)429=ocs_amu
45=mpm(Message Processing Module [recv])430=utmpsd
46=mpm-snd(MPM [default send])431=utmpcd
47=ni-ftp432=iasd
48=Digital Audit Daemon433=nnsp
49=tacacs(Login Host Protocol (TACACS))434=mobileip-agent
50=re-mail-ck(Remote Mail Checking Protocol)435=mobilip-mn
51=la-maint(IMP Logical Address Maintenance)436=dna-cml
52=xns-time(XNS Time Protocol)437=comscm
53=Domain Name Server438=dsfgw
54=xns-ch(XNS Clearinghouse)439=dasp(dasp Thomas Obermair)
55=isi-gl(ISI Graphics Language)440=sgcp
56=xns-auth(XNS Authentication)441=decvms-sy *** gt
57= private terminal access442=cvc_hostd
58=xns-mail(XNS Mail)443=https(https Mcom)
59=private file service444=snpp(Simple Network Paging Protocol)
61=ni-mail(NI MAIL)445=microsoft-ds
62=acas(ACA Services)446=ddm-rdb
63=whois+whois+447=ddm-dfm
64=covia(Communications Integrator (CI))448=ddm-byte
65=tacacs-ds(TACACS-Database Service)449=as-servermap
66=sql*net(Oracle SQL*NET)450=tserver
67=bootps(Bootstrap Protocol Server)451=sfs- *** p-net(Cray Network Semaphore
server)
68=bootpc(Bootstrap Protocol Client)452=sfs-config(Cray SFS config server)
69=tftp(Trivial File Transfer)453=creativeserver
70=gopher454=contentserver
71=netrjs-1,Remote Job Service455=creativepartnr
72=netrjs-2,Remote Job Service456=macon-tcp
73=netrjs-3,Remote Job Service457=scohelp
74=netrjs-4,Remote Job Service458=appleqtc(apple quick time)
75=private dial out service459=ampr-rcmd
76=deos(Distributed External Object Store)460=skronk
77=private RJE service461=datasurfsrv
78=vettcp462=datasurfsrvsec
79=finger463=alpes
80=http(World Wide Web HTTP)464=kpasswd
81=hosts2-ns(HOSTS2 Name Server)465=s *** tp
82=xfer(XFER Utility)466=digital-vrc
83=mit-ml-dev(MIT ML Device)467=mylex-mapd
84=ctf(Common Trace Facility)468=photuris
85=mit-ml-dev(MIT ML Device)469=rcp(Radio Control Protocol)
86=mfcobol(Micro Focus Cobol)470=scx-proxy
nbs
参考资料:;topic=78
ADB端口是什么
ADB是android sdk里的一个工具,用这个工具可以直接操作管理android模拟器或者真实的andriod设备(如G1手机). 它的主要功能有:
* 运行设备的shell(命令行)
* 管理模拟器或设备的端口映射
* 计算机和设备之间上传/下载文件
* 将本地apk软件安装至模拟器或android设备
ADB是一个客户端-服务器端程序,其中客户端是你用来操作的电脑,服务器端是android设备。
Android adb端口占用解决 ***
在开发过程中,有时候会遇到adb端口(adb默认端口是:5037)被其他的进程占用,导致手机无法正常连接调试。这就需要我们找到占用adb端口的进程并杀掉,保证adb端口正常运行。
输入命令行: adb nodaemon server
输入命令行: netstat -ano | findstr "5037"
1)使用快捷键 Esc + Shift + Ctrl 打开任务管理器,选择 查看 —— 选择列 ;
2)在 进程页列 勾选 PID 并 确定 。
根据 PID 选择占用进程,然后结束进程。
打开DOS命令窗口,输入SDK安装目录(因人而异): cd E:\android-sdk-windows\platform-tools 回车,再输入所在盘符 e: 回车,进入adb所在目录; 再输入 adb kill-server 结束服务,然后输入 adb start-server 成功启动服务即可。
刷机精灵怎样开启电视盒子adb
1、扫描咪咕MG100的端口。
2、下载安装刷机精灵到电脑。
3、开启盒子里的adb(默认是关闭的,只要点击Adb开头的应用即可开启),打开刷机精灵,adb命令行,输入:adbconnect(XXX是你家盒子的IP地址。确认连接是否成功建立,再输入adbdevices,回车后会显示当前adb存在的所有连接,如果显示最后面的是device这个单词表示连上了,如果是offline表示设备端口连上了但是连接未正常建立。
4、过会儿显示success,表示连接成功。
0条大神的评论