#include <stdio.h>
#include <stdlib.h>
#include <pcap.h>
#include <arpa/inet.h>
#include <string.h>
#include <regex.h>//链路层数据包
typedef struct {u_char DestMac[6];u_char SrcMac[6];u_char Etype[2];
}ETHHEADER;
//IP
typedef struct {int header_len:4;int version:4;u_char tos:8;int total_len:16;int ident:16;int flags:16;u_char ttl:8;u_char proto:8;int checksum:16;u_char sourceIP[4];u_char destIP[4];
}IPHEADER;
int sign[8]={0};char *Proto[]={"Reserved","ICMP","IGMP","GGP","IP","ST","TCP"
};void analys_moji(const u_char data[])
{int i,q,w;regmatch_t pm[2];const size_t nm=2;regex_t reg;const char *pp1="kaixin001";regcomp(&reg,pp1,REG_ICASE);i=regexec(&reg,data,nm,pm,REG_NOTBOL);if(i==0){for(q=0;q<nm;q++){for(w=pm[q].rm_so;w<pm[q].rm_eo;++w)printf("%c",data[w]);}}regfree(&reg);
}void analys_kaixinwang(const u_char data[])
{int i,q,w;regmatch_t pm[2];const size_t nm=2;regex_t reg;if (sign[1]==0){const char *pp1="uid%3D[0-9]*";regcomp(&reg,pp1,REG_ICASE);i=regexec(&reg,data,nm,pm,0);if(i==0){printf("user_id=");for(q=0;q<nm;q++){for(w=pm[q].rm_so+6;w<pm[q].rm_eo;++w)printf("%c",data[w]);}sign[1]=1;printf("\n");}regfree(&reg);}if (sign[2]==0){const char *pp2="device_name=(%..){1,}";regcomp(&reg,pp2,REG_ICASE);i=regexec(&reg,data,nm,pm,0);if(i==0){for(q=0;q<=nm;q++){for(w=pm[q].rm_so;w<pm[q].rm_eo;++w)printf("%c",data[w]);}sign[2]=1;printf("\n");}regfree(&reg);}if (sign[3]==0){const char *pp3="consumer_key=[a-z0-9]*";regcomp(&reg,pp3,REG_ICASE);i=regexec(&reg,data,nm,pm,0);if(i==0){for(q=0;q<=nm;q++){for(w=pm[q].rm_so;w<pm[q].rm_eo;++w)printf("%c",data[w]);}sign[3]=1;printf("\n");}regfree(&reg);}if (sign[4]==0){const char *pp4="x%3D[0-9]*\.[0-9]*%26y%3D[0-9]*\.[0-9]*";regcomp(&reg,pp4,REG_ICASE);i=regexec(&reg,data,nm,pm,0);if(i==0){for(q=0;q<=nm;q++){for(w=pm[q].rm_so;w<pm[q].rm_eo;++w)if (data[w]=='x'){printf("latitude=" );w=w+3;}else if(data[w]=='%'){printf("   longtitude=");w=w+6;}elseprintf("%c",data[w]);}sign[4]=1;printf("\n");}regfree(&reg);}if (sign[5]==0){const char *pp5="version%3D[a-z]*.{5}";regcomp(&reg,pp5,REG_ICASE);i=regexec(&reg,data,nm,pm,0);if(i==0){printf("version = \n");for(q=0;q<=nm;q++){for(w=pm[q].rm_so+10;w<pm[q].rm_eo;++w)printf("%c",data[w]);}sign[5]=1;printf("\n");}regfree(&reg);}if (sign[6]==0){const char *pp6="device_name=(%..){1,}";regcomp(&reg,pp6,REG_ICASE);i=regexec(&reg,data,nm,pm,0);if(i==0){for(q=0;q<=nm;q++){for(w=pm[q].rm_so;w<pm[q].rm_eo;++w)printf("%c",data[w]);}sign[6]=1;printf("\n");}regfree(&reg);}if (sign[7]==0){const char *pp7="device_name=(%..){1,}";regcomp(&reg,pp7,REG_ICASE);i=regexec(&reg,data,nm,pm,0);if(i==0){for(q=0;q<=nm;q++){for(w=pm[q].rm_so;w<pm[q].rm_eo;++w)printf("%c",data[w]);}sign[7]=1;printf("\n");}regfree(&reg);}}void pcap_handle_w(u_char* user,const struct pcap_pkthdr* header,const u_char* pkt_data)
{if (header->len>=14){IPHEADER *ip_header=(IPHEADER*)(pkt_data+14);char ch[(int)header->len];int i;for ( i =0; i < (int)header->len; ++i){if(isprint(pkt_data[i]))ch[i]=pkt_data[i];elsech[i]='.';}analys_kaixinwang(ch);}
}int main(int argc, char **argv)
{char *device="eth0";char errbuf[1024];pcap_t *phandle;bpf_u_int32 ipaddress,ipmask;struct bpf_program fcode;int datalink;int q,v,w=0,g=-1;device="wlan0";phandle=pcap_open_offline("test2.pcapng",errbuf);if(phandle==NULL)perror(errbuf);if(pcap_lookupnet(device,&ipaddress,&ipmask,errbuf)==-1){perror(errbuf);return 1;}else{char ip[INET_ADDRSTRLEN],mask[INET_ADDRSTRLEN];if(inet_ntop(AF_INET,&ipaddress,ip,sizeof(ip))==NULL)perror("inet_ntop error");else if(inet_ntop(AF_INET,&ipmask,mask,sizeof(mask))==NULL)perror("inet_ntop error");}pcap_loop(phandle,-1,pcap_handle_w,NULL);return 0;
}

离线抓取开心网和墨迹天气数据(pcap包,linux平台)相关推荐

  1. 抓取淘宝司法拍卖数据

    抓取淘宝司法拍卖数据 之前在某平台看到一些人发布需求,需要爬取淘宝司法拍卖的数据.在这里给大家分享一下,有需要的就直接复制我的代码,粘贴回去就可以直接用了,今天下午才用了的是可以完整的抓取想要的所有数 ...

  2. node爬取墨迹天气数据发送定时邮件

      使用vscode通过node.js爬取墨迹天气网站的数据,然后通过邮件每天定时给特定的一个或者多个邮箱发送具有特定html样式的163邮件. 实现爬取功能准备工作: 官网下载node.js 打开v ...

  3. python爬取大众点评评论_python爬虫抓取数据 小试Python——爬虫抓取大众点评上的数据 - 电脑常识 - 服务器之家...

    python爬虫抓取数据 小试Python--爬虫抓取大众点评上的数据 发布时间:2017-04-07

  4. Python爬虫如何去抓取qq音乐的歌手数据?

    自从学会爬虫之后是不是有一种我什么都想爬一下的冲动?今天小千就来教大家如何去抓取qq音乐的歌手数据,项目实操多练习能更快提升自己哦. 今天的项目目标就是获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的 ...

  5. 爬虫抓取糯米网上所有商家数据

    前段时间写了 爬取美团商家信息的博客 爬虫抓取美团网上所有商家信息 ,这次说说爬取糯米网,由于某些原因无法提供源代码,但是,代码不是关键,最关键的是思想,懂了思想,代码是很容易写的. 爬虫最重要的是分 ...

  6. sql年月日24小时制_Power Query 抓取气象台24小时降水量数据

    我们借鉴之前抓取台风路径数据的例子,试一试抓取降水量数据: 之前我们访问过这个网站,也试着抓取过数据,不过在谷歌浏览器中我们只能够找到两天的数据,但是通过台风路径数据抓取,我们猜想只要我们向服务器提出 ...

  7. python抓取数据包_利用python-pypcap抓取带VLAN标签的数据包方法

    1.背景介绍 在采用通常的socket抓包方式下,操作系统会自动将收到包的VLAN信息剥离,导致上层应用收到的包不会含有VLAN标签信息.而libpcap虽然是基于socket实现抓包,但在收到数据包 ...

  8. socksDroid结合charles抓取绕过代理的apk数据包(快手/闲鱼等)

    如果文章无法浏览或者图片失效,可前往原文浏览 原文链接 socksDroid结合charles抓取绕过代理的apk数据包(快手/闲鱼等)直接点击即可前往访问. 前言 如今很多软件做了安全防护,尤其是类 ...

  9. 小猪的Python学习之旅 —— 14.项目实战:抓取豆瓣音乐Top 250数据存到Excel中

    小猪的Python学习之旅 -- 14.项目实战:抓取豆瓣音乐Top 250数据存到Excel中 标签:Python 一句话概括本文: 利用Excel存储爬到的抓取豆瓣音乐Top 250数据信息,还有 ...

最新文章

  1. CVPR2020论文介绍: 3D 目标检测高效算法
  2. Mobileye REM地图
  3. java类型精度排序,Java中BigDecimal精度和相等比较的坑
  4. OPA4377低噪声5.5MHz带宽CMOS运放
  5. 0pp0r11如何更改语言_更改电脑日期的方法
  6. mysql5.7中root密码忘记后修改密码
  7. JavaScript的DOM编程总结
  8. 解决: Intellij IDEA 运行报错 Command line is too long
  9. python可以封装成独立程序吗_windows环境下把Python代码打包成独立执行的exe
  10. 支付宝生活号,同时出现俩网址,到底哪个真哪个假?
  11. python批量查询ip归属地_IP地址地理信息批量查询小工具
  12. 《初级会计电算化实用教程(金蝶KIS专业版)》一导读
  13. jdk1.8 64位与32位免费下载
  14. m序列详解及VHDL语言实现
  15. 知乎到底什么是前后端分离?
  16. 小程序打通了用户到店的最后一步!
  17. linux如何显示文件后缀名,如何在win7系统中显示文件后缀名、扩展名
  18. 如何做一个炫酷的墨水屏电子钟?
  19. android垂直进度条控件,Android常用控件之ProgressBar,水平进度条
  20. 销量破亿,董洁直播间凭何出圈?

热门文章

  1. Java练习——学生宿舍管理系统Day10
  2. python qt5 gui快速编程_现货正版 Python Qt GUI与数据可视化编程 pyqt5教程书籍 pyqt5快速开发与实战Qt5 GUI快速编程 计算机网络程序设计人民邮电出版社...
  3. 第十八届中国国际广告节会议注册表-->网页案例
  4. BIGEMAP教程之Arcg​is进行DEM数据进行水文分析(二)
  5. 【移动终端应用开发】实验1:SharedPreferences的应用
  6. 【办公-Word-VB】Word中VB控制ActiveX控件转换人民币大写并填充-源码带完整注释
  7. 山东大学项目实训——地图圈系统——微信小程序(17)
  8. 中国增生性糖尿病性视网膜病的治疗方法市场趋势报告、技术动态创新及市场预测
  9. 如何隐藏你的真实ip
  10. IDEA JAVA 新建Spring Cloud项目报错问题解决记录