libpcap抓包的千层套路

2024-01-26 11:20
文章标签 套路 抓包 libpcap 千层

本文主要是介绍libpcap抓包的千层套路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这玩意可真是太折腾人了

    • 下载libpcap
    • 关于测试代码
    • 运行

下载libpcap

一行就行

sudo apt install libpcap-dev

输入密码,选择yes,倒一杯红tea的时间就下完了

关于测试代码

因为这回是做实验,所以先贴一下需求

winpcapt或libpcap编程过程,编写程序捕获实验一的数据包。
还原四元组(源目的IP源目的端口),和文件内容,写到一个文件里(默认文件)
如果需要也可输出到特定文件(通过配置文件或命令行参数决定,屏幕也是特定文件之一)

至于libpcap的使用,贴一个讲的巨清楚且详细的!
文章链接:https://blog.csdn.net/htttw/article/details/7521053
【太厉害了,简直是行走的说明书
【我的实验代码真的小学鸡……

#include <pcap.h>  
#include <time.h>  
#include <stdlib.h>  
#include <stdio.h>  void getPacket(u_char * arg, const struct pcap_pkthdr * pkthdr, const u_char * packet)  
{  int * id = (int *)arg;  FILE *fp;fp = 0;if((fp = fopen("filexample.txt","a+")) == NULL){printf("打开文件失败qvq\n");exit(-1);}  printf("id: %d\n", ++(*id));  printf("Packet length: %d\n", pkthdr->len);  printf("Number of bytes: %d\n", pkthdr->caplen);  printf("Recieved time: %s", ctime((const time_t *)&pkthdr->ts.tv_sec));   int i;printf("源ip地址:");fputs("源ip地址:",fp);  for(i=26; i<30; ++i)  {  printf("%d.", packet[i]);fprintf(fp,"%d.",packet[i]);}printf("\n");fputs("\n",fp); printf("目的ip地址:");fputs("目的ip地址:",fp); for(i=30; i<34; ++i)  {  printf("%d.", packet[i]);fprintf(fp,"%d.",packet[i]);}printf("\n源端口号:%d%d\n",packet[34],packet[35]);fprintf(fp,"\n源端口号:%d%d\n",packet[34],packet[35]);printf("目的端口号:%d%d\n",packet[36],packet[37]);fprintf(fp,"目的端口号:%d%d\n",packet[36],packet[37]);printf("\n");for(i=53; i<pkthdr->len; ++i)  {  printf("%02x ", packet[i]);// fprintf(fp,"%02x ",packet[i]);}printf("\n");fputs("\n",fp); fclose(fp);
}  int main()  
{  char errBuf[PCAP_ERRBUF_SIZE], * devStr;  /* get a device */  devStr = pcap_lookupdev(errBuf);  if(devStr)  {  printf("success: device: %s\n", devStr);  }  else  {  printf("error: %s\n", errBuf);  exit(1);  }  /* open a device, wait until a packet arrives */  pcap_t * device = pcap_open_live(devStr, 65535, 1, 0, errBuf);  if(!device)  {  printf("error: pcap_open_live(): %s\n", errBuf);  exit(1);  }  /* construct a filter */  struct bpf_program filter;  pcap_compile(device, &filter, "tcp", 1, 0);  pcap_setfilter(device, &filter);  /* wait loop forever */  int id = 0;  pcap_loop(device, 5, getPacket, (u_char*)&id);  pcap_close(device);  return 0;  
}

运行

运行这个真的是……起落落落落落
如果你按平时的方法编译,它就会给你弹出一堆未定义的引用
这玩意搞的我怀疑人生
所以要先链接函数库,代码如下

gcc text.c -o test -lpcap

然后就可以快乐的运行了

sudo ./text

如果不用root身份会弹出一个莫名其妙的错误但是我忘记截图了……
就这样吧。

                              不信比来长下泪,开箱验取石榴裙。

这篇关于libpcap抓包的千层套路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/646631

相关文章

网络故障排查和tcpdump抓包

网络故障排查: ping一台服务器不通,你如何排查 检查本机ip地址设置  网关和dns服务器是否设置正确 或者ip地址冲突能否上网 看路由器是否有问题 ping服务器是否运行服务器禁止ping   防火墙设置 iptables -A INPUT -P ICMP -j DROPiptables -D INPUT -P ICMP -j DROP用户不能访问服务器 怎么排查 检查用户网络连接检查服

F12抓包06-4:导出metersphere脚本

metersphere是一站式的开源持续测试平台,我们可以将浏览器请求导出为HAR文件,导入到metersphere,生成接口测试。 metersphere有2种导入入口(方式),导入结果不同:         1.导入到“接口定义”:自动生成接口API和单接口case(接口自动去重;每个请求生成不同case,重复的请求生成重复的case,名称自动加数字后缀,自动与接口关联)。

算法练习小技巧之有序集合--套路详细解析带例题(leetcode)

前言:         本文详细讲解Python中的有序集合SortedList和C++中的有序集合multiset的用法,配合leetcode的例题来展示实际的用处。(本人水平不够,还无法讲解有序集合的实现方法,只会用)         觉得有帮助或者写的不错可以点个赞,后面也有几道我找出来的题目可以用这个方法快速解决的         (感觉有点水) 目录 有序集合用法讲解:

使用Charles对安卓手机进行抓包

写在前面的话 Charles 介绍 Charles 的主要功能 网络请求拦截与分析 Charles 通过将自己配置成系统的代理服务器,拦截所有通过它的 HTTP 和 HTTPS 请求与响应。开发者可以查看每个网络请求的详细信息,包括请求的 URL、请求头、请求体、响应头、响应体、状态码等,便于调试和分析网络通信问题。 SSL 抓包 Charles 支持 HTTPS 协议的抓包。通过安装

F12抓包05:Network接口测试(抓包篡改请求)

课程大纲         使用线上接口测试网站演示操作,浏览器F12检查工具如何进行简单的接口测试:抓包、复制请求、篡改数据、发送新请求。         测试地址:https://httpbin.org/forms/post ① 抓包:鼠标右键打开“检查”工具(F12),tab导航选择“网络”(Network),输入前3项点击提交,可看到录制的请求和返回数据。

F12抓包04:(核心功能)Network接口抓包、定位缺陷

课程大纲 一、录制请求 ① tab导航选择“网络”(Network),即可进入网络抓包界面,进入界面默认开启录制模式,显示浏览器当前标签页的请求列表。 ② 查看请求列表,包含了当前标签页执行的所有请求和下载的资源,列表显示每条请求的相应内容。 还可以在字段行单击右键,勾选想要查看的字段。 ③ 单击列表项的“名称”,可以查看请求的详细内容。接口请

qt中的线程套路

qt的线程还是非常优雅的,当然我们可以使用系统自带的函数接口创建线程,但是跨平台移植似乎就是问题。 qt的线程是可以支持跨平台的移植的。 qt的线程非常简单,就是继承QThread然后重写run方法,run函数就是我们的线程主体,对于重写其实本质就是一个回调接口了。 好了注意重点:在主函数实例化然后调用start方法就开始运行线程了,千万不要调用函数调用的急眼了,把run函数也调用了。

charles使用ssl证书抓包https请求失败解决方案

前提 手机必须有root权限,并且是使用Magisk(面具)进行root; ssl证书安装 安卓7.0以下的手机,ssl证书是直接安装到了‘系统证书’里,可以直接抓取https请求,但是目前的手机大部分都是7.0以上的;安卓7.0以上的手机,ssl证书是直接安装到了‘用户证书’里,因此无法正常的抓取https包,所以想抓https包,必须将ssl证书从‘用户证书’放到‘系统证书’; 如何将

Fiddler安卓设备抓包基础

Fiddler安卓设备抓包基础 一、下载二、Fiddler设置三、安卓设备设置四、Fiddler工具页面介绍 一、下载 工具名称:Fiddler 下载地址:官网 二、Fiddler设置 1.打开Fiddler 2.打开Tools > Options > Connections进行如下设置,Fiddler通用端口号:8888,记住这个后面要用 3.设置https证书,目的

Java基础-Lambda表达式的使用套路

1.列表循环 1.1.普通的forEach循环 goodsSkuBatch.stream().forEach(goodsSkuPromote -> {// 循环处理对象 TODO}); 2.列表过滤 // 去重复信息: 过滤收集后补数据库中的ID, 收集listList<EmailMessage> crudList = emailDataList.stream().collect