ESP详解解析
- 格式:ppt
- 大小:2.32 MB
- 文档页数:52
OPCode详解OpCode操作码(Operation Code, OPCode):描述机器语⾔指令中,指令要执⾏某种操作的机器码OPCode在不同的场合中通常具有不同的含义,例如PHP虚拟机(Zend VM)、java虚拟机(JVM)以及⼀些软件保护虚拟机中的最⼩操作单元都可以称之为OPCode。
常⽤字节常⽤单字节OPCode概览A -- 40~4Fopcode asm using0x40 inc eax emit(0x40)0x41 inc ecx emit(0x41)0x42 inc edx emit(0x42)0x43 inc ebx emit(0x43)0x44 inc esp emit(0x44)0x45 inc ebp emit(0x45)0x46 inc esi emit(0x46)0x47 inc edi emit(0x47)0x48 dec eax emit(0x48)0x49 dec ecx emit(0x49)0x4a dec ebx emit(0x4a)0x4b dec ebx emit(0x4b)0x4c dec esp emit(0x4c)0x4d dec ebp emit(0x4d)0x4e dec esi emit(0x4e)0x4f dec edi emit(0x4f)常⽤单字节OPCode概览B -- 50~5Fopcode asm using0x50 push eax emit(0x50)0x51 push ecx emit(0x51)0x52 push edx emit(0x52)0x53 push ebx emit(0x53)0x54 push esp emit(0x54)0x55 push ebp emit(0x55)0x56 push esi emit(0x56)0x57 push edi emit(0x57)0x58 pop eax emit(0x58)0x59 pop ecx emit(0x59)0x5a pop edx emit(0x5a)0x5b pop ebx emit(0x5b)0x5c pop esp emit(0x5c)0x5d pop ebp emit(0x5d)0x5e pop esi emit(0x5e)0x5f pop edi emit(0x5f)常⽤单字节OPCode概览C -- 70~7Fopcode asm using0x70 0x12 Jo 0x12 {_emit(0x70)} {_emit(0x12)}0x71 ... Jno ... ... ...0x72 ... Jb ... ... ...0x73 ... Jae ... ... ...0x74 ... Je ... ... ...0x75 ... Jne ... ... ...0x76 ... Jbe ... ... ...0x77 ... Ja ... ... ...0x78 ... Js ... ... ...0x79 ... Jns ... ... ...0x7a ... Jp ... ... ...0x7b ... Jnp ... ... ...0x7c ... Jl ... ... ...0x7d ... Jge ... ... ...0x7e ... Jle ... ... ...0x7f ... Jg ... ... ...常⽤单字节OPCode概览D -- 90~9FOpcode asm Using0x90 Nop/xchg eax,eax _emit(0x90)0x91 Xchg eax,ecx0x92 Xchg eax,edx0x93 Xchg eax,ebx0x94 Xchg eax,esp0x95 Xchg eax,ebp0x96 Xchg eax,esi0x97 Xchg eax,ediOPCode与指令的对应关系同类型的指令OPCode不⼀定相同B8 01000000 mov eax, 18B C3 mov eax, ebx8B C7 mov eax, ediOPCode相同的情况下指令也不⼀定相同90 nop90 xchg ax, ax90 xchg eax, eax结论: OPCode与汇编指令并⾮是单纯的对应关系那么它是如何进⾏解释的呢?⾸先它分为6个主要数据域,其中只有代码是必须存在的,指令长度在1-16个字节所以指令独此⼀份,不可能为其他机器码x86与x86-64指令集的指令的格式为:指令前缀指令码ModR/M SIB偏移直接数Instruction Prefixes Opcode Displacement Immediate可选。
<1>telecommunications|n. |[U] the sending and receiving of messages over distance, esp. by telephone, radio and television |电信| | | |a telecommunications satellite |通信卫星| | | |the telecommunications industry |电信业| |<2>dumb |a. |unable to speak |哑的,不会说话的| | | |a deaf and dumb boy |一个聋哑男孩| | | |Being dumb, the little girl had difficulty communicating her feelings. |因不会说话,那个小女孩交流感情有困难。
|@ |<3>investment |n. |[C, U] the act of investing money in sth. |投资| | | |This country needs investment in education. |这个国家需要在教育上投资。
| | | |He hopes to attract foreign investment. |他希望吸引外国投资。
| |<4>Latin |n. & a. |[U] |拉丁语(的);拉丁语系(的)| |<5>utility |n. |[C] (usu<. ~ties ) a service used by the public, such as electricity or gas supply |公用事业;公用设施| | | |public utilities |公用事业| | | |Railways and roads are public utilities. |铁路和公路是公用设施。
汽修考试及答案详解 一、单项选择题(每题2分,共40分) 1. 发动机的四个冲程中,将内能转化为机械能的是( )。 A. 进气冲程 B. 压缩冲程 C. 功冲程 D. 排气冲程 答案:C
解析:发动机的四个冲程包括进气冲程、压缩冲程、功冲程和排气冲程。其中,功冲程是将内能转化为机械能的过程。
2. 汽车制动时,制动器的作用是( )。 A. 增加车速 B. 减少车速 C. 保持车速 D. 改变车速 答案:B 解析:制动器的主要作用是在汽车行驶过程中,通过摩擦力来减少车速,以达到减速或停车的目的。
3. 汽车的转向系统主要负责( )。 A. 控制车速 B. 控制方向 C. 控制动力输出 D. 控制灯光 答案:B
解析:转向系统是汽车的重要组成部分,主要负责控制汽车的行驶方向。
4. 汽车的悬挂系统的主要作用是( )。 A. 减少摩擦 B. 增加摩擦 C. 吸收震动 D. 提高车速 答案:C
解析:悬挂系统的主要作用是吸收路面的震动,提高乘坐的舒适性。
5. 汽车的点火系统不包括以下哪个部件( )。 A. 点火线圈 B. 分电器 C. 火花塞 D. 燃油泵 答案:D
解析:点火系统的主要部件包括点火线圈、分电器和火花塞,而燃油泵属于燃油供给系统。
6. 汽车的润滑系统的主要作用是( )。 A. 减少摩擦 B. 增加摩擦 C. 吸收震动 D. 提高车速 答案:A
解析:润滑系统的主要作用是通过润滑油减少发动机内部零件之间的摩擦,降低磨损。
7. 汽车的冷却系统的主要作用是( )。 A. 减少摩擦 B. 增加摩擦 C. 降低发动机温度 D. 提高发动机温度 答案:C
解析:冷却系统的主要作用是将发动机产生的热量散发到外界,以保持发动机的正常工作温度。 8. 汽车的燃油供给系统的主要作用是( )。 A. 提供润滑油 B. 提供冷却液 C. 提供燃油 D. 提供空气 答案:C
解析:燃油供给系统的主要作用是向发动机提供所需的燃油。 9. 汽车的排气系统的主要作用是( )。 A. 减少摩擦 B. 增加摩擦 C. 排放废气 D. 提高车速 答案:C 解析:排气系统的主要作用是将发动机燃烧后产生的废气排放到外界。
奔驰仪表盘故障灯图解北京博睿通达整理,大家参考:安全带未系报警灯:当车辆启动后,如果驾驶员或前排乘客没有系安全带,该灯就会亮起。
当车速超过25公里/小时的时候该灯会开始闪烁,同时还会响起安全带未系警告音。
该灯除了乘客没有系安全带会亮起外,当前排座椅被放置物品时,系统会默认为有人乘坐,该灯也会亮起。
制动系统警告灯(手刹警告灯):制动系统警告灯就是平时大家说的手刹警告灯,当手刹未松开时,该灯就会亮起。
示宽灯:示宽灯是在光线不好时可以显示车身的大概宽度,避免后车超车或与对向车辆交汇时出现剐蹭等事故。
近光灯:相信大家对这个指示灯再熟悉不过了,近光灯是夜间或光线不好时,为驾驶员提供照明的主要灯光,它的照射范围大概在30米至40米左右。
远光灯:远光灯是为了夜间驾驶时,更好地观察前方路况而设计的但我们建议当对向有来车时,切换成近光灯。
现在有些司机在驾驶车辆时,长时间开启远光灯,这种做法是不对的,会影响对向车辆司机的视线甚至引发事故。
雾灯:雾灯通常情况下是在大雾、大雨、大雪一类能见度不高的天气状况下开启,能见度比较低的时候利用雾灯功率高、亮度高、穿透力强的特点,让其他驾驶员可以更好的发现你。
车门未关闭提示:奔驰的车门未关提示与很多其他品牌的提示不一样,如果车门没有关紧,只有当车速达到15km/h时,仪表盘上才会显示车门没有关闭,并且会提示具体是哪个车门未关闭。
不过编辑觉得只有当车辆开起来,车门未关才报警的设计有点不人性化。
运动模式开启指示灯:这个指示灯多会出现在AMG车型上,当该灯亮起时,表示车辆的运动模式已经开启。
燃油不足警告灯:是提示燃油不足的报警灯,该灯亮起时,表示燃油即将耗尽。
我们建议此灯亮起时尽早加油,因为在快没油的情况下燃油泵不能得到很好的冷却,可能会影响它的寿命。
冷却液温度报警指示灯:显示发动机冷却液温度过高的指示灯,正常行驶时,若此灯点亮报警,应及时停车并关闭发动机,待冷却至正常温度后再继续行驶。
•IPSec VPN 基本概念与原理•Cisco 设备IPSec VPN 配置准备•IKE 协商过程详解•IPSec 数据传输过程详解•Cisco 设备IPSec VPN 高级配置技巧•故障诊断与排除方法分享•总结与展望目录01IPSec VPN基本概念与原理IPSec VPN定义及作用定义作用密钥管理技术通过IKE (Internet Key Exchange )协议进行密钥的协商和管理,确保密钥的安全性和一致性。
工作原理IPSec VPN 通过在IP 层实现加密和认证,为上层应用提供透明的安全通信服务。
它使用AH (认证头)和ESP (封装安全载荷)两种协议来提供安全保护。
加密技术通过对数据进行加密,确保数据在传输过程中的机密性。
认证技术通过对数据和通信实体进行认证,确保数据的完整性和来源的合法性。
工作原理与关键技术0102AH (Authenti…ESP (Encapsu…IKE (Interne…SA (Security…SPD (Securit…030405相关术语解析02Cisco设备IPSec VPN配置准备根据实际需求选择支持IPSec VPN 功能的Cisco 路由器或防火墙设备,如ASA 5500系列、ISR G2系列等。
路由器/防火墙确保设备具备足够的处理能力和内存,以支持VPN 隧道的建立和数据加密/解密操作。
处理器与内存为设备配置足够的存储空间,用于保存配置文件、日志等信息。
存储根据网络拓扑和连接需求,选择适当的接口类型和数量,如以太网接口、串行接口等,并配置相应的模块。
接口与模块设备选型与硬件配置软件版本及许可证要求软件版本确保Cisco设备上运行的软件版本支持IPSec VPN功能,并建议升级到最新的稳定版本。
许可证某些高级功能可能需要额外的许可证支持,如高级加密标准(AES)等。
在购买设备时,请确认所需的许可证是否已包含在内。
软件更新与补丁定期从Cisco官方网站下载并安装软件更新和补丁,以确保设备的稳定性和安全性。
关于IPSEC VPN 实验详解文章来源:不详作者:佚名该文章讲述了关于IPSEC VPN 实验详解.由于Internet宽带接入的普及,它的带宽与价格非常的便宜(相对于专线而言).8M的ADSL价位不到两千元/年.越来越多的企业开始发掘基于宽带接入的增值应用.由于VPN技术的成熟,如对数据的加密技术与VPN Qos技术的发展,使得基于Internet接入的VPN应用日趋增多.VPN技术可用于远程用户的接入(用于取代传统拨号接入技术)访问,用于对主线路的备份作为备份链路,甚至可以取代传统的专线地位用于企业各分支机构的专有网络互联.用于取代专线或备份线路接入的Site-to-Site VPN接入技术,用于远程终端用户接入访问的Remote-VPN(也叫Easy VPN,取代传统拨号接入).基于WEB页面访问的WEB VPN技术.又叫SSL VPN.1.Site-to-site vpn(三种类型)站点间的VPN技术.IKE使用UDP端口500,Ipsec ESP和AH使用协议号50和51.因此如果要实现VPN穿越,必须在相应接口上配置访问列表以允许VPN流量通过。
Site-to-Site VPN的配置通常可分为四个步骤:1.传统路由及需互访的流量定义定义路由设置感兴趣的流量(即定义互访的内网主机流量以触发VPN参数协商)2.定义IKE参数(IKE第一阶段安全关联协商)定义ISAKMP策略定义ISAKMP对等体和验证密钥3.定义Ipsec参数(IKE第二阶段安全关联协商)定义Ipsec的转换集Transform定义Ipsec的加密映射(crypto map)。
4.将加密映射应用到相应接口。
当路由器收到一个数据包时,它将检查安全策略(即所定义的感兴趣的流量)以决定是否为此数据包提供保护。
如果匹配访问列表所定义的流量,则路由器决定采用何种安全服务,并决定IPSEC端点所使用的地址,并检查是否存在一个安全关联(security association).如果没有安全关联,则路由器将与对等体协商建立。
缓冲区溢出详解缓冲区溢出(Buffer Overflow)是计算机安全领域内既经典⽽⼜古⽼的话题。
随着计算机系统安全性的加强,传统的缓冲区溢出攻击⽅式可能变得不再奏效,相应的介绍缓冲区溢出原理的资料也变得“⼤众化”起来。
其中看雪的《0day安全:软件漏洞分析技术》⼀书将缓冲区溢出攻击的原理阐述得简洁明了。
本⽂参考该书对缓冲区溢出原理的讲解,并结合实际的代码实例进⾏验证。
不过即便如此,完成⼀个简单的溢出代码也需要解决很多书中⽆法涉及的问题,尤其是⾯对较新的具有安全特性的编译器——⽐如MS的Visual Studio2010。
接下来,我们结合具体代码,按照对缓冲区溢出原理的循序渐进地理解⽅式去挖掘缓冲区溢出背后的底层机制。
⼀、代码 <=> 数据顾名思义,缓冲区溢出的含义是为缓冲区提供了多于其存储容量的数据,就像往杯⼦⾥倒⼊了过量的⽔⼀样。
通常情况下,缓冲区溢出的数据只会破坏程序数据,造成意外终⽌。
但是如果有⼈精⼼构造溢出数据的内容,那么就有可能获得系统的控制权!如果说⽤户(也可能是⿊客)提供了⽔——缓冲区溢出攻击的数据,那么系统提供了溢出的容器——缓冲区。
缓冲区在系统中的表现形式是多样的,⾼级语⾔定义的变量、数组、结构体等在运⾏时可以说都是保存在缓冲区内的,因此所谓缓冲区可以更抽象地理解为⼀段可读写的内存区域,缓冲区攻击的最终⽬的就是希望系统能执⾏这块可读写内存中已经被蓄意设定好的恶意代码。
按照冯·诺依曼存储程序原理,程序代码是作为⼆进制数据存储在内存的,同样程序的数据也在内存中,因此直接从内存的⼆进制形式上是⽆法区分哪些是数据哪些是代码的,这也为缓冲区溢出攻击提供了可能。
图1 进程地址空间分布图1是进程地址空间分布的简单表⽰。
代码存储了⽤户程序的所有可执⾏代码,在程序正常执⾏的情况下,程序计数器(PC指针)只会在代码段和操作系统地址空间(内核态)内寻址。
数据段内存储了⽤户程序的全局变量,⽂字池等。
今晚在仿真科技论坛上看见一个关于cohesive的帖子,真心觉得不错,原作者图文并茂的解说为初学者带来了福音,在此感谢原作者cheaxii的无私奉献!剥离臂AA5754-O:弹性模量74.7GPa 泊松比0.33粘合层ESP110:弹性模量5.72Gpa、泊松比0.40、极限应力99MPa、断裂能0.845mJ/mm2 (这里为保持单位一直,在输入参数时单位需要换算为MPa、mm、mJ/mm2)参数来源[1]Ph. Martinya, F. Lania, A.J. Kinlochb, T. Pardoenc.Numerical analysis of the energy contributions in peel tests[J]. International Journal of Adhesion & Adhesives 28 (2008) 222–236 文献中的实验结果如下:45°剥离,剥离强度16.7N/mm90°剥离,剥离强度6.05N/mm135°剥离,剥离强度4.11N/mm本算例模拟了90°剥离,结果和文献实验结果吻合很好。
以下是step by step:1;创建part,2维,deformable,尺寸如下:剥离臂长100mm,厚1mm。
(这里没有采用文献中的220mm的长度,因为这对结果没有影响,厚度一样就行);粘合层厚0.4mm,预制裂纹40mm,所以实际粘合部分长80mm。
这里只建立了半模型,就是说下面的基体没有建立,这里是因为基体厚10mm,相对来说比上剥离臂厚很多,认为它是刚性的,不发生变形,所以不需要建模,以减小计算量。
粘合层是在part模块下分割出来的,这样就可以为他们赋予不同的材料属性和截面特征了。
2,设置属性porperty这里创建两个属性:1、剥离臂;2、粘合层,如下图示3、创建两个截面section如下图4、为不同的分区赋予不同的截面属性如下图5、创建分析步这里因为有几何大变形,所以要打开几何大变形开关,将其从off调到on,其次为了最后的到载荷位移曲线的精确性,将增量步的大小做调整到0.002,这样就有500步,可以有500个采样点;6、调整场变量输出,在菜单栏output下拉菜单选择field output manage 点edit,勾选failure/fracture下面的SDEG和DMICRT,勾选state下面的status,这一步就不截图啦,很简单。
服务器抓包命令:tcpdump详解简介:tcpdump,就是:dump the traffic on a network,根据使⽤者的定义对⽹络上的数据包进⾏截获的包分析⼯具。
⼀个No-GUI的抓包分析⼯具。
tcpdump,可以将⽹络中传送的数据包的“头”完全截获下来提供分析。
它⽀持针对⽹络层、协议、主机、⽹络或端⼝的过滤,并提供and、or、not等逻辑语句来帮助你去掉⽆⽤的信息。
Linux已经⾃动安装,可直接使⽤。
概要:tcpdump采⽤命令⾏⽅式,它的命令格式为:tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ][ -c count ] [ -C file_size ][ -E spi@ipaddr algo:secret,... ][ -F file ] [ -G rotate_seconds ] [ -i interface ][ --immediate-mode ] [ -j tstamp_type ] [ -m module ][ -M secret ] [ --number ] [ --print ] [ -Q in|out|inout ][ -r file ] [ -s snaplen ] [ -T type ] [ --version ][ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ][ -z postrotate-command ] [ -Z user ][ --time-stamp-precision=tstamp_precision ][ expression ]tcpdump [ -AdDeflLnNOpqRStuUvxX ] [ -c count ][ -C file_size ] [ -F file ][ -i interface ] [ -m module ] [ -M secret ][ -r file ] [ -s snaplen ] [ -T type ] [ -w file ][ -W filecount ][ -E spi@ipaddr algo:secret,... ][ -y datalinktype ] [ -Z user ][ expression ]-A 以ASCII码⽅式显⽰每⼀个数据包(不会显⽰数据包中链路层头部信息). 在抓取包含⽹页数据的数据包时, 可⽅便查看数据(nt: 即Handy for capturing web pages).-b 使⽤ASDOT表⽰法在BGP数据包中打印AS号,⽽不是ASPLAIN表⽰法-B buffer_size--buffer-size=buffer_size将操作系统捕获缓冲区⼤⼩设置为buffer_size,单位为KiB(1024字节)-c counttcpdump将在接受到count个数据包后退出.-C file-size (nt: 此选项⽤于配合-w file 选项使⽤)该选项使得tcpdump 在把原始数据包直接保存到⽂件中之前, 检查此⽂件⼤⼩是否超过file-size. 如果超过了, 将关闭此⽂件,另创⼀个⽂件继续⽤于原始数据包的记录. 新创建的⽂件名与-w 选项指定的⽂件名⼀致, 但⽂件名后多了⼀个数字.该数字会-d 以容易阅读的形式,在标准输出上打印出编排过的包匹配码, 随后tcpdump停⽌.(nt | rt: human readable, 容易阅读的,通常是指以ascii码来打印⼀些信息. compiled, 编排过的. packet-matching code, 包匹配码,含义未知, 需补充)-dd 以C语⾔的形式打印出包匹配码.-ddd 以⼗进制数的形式打印出包匹配码(会在包匹配码之前有⼀个附加的'count'前缀).-D 打印系统中所有tcpdump可以在其上进⾏抓包的⽹络接⼝. 每⼀个接⼝会打印出数字编号, 相应的接⼝名字, 以及可能的⼀个⽹络接⼝描述. 其中⽹络接⼝名字和数字编号可以⽤在tcpdump 的-i flag 选项(nt: 把名字或数字代替flag), 来指定要在其上抓此选项在不⽀持接⼝列表命令的系统上很有⽤(nt: ⽐如, Windows 系统, 或缺乏 ifconfig -a 的UNIX系统); 接⼝的数字编号在windows 2000 或其后的系统中很有⽤, 因为这些系统上的接⼝名字⽐较复杂, ⽽不易使⽤.如果tcpdump编译时所依赖的libpcap库太⽼,-D 选项不会被⽀持, 因为其中缺乏 pcap_findalldevs()函数.-e 每⾏的打印输出中将包括数据包的数据链路层头部信息-E spi@ipaddr algo:secret,...可通过spi@ipaddr algo:secret 来解密IPsec ESP包(nt | rt:IPsec Encapsulating Security Payload,IPsec 封装安全负载, IPsec可理解为, ⼀整套对ip数据包的加密协议, ESP 为整个IP 数据包或其中上层协议部分被加密后的数据,前者的⼯作模式称为需要注意的是, 在终端启动tcpdump 时, 可以为IPv4 ESP packets 设置密钥(secret).可⽤于加密的算法包括des-cbc, 3des-cbc, blowfish-cbc, rc3-cbc, cast128-cbc, 或者没有(none).默认的是des-cbc(nt: des, Data Encryption Standard, 数据加密标准, 加密算法未知, 另需补充).secret 为⽤于ESP 的密钥, 使⽤ASCII 字符串⽅式表达该选项中ESP 的定义遵循RFC2406, ⽽不是 RFC1827. 并且, 此选项只是⽤来调试的, 不推荐以真实密钥(secret)来使⽤该选项, 因为这样不安全: 在命令⾏中输⼊的secret 可以被其他⼈通过ps 等命令查看到.除了以上的语法格式(nt: 指spi@ipaddr algo:secret), 还可以在后⾯添加⼀个语法输⼊⽂件名字供tcpdump 使⽤(nt:即把spi@ipaddr algo:secret,... 中...换成⼀个语法⽂件名). 此⽂件在接受到第⼀个ESP 包时会打开此⽂件, 所以最好此时把赋予tcp -f 显⽰外部的IPv4 地址时(nt: foreign IPv4 addresses, 可理解为, ⾮本机ip地址), 采⽤数字⽅式⽽不是名字.(此选项是⽤来对付Sun公司的NIS服务器的缺陷(nt: NIS, ⽹络信息服务, tcpdump 显⽰外部地址的名字时会⽤到她提供的名称服务): 此NIS服务由于对外部(foreign)IPv4地址的测试需要⽤到本地⽹络接⼝(nt: tcpdump 抓包时⽤到的接⼝)及其IPv4 地址和⽹络掩码. 如果此地址或⽹络掩码不可⽤, 或者此接⼝根本就没有设置相应⽹络地址和⽹络掩码(nt: linux 下的 'any' ⽹络接⼝就不需要设置地-F file使⽤file ⽂件作为过滤条件表达式的输⼊, 此时命令⾏上的输⼊将被忽略.-i interface指定tcpdump 需要监听的接⼝. 如果没有指定, tcpdump 会从系统接⼝列表中搜寻编号最⼩的已配置好的接⼝(不包括 loopback 接⼝).⼀但找到第⼀个符合条件的接⼝, 搜寻马上结束.在采⽤2.2版本或之后版本内核的Linux 操作系统上, 'any' 这个虚拟⽹络接⼝可被⽤来接收所有⽹络接⼝上的数据包(nt: 这会包括⽬的是该⽹络接⼝的, 也包括⽬的不是该⽹络接⼝的). 需要注意的是如果真实⽹络接⼝不能⼯作在'混杂'模式(promiscuou 如果 -D 标志被指定, tcpdump会打印系统中的接⼝编号,⽽该编号就可⽤于此处的interface 参数.-l 对标准输出进⾏⾏缓冲(nt: 使标准输出设备遇到⼀个换⾏符就马上把这⾏的内容打印出来).在需要同时观察抓包打印以及保存抓包记录的时候很有⽤. ⽐如, 可通过以下命令组合来达到此⽬的:``tcpdump -l | tee dat'' 或者 ``tcpdump -l > dat & tail -f dat''.(nt: 前者使⽤tee来把tcpdump 的输出同时放到⽂件dat和标准输出中, ⽽后者通过重定向操作'>', 把tcpdump的输出放到dat ⽂件中, 同时通过tail把dat⽂件中的内容放到标准输出中) -L 列出指定⽹络接⼝所⽀持的数据链路层的类型后退出.(nt: 指定接⼝通过-i 来指定)-m module通过module 指定的file 装载SMI MIB 模块(nt: SMI,Structure of Management Information, 管理信息结构MIB, Management Information Base, 管理信息库. 可理解为, 这两者⽤于SNMP(Simple Network Management Protoco)协议数据包的抓取. 具此选项可多次使⽤, 从⽽为tcpdump 装载不同的MIB 模块.-M secret 如果TCP 数据包(TCP segments)有TCP-MD5选项(在RFC 2385有相关描述), 则为其摘要的验证指定⼀个公共的密钥secret.-n 不对地址(⽐如, 主机地址, 端⼝号)进⾏数字表⽰到名字表⽰的转换.-N 不打印出host 的域名部分. ⽐如, 如果设置了此选现, tcpdump 将会打印'nic' ⽽不是 ''.-O 不启⽤进⾏包匹配时所⽤的优化代码. 当怀疑某些bug是由优化代码引起的, 此选项将很有⽤.-p ⼀般情况下, 把⽹络接⼝设置为⾮'混杂'模式. 但必须注意 , 在特殊情况下此⽹络接⼝还是会以'混杂'模式来⼯作;从⽽, '-p' 的设与不设, 不能当做以下选现的代名词:'ether host {local-hw-add}' 或 'ether broadcast'(nt: 前者表⽰只匹配以太⽹地址为ho -q 快速(也许⽤'安静'更好?)打印输出. 即打印很少的协议相关信息, 从⽽输出⾏都⽐较简短.-R 设定tcpdump 对 ESP/AH 数据包的解析按照 RFC1825⽽不是RFC1829(nt: AH, 认证头, ESP,安全负载封装, 这两者会⽤在IP包的安全传输机制中). 如果此选项被设置, tcpdump 将不会打印出'禁⽌中继'域(nt: relay prevention field). 另外,由于ES-r file从⽂件file 中读取包数据. 如果file 字段为 '-' 符号, 则tcpdump 会从标准输⼊中读取包数据.-S 打印TCP 数据包的顺序号时, 使⽤绝对的顺序号, ⽽不是相对的顺序号.(nt: 相对顺序号可理解为, 相对第⼀个TCP 包顺序号的差距,⽐如, 接受⽅收到第⼀个数据包的绝对顺序号为232323, 对于后来接收到的第2个,第3个数据包, tcpdump会打印其序-s snaplen设置tcpdump的数据包抓取长度为snaplen, 如果不设置默认将会是68字节(⽽⽀持⽹络接⼝分接头(nt: NIT, 上⽂已有描述,可搜索'⽹络接⼝分接头'关键字找到那⾥)的SunOS系列操作系统中默认的也是最⼩值是96).68字节对于IP, ICMP(nt: Internet C -T type强制tcpdump按type指定的协议所描述的包结构来分析收到的数据包. ⽬前已知的type 可取的协议为:aodv (Ad-hoc On-demand Distance Vector protocol, 按需距离向量路由协议, 在Ad hoc(点对点模式)⽹络中使⽤),cnfp (Cisco NetFlow protocol), rpc(Remote Procedure Call), rtp (Real-Time Applications protocol),rtcp (Real-Time Applications con-trol protocol), snmp (Simple Network Management Protocol),tftp (Trivial File Transfer Protocol, 碎⽂件协议), vat (Visual Audio Tool, 可⽤于在internet 上进⾏电视电话会议的应⽤层协议), 以及wb (distributed White Board, 可⽤于⽹络会议的应⽤层协议).-t 在每⾏输出中不打印时间戳-tt 不对每⾏输出的时间进⾏格式处理(nt: 这种格式⼀眼可能看不出其含义, 如时间戳打印成1261798315)-ttt tcpdump 输出时, 每两⾏打印之间会延迟⼀个段时间(以毫秒为单位)-tttt 在每⾏打印的时间戳之前添加⽇期的打印-u 打印出未加密的NFS 句柄(nt: handle可理解为NFS 中使⽤的⽂件句柄, 这将包括⽂件夹和⽂件夹中的⽂件)-U 使得当tcpdump在使⽤-w 选项时, 其⽂件写⼊与包的保存同步.(nt: 即, 当每个数据包被保存时, 它将及时被写⼊⽂件中,⽽不是等⽂件的输出缓冲已满时才真正写⼊此⽂件)-U 标志在⽼版本的libcap库(nt: tcpdump 所依赖的报⽂捕获库)上不起作⽤, 因为其中缺乏pcap_cump_flush()函数.-v 当分析和打印的时候, 产⽣详细的输出. ⽐如, 包的⽣存时间, 标识, 总长度以及IP包的⼀些选项. 这也会打开⼀些附加的包完整性检测, ⽐如对IP或ICMP包头部的校验和.-vv 产⽣⽐-v更详细的输出. ⽐如, NFS回应包中的附加域将会被打印, SMB数据包也会被完全解码.-vvv 产⽣⽐-vv更详细的输出. ⽐如, telent 时所使⽤的SB, SE 选项将会被打印, 如果telnet同时使⽤的是图形界⾯,其相应的图形选项将会以16进制的⽅式打印出来(nt: telnet 的SB,SE选项含义未知, 另需补充).-w 把包数据直接写⼊⽂件⽽不进⾏分析和打印输出. 这些包数据可在随后通过-r 选项来重新读⼊并进⾏分析和打印.-W filecount此选项与-C 选项配合使⽤, 这将限制可打开的⽂件数⽬, 并且当⽂件数据超过这⾥设置的限制时, 依次循环替代之前的⽂件, 这相当于⼀个拥有filecount 个⽂件的⽂件缓冲池. 同时, 该选项会使得每个⽂件名的开头会出现⾜够多并⽤来占位的0, 这可-x 当分析和打印时, tcpdump 会打印每个包的头部数据, 同时会以16进制打印出每个包的数据(但不包括连接层的头部).总共打印的数据⼤⼩不会超过整个数据包的⼤⼩与snaplen 中的最⼩值. 必须要注意的是, 如果⾼层协议数据没有snaplen 这么长,并-xx tcpdump 会打印每个包的头部数据, 同时会以16进制打印出每个包的数据, 其中包括数据链路层的头部.-X 当分析和打印时, tcpdump 会打印每个包的头部数据, 同时会以16进制和ASCII码形式打印出每个包的数据(但不包括连接层的头部).这对于分析⼀些新协议的数据包很⽅便.-XX 当分析和打印时, tcpdump 会打印每个包的头部数据, 同时会以16进制和ASCII码形式打印出每个包的数据, 其中包括数据链路层的头部.这对于分析⼀些新协议的数据包很⽅便.-y datalinktype设置tcpdump 只捕获数据链路层协议类型是datalinktype的数据包-Z user使tcpdump 放弃⾃⼰的超级权限(如果以root⽤户启动tcpdump, tcpdump将会有超级⽤户权限), 并把当前tcpdump的⽤户ID设置为user, 组ID设置为user⾸要所属组的ID(nt: tcpdump 此处可理解为tcpdump 运⾏之后对应的进程)此选项也可在编译的时候被设置为默认打开.(nt: 此时user 的取值未知, 需补充)命令实例:⼀、默认启动tcpdump:直接启动tcpdump将监视第⼀个⽹络接⼝上所有流过的数据包。
(转)详解汇编系统调⽤过程(以printf为例)本⽂以printf为例,详细解析⼀个简单的printf调⽤⾥头,系统究竟做了什么,各寄存器究竟如何变化。
环境:linux + gnu as assembler + ld linker如何在汇编调⽤glibc的函数?其实也很简单,根据c convention call的规则,参数反向压栈,call,然后结果保存在eax⾥头。
注意,保存的是地址。
在汇编⾥头,⼀切皆地址。
(别纠结这个,别告诉我还有⽴即数……主要是要有⼀切皆地址的思想)例如这个printf,在C⾥头,我们⽤得很多int printf(const char *format, ...) 这⾥值得⼀提的是这个“...”是不定参数,也就是说后⾯有多少个参数,函数定义⾥头没有规定,感兴趣的可以google⼀下va_list相关的知识,这⾥就不展开了。
但是汇编怎么知道处理这个的呢?这⾥给个简单的解释,感兴趣的可以google⼀下“c convention call”了解更详细跟专业的解释。
例如当我们调⽤ result = printf( "%d %d", 12, a )的时候,编译器默认是这样处理的(除⾮函数定义声明了pascal call)。
在栈⾥头,先⼀次push a的地址,还有12这个⽴即数,再push "%d %d"这个字符串的地址,内存模型如下,x86的esp是往下增长的。
(这⾥是buttom,往下增长的是top)&a12address of "%d %d"-------------------------------------------(esp 指着这⾥,我们假设地址是4字节,12这个数也是4字节)当call printf的时候,⾸先,push当前的eip⼊esp,解析esp+4所指的"%d %d",因为%d这样的特定字符都定义了后⾯每个参数的⼤⼩,所以只要解析“%d %d”,我们就可以知道栈⾥头参数的情况,例如esp+4+4就是⼀个int,esp+4+4+4是另外⼀个int。