Linux下通过iptables抓取tcp连接
1.1.1 iptables原理
1.1.2 以本地为源的包路径
Step
Table
Chain
Comment
1
本地程序(比如,服务程序或客户程序)
2
路由判断,要使用源地址,外出接口,还有其他一些信息。
3
mangle
OUTPUT
在这儿可以mangle包。建议不要在这儿做过滤,可能有副作用哦。
4
nat
OUTPUT
这个链对从防火墙本身发出的包进行DNAT操作。
5
filter
OUTPUT
对本地发出的包过滤。
6
mangle
POSTROUTING
这条链主要在包DNAT之后(译者注:作者把这一次DNAT称作实际的路由,虽然在前面有一次路由。对于本地的包,一旦它被生成,就必须经过路由代码的处理,但这个包具体到哪儿去,要由NAT代码处理之后才能确定。所以把这称作实际的路由。),离开本地之前,对包 mangle。有两种包会经过这里,防火墙所在机子本身产生的包,还有被转发的包。
7
nat
POSTROUTING
在这里做SNAT。但不要在这里做过滤,因为有副作用,而且有些包是会溜过去的,即使你用了DROP策略。
8
离开接口(比如: eth0)
9
在线路上传输(比如,Internet)
1.1.3 规则添加
从上面可以看出只需要在OUTPUT链增加如下的类似规则即可实现将特定ip + port的tcp连接劫持到本地某个端口即可
目的ip: 200.200.30.228 端口443
本地ip: 200.200.30.122, 端口28888
iptables -t nat -A OUTPUT -p tcp -d 200.200.30.228 -j DNAT --dport 443 --to-destination 200.200.30.122:28888
测试OK
1.1.4 相关处理
(1) 依赖于iptables工具
(2) 应用层如何获取对应关系?
其实这个时候可以通过netstat命令发现如下奇怪的现象:
同时和200.200.30.228的443端口和本地28888端口建立了连接,
所以这里也可以获取到原来要连接的资源和端口
相关文档:
一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......
在Linux下进行C语言编程,必然要采用GNU GCC来编译C源代码生成可执行程序。Gcc指令的一般格式为:
Gcc [选项] 要编译的文件 [选项] [目标文件]。其中,目标文件可缺省,Gcc默认生成可执行的文件名为:编译文件.out
看一下经典入门程序"Hello World!"
# vi hello.c ,编辑如下:
#inclu ......
<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
-->
在本文中,
Linux
是指草根版的
Linux
,也就是说,
Linux
是正宗的
GNU/Linux
。现在的问题是,在中国,为什么
GNU/Linux
要远离硬盘?这是什么原因造成的?
......
在Linux 中,动态库的搜索路径除了默认的搜索路径外,还可通过三种方法来指定:方法一:在配置文件/etc/ld.so.conf中指定动态库搜索路径;方法二:通过环境变量LD_LIBRARY_PATH指定动态库搜索路径;方法三:在编译目标代码时指定该程序的动态库搜索路径。
众所周知,Linux动态库的默认搜索路径是/lib和/usr/lib。动态库被 ......
by Bjorn Chambless
Introduction
The following is designed familiarize the reader with programming in x86 (AT&T
style, that produced by gcc) assembly under Linux and how to interface assembly
and higher-level language code (i.e. C). The tutorial will also briefly cover
debugging yo ......