wsock32.dll接收的包,将接收包按text形式输出,前面是行,中间按16进制输出,后面按包的字符形式输出。
现在的问题:按字符形式输出时,包里面的数据好像自带换行的,导致字符形式输出了我不需要的换行。请大大们出招。
另外输出例子看2楼
//将数据格式化写入文件,给下面的函数调用
void PrintData(FILE *pf, BYTE FAR *pdata,int len)
{
int i,i_16;
        int size;
char * temp_buf[16]={" "}; i_16=0;
size = len; fprintf(pf,"printdata过程,需要增加识别recv send\n");
if(size>Max_Data_Len) size=Max_Data_Len;
for(i=0;i<size;i++) 
{
switch (i_16)
{
case 0:
{
fprintf(pf,"%08xh    ",g_position); //写行数  
fprintf(pf,"%02x ",pdata[i]);
memcpy(temp_buf,&pdata[i],16);
g_position=g_position+1;
i_16=i_16+1; //放在CASE最后,
break;
}
case 15:
{
fprintf(pf,"%02x    ",pdata[i]); //最后一个字节给出4个空格
//将缓冲区按源字符输出,不满1行的另外再考虑
fprintf(pf,"%s",temp_buf);


fprintf(pf,"\n"); //写满16个字节换行
i_16=0; //放在CASE最后,写满16个字节,初始化
break;
}
default :
{
fprintf(pf,"%02x ",pdata[i]);
i_16=i_16+1; //放在CASE最后
break;
}
}//switch结束

}//for语句结束
//if (i_16!=15) fprintf(pf,"%s",temp_buf);
fprintf(pf,"\n");
}

解决方案 »

  1.   

    printdata过程,需要增加识别recv send
    00000000h    21 
    printdata过程,需要增加识别recv send
    00000001h    47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a    GET / HTTP/1.100000002h    41 63 63 65 70 74 3a 20 2a 2f 2a 0d 0a 41 63 63    Accept: */*
    Acc
    00000003h    65 70 74 2d 4c 61 6e 67 75 61 67 65 3a 20 7a 68    ept-Language: zh
    00000004h    2d 63 6e 0d 0a 41 63 63 65 70 74 2d 45 6e 63 6f    -cn
    Accept-Enco
    00000005h    64 69 6e 67 3a 20 67 7a 69 70 2c 20 64 65 66 6c    ding: gzip, defl
    00000006h    61 74 65 0d 0a 55 73 65 72 2d 41 67 65 6e 74 3a    ate
    User-Agent:
    00000007h    20 4d 6f 7a 69 6c 6c 61 2f 34 2e 30 20 28 63 6f     Mozilla/4.0 (co
    00000008h    6d 70 61 74 69 62 6c 65 3b 20 4d 53 49 45 20 36    mpatible; MSIE 6
    00000009h    2e 30 3b 20 57 69 6e 64 6f 77 73 20 4e 54 20 35    .0; Windows NT 5
    0000000ah    2e 30 3b 20 54 65 6e 63 65 6e 74 54 72 61 76 65    .0; TencentTrave
    0000000bh    6c 65 72 20 3b 20 2e 4e 45 54 20 43 4c 52 20 32    ler ; .NET CLR 2
    0000000ch    2e 30 2e 35 30 37 32 37 29 0d 0a 48 6f 73 74 3a    .0.50727)
    Host:
    0000000dh    20 77 77 77 2e 62 61 69 64 75 2e 63 6f 6d 0d 0a     www.baidu.com0000000eh    43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 4b 65 65 70    Connection: Keep
    0000000fh    2d 41 6c 69 76 65 0d 0a 43 6f 6f 6b 69 65 3a 20    -Alive
    Cookie: 
    00000010h    42 41 49 44 55 49 44 3d 44 31 39 38 38 35 41 32    BAIDUID=D19885A2
    00000011h    31 42 34 45 43 35 34 44 30 42 42 44 31 46 41 42    1B4EC54D0BBD1FAB
    00000012h    41 44 42 34 45 44 30 36 3a 46 47 3d 31 3b 20 42    ADB4ED06:FG=1; B
    00000013h    44 53 54 41 54 3d 39 32 33 37 35 63 34 39 35 32    DSTAT=92375c4952
    00000014h    32 35 31 33 34 62 37 33 38 64 61 39 37 37 33 39    25134b738da97739
    00000015h    31 32 62 33 31 62 62 30 35 31 66 38 31 39 38 36    12b31bb051f81986
    00000016h    31 38 33 36 37 61 64 61 62 34 34 61 65 64 32 66    18367adab44aed2f
    00000017h    37 33 63 33 65 39 0d 0a 0d 0a 
    printdata过程,需要增加识别recv send
    00000018h    21 
      

  2.   

    printdata过程,需要增加识别recv send
    00000000h    21 
    printdata过程,需要增加识别recv send
    00000001h    47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a    GET / HTTP/1.100000002h    41 63 63 65 70 74 3a 20 2a 2f 2a 0d 0a 41 63 63    Accept: */*
    Acc
    00000003h    65 70 74 2d 4c 61 6e 67 75 61 67 65 3a 20 7a 68    ept-Language: zh
    00000004h    2d 63 6e 0d 0a 41 63 63 65 70 74 2d 45 6e 63 6f    -cn
    Accept-Enco
    00000005h    64 69 6e 67 3a 20 67 7a 69 70 2c 20 64 65 66 6c    ding: gzip, defl
    00000006h    61 74 65 0d 0a 55 73 65 72 2d 41 67 65 6e 74 3a    ate
    User-Agent:
    00000007h    20 4d 6f 7a 69 6c 6c 61 2f 34 2e 30 20 28 63 6f     Mozilla/4.0 (co
    00000008h    6d 70 61 74 69 62 6c 65 3b 20 4d 53 49 45 20 36    mpatible; MSIE 6
    00000009h    2e 30 3b 20 57 69 6e 64 6f 77 73 20 4e 54 20 35    .0; Windows NT 5
    0000000ah    2e 30 3b 20 54 65 6e 63 65 6e 74 54 72 61 76 65    .0; TencentTrave
    0000000bh    6c 65 72 20 3b 20 2e 4e 45 54 20 43 4c 52 20 32    ler ; .NET CLR 2
    0000000ch    2e 30 2e 35 30 37 32 37 29 0d 0a 48 6f 73 74 3a    .0.50727)
    Host:
    0000000dh    20 77 77 77 2e 62 61 69 64 75 2e 63 6f 6d 0d 0a     www.baidu.com0000000eh    43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 4b 65 65 70    Connection: Keep
    0000000fh    2d 41 6c 69 76 65 0d 0a 43 6f 6f 6b 69 65 3a 20    -Alive
    Cookie: 
      

  3.   

    小声说一句:您那个标题就有些不妥。论坛就是要广开言论的。就算问题不能解决,出个主意,回个帖子也是好的。
    我感觉csdn很多高手其实也不在乎分数的多少。您的标题很多人看了心里可能有想法。“哎,算了”,于是看都没有看。不要希望找到完整的答案,也不会有完全的答案出现。听听意见也可能是最好的。您的问题我建议发到汇编。或者是底层设计,MASM做Windows底层开发那里去。
    关于内存寻址去那里可能找到答案和好的建议希望更大。MFC这里不太合适吧。
      

  4.   

    你要是看过其他抓包软件就知道了,不要所有的字符都输出,对于那些不能显示的就用"."代替。
    对应c函数就是isprint(ch)