1.知名压缩软件xz被发现有后门,码后门影响有多大?如何应对?
2.肉鸡在望上是什么意思
3.sniffer状态
4.linuxç认è¯
5.差点引爆全球的核弹,深度分析XZ-Utils供应链后门投毒事件
6.访问注册表出错
知名压缩软件xz被发现有后门,码后门影响有多大?如何应对?
知名压缩软件xz被发现存在后门,这一问题的码后门揭露是由Andres Freund发现sshd进程的CPU占用率异常后进行的深入调查所促成的。
对比分析有后门的码后门m4脚本与原版,很难发现其中存在的码后门问题。然而,码后门java 类库源码通过执行命令`grep -aErls "#{ 4}[[:alnum:]]{ 5}#{ 4}$" ./`在源码根目录下,码后门发现执行结果指向了`./tests/files/bad-3-corrupt_lzma2.xz`文件。码后门这个步骤揭示了文件名虽不直接明文出现在构建脚本中,码后门但通过`grep`命令间接匹配并确认了恶意文件的码后门存在。
进一步分析表明,码后门`gl_[$1]_prefix=echo $gl_am_configmake | sed "s/.*\.//g"`这一行代码提取了恶意文件的码后门扩展名`xz`,实际上对应于`xz`命令行工具的码后门名称。这暗示了解压过程需要先安装`xz-utils`包。码后门整个解压命令的码后门执行环境主要针对Linux系统,而非非Linux系统。
该脚本通过寻找并读取`config.status`文件来获取源码的根目录,这一过程考虑到许多发行版在编译时会单独建立`build`目录,因此`srcdir`变量保存了源码的位置。然后通过`export`命令随机读取内容,最终执行了一系列命令,其中包含多个行为,揭示了即使在非Debian或RPM系发行版中,尝试在`make`后再次执行`configure`时,也会通过其他途径执行感染。
对于Debian或RPM系发行版,恶意代码通过将上述恶意脚本注入到`Makefile`中实现,这个过程依赖于源码编译完成后才能进行。而真正感染部分在于将原本应编译自特定源文件的`liblzma_la-crc_fast.o`和`liblzma_la-crc_fast.o`目标文件链接为恶意对象文件,同时替换指令集扩展检测函数。正确的`get_cpuid`原型被故意修改,其中`__builtin_frame_address`旨在获取函数返回地址,这可能在`x_`Linux上用于在寄存器中留下特定地址。
值得注意的是,发布带有后门的作者Jia Tan曾在两个月前与Sam James讨论过与GCC相关的bug导致`ifunc`函数符号覆盖功能不正确的问题,最终确认了这是一个GCC的bug。
提交代码时的实名要求对项目维护具有重要意义,尤其是当代码引发法律问题时。在Linux等重要项目中,有提交权限的人通常被强制要求实名。通过“签核”程序,开发者需在补丁说明末尾添加证明其身份的一行,确保贡献的合法性和追踪性。
项目中采用的签署选项有助于确定提交者和审查者的身份。在更严格的场合,代码提交可能需要使用GPG签名,而线下会议可能举办Key signing party来交换GPG公钥,确保线上身份与现实一致,并获得其他人的承认。实名制是维护代码质量和法律责任的关键,虚拟人物或匿名用户无法承担相应的法律责任。
肉鸡在望上是什么意思
有许多人问我这样一个问题就是:什么是肉鸡!其实我也说不好是什么意思!个人认为肉鸡就是你可以控制的一台电脑!无论通过什么方式!
对于肉鸡!我建议大家先学习的肉鸡!先介绍一下!是一种国外的远程控制软件所开的默认端口!(那端口是什么呢?我的理解是端口的作用就是把好多计算机向你发来的信息分别从不同的管道给你!每个管道就是一个端口!并有标号!并且有的标号和一类信息是对应的!比如:从的管道(端口)传来的信息就对应着邮件类!从管道传来的信息就是网页信息!还有的就没有的不常用的信息,就临时开一个任意(在大于端口!之前是是一些一一对应的管道!)管道来接受信息!所以端口的作用就是通过不同的端口接受不同的来接受数据包!不知道大家明白没有!还不明白就自己查资料啊!如果我说的有错误!请尽快和我说啊!)该软件叫Radmin!分两部分!控制端和服务端!有很多服务功能!如:通过远程图形控制!(就象操作自己的计算机一样操作对方的计算机!)Telnet功能,telnet是的远程登陆等功能!是在命令下实现的!你可以简单认为是远程操作对方的dos窗口!(其实我就是这么认为的!呵呵)上传下载文件的功能!这个功能大家很明白!就是可以在你和对方计算机之间互相传送文件!还有其他功能,等等!我做了个动画!其实这个软件不是大家所认为的木马!(之所以不是木马!因为其功能都不符合木马的要求!)只是一个普通的远程控制的工具!一些用户用该软件远程管理自己的机器!可以从公司的电脑直接到加里的电脑取文件!或者放文件!管理机器等等!但是不知道为什么!有的大疆 源码用户却不知道为什么不给客户端设置密码!这样我们就有了可乘之机!我们可以用特定工具扫描开的机器!(这个是Radmin的特征!呵呵!)然后用客户端进行连接!该软件唯一确认你身份的东西就是连接时需要密码!而有的用户却没有设置!所以!我们就可以进入其计算机,并做软件所提供的功能操作!(就是我上面所说的!和一些没有说的!)关于的肉鸡,从扫描--到利用,我做了个动画!(动画在菜鸟帝国里有下载!叫:的应用,地址:/down_view.asp?id=还有毛毛做的的动画也要看看!站上也有的!自己艘艘把!)大家可以看看!然后自己再照着画瓢!
说完了在说说,这个是一种叫爱情病毒所开的超级后门端口!如果你中了该病毒,病毒就会在你的机器里开一个的端口,使其他人可以通过telnet服务,用命令telnet 你的机器的ip (所有所所的命令都是在dos中键入的!win的是dos而的是命令提示符!)来连接上你的电脑,并且连接后权限很大!可以进行任何级别的命令操作!所以,如果你的机器开了这个端口请你赶快用杀毒软件把他杀掉!不然遇到可恶的入侵者,你的机器可就遭殃了!而从入侵的角度来看!我们就可以用端口扫描工具(如:Port Ready)去扫开的机器!然后telnet上去!就可以轻松得到一台机器的shell(shell:简单认为就是一个可以操作远程计算机的dos命令窗口!)并可以进行一切权限的操作!大家可以试试!不过该病毒是个老病毒了!所以可能扫描现在不到了,而且病毒作者只允许利用该端口一次!所以...........但是大家要知道!有很多病毒我们是可以利用的!比如:益出!一场大范围的病毒侵袭后,一般会有高手根据病毒写出相应的益出程序!(什么是益出呢?我那缓冲区益出给大家举例!如果你向一个只能容纳毫升的杯子里倒入毫升的牛奶会出现什么情况呢?呵呵!一定就会有毫升流出了杯子!把这个例子用在缓冲区益出里就是你向计算机“倒入”“毫升”的数据!而缓冲区只能处理“毫升”那“毫升”到那里去了呢?呵呵!可不是象牛奶一样浪费了!,而是把一些别的合法数据给覆盖了!这样如果这“毫升”数据是一些病毒代码,或者黑客程序,呵呵!后果就可想而知了.............)使我们这些菜鸟可以通过这些程序轻而易举的拿到对中病毒计算机的shell!当然不仅病毒可以益出!微软的很多漏洞都是可以的!所以大家要关注微软的漏洞报告!以便得到新鲜的肉鸡!呵呵!
上面说的一些简单的获得肉鸡的方法!有空密码的!病毒开的后门的!还有利用漏洞益出的!等等!大家还可能说你怎么不说啊!呵呵!是要说说!其实是微软提供的远程桌面的服务,英文名字叫“Term Server”所开的端口(端口可以更改)。通过客户端(连接软件),用户帐号来�型夹尾僮髟冻痰募扑慊�∈莣indows自带的服务!但不是每个操作系统都有的!win的server和版本的有还有xp系统的有!而win个人板是没有该服务的!通常所说的肉鸡是对方开了此服务!并且你有对方的登陆帐号!(注意:帐号权限必须是adm权限!)可以登陆对方计算机进行操作的!所以只要扫开端口的机器就可以基本判断哪个计算机开了该服务!然后获得登陆帐号就可以了!但是!!!帐号你怎么获得呢?这是个大问题!但也不是不能!首先你可以利用输入法漏洞!通过这个漏洞你可以直接进入计算机,不用帐号!(具体利用自己找!)但是这个漏洞也是很早的了!现在用户都已经打上了补丁!(但也不是一定没有次漏洞的!)当然你可以用x-scan扫nt弱口令获得对方的登陆帐号!但是个人认为也不是很好!因为现在也很少能扫到若口令的的肉鸡了!那么直接获得肉鸡是上传 源码包希望不大了!可是的肉鸡毕竟是肉鸡中的精品!好处多多的!那怎么获得呢?呵呵!其实的获得都是通过别的漏洞入侵了肉鸡后,自己开的(远程桌面服务),所以,大家还是先学习别的漏洞的入侵!在学习!当然这里涉及到怎么开肉鸡的服务!大家就要自己找资料了!
前面提到了x-scan!这个是安全焦点出的一个漏洞扫描分析工具!用在我们手里就是扫描肉鸡的工具!(其实我还不会用!)这里不建议新人使用!因为x-scan确实是大名鼎鼎,很多新人一接触黑客就知道了他!并用他扫啊扫!扫了半天没有任何信息!终于扫到东西了!呵呵!却不知道怎么利用!这也就是为什么我不建议新人用的原因!就是扫到了漏洞不知道该怎么利用!还有流光,也是一样!功能强大!(但是我到今天还摸不到他是怎么用!连怎么添ip都不知道!(本人愚顿!))但比较复杂!当然你如果学习到了一定水平,(知道了里面的 漏洞的利用!)是一定要用这些扫描软件的!现在推荐大家还是去看动画!学习专门的漏洞入侵!用专门的漏洞扫描工具!
最后说几句!大家在找肉鸡时要灵活运用!比如:你扫了很多的肉鸡!(一般是些个人用户!但也有服务器!)那么要想找其中是服务器的怎么办呢?呵呵!你可以用scaner!他经过设置后可以扫描已有ip的端口!现在知道怎么做了把!呵呵!一般服务器为了方便管理都会开端口的!我们就可以利用这个特征,扫描肉鸡中开端口的机器!这样.........呵呵!我就不细说了!关于scaner的应用!大家自己找资料吧!还有啊!有的后门是没有密码的!如winshell(后面会介绍到!)他默认的端口是!而有的粗心的黑客不设置直接生成后门!所以!就回留下特征!呵呵!不用我说大家一定知道了!应该扫描开端口的机器!然后用相应的连接方法进行连接!就可以获得“同行”“送”你的肉鸡!呵呵!类似的方法还有很多!希望大家能灵活运用!轻松找到多多的肉鸡!
sniffer状态
sniffer是窃听的意思
应该就是窃听状态
sniffers(嗅探器)几乎和internet有一样久的历史了.Sniffer是一种常用的收集有用数据方法,这些数据可以是用户的帐号和密码,可以是一些商用机密数据等等。随着Internet及电子商务的日益普及,Internet的安全也越来越受到重视。在Internet安全隐患中扮演重要角色之一的Sniffer以受到越来越大的关注,所以今天我要向大家介绍一下介绍Sniffer以及如何阻止sniffer。
大多数的黑客仅仅为了探测内部网上的主机并取得控制权,只有那些"雄心勃勃"的黑客,为了控制整个网络才会安装特洛伊木马和后门程序,并清除记录。他们经常使用的手法是安装sniffer。
在内部网上,黑客要想迅速获得大量的账号(包括用户名和密码),最为有效的手段是使用 "sniffer" 程序。这种方法要求运行Sniffer 程序的主机和被监听的主机必须在同一个以太网段上,故而在外部主机上运行sniffer是没有效果的。再者,必须以root的身份使用sniffer 程序,才能够监听到以太网段上的数据流。谈到以太网sniffer,就必须谈到以太网sniffing。
那么什么是以太网sniffer呢?
以太网sniffing是指对以太网设备上传送的数据包进行侦听,发现感兴趣的包。如果发现符合条件的包,就把它存到一个log文件中
去。通常设置的这些条件是包含字"username"或"password"的包。它的目的是将网络层放到promiscuous模式,从而能干些事情。
Promiscuous模式是指网络上的所有设备都对总线上传送的数据进行侦听,并不仅仅是python源码pyobject它们自己的数据。根据第二章中有关对以太网的工作原理的基本介绍,可以知道:一个设备要向某一目标发送数据时,它是对以太网进行广播的。一个连到以太网总线上的设备在任何时间里都在接受数据。不过只是将属于自己的数据传给该计算机上的应用程序。
利用这一点,可以将一台计算机的网络连接设置为接受所有以太
网总线上的数据,从而实现sniffer。
sniffer通常运行在路由器,或有路由器功能的主机上。这样就能对大量的数据进行监控。sniffer属第二层次的攻击。通常是攻击者已经进入了目标系统,然后使用sniffer这种攻击手段,以便得到更多的信息。
sniffer除了能得到口令或用户名外,还能得到更多的其他信息,比如一个其他重要的信息,在网上传送的金融信息等等。sniffer几乎能得到任何以太网上的传送的数据包。黑客会使用各种方法,获得系统的控制权并留下再次侵入的后门,以保证sniffer能够执行。在Solaris 2.x平台上,sniffer 程序通常被安装在/usr/bin 或/dev目录下。黑客还会巧妙的修改时间,使得sniffer程序看上去是和其它系统程序同时安装的。
大多数以太网sniffer程序在后台运行,将结果输出到某个记录文件中。黑客常常会修改ps程序,使得系统管理员很难发现运行的sniffer程序。
以太网sniffer程序将系统的网络接口设定为混合模式。这样,它就可以监听到所有流经同一以太网网段的数据包,不管它的接受者或发送者是不是运行sniffer的主机。 程序将用户名、密码和其它黑客感兴趣的数据存入log文件。黑客会等待一段时间 ----- 比如一周后,再回到这里下载记录文件。
讲了这么多,那么到底我们可以用什么通俗的话来介绍sniffer呢?
计算机网络与电话电路不同,计算机网络是共享通讯通道的。共享意味着计算机能够接收到发送给其它计算机的信息。捕获在网络中传输的数据信息就称为sniffing(窃听)。
以太网是现在应用最广泛的计算机连网方式。以太网协议是在同一回路向所有主机发送数据包信息。数据包头包含有目标主机的正确地址。一般情况下只有具有该地址的主机会接受这个数据包。如果一台主机能够接收所有数据包,而不理会数据包头内容,这种方式通常称为"混杂" 模式。
由于在一个普通的网络环境中,帐号和口令信息以明文方式在以太网中传输, 一旦入侵者获得其中一台主机的root权限,并将其置于混杂模式以窃听网络数据,从而有可能入侵网络中的所有计算机。
一句话,sniffer就是一个用来窃听的黑客手段和工具。
二、sniffer的工作原理
通常在同一个网段的所有网络接口都有访问在物理媒体上传输的所有数据的能力,而每个网络接口都还应该有一个硬件地址,该硬件地址不同于网络中存在的其他网络接口的硬件地址,同时,每个网络至少还要一个广播地址。(代表所有的接口地址),在正常情况下,一个合法的网络接口应该只响应这样的两种数据帧:
1、帧的目标区域具有和本地网络接口相匹配的硬件地址。
2、帧的目标区域具有"广播地址"。
在接受到上面两种情况的数据包时,nc通过cpu产生一个硬件中断,该中断能引起操作系统注意,然后将帧中所包含的数据传送给系统进一步处理。
而sniffer就是一种能将本地nc状态设成(promiscuous)状态的软件,当nc处于这种"混杂"方式时,该nc具备"广播地址",它对所有遭遇到的每一个帧都产生一个硬件中断以便提醒操作系统处理流经该物理媒体上的每一个报文包。(绝大多数的nc具备置成 promiscuous方式的能力)
可见,sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据,并且通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。值得注意的是:sniffer是极其安静的,它是一种消极的安全攻击。
通常sniffer所要关心的内容可以分成这样几类:
1、口令
我想这是绝大多数非法使用sniffer的理由,sniffer可以记录到明文传送的userid和passwd.就算你在网络传送过程中使用了加密的数据,sniffer记录的数据一样有可能使入侵者在家里边吃肉串边想办法算出你的算法。
2、金融帐号
许多用户很放心在网上使用自己的信用卡或现金帐号,然而sniffer可以很轻松截获在网上传送的用户姓名、口令、信用卡号码、截止日期、帐号和pin.
3、偷窥机密或敏感的信息数据
通过拦截数据包,入侵者可以很方便记录别人之间敏感的信息传送,或者干脆拦截整个的email会话过程。
4、网页源码保密窥探低级的协议信息。
这是很可怕的事,我认为,通过对底层的信息协议记录,比如记录两台主机之间的网络接口地址、远程网络接口ip地址、ip路由信息和tcp连接的字节顺序号码等。这些信息由非法入侵的人掌握后将对网络安全构成极大的危害,通常有人用sniffer收集这些信息只有一个原因:他正在进行一次欺诈,(通常的ip地址欺诈就要求你准确插入tcp连接的字节顺序号,这将在以后整理的文章中指出)如果某人很关心这个问题,那么sniffer对他来说只是前奏,今后的问题要大得多。(对于高级的hacker而言,我想这是使用sniffer的唯一理由吧)
二.sniffer的工作环境
snifffer就是能够捕获网络报文的设备。嗅探器的正当用处在于分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用嗅探器来作出精确的问题判断。
嗅探器在功能和设计方面有很多不同。有些只能分析一种协议,而另一些可能能够分析几百种协议。一般情况下,大多数的嗅探器至少能够分析下面的协议:
1.标准以太网
2.TCP/IP
3.IPX
4.DECNet
嗅探器通常是软硬件的结合。专用的嗅探器价格非常昂贵。另一方面,免费的嗅探器虽然不需要花什么钱,但得不到什么支持。
嗅探器与一般的键盘捕获程序不同。键盘捕获程序捕获在终端上输入的键值,而嗅探器则捕获真实的网络报文。嗅探器通过将其置身于网络接口来达到这个目的——例如将以太网卡设置成杂收模式。(为了理解杂收模式是怎么回事,先解释局域网是怎么工作的)。
数据在网络上是以很小的称为帧(Ftame)的单位传输的帧由好几部分组成,不同的部分执行不同的功能。(例如,以太网的前个字节存放的是源和目的的地址,这些位告诉网络:数据的来源和去处。以太网帧的其他部分存放实际的用户数据、TCP/IP的报文头或IPX报文头等等)。
帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上。通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧的到达,然后对其进行存储。就是在这个传输和接收的过程中,嗅探器会造成安全方面的问题。
每一个在LAN上的工作站都有其硬件地址。这些地址唯一地表示着网络上的机器(这一点于Internet地址系统比较相似)。当用户发送一个报文时,这些报文就会发送到LAN上所有可用的机器。
在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的报文则不予响应(换句话说,工作站A不会捕获属于工作站B的数据,而是简单的忽略这些数据)。
如果某在工作站的网络接口处于杂收模式,那么它就可以捕获网络上所有的报文和帧,如果一个工作站被配置成这样的方式,它(包括其软件)就是一个嗅探器。
嗅探器可能造成的危害:
1.嗅探器能够捕获口令
2.能够捕获专用的或者机密的信息
3.可以用来危害网络邻居的安全,或者用来获取更高级别的访问权限
事实上,如果你在网络上存在非授权的嗅探器就以为着你的系统已经暴露在别人面前了。(大家可以试试天行2的嗅探功能)
一般我们只嗅探每个报文的前到个字节。用户名和口令都包含在这一部分中,这是我们关心的真正部分。工人,也可以嗅探给定接口上的所有报文,如果有足够的空间进行存储,有足够的那里进行处理的话,将会发现另一些非常有趣的东西……
简单的放置一个嗅探器宾将其放到随便什么地方将不会起到什么作用。将嗅探器放置于被攻击机器或网络附近,这样将捕获到很多口令,还有一个比较好的方法就是放在网关上。如果这样的话就能捕获网络和其他网络进行身份鉴别的过程。这样的方式将成倍地增加我们能够攻击的范围。
三.谁会使用sniffers
可能谁都回知道谁会使用sniffer,但是并不是每个使用它的人都是网络高手,因为现在有很多的sniffer都成了傻瓜似的了,前段时间用的最多的不外乎oicq sniffer。我想那些喜欢查好友ip的朋友都应该记得它吧。呵呵,我都使用过它,现在当然不用了啊!
当然系统管理员使用sniffer来分析网络信息交通并且找出网络上何处发生问题。一个安全管理员可以同时用多种sniffer, 将它们放置在网络的各处,形成一个入侵警报系统。对于系统管理员来说sniffer是一个非常好的工具,但是它同样是一个经常被黑客使用的工具.骇客安装sniffer以获得用户名和账号,信用卡号码,个人信息,和其他的信息可以导致对你或是你的公司的极大危害如果向坏的方面发展。当它们得到这些信息后,骇客将使用密码来进攻其他的internet 站点甚至倒卖信用卡号码。
三.sniffer是如何在网络上实施的
谈这个问题之前还应该先说一下Ethernet的通讯。通常在同一个网段的所有网络接口都有访问在媒体上传输的所有数据的能力,而每个网络接口都还应该有一个硬件地址,该硬件地址不同于网络中存在的其它网络接口的硬件地址,同时,每个网络至少还要一个广播地址。在正常情况下,一个合法的网络接口应该只响应这样的两种数据帧:
1�帧的目标区域具有和本地网络接口相匹配的硬件地址。
2�帧的目标区域具有“广播地址”。
在接受到上面两种情况的数据包时,网卡通过cpu产生一个硬件中断。该中断能引起操作系统注意,然后将帧中所包含的数据传送给系统进一步处理。而sniffer就是一种能将本地网卡状态设成杂乱模式(promiscuous Mode)的软件。当网卡处于杂乱模式时,该网卡具备“广播地址”,它对所有遇到的每一个帧都产生一个硬件中断以提醒操作系统处理每一个报文包。(绝大多数的网卡具备设置成杂乱模式的能力。
可见,sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据。通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。值得注意的是:sniffer是极其安静的,它是一种消极的安全攻击。
四.哪里可以得到sniffer
我们讲的sniffer,主要是在unix系统下运用的,至于那些oicq sniffer就不在我们讨论的范围。
Sniffer是黑客们最常用的入侵手段之一。你可以在经过允许的网络中运行sniffer,了解它是如何有效地危及本地机器安全。
Sniffer可以是硬件,也可以是软件。现在品种最多,应用最广的是软件Sniffer,绝大多数黑客们用的也是软件Sniffer。
以下是一些也被广泛用于调试网络故障的sniffer工具:
(一).商用sniffer:
1. Network General.
Network General开发了多种产品。最重要的是Expert Sniffer,它不仅仅可以sniff,还能够通过高性能的专门系统发送/接收数据包,帮助诊断故障。还有一个增强产品"Distrbuted Sniffer System"可以将UNIX工作站作为sniffer控制台,而将sniffer agents(代理)分布到远程主机上。
2. Microsoft's Net Monitor
对于某些商业站点,可能同时需要运行多种协议--NetBEUI、IPX/SPX、TCP/IP、.3和SNA等。这时很难找到一种sniffer帮助解决网络问题,因为许多sniffer往往将某些正确的协议数据包当成了错误数据包。Microsoft的Net Monitor(以前叫Bloodhound)可以解决这个难题。它能够正确区分诸如Netware控制数据包、NT NetBios名字服务广播等独特的数据包。(etherfind只会将这些数据包标识为类型的广播数据包。)这个工具运行在MS Windows 平台上。它甚至能够按MAC地址(或主机名)进行网络统计和会话信息监视。只需简单地单击某个会话即可获得tcpdump标准的输出。过滤器设置也是最为简单的,只要在一个对话框中单击需要监视的主机即可。
(二).免费软件sniffer
1. Sniffit由Lawrence Berkeley 实验室开发,运行于Solaris、SGI和Linux等平台。可以选择源、目标地址或地址集合,还可以选择监听的端口、协议和网络接口等。这个SNIFFER默认状态下只接受最先的个字节的信息包,这对于一次登陆会话进程刚刚好。
2. SNORT:这个SNIFFER有很多选项供你使用并可移植性强,可以记录一些连接信息,用来跟踪一些网络活动。
3. TCPDUMP:这个SNIFFER很有名,linux,FREEBSD还搭带在系统上,是一个被很多UNIX高手认为是一个专业的网络管理工具,记得以前TsutomuShimomura(应该叫下村侵吧)就是使用他自己修改过的TCPDUMP版本来记录了KEVINMITNICK攻击他系统的记录,后来就配合FBI抓住了KEVINMITNICK,后来他写了一文:使用这些LOG记录描述了那次的攻击,HowMitnickhackedTsutomuShimomurawithanIPsequenceattack
( /~lspitz/snoop.html
(四).Linux下的sniffer工具
Linux下的sniffer工具,我推荐Tcpdump。
[1].tcpdump的安装
在linux下tcpdump的安装十分简单,一般由两种安装方式。一种是以rpm包的形式来进行安装。另外一种是以源程序的形式安装。
1. rpm包的形式安装
这种形式的安装是最简单的安装方法,rpm包是将软件编译后打包成二进制的格式,通过rpm命令可以直接安装,不需要修改任何东西。以超级用户登录,使用命令如下:
#rpm -ivh tcpdump-3_4a5.rpm
这样tcpdump就顺利地安装到你的linux系统中。怎么样,很简单吧。
2. 源程序的安装
既然rpm包的安装很简单,为什么还要采用比较复杂的源程序安装呢?其实,linux一个最大的诱人之处就是在她上面有很多软件是提供源程序的,人们可以修改源程序来满足自己的特殊的需要。所以我特别建议朋友们都采取这种源程序的安装方法。
· 第一步 取得源程序 在源程序的安装方式中,我们首先要取得tcpdump的源程序分发包,这种分发包有两种 形式,一种是tar压缩包(tcpdump-3_4a5.tar.Z),另一种是rpm的分发包(tcpdump-3_4a5.src.rpm)。这两种 形式的内容都是一样的,不同的仅仅是压缩的方式.tar的压缩包可以使用如下命令解开:
#tar xvfz tcpdump-3_4a5.tar.Z
rpm的包可以使用如下命令安装:
#rpm -ivh tcpdump-3_4a5.src.rpm
这样就把tcpdump的源代码解压到/usr/src/redhat/SOURCES目录下.
· 第二步 做好编译源程序前的准备活动
在编译源程序之前,最好已经确定库文件libpcap已经安装完毕,这个库文件是tcpdump软件所需的库文件。同样,你同时还要有一个标准的c语言编译器。在linux下标准的c 语言编译器一般是gcc。 在tcpdump的源程序目录中。有一个文件是Makefile.in,configure命令就是从Makefile.in文件中自动产生Makefile文件。在Makefile.in文件中,可以根据系统的配置来修改BINDEST 和 MANDEST 这两个宏定义,缺省值是
BINDEST = @sbindir @
MANDEST = @mandir @
第一个宏值表明安装tcpdump的二进制文件的路径名,第二个表明tcpdump的man 帮助页的路径名,你可以修改它们来满足系统的需求。
· 第三步 编译源程序
使用源程序目录中的configure脚本,它从系统中读出各种所需的属性。并且根据Makefile.in文件自动生成Makefile文件,以便编译使用.make 命令则根据Makefile文件中的规则编译tcpdump的源程序。使用make install命令安装编译好的tcpdump的二进制文件。
总结一下就是:
# tar xvfz tcpdump-3_4a5.tar.Z
# vi Makefile.in
# . /configure
# make
# make install
[2].Tcpdump的使用
tcpdump采用命令行方式,它的命令格式为:
tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]
[ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]
[ -T 类型 ] [ -w 文件名 ] [表达式 ]
1. tcpdump的选项介绍
-a 将网络地址和广播地址转变成名字;
-d 将匹配信息包的代码以人们能够理解的汇编格式给出;
-dd 将匹配信息包的代码以c语言程序段的格式给出;
-ddd 将匹配信息包的代码以十进制的形式给出;
-e 在输出行打印出数据链路层的头部信息;
-f 将外部的Internet地址以数字的形式打印出来;
-l 使标准输出变为缓冲行形式;
-n 不把网络地址转换成名字;
-t 在输出的每一行不打印时间戳;
-v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
-vv 输出详细的报文信息;
-c 在收到指定的包的数目后,tcpdump就会停止;
-F 从指定的文件中读取表达式,忽略其它的表达式;
-i 指定监听的网络接口;
-r 从指定的文件中读取包(这些包一般通过-w选项产生);
-w 直接将包写入文件中,并不分析和打印出来;
-T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程 调用)和snmp(简单网络管理协议;)
2. tcpdump的表达式介绍
表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包将会被截获。
在表达式中一般如下几种类型的关键字,一种是关于类型的关键字,主要包括host,net,port, 例如 host ...2,指明 ...2是一台主机,net .0.0.0 指明 .0.0.0是一个网络地址,port 指明端口号是。如果没有指定类型,缺省的类型是host.
第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,这些关键字指明了传输的方向。举例说明,src ...2 ,指明ip包中源地址是...2 , dst net .0.0.0 指明目的网络地址是.0.0.0 。如果没有指明方向关键字,则缺省是src or dst关键字。
第三种是协议的关键字,主要包括fddi,ip ,arp,rarp,tcp,udp等类型。Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定的网络协议,实际上它是"ether"的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。
除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less,greater,还有三种逻辑运算,取非运算是 'not ' '! ', 与运算是'and','&&';或运算 是'or' ,'';
这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来说明。
(1)想要截获所有...1 的主机收到的和发出的所有的数据包:
#tcpdump host ...1
(2) 想要截获主机...1 和主机...2 或...3的通信,使用命令:(在命令行中适用括号时,一定要
#tcpdump host ...1 and \ (...2 or ...3 \)
(3) 如果想要获取主机...1除了和主机...2之外所有主机通信的ip包,使用命令:
#tcpdump ip host ...1 and ! ...2
(4)如果想要获取主机...1接收或发出的telnet包,使用如下命令:
#tcpdump tcp port host ...1
3. tcpdump 的输出结果介绍
下面我们介绍几种典型的tcpdump命令的输出信息
(1) 数据链路层头信息
使用命令#tcpdump --e host ice
ice 是一台装有linux的主机,她的MAC地址是0::::AF:1A
H是一台装有SOLARIC的SUN工作站,它的MAC地址是8:0:::5B:;上一条命令的输出结果如下所示:
::. eth0 < 8:0:::5b: 0::::af:1a ip : h. > ice.telne
t 0:0(0) ack win (DF)
分析:::是显示的时间, 是ID号,eth0 <表示从网络接口eth0 接受该数据包,eth0 >表示从网络接口设备发送数据包, 8:0:::5b:是主机H的MAC地址,它表明是从源地址H发来的数据包. 0::::af:1a是主机ICE的MAC地址,表示该数据包的目的地址是ICE . ip 是表明该数据包是IP数据包, 是数据包的长度, h. > ice.telnet 表明该数据包是从主机H的端口发往主机ICE的TELNET()端口. ack 表明对序列号是的包进行响应. win 表明发送窗口的大小是.
(2) ARP包的TCPDUMP输出信息
使用命令#tcpdump arp
得到的输出结果是:
::. eth0 > arp who-has route tell ice (0::::af:1a)
::. eth0 < arp reply route is-at 0::::: (0::::af:1a)
分析: ::是时间戳, 是ID号, eth0 >表明从主机发出该数据包, arp表明是ARP请求包, who-has route tell ice表明是主机ICE请求主机ROUTE的MAC地址。 0::::af:1a是主机ICE的MAC地址。
(3) TCP包的输出信息
用TCPDUMP捕获的TCP包的一般输出信息是:
src > dst: flags data-seqno ack window urgent options
src > dst:表明从源地址到目的地址, flags是TCP包中的标志信息,S 是SYN标志, F (FIN), P (PUSH) , R (RST) "." (没有标记); data-seqno是数据包中的数据的顺序号, ack是下次期望的顺序号, window是接收缓存的窗口大小, urgent表明数据包中是否有紧急指针. Options是选项.
(4) UDP包的输出信息
用TCPDUMP捕获的UDP包的一般输出信息是:
route.port1 > ice.port2: udp lenth
UDP十分简单,上面的输出行表明从主机ROUTE的port1端口发出的一个UDP数据包到主机ICE的port2端口,类型是UDP, 包的长度是lenth上面,我就详细介绍了TCPDUMP的安装和使用,希望会对大家有所帮助。如果想要熟练运用TCPDUMP这个LINUX环境下的SNIFFER利器,还需要大家在实践中总结经验,充分发挥它的威力。
(五).windows平台上的sniffer
我推荐netxray和sniffer pro软件,想必大家都用过他们,不过我在这儿还要再简单介绍一下他们。
netxray的使用说明
1.1.1.1----2.2.2.2----3.3.3.3----4.4.4.4 这是一个ShareHub连接下的局域网
5.5.5.5 这是一个端口上的
启动Capture,
linuxç认è¯
ä½ ä»æ¥åªç¨è¿Windowsï¼ä»æ¥æ²¡æ¥è§¦è¿UNIXï¼åªç¥éæä¸ä¸ªæ件æ½æ¥æ½å»ï¼åªç¥é硬çå°±æ¯C: D: E:å´ä»æ¥æ²¡æç 究è¿ååºè¡¨ï¼ä¹è®¸ä¼ç¨VCç¼ä¸ªç¨åºï¼å¾ä¹ æ¯å®çéæç¯å¢....æä¸å¤©ï¼ä¸ç®¡ä»ä¹åå äºï¼ä¹è®¸æ¯çæ¥çº¸ä¸é£äºæå åå硬çé½åä¸æ¸ æ¥çè®°è çå¹åï¼æè æ¯èæ¿è¦æ±ä½ ç¨å®ä½ä¸ªé¡¹ç®ï¼æè æ¯åå¦ä»¬é½æäºä½ 没æè§å¾å¾åï¼æè ä½ å¬è¯´æ¾å·¥ä½æè¿ä¸ªçç»éªå°±ææ´å¤§å¸æ....ä¸ç®¡ææ ·ï¼ä½ æ³å¨èªå·±çæºå¨ä¸å®è£ ä¸ä¸ªLinuxãOKï¼è¿ä¸ªæç« å°±æ¯ç»ä½ åçï¼å 为ä»ç°å¨å¼å§ï¼ä½ ä¼ææå çé®é¢ä½ ä¼è§å¾ä»åå¨windowsé£éå¾æ¥çæå ³è®¡ç®æºçç»éªå¥½åå®å ¨ç¨ä¸ä¸ãä½ ä¼è§å¾âLinuxæä¹è¿æ ·éº»ç¦âãä½ ä¼æç§ä»æ¥æ²¡æå¼è¿æ±½è½¦ä½æ¯å¾æ汽车æå¼ä¿®çä¸æ ·è§å¾æ å¤ä¸æã为ä»ä¹è¦å¦Linuxãå ¶å®ä½ ä¸å¿ å¦ä¹ Linuxï¼å¦æä½ å°±æ¯æ³ä½¿ç¨è®¡ç®æºè®©å®ä½¿ä½ çå·¥ä½ï¼æ¯å¦æåï¼æçï¼ç»è®¡æ°æ®çæ´ææçï¼Linuxä¸è¡ãWindowsï¼æè ææ¨èwindows XPæ¯ä½ æ好çéæ©ï¼å®å¯¹ä¸æçæ¯æå¾å¥½ï¼é常稳å®ï¼ä¸é¢ææ æ°åºç¨ç¨åºï¼èä¸å¦æä½ èªå·±æ¿æ é£é©ï¼è¿å¯ä»¥ä½¿ç¨ççï¼å è´¹ãLinuxå°ä¼ç»ä½ é æå¾å¤éº»ç¦ï¼å®è£ æ¶ä¼é æç³»ç»æ°æ®ä¸¢å¤±ï¼æ æ³é©±å¨ç½å¡/声å¡/æ¾ç¤ºå¡/æ¾ç¤ºå¨ï¼æ æ³é ç½®ä¸æï¼å¾å½¢çé¢éåº¦æ ¢ï¼ççãä»åå¨windowsä¸å¾å®¹æåå°çæ¯å¦ä¿®æ¹æ¾ç¤ºé¢çæè å®è£ æ°çç½å¡é©±å¨å¨Linuxä¸é½åå¾å¥½åè¦ä½ èªå·±éæ°ä¸ä¸æ¬¡å¤§ä¸è®¡ç®æºåç课é£ä¹è®¨åãåµåµï¼é£Linuxæä»ä¹å¥½å¤å¢ï¼ä½ ä¼é®ãå ¶å®Linux没ä»ä¹å¥½å¤ï¼ä»ä½¿ç¨è§åº¦ï¼å®å¯ä¸ç好å¤æ¯å®æ¯æ们èªå·±çï¼èwindowså好ï¼æ¯Microsoftçãâåè½æä¹æ ·ï¼âä½ ä¹è®¸åé®ãåºå«æ¯ï¼Linuxå¯ä»¥è®©ä½ æ¥ç 究å®ï¼éè¿ä½¿ç¨Linuxä½ å¯ä»¥è·å¾æ´æ·±ä¸æ¥å¯¹è®¡ç®æºçäºè§£ -- èä¸åªæ¯ä¸ä¸ªå ¨èªå¨ççåã计ç®æºæ¯ä¸ä¸ªå¾ç¥å¥çä¸è¥¿ï¼ä½ ä¹è®¸å¯¹é£äºååºwindowsçç¨åºåå¾å´æ(ææ¯ç)ï¼æè 对é£äºè½åææ´å¥½çç®æ³æ´å®å ¨çæä½ç³»ç»çhacker(对ä¸èµ·ï¼è¿ç¨æ»å»ç³»ç»çä¸æ¯hacker)å¾å´æï¼é£ä¹ä½ åºå½ç¥éï¼åå¨ä¸ä¸ªwindowsçæºå¨åé¢æ´å¤©å°±ä¼ç¨é¼ æ ææ½ä¹è®¸è½ç»ä½ ä¸ä¸ªå¾å¥½çæååçèªæ°´ï¼ä½æ¯æ°¸è¿æ æ³è®©ä½ è¿å ¥çæ£è®¡ç®æºçä¸ç -- æ为ä¸ä¸ªèªç±ææ³çHackerï¼æè 说ï¼ä½ åªè½æ°¸è¿æ¯ä¸ªwindowsçç¨æ· -- ä¹æ²¡ä»ä¹ä¸å¥½ï¼å¾å¤é¢å¯¼è¿ä¸ä¼è®¡ç®æºå¢ -- èä¸å¯è½ææºä¼èªå·±åä¸ä¸ªwindowsãä¸ä¸ªä¸å¤ªå¦çç»ææ¯ï¼å½ä¸çä¸å 满äºwindowsç奴é¶æ¶ï¼æ们就å¾è±æ´å¤§çä»·é±ä»Microsofté£éè·å¾è¿æ ·çææ¯ï¼æäºç¤¾ä¼éï¼æ们管è¿ä¸ªå«åå¥åã讲è¿ä¹å¤ï¼æ éæ¯è¯´ï¼èåä¸è½ä¸¤å¤´åï¼è³å°ç°å¨æ¯è¿æ ·ãè¦æ³ä»ä¹å«äººé½ç»ä½ å好ï¼ç³»ç»å®è£ ä¸è·¯å车ï¼ç¡¬ä»¶é ç½®ç¹ä¸¤ä¸é¼ æ ï¼å¯¹ä¸èµ·ï¼è¯·ç¨windows xpãå¦æä½ åå¤å¥½äºè¿ä¸åï¼é£ä¹æ¥ççå§ã
OKï¼ä½ ç第ä¸ä¸ªé®é¢æ¯ï¼ä»ä¹æ¯Linuxï¼å®åUNIXæä»ä¹åºå«ï¼é®è¿ä¸ªé®é¢çåå å¢ï¼å¤åæ¯ä½ è¿å¨å¤§ä¸çæ¶åä¸æ¬¡å»å®éªå®¤ï¼çå°é«å¹´çºªå¦çå¨ä¸ä¸ªç¹å¤§å±å¹çæºå¨ä¸ä½é¢ï¼ä½ 羡æ çççä»ï¼é®ï¼âè¿æ¯ä»ä¹è®¡ç®æºåï¼è¿ä¹é«çº§ï¼âèä»ä¸æ éªå²ç说ï¼âè¿æ¯UNIXâãåæ¥ä½ æçå¤äºï¼ç¥éé£æ¯SUNå·¥ä½ç«ï¼ä¸é¢è¿è¡çSolarisï¼å°±æ¯UNIXãç°å¨ä½ åå¬è¯´Linuxä¹æ¯UNIXï¼æ¯æä¹åäºå¢ï¼
short answer:å»ç书ï¼è¡ä¸å¾å¤Linuxç书第ä¸ç« å°±æ¯è®²ä»ä»¬çåå²å亲å±å ³ç³»çã
long answer: UNIXæ¯ä¸ä¸ªè¿æ¯å¹´åç±å 个ç 究çå¨å®éªå®¤éå¼å§åæ¥ä¸ä¸ªå¤§å ¬å¸æå®åä¸åäºçä¸ä¸ªæä½ç³»ç»ãä¸æ¥äºå»ï¼å®æé¿å¹¶ä¸å é¢äºå¸åºãå½æ¶å®åªæ¯è¿è¡å¨åªæ大å¦æä¹°å¾èµ·ä¸ä¸¤å°çæè´µæºå¨ä¸ãåæ¥æºå¨å¤äºï¼å ¬å¸å¤äºï¼æå¾äººä¹å¤äºï¼å°±å家äºï¼èâUNIXâè¿ä¸ªååç±äºæ³å¾å ³ç³»ï¼è°ä¹ä¸è½è¯´èªå·±çæä½ç³»ç»æ¯âUNIXâèåªè½è¯´æ¯âUNIXå ¼å®¹âç³»ç»äºãæ以ç°å¨âUNIXâç³»ç»æ¯ä¸åå¨çï¼åå¨çåªæ¯ä¸ä¸ªé¥è¿çä¼ è¯´ãé£ä¹ç°å¨é£äºSolaris,AIX,IRISé½æ¯ä»ä¹å¢ï¼é£äºé½æ¯åå ¬å¸å¨ä»ä»¬ç¡¬ä»¶å¹³æä¸ä½çåä¸UNIXï¼è¿äºç³»ç»é½éµå¾ªä¸ä¸ªå«POSIXçå¤æªæ åï¼å¯¹äºï¼è¿ä¸ªæ åå¢ï¼æ¯åæ¥UNIX太å¤å¤ªä¹±ï¼å¤§å®¶ç¼ç¨æ¥å£çè³å½ä»¤é½ä¸ä¸æ ·äºæ以没åæ³åº§ä¸æ¥åéçä¸ä¸ªåè®®ã
é£ä¹Linuxæ¯ä»ä¹å¢ï¼Linuxæ¯åºäºPC(å ¶å®å¹³å°ä¹æçæ¯æ)çUNIXå ¼å®¹ç³»ç»ï¼å¨è·UNIXçå ³ç³»ä¸ï¼å®ä¸æ¯ä»»ä½å ¶å®UNIXå ¼å®¹ç³»ç»è¿ãæ以å¦æä½ æâSolarisææ¯æ£ç»UNIXï¼Linuxåªæ¯å ¼å®¹âçæ³æ³ï¼å¯¹ä¸èµ·ä½ éäºï¼èµ·ç ä½ å¾ææ¯æAIXç人æè´¥æè¡ï¼ä»ä»¬è¿è®¤ä¸ºAIXææ¯æ£ç»UNIXå¢ãæ以ç¨Linuxä½ å¯ä»¥å¦å°æå ³UNIXçç¥è¯ï¼è¿äºç¥è¯ç»å¤§é¨åå¨å ¶å®åä¸UNIXä¸å¯ä»¥ç¨å¾ä¸ãå½ç¶ï¼å ¶æ ¸å¿ææ³ç»å¯¹æ¯ç¸åçãé£ä¹å¨ä¸å¹´ååªæä½ ç读å士çè¾ å¯¼åæææºä¼å¨å®éªå®¤é£å°å®è´SUNä¸å¦çç¥è¯ï¼ä½ ç°å¨å¨PCæºä¸å°±å¯ä»¥å®è·µäºï¼è¿é¾éä¸æ¯å¾å¦çä¸ä»¶äºæ ä¹ï¼
第äºä¸ªé®é¢ï¼ææ³è£ ä¸ä¸ªLinuxï¼ææ°çæ¯åªä¸ªçæ¬ï¼æå¬è¯´è¿xxxlinux,yyylinux,è¿æå½å æä¸ªå ¬å¸é¼åæ¨åºçzzzlinuxï¼å°åºåªä¸ªæ´å¥½å¢ï¼é¦å ä½ éè¦æç½ï¼Linuxä¸æ¯windowsï¼å®ä¸æ¯ä¸ä¸ªç±ä¸å®¶åä¸å ¬å¸ç»´æ¤ç软件ï¼åªæä¸ä¸ªå è£ ãLinuxæ¯å¯ä»¥ä»»æå è£ èªç±é ç½®çä¸è¥¿ãä»»ä½ä¸ä¸ªäººï¼ä¸å®¶å ¬å¸ é½å¯ä»¥æç §èªå·±çæ³æ³ï¼æ¯å¦å ä¸ç¹åè½ï¼å ä¸ææ¯æï¼ä½ä¸ä¸ªLinuxåºæ¥ãè¿äº Linuxè½ç¶æ ¸å¿é¨åé½ä¸æ ·ï¼ä½æ¯ä»ä»¬æ带çåç§è½¯ä»¶ï¼ç¼ºççé ç½®é½ä¸ä¸æ ·ãåºå«æ¯ç¨ä¸ç§Linux åå¸ (ä¸åçLinuxæ们å«åä¸åçåå¸)ä¹è®¸ç¡¬ä»¶å¾å¥½é ç½®ï¼åç§è½¯ä»¶ä¹å¥½å®è£ ï¼ç¨å¦å¤ä¸ç§ä¹è®¸é度快ï¼åä¸ç§ä¹è®¸æ¯æä¸ææ¯è¾å¥½ãæ»ä¹æ²¡æç½åçåé¤ï¼å¨windowsä¸æ³å½ç¶çä¸è¥¿å¨linuxä¸ä¹è®¸éè¦ä½ ç¬å¤æè½å¾å°ãæ以ä»ä¸å¼å§éæ©distributionå°±å¿ é¡»é常å°å¿ï¼å¦åå 为èªå·±å好éæ个æå¿å¾å°ä¸ä¸ªLinuxåå¸å°±ä»¥ä¸ºææçé½ä¸æ ·å°±å¼å§å®è£ ï¼ç硬çæ°æ®æ¯äºï¼æè ç½ç»å天è·å°ä¹é ä¸åºæ¥çæ¶åï¼å°±æäºãä¸æ¯å¼ç©ç¬ï¼æç¥éwindowsä¸å®è£ 驱å¨ç¨åºå°±æ¯é¼ æ ç¹å ä¸ï¼å¯æ¯å¨Linuxä¸ï¼ä¸ºäºé©±å¨ä¸ä¸ªç½å¡ï¼æè ¾ä¸å¤æ¯ä¸å¸å¥ç -- å½ç¶ï¼æè§å¾è¿æ¯å¼å¾çãæ以ï¼é¢å¯¹é£ä¹å¤Linux distributionï¼ä½ åºå½éæ©åªä¸ªå¢ï¼æ¯è¾èåçLinux distributionæï¼RedHatï¼ææ°çæ¬6.2,7.0betaãç±äºRedHatå ¬å¸å·²ç»ä¸å¸ï¼è·å¾äºå¾å¤åä¸çæ¯æï¼æ以å®å¨ç¡¬ä»¶è½¯ä»¶å ¼å®¹æ§ä¸å¾å¥½ãå®é ä¸å®å·²ç»æ¯Linuxçå·¥ä¸æ åãæ³è±¡ä¸ä¸å¦æä½ æ¯ä¸ä¸ªæ¯å¦Oracleè¿æ ·ååçèæ¿ï¼ä½ éè¦ä¸º
Linuxå¼åä¸ä¸ªçæ¬ï¼èä¸åçLinux distéè¦åç¬å¼åç»´æ¤ï¼ä¸ºææ¬èèä½ èªç¶ä¼åªè®¤åä¸ä¸ªLinuxãSlackware(7.1)ãå¾æ©å°±æçLinuxï¼æå¾å¤èçå¿ å®ç¨æ·ï¼ä½ç°å¨è¶æ¥è¶ä¸è¡äºãSuSe Linuxï¼å¾·å½äººåçï¼å¨æ¬§æ´²å¾æµè¡ï¼æä¸äºé©±å¨ä¸çä¼å¿ãå¦å¤è¿æDebianï¼CorelLinuxçdistï¼ä¸ä¸ä¸ä»ç»äºãåLinux ä¸æ ·ï¼Windowsç³»åæ¯å®å ¨çå¤ä»»å¡æä½ç³»ç»ãå®ä»¬æ¯æåæ ·çç¨æ·æ¥å£ãç½ç»åå®å ¨æ§ãä½æ¯ï¼LinuxåWindowsççæ£åºå«å¨äºï¼Linux äºå®ä¸æ¯Unixçä¸ç§çæ¬ï¼èä¸æ¥èªUnixçè´¡ç®é常巨大ãæ¯ä»ä¹ä½¿å¾Unixå¦æ¤éè¦ï¼ä¸ä» å¨äºå¯¹å¤ç¨æ·æºå¨æ¥è¯´ï¼Unixæ¯ææµè¡çæä½ç³»ç»ï¼èä¸å¨äºå®æ¯å 费软件çåºç¡ãå¨Internetä¸ï¼å¤§éå 费软件é½æ¯é对Unixç³»ç»ç¼åçãç±äºæä¼å¤çUnixååï¼æ以Unixä¹æ许å¤å®ç°æ¹æ³ã没æä¸ä¸ªåç¬çç»ç»è´è´£Unixçååãç°å¨ï¼åå¨ä¸è¡å·¨å¤§çåéæ¨å¨Unix社å¢ä»¥å¼æ¾ç³»ç»çå½¢å¼èµ°åæ ååãå¦ä¸æ¹é¢Windowsç³»åæ¯ä¸ç¨ç³»ç»ï¼ç±å¼åæä½ç³»ç»çå ¬å¸æ§å¶æ¥å£å设计ãå¨è¿ä¸ªæä¹ä¸è¿ç§å ¬å¸å©æ¶¦å¾é«ï¼å 为å®å¯¹ç¨åºè®¾è®¡åç¨æ·æ¥å£è®¾è®¡å»ºç«äºä¸¥æ ¼çæ åï¼åé£äºå¼æ¾ç³»ç»ç¤¾å¢å®å ¨ä¸ä¸æ ·ãä¸äºç»ç»æ£å¨è¯å¾å®ææ ååUnixç¨åºè®¾è®¡æ¥å£çä»»å¡ãç¹å«è¦æåºçæ¯ï¼Linuxå®å ¨å ¼å®¹POSIX.1æ åã
å®å ¨é®é¢å¯¹äºIT管çåæ¥è¯´æ¯éè¦é¿æå ³æ³¨çã主管们éè¦ä¸å¥æ¡æ¶æ¥å¯¹æä½ç³»ç»çå®å ¨æ§è¿è¡åççè¯ä¼°ï¼å æ¬ï¼åºæ¬å®å ¨ãç½ç»å®å ¨ååè®®ï¼åºç¨åè®®ãåå¸ä¸æä½ã确信度ãå¯ä¿¡è®¡ç®ãå¼æ¾æ åãå¨æ¬æä¸ï¼æ们å°æç §è¿ä¸ä¸ªç±»å«æ¯è¾å¾®è½¯WindowsåLinuxçå®å ¨æ§ãæç»çå®æ§ç»è®ºæ¯ï¼ç®å为æ¢ï¼Linuxæä¾äºç¸å¯¹äºWindowsæ´å¥½çå®å ¨æ§è½ï¼åªæä¸ä¸ªæ¹é¢ä¾å¤ï¼ç¡®ä¿¡åº¦ï¼ã
æ 论æç §ä»ä¹æ å对WindowsåLinuxè¿è¡è¯ä¼°ï¼é½åå¨ä¸å®çé®é¢ï¼æ¯ä¸ªæä½ç³»ç»é½ä¸æ¢ä¸ä¸ªçæ¬ã微软çæä½ç³»ç»æWindowsã Windows NTã Windows ã Windows ServeråWindows CEï¼èLinuxçåè¡çç±äºå æ ¸ï¼åºäº2.2ã2.4ã2.6ï¼çä¸åå软件å çä¸åä¹æè¾å¤§çå·®å¼ãæ们æ¬ææ使ç¨çæä½ç³»ç»ï¼é½æ¯ç®åçææ¯èä¸æ¯é£äº"å¤è"ç解å³æ¹æ¡ã
ç¨æ·éè¦è®°ä½ï¼LinuxåWindowså¨è®¾è®¡ä¸å°±åå¨å²å¦æ§çåºå«ãWindowsæä½ç³»ç»å¾åäºå°æ´å¤çåè½éæå°æä½ç³»ç»å é¨ï¼å¹¶å°ç¨åºä¸å æ ¸ç¸ç»åï¼èLinuxä¸åäºWindowsï¼å®çå æ ¸ç©ºé´ä¸ç¨æ·ç©ºé´æææ¾ççéãæ ¹æ®è®¾è®¡æ¶æçä¸åï¼ä¸¤è é½å¯ä»¥ä½¿æä½ç³»ç»æ´å å®å ¨ã
LinuxåWindowså®å ¨æ§çåºæ¬æ¹å
对äºç¨æ·æ¥è¯´ï¼LinuxåWindowsçä¸ææ´æ°å¼åäºä¸¤è ä¹é´çç«äºãç¨æ·å¯ä»¥æèªå·±å欢çç³»ç»ï¼åæ¶ä¹å¨å ³æ³¨ç«äºçåå±ã微软ç主å¨æ§ä¼¼ä¹æ´é«ä¸äºââè¿æ¯ç±äºä¸ç"å·å²ç讽"ç"æ¿å±"ä¸Linuxçä¸æåå±ã微软å°å¨ä¸å 个æ对Windowså®å ¨è¿è¡æ¹è§ï¼å±æ¶å¾®è½¯ä¼åå¸Windows XPçWindowsXP Service Pack 2ãè¿ä¸æå¡å å¢å¼ºäºWindowsçå®å ¨æ§ï¼å ³éäºåå é»è®¤å¼æ¾ç许å¤æå¡ï¼ä¹æä¾äºæ°çè¡¥ä¸ç®¡çå·¥å ·ï¼ä¾å¦ï¼ä¸ºäºé¿å åå°è¿å¤æ ç¨çä¿¡æ¯ï¼è¦åæå¡å信使æå¡é½è¢«å ³éã大å¤æ°æ åµä¸ï¼å ³éè¿äºç¹æ§å¯¹äºå¢å¼ºç³»ç»å®å ¨æ§æ¯æ好å¤çï¼ä¸è¿å¾é¾å¨å®å ¨æ§ä¸è½¯ä»¶çåè½æ§ãçµæ´»æ§ä¹é´ä½åºæè¡·ã
ææ¾èç表ç°æ¯ï¼å¾®è½¯æ´å å ³æ³¨æ¹è¿å¯ç¨æ§çåæ¶å¢å¼ºç³»ç»çå®å ¨æ§ãæ¯å¦ï¼å¹´è®¸å¤é对微软çæ¼æ´æ»å»ç¨åºé½ä½¿ç¨å¯æ§è¡æ件ä½ä¸ºçµåé®ä»¶çé件ï¼ä¾å¦MyDoomï¼ãService Pack2å æ¬ä¸ä¸ªé件æ§è¡æå¡ï¼ä¸ºOutlook/Exchangeã Windows MessengeråInternet Exploreræä¾äºç»ä¸çç¯å¢ãè¿æ ·å°±è½éä½ç¨æ·è¿è¡å¯æ§è¡æ件æ¶ææç æ¯æè è è«çå¨èæ§ãå¦å¤ï¼ç¦æ¢æ°æ®é¡µçå¯æ§è¡æ§ä¹ä¼éå¶æ½å¨çç¼å²åºæº¢åºçå¨èãä¸è¿ï¼å¾®è½¯å¨WindowsXP Service Pack 2ä¸å¹¶æ²¡æä¿®æ¹Windowsæé®é¢çæ¶æ以åå®å ¨ä¼ è¾çé¨åï¼èæ¯å°è¿é¨åéæ 交ç»äºç¨æ·ã
微软çéç¹æ¾ç¶æ¯æ¯æåºç¨ç¨åºçå®å ¨æ§ãWindowsXP Service Pack 2ä¸å¢å¼ºç许å¤æ¹é¢é½æ¯ä»¥Outlook/ExchangeåInternet Explorerä½ä¸ºå¯¹è±¡çãä¾å¦ï¼Internet Explorerä¸æä¸ä¸ªæºè½çMIMEç±»åæ£æ¥ï¼ä¼å¯¹ç®æ çå 容类åè¿è¡æ£æ¥ï¼ç¨æ·å¯ä»¥è·æ该å 容ä¸æ¯å¦åå¨æ½å¨çæ害ç¨åºãä¸è¿è¿ä¸è½¯ä»¶æ¯ä¸æ¯è½å°ç æ¯ä¸åäºççµåæ°æ®è¡¨åºåå¼æ¥å¢ï¼
WindowsXP Service Pack 2çå¦ä¸ä¸ªæ°ç¹æ§æ¯è½å¤å¸è½½æµè§å¨çå¤ä½æ件ï¼è¿éè¦ç»ç«¯ç¨æ·æ£æ¥å¹¶å¤æéè¦å¸è½½åªäºæ件ãOutlook/Exchangeå¯ä»¥é¢è§çµåé®ä»¶æ¶æ¯ï¼å æ¤ç¨æ·å¯ä»¥å¨æå¼ä¹åå°±å°çµåé®ä»¶å é¤ãå¦ä¸ä¸ªåºç¨å®å ¨çå¢å¼ºï¼é²ç«å¢å¨ç½ç»åè®®æ ä¹åå¯å¨ã对äºè½¯ä»¶å¼åè æ¥è¯´ï¼è¿æ¹è¿ç¨è°ç¨ä¸æéçæ¹åï¼ä½¿å¾å®å ¨æ§å·®ç代ç é¾ä»¥å·¥ä½æ£å¸¸ã
WindowsXP Service Pack 2ä¹ä¸ºWindowsç¨æ·æä¾äºè®¸å¤å丽çæ°ç¹æ§ï¼ä½æ¯é®é¢ä»ç¶åå¨ï¼è¿äºç¹æ§ä¼ä¸ä¼å¯¹ç®¡çåçè³æ¯ç»ç«¯ç¨æ·é æè´æ ï¼æ¯ä¸æ¯å¨å¢å äºWindowsæä½ç³»ç»ä»£ç å®å ¨æ§çåæ¶è®©ç³»ç»åå¾æ´å å¤æï¼
Linux ä¸ Windows çä¸å
è½ç¶æä¸äºç±»ä¼¼ä¹å¤ï¼ä½WindowsåLinuxçå·¥ä½æ¹å¼è¿æ¯åå¨ä¸äºæ ¹æ¬çåºå«ãè¿äºåºå«åªæå¨æ¨å¯¹ä¸¤è é½å¾çæ以åæè½ä½ä¼å°ï¼ä½å®ä»¬å´æ¯ Linux ææ³çæ ¸å¿ã
Linux çåºç¨ç®æ æ¯ç½ç»èä¸æ¯æå°
Windowsæååºç°çæ¶åï¼è¿ä¸ªä¸çè¿æ¯ä¸ä¸ªçº¸å¼ çä¸çãWindowsçä¼å¤§æå°±ä¹ä¸å¨äºæ¨çå·¥ä½ææå¯ä»¥æ¹ä¾¿å°çå°å¹¶æå°åºæ¥ãè¿æ ·ä¸ä¸ªå¼ç«¯å½±åäº Windows çåæåå±ã
åæ ·ï¼Linux ä¹åå°äºå ¶èµ·æºçå½±åãLinux ç设计å®ä½äºç½ç»æä½ç³»ç»ãå®ç设计çµææ¥èªäº Unix æä½ç³»ç»ï¼å æ¤å®çå½ä»¤ç设计æ¯è¾ç®åï¼æè 说æ¯æ¯è¾ç®æ´ãç±äºçº¯ææ¬å¯ä»¥é常好å°è·¨ç½ç»å·¥ä½ï¼æ以 Linux é ç½®æ件åæ°æ®é½ä»¥ææ¬ä¸ºåºç¡ã
对é£äºçæå¾å½¢ç¯å¢ç人æ¥è¯´ï¼Linuxæå¡å¨åçå¯è½æ¯è¾åå§ãä½æ¯Linuxå¼åæ´å¤å ³æ³¨çæ¯å®çå å¨åè½èä¸æ¯è¡¨é¢ä¸çä¸è¥¿ãå³ä½¿æ¯å¨çº¯ææ¬çç¯å¢ä¸ï¼Linuxåæ ·æ¥æé常å è¿çç½ç»ãèæ¬åå®å ¨è½åãæ§è¡ä¸äºä»»å¡æéçæäºè¡¨é¢ä¸çèµ·æ¥æ¯è¾å¥æªçæ¥éª¤æ¯ä»¤äººè´¹è§£çï¼é¤éæ¨è®¤è¯å° Linux æ¯ææå¨ç½ç»ä¸ä¸å ¶ä» Linuxç³»ç»ååæ§è¡è¿äºä»»å¡ãLinuxçèªå¨æ§è¡è½åä¹å¾å¼ºï¼åªéè¦è®¾è®¡æ¹å¤çæ件就å¯ä»¥è®©ç³»ç»èªå¨å®æé常详ç»çä»»å¡ãLinux çè¿ç§è½åæ¥èªäºå ¶åºäºææ¬çæ¬è´¨ã
å¯éç GUI
Linuxæå¾å½¢ç»ä»¶ãLinuxæ¯æé«ç«¯çå¾å½¢éé å¨åæ¾ç¤ºå¨ï¼å®å ¨èä»»å¾å½¢ç¸å ³çå·¥ä½ãç°å¨ï¼è®¸å¤æ°åææèºæ¯å®¶å¨Linuxå·¥ä½ç«ä¸æ¥è¿è¡ä»ä»¬ç设计工ä½ï¼è以åè¿äºå·¥ä½éè¦ä½¿ç¨IRIXç³»ç»æ¥å®æãä½æ¯ï¼å¾å½¢ç¯å¢å¹¶æ²¡æéæå° Linux ä¸ï¼èæ¯è¿è¡äºç³»ç»ä¹ä¸çåç¬ä¸å±ãè¿æå³çæ¨å¯ä»¥åªè¿è¡ GUIï¼æè å¨éè¦æ¶æè¿è¡ GUIãå¦ææ¨çç³»ç»ä¸»è¦ä»»å¡æ¯æä¾Webåºç¨ï¼é£ä¹æ¨å¯ä»¥åæå¾å½¢çé¢ï¼èå°å ¶æç¨çå ååCPUèµæºç¨äºæ¨çæå¡ãå¦ææ¨éè¦å¨ GUI ç¯å¢ä¸åä¸äºå·¥ä½ï¼å¯ä»¥åæå¼å®ï¼å·¥ä½å®æååå°å ¶å ³éã
Linux æå¾å½¢åç管çå·¥å ·ï¼ä»¥åæ¥å¸¸åå ¬çå·¥å ·ï¼æ¯å¦çµåé®ä»¶ãç½ç»æµè§å¨åææ¡£å¤çå·¥å ·çãä¸è¿ï¼å¨ Linux ä¸ï¼å¾å½¢åç管çå·¥å ·é常æ¯æ§å¶å° (å½ä»¤è¡) å·¥å ·çæ©å±ãä¹å°±æ¯è¯´ï¼ç¨å¾å½¢åå·¥å ·è½å®æçææå·¥ä½ï¼ç¨æ§å¶å°å½ä»¤åæ ·å¯ä»¥å®æãåæ ·ï¼ä½¿ç¨å¾å½¢åå·¥å ·å¹¶ä¸å¦¨ç¢æ¨å¯¹é ç½®æ件è¿è¡æ工修æ¹ãå ¶å®é æä¹å¯è½å¹¶ä¸æ¯ç¹å«æ¾èæè§ï¼ä½æ¯ï¼å¦æå¨å¾å½¢å管çå·¥å ·ä¸æåçä»»ä½å·¥ä½é½å¯ä»¥ä»¥å½ä»¤è¡çæ¹å¼å®æï¼è¿å°±è¡¨ç¤ºé£äºå·¥ä½ä¹å¯ä»¥ç±ä¸ä¸ªèæ¬æ¥å®ç°ãèæ¬åçå½ä»¤å¯ä»¥æ为èªå¨æ§è¡çä»»å¡ãLinux åæ¶æ¯æè¿ä¸¤ç§æ¹å¼ï¼å¹¶ä¸è¦æ±æ¨åªç¨ææ¬æè åªç¨ GUIãæ¨å¯ä»¥æ ¹æ®æ¨çéè¦éæ©æ好çæ¹æ³ã
Linux ä¸çé ç½®æ件æ¯äººç±»å¯è¯»çææ¬æ件ï¼è¿ä¸è¿å»ç Windows ä¸ç INI æ件类似ï¼ä½ä¸ Windows ç注å表æºå¶å¨æè·¯ä¸ææ¬è´¨çåºå«ãæ¯ä¸ä¸ªåºç¨ç¨åºé½æå ¶èªå·±çé ç½®æ件ï¼èä¸é常ä¸ä¸å ¶ä»çé ç½®æ件æ¾å¨ä¸èµ·ãä¸è¿ï¼å¤§é¨åçé ç½®æ件é½åæ¾äºä¸ä¸ªç®å½æ (/etc) ä¸çå个å°æ¹ï¼æ以çèµ·æ¥å®ä»¬å¨é»è¾ä¸æ¯å¨ä¸èµ·ãææ¬æ件çé ç½®æ¹å¼ä½¿å¾ä¸éè¿ç¹æ®çç³»ç»å·¥å ·å°±å¯ä»¥å®æé ç½®æ件çå¤ä»½ãæ£æ¥åç¼è¾å·¥ä½ã
æ件åæ©å±
Linuxä¸ä½¿ç¨æ件åæ©å±æ¥è¯å«æ件çç±»åãç¸åï¼Linuxæ ¹æ®æ件ç头å 容æ¥è¯å«å ¶ç±»åã为äºæé«äººç±»å¯è¯»æ§æ¨ä»å¯ä»¥ä½¿ç¨æ件åæ©å±ï¼ä½è¿å¯¹ Linux ç³»ç»æ¥è¯´æ²¡æä»»ä½ä½ç¨ãä¸è¿ï¼æä¸äºåºç¨ç¨åºï¼æ¯å¦ Web æå¡å¨ï¼å¯è½ä½¿ç¨å½å约å®æ¥è¯å«æ件类åï¼ä½è¿åªæ¯ç¹å®çåºç¨ç¨åºçè¦æ±èä¸æ¯ Linux ç³»ç»æ¬èº«çè¦æ±ã
Linuxéè¿æ件访é®æéæ¥å¤ææ件æ¯å¦ä¸ºå¯æ§è¡æ件ãä»»ä½ä¸ä¸ªæ件é½å¯ä»¥èµäºå¯æ§è¡æéï¼è¿æ ·ç¨åºåèæ¬çå建è æ管çåå¯ä»¥å°å®ä»¬è¯å«ä¸ºå¯æ§è¡æ件ãè¿æ ·åæå©äºå®å ¨ãä¿åå°ç³»ç»ä¸çå¯æ§è¡çæ件ä¸è½èªå¨æ§è¡ï¼è¿æ ·å°±å¯ä»¥é²æ¢è®¸å¤èæ¬ç æ¯ã
éæ°å¼å¯¼æ¯æåçæ段
å¦ææ¨ä½¿ç¨Windowså·²ç»å¾é¿æ¶é´äºï¼æ¨å¯è½å·²ç»ä¹ æ¯åºäºåç§åå ï¼ä»è½¯ä»¶å®è£ å°çº æ£æå¡æ éï¼èéæ°å¼å¯¼ç³»ç»ãå¨Linuxææ³ä¸æ¨çè¿ä¸ä¹ æ¯éè¦æ¹åãLinuxå¨æ¬è´¨ä¸æ´éµå¾ªâçé¡¿è¿å¨å®å¾âãä¸æ¦å¼å§è¿è¡ï¼å®å°ä¿æè¿è¡ç¶æï¼ç´å°åå°å¤æ¥å ç´ çå½±åï¼æ¯å¦ç¡¬ä»¶çæ éãå®é ä¸ï¼Linuxç³»ç»ç设计使å¾åºç¨ç¨åºä¸ä¼å¯¼è´å æ ¸çå´©æºï¼å æ¤ä¸å¿ ç»å¸¸éæ°å¼å¯¼ï¼ä¸Windowsç³»ç»ç设计ç¸å¯¹èè¨ï¼ãæ以é¤äºLinuxå æ ¸ä¹å¤ï¼å ¶ä»è½¯ä»¶çå®è£ ãå¯å¨ãåæ¢åéæ°é ç½®é½ä¸ç¨éæ°å¼å¯¼ç³»ç»ã
å¦ææ¨ç¡®å®éæ°å¼å¯¼äº Linux ç³»ç»ï¼é®é¢å¾å¯è½å¾ä¸å°è§£å³ï¼èä¸è¿ä¼ä½¿é®é¢æ´å æ¶åãå¦ä¹ 并ææ¡ Linux æå¡åè¿è¡çº§å«æ¯æå解å³é®é¢çå ³é®ãå¦ä¹ Linux æå°é¾çå°±æ¯å æéæ°å¼å¯¼ç³»ç»çä¹ æ¯ã
差点引爆全球的核弹,深度分析XZ-Utils供应链后门投毒事件
在一段历时三年多的精心策划中,恶意投毒者意图通过复杂的技术手段,潜入全球主流Linux发行版的供应链,如果成功,他将能操控全球大部分服务器,这场潜在危机如同一枚未引爆的核弹。幸亏投毒的复杂性和疏忽,使得这一事件在早期被察觉,未造成实际的全球性灾难。然而,这次事件再次揭示了开源软件生态的脆弱性,可能只是冰山一角的表象。
焦点事件涉及XZ-Utils,一个在Linux和Unix系统中广泛应用的处理.xz文件的工具包,包括liblzma、xz等组件,已广泛集成在Debian、Ubuntu和CentOS等发行版。年3月日,墨菲安全实验室在检查sshd服务异常时,发现XZ-Utils上游tar包被投毒,微软工程师Andres Freund向oss-security社区报告了这一发现。
事件的时间线如下:从GitHub发布的5.6.0版本开始,投毒者利用编译阶段的漏洞植入恶意逻辑,如在$srcdir/debian/rules文件或x_环境变量下,payload在特定版本中得以执行。虽然5.6.1版本的payload可能影响更大,但由于编译和运行阶段的复杂策略,实际影响相对有限,主要涉及deb和rpm包。
防御措施包括关闭受影响的GitHub仓库,并建议降级到5.6.0之前的版本进行修复。攻击者通过在Makefile中插入恶意代码,利用GCC的ifunc机制劫持RSA_public_decrypt函数,以在特定条件下执行任意命令。
调查发现,投毒者在XZ-Utils项目中潜伏长达两年,期间维护者角色的变动可能为投毒创造了机会。可疑的账户活动,如新注册的维护者和频繁推送更新,引发了社区的关注。此外,投毒者还涉及libarchive项目,存在可能被利用的安全漏洞。
尽管危机得以缓解,但此次事件警醒企业,开源软件的安全不容忽视,必须加强自身供应链的安全管理,以应对类似危机。开源社区用户和开发者应该保持警惕,及时修复漏洞,确保软件生态的安全。
访问注册表出错
访问注册表出错因为每台 电脑的用户 不同 访问 权限不同
只要替换 你这个 S-1-5----- 就可以导入
运行 regedit
你打开注册表找到这个项 是什么 数字
替换上面的数字 即可 导入
程序不知道怎么调,那个MBUS
驱动程序开发的一个重大难点就是不易调试。本文目的就是介绍驱动开发中常用的几种直接和间接的调试手段,它们是:
1、利用printk
2、查看OOP消息
3、利用strace
4、利用内核内置的hacking选项
5、利用ioctl方法
6、利用/proc 文件系统
7、使用kgdb
前两种如下:
一、利用printk
这是驱动开发中最朴实无华,同时也是最常用和有效的手段。scull驱动的main.c第行如下,就是使用printk进行调试的例子,这样的例子相信大家在阅读驱动源码时随处可见。
// printk(KERN_ALERT "wakeup by signal in process %d\n", current-pid);
printk的功能与我们经常在应用程序中使用的printf是一样的,不同之处在于printk可以在打印字符串前面加上内核定义的宏,例如上面例子中的KERN_ALERT(注意:宏与字符串之间没有逗号)。
#define KERN_EMERG "0"
#define KERN_ALERT "1"
#define KERN_CRIT "2"
#define KERN_ERR "3"
#define KERN_WARNING "4"
#define KERN_NOTICE "5"
#define KERN_INFO "6"
#define KERN_DEBUG "7"
#define DEFAULT_CONSOLE_LOGLEVEL 7
这个宏是用来定义需要打印的字符串的级别。值越小,级别越高。内核中有个参数用来控制是否将printk打印的字符串输出到控制台(屏幕或者/sys/log/syslog日志文件)
# cat /proc/sys/kernel/printk
6 4 1 7
第一个6表示级别高于(小于)6的消息才会被输出到控制台,第二个4表示如果调用printk时没有指定消息级别(宏)则消息的级别为4,第三个1表示接受的最高(最小)级别是1,第四个7表示系统启动时第一个6原来的初值是7。
因此,如果你发现在控制台上看不到你程序中某些printk的输出,请使用echo 8 /proc/sys/kernel/printk来解决。
在复杂驱动的开发过程中,为了调试会在源码中加入成百上千的printk语句。而当调试完毕形成最终产品的时候必然会将这些printk语句删除想想驱动的使用者而不是开发者吧。记住:己所不欲,勿施于人),这个工作量是不小的。最要命的是,如果我们将调试用的printk语句删除后,用户又报告驱动有bug,所以我们又不得不手工将这些上千条的printk语句再重新加上。oh,my god,杀了我吧。所以,我们需要一种能方便地打开和关闭调试信息的手段。哪里能找到这种手段呢?哈哈,远在天边,近在眼前。看看scull驱动或者leds驱动的源代码吧!
#define LEDS_DEBUG
#undef PDEBUG
#ifdef LEDS_DEBUG
#ifdef __KERNEL__
#define PDEBUG(fmt, args…) printk( KERN_EMERG "leds: " fmt, ## args)
#else
#define PDEBUG(fmt, args…) fprintf(stderr, fmt, ## args)
#endif
#else
#define PDEBUG(fmt, args…)
#endif
#undef PDEBUGG
#define PDEBUGG(fmt, args…)
这样一来,在开发驱动的过程中,如果想打印调试消息,我们就可以用PDEBUG("address of i_cdev is %p\n", inode-i_cdev);,如果不想看到该调试消息,就只需要简单的将PDEBUG改为PDEBUGG即可。而当我们调试完毕形成最终产品时,只需要简单地将第1行注释掉即可。
上边那一段代码中的__KERNEL__是内核中定义的宏,当我们编译内核(包括模块)时,它会被定义。当然如果你不明白代码中的…和##是什么意思的话,就请认真查阅一下gcc关于预处理部分的资料吧!如果你实在太懒不愿意去查阅的话,那就充当VC工程师把上面的代码copy到你的代码中去吧。
二、查看OOP消息
OOP意为惊讶。当你的驱动有问题,内核不惊讶才怪:嘿!小子,你干吗乱来!好吧,就让我们来看看内核是如何惊讶的。
根据faulty.c(单击下载)编译出faulty.ko,并 inod faulty.ko。执行echo yang /dev/faulty,结果内核就惊讶了。内核为什么会惊讶呢?因为faulty驱动的write函数执行了(int )0 = 0,向内存0地址写入,这是内核绝对不会容许的。
ssize_t faulty_write (struct file filp, const char __user buf, size_t count,
loff_t pos)
{
(int )0 = 0;
return 0;
}
1 Unable to handle kernel NULL pointer dereference at virtual address
2 pgd = c
3 [] pgd=, pte=, ppte=
4 Internal error: Oops: [#1] PREEMPT
5 Modules linked in: faulty scull
6 CPU: 0 Not tainted (2.6..6 #4)
7 PC is at faulty_write0×/0× [faulty]
8 LR is at vfs_write0xc4/0×
9 pc : [] lr : [] psr: a
sp : cf ip : cf fp : cf
r: c r9 : c r8 :
r7 : r6 : cf r5 : r4 : ce
r3 : cf r2 : r1 : r0 :
Flags: NzCv IRQs on FIQs on Mode SVC_ Segment user
Control: cf Table: DAC:
Process sh (pid: , stack limit = 0xc)
Stack: (0xcf to 0xc)
1f: cf cf ceb8 bfc ce ce
1f: cf cfa4 cf cffc ce
1f: cc0e4 cfa8
1fa0: cbf cfc0
1fc0: c
1fe0: bea c adb
Backtrace:
[] (faulty_write0×0/0× [faulty]) from [] (vfs_write0xc4/0×)
[] (vfs_write0×0/0×) from [] (sys_write0x4c/0×)
r7: r6:cf r5:ce r4:ce
[] (sys_write0×0/0×) from [] (ret_fast_syscall0×0/0x2c)
r8:cc0e4 r7: r6: r5: r4:
Code: e1a0cd edd ecb e3a (e)
1行惊讶的原因,也就是报告出错的原因;
2-4行是OOP信息序号;
5行是出错时内核已加载模块;
6行是发生错误的CPU序号;
7-行是发生错误的位置,以及当时CPU各个寄存器的值,这最有利于我们找出问题所在地;
行是当前进程的名字及进程ID
-行是出错时,栈内的内容
-行是栈回溯信息,可看出直到出错时的函数递进调用关系(确保CONFIG_FRAME_POINTER被定义)
行是出错指令及其附近指令的机器码,出错指令本身在小括号中
反汇编faulty.ko( arm-linux-objdump -D faulty.ko faulty.dis ;cat faulty.dis)可以看到如下的语句如下:
c :
7c: e1a0cd mov ip, sp
: edd stmdb sp!, { fp, ip, lr, pc}
: ecb sub fp, ip, #4 ; 0×4
: e3a mov r0, #0 ; 0×0
8c: e str r0, [r0]
: eda ldmia sp, { fp, sp, pc}
定位出错位置以及获取相关信息的过程:
9 pc : [] lr : [] psr: a
[] (faulty_write0×0/0× [faulty]) from [] (vfs_write0xc4/0×)
[] (vfs_write0×0/0×) from [] (sys_write0x4c/0×)
出错代码是faulty_write函数中的第5条指令((0xbfc-0xbfc)/=5),该函数的首地址是0xbfc,该函数总共6条指令(0×),该函数是被0xceb8的前一条指令调用的(即:函数返回地址是0xceb8。这一点可以从出错时lr的值正好等于0xceb8得到印证)。调用该函数的指令是vfs_write的第条(0xc4/4=)指令。
达到出错处的函数调用流程是:write(用户空间的系统调用)–sys_write–vfs_write–faulty_write
OOP消息不仅让我定位了出错的地方,更让我惊喜的是,它让我知道了一些秘密:1、gcc中fp到底有何用处?2、为什么gcc编译任何函数的时候,总是要把3条看上去傻傻的指令放在整个函数的最开始?3、内核和gdb是如何知道函数调用栈顺序,并使用函数的名字而不是地址? 4、我如何才能知道各个函数入栈的内容?哈哈,我渐渐喜欢上了让内核惊讶,那就再看一次内核惊讶吧。
执行 cat /dev/faulty,内核又再一次惊讶!
1 Unable to handle kernel NULL pointer dereference at virtual address b
2 pgd = c3a
3 [b] pgd=a, pte=, ppte=
4 Internal error: Oops: [#2] PREEMPT
5 Modules linked in: faulty
6 CPU: 0 Not tainted (2.6..6 #4)
7 PC is at vfs_read0xe0/0×
8 LR is at 0xffffffff
9 pc : [] lr : [] psr:
sp : cd9f ip : c fp : ffffffff
r: r9 : cd r8 :
r7 : r6 : ffffffff r5 : ffffffff r4 : ffffffff
r3 : ffffffff r2 : r1 : cd9f r0 :
Flags: nzCv IRQs on FIQs on Mode SVC_ Segment user
Control: cf Table: a DAC:
Process cat (pid: , stack limit = 0xcd)
Stack: (0xcd9f to 0xcda)
9f: c3ca0 c3c
9f: cd9f cd9fa4 cd9f cf cbb4
9f: befc cc0e4 cd9fa8
9fa0: cbf cf4c befc befc
9fc0: befc
9fe0: befc6c c adab0
Backtrace: invalid frame pointer 0xffffffff
Code: ebffff e e1a da (ec)
Segmentation fault
不过这次惊讶却令人大为不解。OOP竟然说出错的地方在vfs_read(要知道它可是大拿们千锤百炼的内核代码),这怎么可能?哈哈,万能的内核也不能追踪函数调用栈了,这是为什么?其实问题出在faulty_read的行,它导致入栈的r4、r5、r6、fp全部变为了0xffffffff,ip、lr的值未变,这样一来faulty_read函数能够成功返回到它的调用者——vfs_read。但是可怜的vfs_read(忠实的APTCS规则遵守者)并不知道它的r4、r5、r6已经被万恶的faulty_read改变,这样下去vfs_read命运就可想而知了——必死无疑!虽然内核很有能力,但缺少了正确的fp的帮助,它也无法追踪函数调用栈。
ssize_t faulty_read(struct file filp, char __user buf,
size_t count, loff_t pos)
{
int ret;
char stack_buf[4];
memset(stack_buf, 0xff, );
if (count 4)
count = 4;
ret = copy_to_user(buf, stack_buf, count);
if (!ret)
return count;
return ret;
}
:
0: e1a0cd mov ip, sp
4: edd stmdb sp!, { r4, r5, r6, fp, ip, lr, pc}
8: ecb sub fp, ip, #4 ; 0×4
c: edd sub sp, sp, #4 ; 0×4,这里为stack_buf[]在栈上分配1个字的空间,局部变量ret使用寄存器存储,因此就不在栈上分配空间了
: ebc sub r5, fp, # ; 0x1c
: e1a mov r4, r1
: e1a mov r6, r2
1c: e3aff mov r1, # ; 0xff
: e3a mov r2, # ; 0×
: e1a mov r0, r5
: ebfffffe bl //这里在调用memset
: eda ldmia sp, { r3, r4, r5, r6, fp, sp, pc}
这次OOP,深刻地认识到:
内核能力超强,但它不是,也不可能是万能的。所以即使你能力再强,也要和你的team member搞好关系,否则在关键时候你会倒霉的;
出错的是faulty_read,vfs_read却做了替罪羊。所以人不要被表面现象所迷惑,要深入看本质;
内核本来超级健壮,可是你写的驱动是内核的组成部分,由于它出错,结果整体。所以当你加入一个团队的时候一定要告诫自己,虽然你的角色也许并不重要,但你的疏忽大意将足以令整个非常牛X的团队。反过来说,当你是team leader的时候,在选团队成员的时候一定要慎重、慎重、再慎重,即使他只是一个小角色。
工商银行pOS机出现什么意思
你好,工商银行pos机错误代码 设备检测到异常请联系服务商,这个是系统坏了故障了,无法使用请联系工商银行吧!
不知道中了什么病毒?求高人指点!!
识别电脑的病毒:
1、系统病毒
系统病毒的前缀为:Win、PE、Win、W、W等。这些病毒的一般公有的特性是可以感染windows操作系统的 .exe 和 .dll 文件,并通过这些文件进行传播。如CIH病毒。
2、蠕虫病毒
蠕虫病毒的前缀是:Worm。这种病毒的公有特性是通过网络或者系统漏洞进行传播,很大部分的蠕虫病毒都有向外发送带毒邮件,阻塞网络的特性。比如冲击波(阻塞网络),小邮差(发带毒邮件) 等。
3、木马病毒、黑客病毒
木马病毒其前缀是:Trojan,黑客病毒前缀名一般为 Hack 。木马病毒的公有特性是通过网络或者系统漏洞进入用户的系统并隐藏,然后向外界泄露用户的信息,而黑客病毒则有一个可视的界面,能对用户的电脑进行远程控制。木马、黑客病毒往往是成对出现的,即木马病毒负责侵入用户的电脑,而黑客病毒则会通过该木马病毒来进行控制。现在这两种类型都越来越趋向于整合了。一般的木马如QQ消息尾巴木马 Trojan.QQ ,还有大家可能遇见比较多的针对网络游戏的木马病毒如 Trojan.LMir.PSW. 。这里补充一点,病毒名中有PSW或者什么PWD之类的一般都表示这个病毒有**密码的功能(这些字母一般都为“密码”的英文“password”的缩写)一些黑客程序如:网络枭雄(Hack.Nether.Client)等。
4、脚本病毒
脚本病毒的前缀是:Script。脚本病毒的公有特性是使用脚本语言编写,通过网页进行的传播的病毒,如红色代码(Script.Redlof)——可不是我们的老大代码兄哦^_^。脚本病毒还会有如下前缀:VBS、JS(表明是何种脚本编写的),如欢乐时光(VBS.Happytime)、十四日(Js.Fortnight.c.s)等。
5、宏病毒
其实宏病毒是也是脚本病毒的一种,由于它的特殊性,因此在这里单独算成一类。宏病毒的前缀是:Macro,第二前缀是:Word、Word、Excel、Excel(也许还有别的)其中之一。凡是只感染WORD及以前版本WORD文档的病毒采用Word做为第二前缀,格式是:Macro.Word;凡是只感染WORD以后版本WORD文档的病毒采用Word做为第二前缀,格式是:Macro.Word;凡是只感染EXCEL及以前版本EXCEL文档的病毒采用Excel做为第二前缀,格式是:Macro.Excel;凡是只感染EXCEL以后版本EXCEL文档的病毒采用Excel做为第二前缀,格式是:Macro.Excel,依此类推。该类病毒的公有特性是能感染OFFICE系列文档,然后通过OFFICE通用模板进行传播,如:著名的美丽莎(Macro.Melissa)。
6、后门病毒
后门病毒的前缀是:Backdoor。该类病毒的公有特性是通过网络传播,给系统开后门,给用户电脑带来安全隐患。如很多朋友遇到过的IRC后门Backdoor.IRCBot 。
7、病毒种植程序病毒
这类病毒的公有特性是运行时会从体内释放出一个或几个新的病毒到系统目录下,由释放出来的新病毒产生破坏。如:冰河播种者(Dropper.BingHe2.2C)、MSN射手(Dropper.Worm.Smibag)等。
8.破坏性程序病毒
破坏性程序病毒的前缀是:Harm。这类病毒的公有特性是本身具有好看的图标来诱惑用户点击,当用户点击这类病毒时,病毒便会直接对用户计算机产生破坏。如:格式化C盘(Harm.formatC.f)、杀手命令(Harm.Command.Killer)等。
9.玩笑病毒
玩笑病毒的前缀是:Joke。也称恶作剧病毒。这类病毒的公有特性是本身具有好看的图标来诱惑用户点击,当用户点击这类病毒时,病毒会做出各种破坏操作来吓唬用户,其实病毒并没有对用户电脑进行任何破坏。如:女鬼(Joke.Girlghost)病毒。
.捆绑机病毒
捆绑机病毒的前缀是:Binder。这类病毒的公有特性是病毒作者会使用特定的捆绑程序将病毒与一些应用程序如QQ、IE捆绑起来,表面上看是一个正常的文件,当用户运行这些捆绑病毒时,会表面上运行这些应用程序,然后隐藏运行捆绑在一起的病毒,从而给用户造成危害。如:捆绑QQ(Binder.QQPass.QQBin)、系统杀手(Binder.killsys)等。以上为比较常见的病毒前缀,有时候我们还会看到一些其他的,但比较少见,这里简单提一下:
DoS:会针对某台主机或者服务器进行DoS攻击;
Exploit:会自动通过溢出对方或者自己的系统漏洞来传播自身,或者他本身就是一个用于Hacking的溢出工具;
HackTool:黑客工具,也许本身并不破坏你的机子,但是会被别人加以利用来用你做替身去破坏别人。
你可以在查出某个病毒以后通过以上所说的方法来初步判断所中病毒的基本情况,达到知己知彼的效果。在杀毒无法自动查杀,打算采用手工方式的时候这些信息会给你很大的帮助。
landi刷卡机提示
刷卡机故障或系统需要升级。
1、landi刷卡机机显示错误,是刷卡机有小故障,需要关闭重启一下。
2、如重启后还报故障,需要专业人士维修。
pos机错误代码
POS终端号找不到。。1、无此终端号2、请求交易中终端号与应答交易中终端号不匹配3、关联交易中终端号与原始交易中终端号不匹配