从网络中抓取的代码显示为乱码

yinansheng 2005-10-11 09:55:21
我抓取了数据包头的信息,显示为乱码,听人说tcp、ip包头显示出来本来就是乱码,可是如果我以十六进制在屏幕显示,则正常,能够读懂包头信息,
所以我想问一下是否可以把信息也以十六进制保存在文件中?
outputbinary就是用来在屏幕显示的,u_char * byteArray是形惨,实参就是u_char * packet,传递过来的包数据。最后一行的putc函数是把信息存入打开的文件中。使用putc保存下来的数据是乱码。
static void outputBinary ( const u_char * byteArray, const size_t byteArrayLen )
{
u_long offset;
int i, j, k;
FILE *fp;
char c;
fp=fopen("sniffer.txt","a+");
if(fp==NULL) exit(1);
fprintf( stderr, "byteArray [ %lu bytes ] ----> \n", ( long unsigned int )byteArrayLen );
if ( byteArrayLen <= 0 )
{
return;
}
i = 0;
offset = 0;
for ( k = byteArrayLen / 16; k > 0; k--, offset += 16 )
{

fprintf( stderr, "%08X ", ( unsigned int )offset );
for ( j = 0; j < 16; j++, i++ )
{
putc(byteArray[i],fp);
...全文
135 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yzx1983 2005-10-11
  • 打赏
  • 举报
回复
非扩展的ascii码可以显示的就那么百来个,你要把数据当字符打印出来当然很容易是乱码了
网络包里的当然是十六进制数据了,所以你按16进制输出能看懂也很正常

就把包数据直接向二进制文件里写好了,存完拿二进制编辑器打开就行,象楼上建议的ultraedit就很好
XBox360 2005-10-11
  • 打赏
  • 举报
回复
其实你可以直接存为2进制文件,用ultraedit打开。
yinansheng 2005-10-11
  • 打赏
  • 举报
回复
没人知道么,自己顶一下
NetsEagle 2005-10-11
  • 打赏
  • 举报
回复
putc写的是字符,
你把缓冲区的数据当字符写,肯定有乱码了,按字节写啊

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧