从网络中抓取的代码显示为乱码
我抓取了数据包头的信息,显示为乱码,听人说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);