0
我需要通過套接字發送數據包,並希望包含一些元信息而不更改數據包內容本身。這可能嗎?如果是:我可以在perl中執行嗎?我可以在通過套接字發送的tcp數據包中包含元數據/頭文件嗎?
我在寫代理服務器,當我向代理服務器發送數據包時,我需要以某種方式包含代理服務器站在客戶端和服務器之間的應用程序的端口。
我需要通過套接字發送數據包,並希望包含一些元信息而不更改數據包內容本身。這可能嗎?如果是:我可以在perl中執行嗎?我可以在通過套接字發送的tcp數據包中包含元數據/頭文件嗎?
我在寫代理服務器,當我向代理服務器發送數據包時,我需要以某種方式包含代理服務器站在客戶端和服務器之間的應用程序的端口。
可以使用Net::ProxyMod
Description Net::ProxyMod
This is a small module that allows you to create a proxy for packet alteration
and debugging. You just need to specify two functions in and outgoing packets
will be passed to. In these functions you can then modify the packet if desired.
This is useful to get in between an existing client and server for testing
purposes.
ProxyMod can be used as a standard proxy or as a transparent proxy together
with a firewall package such as ipfw on FreeBSD. Please refer to the ipfw
documenation for more information.
或給Net::Divert一試
Description Net::Divert
The Net::Divert module facilitates the use of divert sockets for packet alteration
on FreeBSD and MacOSX.
Divert sockets can be bound to a certain port. This port will then receive all
packets you divert to it with the help of a divert filter rule. On FreeBSD and
MacOSX ipfw allows you to add such a rule. Please refer to the divert and ipfw
manpages for more information.
This module allows you to create a divert socket and then just supply a function
that will deal with the incoming packets.
new(host,port) will create a new divert object. It will also create a divert
socket bound to the specified port at the given host/ip.
getPackets(func) will create a loop getting all incoming packets and pass them
onto the specified function you created. This function will be called with two
arguments: packet and fwtag. Fwtag contains the rule number where the packet is
reinserted. Refer to divert(4) for more information.
putPacket(packet,fwtag) reinsert a packet at the specified fw rule (normally you
don't want to alter fwtag, as it is easy to create infinite loops this way)