1)抓取qq号一直不成功,直接上程序剖析问题
payload的数据类型是char指针,也就是每个元素都是char类型的,qq号的字符为(0-9),并且第一个字符不能为0. ‘0’-‘9’对应的ASCII码的16进制为30-39
而且得知qq号的存储方式为16进制,故这样比较:if(payload[15+qqlen]>=0x30&&payload[15+qqlen]<=0x39)
但是刚开始并不知道数字前面加0x就可以用16进制的形式比较,所以就用10进制的形式比较,
首先我定义变量
unsigned int tmp = 0;
tmp = payload[i] - '0';
if(tmp >=30&&tmp <=39)
可是这样就失败了,抓不到qq号。
后来改成0x30的形式就可以抓到qq号了。
if(iphdr->protocol==6)
{
//printk("iphdr->saddr = %8x");
//tcp 包长度 ntohs(iph->tot_len) - iph->ihl*4 - tcph->doff*4
tcphdr = (void *)iphdr + iphdr->ihl*4;
unsigned int tcp_len = ntohs(iphdr->tot_len) - 40;
// payload = (void*)skb->dat