ruby TCP 抓包工具

本文介绍使用Ruby和Perl编写抓包工具的具体实现方法。通过分析网络数据包,提取源地址、目标地址及请求方法等关键信息。适用于网络安全监控、故障排查等场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

抓包工具包括ruby版本和perl版本

ruby 抓包代码

require 'rubygems'

ip = "your ip"
cmd = "/usr/sbin/tcpdump -lnA -s 0" # dst host #{ip} or src host #{ip}

f = IO.popen(cmd) do |f|
while true
packet = f.read(1024*100)
cap = /(\d+\.\d+\.\d+\.\d+).+ > (\d+\.\d+\.\d+\.\d+)/.match(packet)
if cap
client,host = cap[1],cap[2]
#put 请求方法 ,这个可以根据你抓包的类型,进行自定义过滤
reg = /(\?xml|HTTP|XMLHttpRequest|XMLRequest|XMLSchema|XMLSchema-insta0x|XML|GET|POST|WWW-Authenticate|Authorization).+/i
method = reg.match(packet)
if method
puts "source:#{client} > dest:#{host}"
puts "method is #{method[1]}"
puts "data >>>"
puts method
end#end if method
end

end
end

perl 抓包代码

#!/usr/bin/perl

$LIMIT = shift || 50000000;

$|=1;
open (STDIN,"/usr/sbin/tcpdump -lnx -s 0 |"); #dst host ip or src host ip
while (<>) {
if (/^\S/) {
last unless $LIMIT--;
while ($packet=~/(HTTP|XMLHttpRequest|XMLRequest|XMLSchema|XMLSchema-insta0x|XML|GET|POST|WWW-Authenticate|Authorization).+\
/g) {
print "$client -> $host\t$&\n";
}
undef $client; undef $host; undef $packet;
($client,$host) = /(\d+\.\d+\.\d+\.\d+).+ > (\d+\.\d+\.\d+\.\d+)/
if /P \d+:\d+\((\d+)\)/ && $1 > 0;
}
next unless $client && $host;
s/\s+//;
s/0x[0-9a-f\s]+://;
s/0x:[\s]+//;
s/\s+//;
s/([0-9a-f]{2})\s?/chr(hex($1))/eg;
tr/\x1F-\x7E\r\n//cd;
$packet .= $_;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值