使用 netcat 将流量记录到文件

使用 netcat 将流量记录到文件

我目前有一台 Windows 10 笔记本电脑通过以太网连接到一台 Ubuntu 12.04 笔记本电脑。来自 Windows 系统的所有流量都被路由到 Linux 笔记本电脑,并通过 Linux 系统无线接口传输到 WiFi。我负责设置 Linux 系统来记录流量。我的第一个想法是使用 Wireshark。然而,我被要求以特定格式记录日志。这是我得到的示例格式:

GET /
Host: bing.com
Cookie: MUID=0B62F80D880C681C2DB4F14E8C0C6BC5

HTTP/1.0 301 Moved Permanently
Date: Wed, 29 Jun 2016 19:34:28 GMT
Location: http://www.bing.com/
----------------------------------------------------------

最初,他们还问我 netcat 是否合适。经过一番讨论,我认为 netcat 似乎更合适。但是,我从未将 netcat 用于日志记录目的。我查找了其他方法,并尝试了涉及管道和 fifo 的方法(我对这两种方法都不了解)。我似乎总是得到相同的结果:输出文件为空白。任何帮助都将不胜感激。谢谢。

答案1

您显示的“日志”是 HTTP 请求和响应。我不会使用,nc因为这似乎只会增加更多复杂性。

我建议使用tcpdump。这基本上可以捕获与 wireshark 相同的数据,您甚至可以使用 Wireshark 解析转储。如果我尝试收集 HTTP 请求和响应,我喜欢使用该-A选项。

这似乎对我有用,可以显示这些标题:

tcpdump -A -s 8000 '(port 80 or port 443) and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' | awk --re-interval 'match($0,/^.{8}((GET |HTTP\/|POST |HEAD ).*)/,a){print "\n"a[1];h=2}$0~/^.{0,1}$/&&h{h--}h&&/^[A-Za-z0-9-]+: /{print}' >> your_log_file

上述命令应以 root 身份运行。如果您以其他用户身份运行它,或者如果您只想使用单个接口进行捕获,请务必添加到-i <your_device>tcpdump例如:

tcpdump -i eth0 -A -s 8000 '(port 80 or port 443) and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' | awk --re-interval 'match($0,/^.{8}((GET |HTTP\/|POST |HEAD ).*)/,a){print "\n"a[1];h=2}$0~/^.{0,1}$/&&h{h--}h&&/^[A-Za-z0-9-]+: /{print}' >> your_log_file

答案2

ngrep 提供了您正在寻找的字段,但您需要一个脚本来确保输出的顺序正确(假设会有重叠的请求/响应)。

http://ngrep.sourceforge.net/usage.html

例子:

[user@host~]$ngrep -W byline -q 'HTTP'

T 172.999.999.999:65535 -> 198.41.209.136:80 [AP]
GET / HTTP/1.1.
User-Agent: Wget/1.17.1 (linux-gnu).
Accept: */*.
Accept-Encoding: identity.
Host: reddit.com.
Connection: Keep-Alive.
.


T 198.41.209.136:80 -> 172.999.999.999:65535 [AP]
HTTP/1.1 301 Moved Permanently.
Date: Sat, 13 Aug 2016 13:55:26 GMT.
Transfer-Encoding: chunked.
Connection: keep-alive.
Set-Cookie: __cfduid=9999999999999999999999999999999999999999; expires=Sun, 13-Aug-17 13:55:26 GMT; path=/; domain=.reddit.com; HttpOnly.
Location: https://www.reddit.com/.
X-Content-Type-Options: nosniff.
Server: cloudflare-nginx.

相关内容