当前位置: 技术问答>linux和unix
请问高手,如何伪造数据包
来源: 互联网 发布时间:2015-07-30
本文导语: 我将数据从一台机器传到另外一台机器上去,为了提高效率,我不想通过tcp ip来传送,相直接在内核中伪造数据包 ,通过网卡来传送。但是我现在不知如何来伪造数据包 ,各位有什么好的建议,望告之,谢谢 ...
我将数据从一台机器传到另外一台机器上去,为了提高效率,我不想通过tcp ip来传送,相直接在内核中伪造数据包 ,通过网卡来传送。但是我现在不知如何来伪造数据包 ,各位有什么好的建议,望告之,谢谢
|
libnet used in user mode
read this book:
《Building Open Source Network Security Tools: Components and Techniques》
send packet from kernel mode, see khttpd implementation
u can find its source code in /linux/net/khttpd/
good luck
read this book:
《Building Open Source Network Security Tools: Components and Techniques》
send packet from kernel mode, see khttpd implementation
u can find its source code in /linux/net/khttpd/
good luck
|
楼主,你可以去这里
http://www.kernelnewbies.org/documents/
找到资料,这里有讲khttpd的结构,并用同样方法实现了一个kftpd
注意,采用的方法是比较上层的,就是sock_sendmsg()和sock_revmsg()
你可以去找一份叫Linux Network Implementation的文档,上面有整个流程,很清晰,你要么采用和khttpd一样方法,要么操纵sock缓冲区sk_buff,用output发
这是文档上的:
write(socket, data, length)
sys_write( )
sock_write( )
sock_sendmsg( )
inet_sendmsg( )
tcp_sendmsg( )
tcp_send_skb( )
tcp_transmit_skb( )
ip_queue_xmit( )
dev_queue_xmit( )
ei_start_xmit( )
我还有三份从kernel里以两种方式发送数据包的例子,都是操纵sk_buff的,你留下email,我把东西一起发给你就完了
http://www.kernelnewbies.org/documents/
找到资料,这里有讲khttpd的结构,并用同样方法实现了一个kftpd
注意,采用的方法是比较上层的,就是sock_sendmsg()和sock_revmsg()
你可以去找一份叫Linux Network Implementation的文档,上面有整个流程,很清晰,你要么采用和khttpd一样方法,要么操纵sock缓冲区sk_buff,用output发
这是文档上的:
write(socket, data, length)
sys_write( )
sock_write( )
sock_sendmsg( )
inet_sendmsg( )
tcp_sendmsg( )
tcp_send_skb( )
tcp_transmit_skb( )
ip_queue_xmit( )
dev_queue_xmit( )
ei_start_xmit( )
我还有三份从kernel里以两种方式发送数据包的例子,都是操纵sk_buff的,你留下email,我把东西一起发给你就完了
|
Iyou must use tcp session, host spoofing is not easy, 'cause you have complete the 3-way handshake(Can you guess the SYN number from your target without the second packet not reaching you).
I recommend to use UDP or ICMP instead.
Libnet is a good library to write packet-based program, version 1.0.x and 1.1.x are quite different, so pay attention.
You can also use RAW SOCKET if you're not lazy. :)
I recommend to use UDP or ICMP instead.
Libnet is a good library to write packet-based program, version 1.0.x and 1.1.x are quite different, so pay attention.
You can also use RAW SOCKET if you're not lazy. :)
|
用sniffer之类的软件直接抓包修改重发。
|
如果只是普通的应用程序,使用原始套接字sock_raw试试
|
利用socket,构造数据报,其中的源IP地址你可以修改。
构造数据报的过程可以在内核中实现
但是传输一定要靠协议
所以是不可以提高传输速率的
瓶颈没有避免
我原来做过一个利用别人IP完成net send命令的程序
构造数据报的过程可以在内核中实现
但是传输一定要靠协议
所以是不可以提高传输速率的
瓶颈没有避免
我原来做过一个利用别人IP完成net send命令的程序
|
误导,绝对是误导。
net send又不是基于TCP的。
net send又不是基于TCP的。