linux下网络抓包分析(墨迹天气,QQ,微信,开心网)

#include <stdio.h>
#include <stdlib.h>
#include <pcap.h>
#include <memory.h>
#include <sys/types.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;

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 look(char *info,char *pattern, u_char data[])
{
    FILE *file=fopen("data.txt","a");
    if (file==NULL)
    {
        exit(-1);
    }
    int i,q,w;
    regmatch_t pm[1];
    const size_t nm=1;
    regex_t reg;
        regcomp(&reg,pattern,REG_ICASE);
        i=regexec(&reg,data,nm,pm,0);
        if(i==0)
        {
            fprintf(file, "%s  ",info );
            for(q=0;q<nm;q++)
            {
                for(w=pm[q].rm_so;w<pm[q].rm_eo;++w)
                {
                      if (data[w]=='%'&&data[w+1]=='3'&&data[w+2]=='D')
                    {
                        data[w]='=';
                        fprintf(file,"%c",data[w] );
                        w=w+2;
                    }
                    else if (data[w]=='%'&&data[w+1]=='2'&&data[w+2]=='6')
                    {
                        data[w]='&';
                        fprintf(file,"%c",data[w] );
                        w=w+2;
                    }
                    else if (data[w]=='&')
                    {
                        fprintf(file, "   " );
                    }
                    else if (data[w]=='.'&&data[w+1]=='.')
                    {
                        fprintf(file, "   ");
                        w=w+1;
                    }
                    else if (data[w]==':')
                    {
                        fprintf(file, "=");
                    }
                    else
                        fprintf(file,"%c",data[w] );
                }
            }
            fprintf(file,"\n");
        }
        regfree(&reg);
        fclose(file);
}


/*
墨迹天气的IP信息
223.203.194.219
110.75.96.12
120.198.196.16
223.203.194.242
223.203.194.155
117.135.138.76
*/
void analys_moji(u_char data[],int cmd)
{
    if (cmd==1)
    {
        look("ID","UserId=[0-9]*",data);
        look("邮箱    ","email\":\"[^\"]*\"",data);
    }
    else if (cmd==2)
    {
        look("经纬度  ","cdma_lat=[0-9]*\.[0-9]*&cdma_lng=[0-9]*\.[0-9]*",data);
    }
    else if (cmd==3)
    {
        look("APP号  ","appId=[0-9]*",data);
        look("通道号  ","sessionId=[A-Z0-9]*",data);
        look("标记    ","sign=[0-9A-Z]*",data);
    }
    else if (cmd==4)
    {
        look("手机号码","mobile=[0-9]*",data);
        look("手机品牌","brand=[0-9a-zA-Z]*",data);
        look("短信验证码","smsCode=[0-9]*",data);
        look("手机imei号","IMEI=[0-9]*",data);
    }
    else
    {
        look("ID","UserId=[0-9]*",data);
        look("邮箱    ","email\":\"[^\"]*\"",data);
        look("经纬度  ","cdma_lat=[0-9]*\.[0-9]*&cdma_lng=[0-9]*\.[0-9]*",data);
        look("APP号  ","appId=[0-9]*",data);
        look("通道号  ","sessionId=[A-Z0-9]*",data);
        look("标记    ","sign=[0-9A-Z]*",data);
        look("手机号码","mobile=[0-9]*",data);
        look("手机品牌","brand=[0-9a-zA-Z]*",data);
        look("短信验证码","smsCode=[0-9]*",data);
        look("手机imei号","IMEI=[0-9]*",data);
    }
} 


/*
QQ的IP信息 
14.17.18.30
211.136.236.89
183.232.121.141
42.62.48.146
58.205.214.177
*/
void analys_qq(u_char data[],int cmd)
{
    if (cmd==1)
    {
        look("QQ号码","[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]",data);
        look("QQ号码","[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]",data);
        look("QQ号码","[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]",data);
        look("APP密码","key=[a-z0-9]*",data);
    }
    else if (cmd==2)
    {
        look("经纬度  ","\"x\":[0-9]*\.[0-9]*,\"y\":[0-9]*\.[0-9]*",data);
        look("位置","\"location\":\"[^\"]*\"",data);
    }
    else if (cmd==3)
    {
        look("用户代理设备","User-Agent[^)]*)",data);
        look("网络环境","nt=[0-9a-zA-Z]*",data);
        look("未知ID","suid=[0-9a-z]*",data);
    }
    else if (cmd==4)
    {
        look("用户代理设备","User-Agent[^)]*)",data);
        look("IMEI号","imei=[0-9]*",data);
        look("手机型号","hm=[^&]*",data);
        look("手机MAC地址","mac=[a-z0-9]*",data);
    }
   else
   {
        look("QQ号码","[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]",data);
        look("QQ号码","[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]",data);
        look("QQ号码","[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]",data);
        look("经纬度  ","\"x\":[0-9]*\.[0-9]*,\"y\":[0-9]*\.[0-9]*",data);
        look("位置","\"location\":\"[^\"]*\"",data);
        look("用户代理设备","User-Agent[^)]*)",data);
        look("IMEI号","imei=[0-9]*",data);
        look("手机型号","hm=[^&]*",data);
        look("手机MAC地址","mac=[a-z0-9]*",data);
        look("网络环境","nt=[0-9a-zA-Z]*",data);
        look("未知ID","suid=[0-9a-z]*",data);
        look("APP密码","key=[a-z0-9]*",data);
   }
}


/*
微信的IP信息
182.254.3.174
42.62.48.186
*/
void analys_weixin(u_char data[],int cmd)
{
    if (cmd==1)
    {
        look("用户代理设备","User-Agent[^)]*)",data);
        look("网络环境","type=[a-zA-Z]*",data);
        look("登陆信息","version=[0-9]*&uin=[0-9]*&nettype=[0-9]",data);
        look("客户端与服务器ip","X-Clientip:[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\.\.x-serverip:[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*",data);
        look("地理信息","\"country\":\"[^\"]\",\"province\":\"[^\"]\",\"city\":\"[^\"]\",\"isp\":\"[^\"]\"",data);
    }
    else if (cmd==2)
    {
         look("地理信息","\"country\":\"[^\"]\",\"province\":\"[^\"]\",\"city\":\"[^\"]\",\"isp\":\"[^\"]\"",data);
    }
    else if (cmd==3)
    {
        look("网络环境","type=[a-zA-Z]*",data);
        look("登陆信息","version=[0-9]*&uin=[0-9]*&nettype=[0-9]",data);
        look("客户端与服务器ip","X-Clientip:[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\.\.x-serverip:[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*",data);
    }
    else if (cmd==4)
    {
        look("用户代理设备","User-Agent[^)]*)",data);
    }
    else
    {
        look("用户代理设备","User-Agent[^)]*)",data);
        look("网络环境","type=[a-zA-Z]*",data);
        look("登陆信息","version=[0-9]*&uin=[0-9]*&nettype=[0-9]",data);
        look("客户端与服务器ip","X-Clientip:[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\.\.x-serverip:[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*",data);
        look("地理信息","\"country\":\"[^\"]\",\"province\":\"[^\"]\",\"city\":\"[^\"]\",\"isp\":\"[^\"]\"",data);
    }
}


/*
开心网的IP信息
220.181.100.243
27.131.222.21
106.3.34.18
*/
void analys_kaixinwang(u_char data[],int cmd)
{
    if (cmd==1)
    {
        look("用户ID  ","uid%3D[0-9]*",data);
        look("用户密码","consumer_key=[a-z0-9]*",data);
        look("出生日期","birthday\":\"[^\"]*\"",data);
        look("姓名    ","fname\":\"[^\"]*\"",data);
        look("家乡    ","hometown\":\"[^\"]*\"",data);
    }
    else if (cmd==2)
    {
         look("经纬度  ","x%3D[0-9]*\.[0-9]*%26y%3D[0-9]*\.[0-9]*",data);
    }
    else if (cmd==3)
    {
        look("登录信息","ia=[0-9]&key=[0-9a-z]*",data);
        look("未知信息","ctm=[0-9]*",data);
    }
   else if(cmd==4)
   {
        look("sim卡编号","sim=[0-9]*",data);
        look("分辨率","re=[0-9]*\*[0-9]*",data);
        look("操作系统","ct=[a-z]*",data);
        look("手机ime号","ime=[0-9]*",data);
   }
   else
   {
        look("用户ID  ","uid%3D[0-9]*",data);
        look("用户密码","consumer_key=[a-z0-9]*",data);
        look("出生日期","birthday\":\"[^\"]*\"",data);
        look("姓名    ","fname\":\"[^\"]*\"",data);
        look("家乡    ","hometown\":\"[^\"]*\"",data);
        look("经纬度  ","x%3D[0-9]*\.[0-9]*%26y%3D[0-9]*\.[0-9]*",data);
        look("登录信息","ia=[0-9]&key=[0-9a-z]*",data);
        look("未知信息","ctm=[0-9]*",data);
        look("sim卡编号","sim=[0-9]*",data);
        look("分辨率","re=[0-9]*\*[0-9]*",data);
        look("操作系统","ct=[a-z]*",data);
        look("手机ime号","ime=[0-9]*",data);
   }
}
  


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);
        u_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];
            else
                ch[i]='.';
        }
           analys_weixin(ch,5);
           analys_qq(ch,5);
           analys_kaixinwang(ch,5);
           analys_moji(ch,5);
    }
}


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("qqweixin.pcap",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;
} 
                                 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
全国IP地址库,十分详细 范例。 province city isp start_ip1 end_ip1 福建省 电信 1.0.1.0 1.0.3.255 广东省 电信 1.0.8.0 1.0.15.255 广东省 电信 1.0.32.0 1.0.63.255 福建省 电信 1.1.0.0 1.1.0.255 福建省 电信 1.1.2.0 1.1.3.255 福建省 电信 1.1.4.0 1.1.7.255 广东省 电信 1.1.8.0 1.1.63.255 福建省 电信 1.2.0.0 1.2.1.255 北京市 (北龙中科技有限公司) 通 1.2.2.0 1.2.2.255 福建省 电信 1.2.4.0 1.2.7.255 广东省 电信 1.2.8.0 1.2.127.255 广东省 电信 1.3.0.0 1.3.255.255 福建省 电信 1.4.1.0 1.4.3.255 福建省 电信 1.4.5.0 1.4.7.255 广东省 电信 1.4.8.0 1.4.127.255 广东省 电信 1.10.0.0 1.10.7.255 福建省 电信 1.10.8.0 1.10.9.255 福建省 电信 1.10.11.0 1.10.15.255 广东省 电信 1.10.16.0 1.10.127.255 北京市 方正宽带 1.12.0.0 1.15.255.255 内蒙古 联通 1.24.0.0 1.31.255.255 内蒙古 赤峰市 联通 1.24.8.0 1.24.15.255 内蒙古 乌兰察布市 联通 1.24.32.0 1.24.39.255 内蒙古 乌兰察布市 联通 1.24.80.0 1.24.87.255 内蒙古 包头市 联通 1.24.184.0 1.24.191.255 内蒙古 乌兰察布市 联通 1.25.128.0 1.25.135.255 内蒙古 锡林郭勒盟 联通 1.25.152.0 1.25.191.255 内蒙古 巴彦淖尔市 联通 1.25.228.0 1.25.255.255 内蒙古 呼伦贝尔市 联通 1.26.0.0 1.26.15.255 内蒙古 赤峰市 联通 1.26.112.0 1.26.127.255 贵州省 电信 1.48.0.0 1.49.255.255 贵州省 贵阳市(电信CDMA全省共用出口) 电信 1.49.128.0 1.49.255.255 宁夏 电信 1.50.0.0 1.50.255.255 山东省 济南市(山东大学) 教育 1.51.192.0 1.51.255.255 黑龙江省 联通 1.56.0.0 1.63.255.255 黑龙江省 鹤岗市 联通 1.56.0.0 1.56.95.255 黑龙江省 牡丹江市 联通 1.56.128.0 1.56.255.255 黑龙江省 绥化市 联通 1.57.0.0 1.57.63.255 黑龙江省 齐齐哈尔市 联通 1.57.64.0 1.57.127.255 黑龙江省 双鸭山市 联通 1.57.128.0 1.57.191.255 黑龙江省 鸡西市 联通 1.57.192.0 1.57.255.255 黑龙江省 哈尔滨市 联通 1.58.0.0 1.58.255.255 黑龙江省 大庆市 联通 1.59.16.0 1.59.127.255 黑龙江省 佳木斯市 联通 1.59.128.0 1.59.255.255 黑龙江省 黑河市 联通 1.60.0.0 1.60.63.255 黑龙江省 七台河市 联通 1.60.64.0 1.60.95.255 黑龙江省 伊春市 联通 1.60.128.0 1.60.191.255 黑龙江省 齐齐哈尔市 联通 1.60.192.0 1.60.255.255 黑龙江省 绥化市 联通 1.61.0.0 1.61.127.255 黑龙江省 齐齐哈尔市 联通 1.61.128.0 1.61.159.255 黑龙江省 哈尔滨市 联通 1.62.0.0 1.62.127.255 黑龙江省 鸡西市 联通 1.63.0.0 1.63.31.255 黑龙江省 绥化市 联通 1.63.152.0 1.63.159.255 黑龙江省 伊春市 联通 1.63.192.0 1.63.207.255 山西省 电信 1.68.0.0 1.71.255.255 陕西省 电信 1.80.0.0 1.87.255.255 陕西省 西安市 电信 1.80.0.0 1.80.255.255 陕西省 渭南市 电信 1.81.0.0 1.81.127.255 陕西省 汉中市 电信 1.81.128.0 1.81.255.255 陕西省 商洛市 电信 1.82.0.0 1.82.31.255 陕西省 安康市 电信 1.82.32.0 1.82.63.255 陕西省 榆林市 电信 1.82.64.0 1.82.127.255 陕西省 宝鸡市 电信 1.82.128.0 1.82.163.255 陕西省 西安市 电信 1.83.0.0 1.83.255.255 陕西省 西安市 电信 1.84.64.0 1.84.127.255 陕西省 西安市 电信 1.85.0.0 1.85.23.255 陕西省 延安市 电信 1.85.64.0 1.85.95.255 陕西省 安康市 电信 1.85.96.0 1.85.135.255 陕西省 咸阳市 电信 1.85.144.0 1.85.159.255 陕西省 西安市 电信 1.85.172.0 1.85.191.255 陕西省 西安市 电信 1.85.192.0 1.86.255.255 陕西省 西安市 电信 1.87.0.0 1.87.255.255 北京市 歌华有线宽带 1.88.0.0 1.91.255.255 北京市 电信通 1.92.0.0 1.93.255.255 内蒙古 电信 1.180.0.0 1.183.255.255 内蒙古 鄂尔多斯市 电信 1.180.64.0 1.180.67.255 内蒙古 乌海市 电信 1.180.128.0 1.180.135.255 内蒙古 呼和浩特市 电信 1.182.0.0 1.182.3.255 广东省 广州市(暨南大学) 教育 1.184.0.0 1.184.127.255 黑龙江省 联通 1.188.0.0 1.191.255.255 河南省 郑州市 电信 1.192.0.0 1.192.191.255 河南省 电信 1.192.0.0 1.199.255.255 河南省 郑州市 电信 1.193.0.0 1.193.127.255 河南省 洛阳市 电信 1.193.128.0 1.193.239.255 河南省 平顶山市 电信 1.194.0.0 1.194.63.255 河南省 开封市 电信 1.194.128.0 1.194.159.255 河南省 安阳市 电信 1.194.192.0 1.194.255.255 河南省 新乡市 电信 1.195.0.0 1.195.63.255 河南省 焦作市 电信 1.195.64.0 1.195.127.255 河南省 濮阳市 电信 1.195.128.0 1.195.147.255 河南省 三门峡市 电信 1.195.192.0 1.195.255.255 河南省 商丘市 电信 1.196.64.0 1.196.79.255 河南省 信阳市 电信 1.196.192.0 1.196.223.255 河南省 鹤壁市 电信 1.197.0.0 1.197.15.255 河南省 漯河市 电信 1.197.32.0 1.197.63.255 河南省 周口市 电信 1.197.64.0 1.197.95.255 河南省 驻马店市 电信 1.197.96.0 1.197.127.255 河南省 许昌市 电信 1.197.128.0 1.197.159.255 河南省 南阳市 电信 1.197.160.0 1.197.175.255 河南省 焦作市 电信 1.197.192.0 1.197.207.255 河南省 安阳市 电信 1.197.208.0 1.197.223.255 河南省 周口市 电信 1.197.224.0 1.197.235.255 河南省 周口市 电信 1.199.0.0 1.199.15.255 河南省 新乡市 电信 1.199.96.0 1.199.127.255 北京市 (电信WIFI热点AP段) 电信 1.202.0.0 1.203.255.255 贵州省 贵阳市 电信 1.204.0.0 1.204.255.255

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值