60 bytes of ip/ tcpv4
00-A9-40-0F-82-08:10.0.0.1:3128 ==>> 00-0C-F1-AF-C5-36:10.6.83.2:2332
0000 00 0C F1 AF C5 36 00 A9 40 0F 82 08 08 00 45 00
0010 00 28 BD 15 40 00 40 06 16 B2 0A 00 00 01 0A 06
0020 53 02 0C 38 09 1C 46 E0 B6 F1 52 B7 60 76 50 11
0030 E4 20 9E 56 00 00 00 00 00 00 00
Народ помогите разобратса с кодом
Есть модный код которыйй дает хеш дамп сетевых пакетов в формате
Код:
Код:
u8* dump_ex (u8* src, u32 offset, u32 size, u8* dst, u32 first, u32 ascii) {
// parsing quotas
#define UPQL_DUMP_EX_OFFSET 0
#define UPQL_DUMP_EX_HEX 8
#define UPQL_DUMP_EX_NUM 3
#define UPQL_DUMP_EX_SYMB 55
#define UPQL_DUMP_EX_EOL 71
#define UPQL_DUMP_EX_STRLEN 72
#define UPQL_DUMP_EX_PARSEQUOTE 16
int i,j,k;
int from = offset / 16;
int to = size / 16;
u8* ptr = dst;
u8 prenumbuf[5];
memset(dst,32,(to-from) * UPQL_DUMP_EX_STRLEN);
for(i=from;i<to+1;i++) {
memcpy(ptr,tohexstr(i<<4,prenumbuf,4,0),4);
ptr += UPQL_DUMP_EX_HEX;
for( j = k = (i << 4); (j<size) && (j<(k+16)); j++){
if(j >= offset)
memcpy(ptr,tohexstr(src[j],prenumbuf,2,0),2);
//добавляем вывод src[j] и можем просматривать как строку
printf("%c",src[j]);//<<<<
ptr += UPQL_DUMP_EX_NUM; }
ptr += UPQL_DUMP_EX_NUM;
ptr[-1] = '\n';}
return ptr;}
// parsing quotas
#define UPQL_DUMP_EX_OFFSET 0
#define UPQL_DUMP_EX_HEX 8
#define UPQL_DUMP_EX_NUM 3
#define UPQL_DUMP_EX_SYMB 55
#define UPQL_DUMP_EX_EOL 71
#define UPQL_DUMP_EX_STRLEN 72
#define UPQL_DUMP_EX_PARSEQUOTE 16
int i,j,k;
int from = offset / 16;
int to = size / 16;
u8* ptr = dst;
u8 prenumbuf[5];
memset(dst,32,(to-from) * UPQL_DUMP_EX_STRLEN);
for(i=from;i<to+1;i++) {
memcpy(ptr,tohexstr(i<<4,prenumbuf,4,0),4);
ptr += UPQL_DUMP_EX_HEX;
for( j = k = (i << 4); (j<size) && (j<(k+16)); j++){
if(j >= offset)
memcpy(ptr,tohexstr(src[j],prenumbuf,2,0),2);
//добавляем вывод src[j] и можем просматривать как строку
printf("%c",src[j]);//<<<<
ptr += UPQL_DUMP_EX_NUM; }
ptr += UPQL_DUMP_EX_NUM;
ptr[-1] = '\n';}
return ptr;}
но как мне загнать src[j] в ptr чтоб оно выводилось как в нормальном снифере ну чтоб ёщё справа этот текс выводило все мои попытки загнать его туда обломались, люди кому не лень посоветуйте чье нить
я делаю вот так
Код:
memset(ptr,32,(to-from) * UPQL_DUMP_EX_STRLEN);
for(i=from;i<to+1;i++)
{ memcpy(ptr,tohexstr(i<<4,prenumbuf,4,0),4);
ptr += UPQL_DUMP_EX_HEX;
u8 ss[15];
int kk=0;
for( j = k = (i << 4); (j<size) && (j<(k+16)); j++)
{ if(j >= offset)
{
memcpy(ptr,tohexstr(src[j],prenumbuf,2,0),2);
}
ss[kk]=src[j];
kk++;
if (kk==16) memcpy(ptr,ss,strlen(ss)); //printf("%s",ss);
//printf("%c",src[j]);
ptr += UPQL_DUMP_EX_NUM;
}
ptr += UPQL_DUMP_EX_NUM;
ptr[-1] = '\n';
}
for(i=from;i<to+1;i++)
{ memcpy(ptr,tohexstr(i<<4,prenumbuf,4,0),4);
ptr += UPQL_DUMP_EX_HEX;
u8 ss[15];
int kk=0;
for( j = k = (i << 4); (j<size) && (j<(k+16)); j++)
{ if(j >= offset)
{
memcpy(ptr,tohexstr(src[j],prenumbuf,2,0),2);
}
ss[kk]=src[j];
kk++;
if (kk==16) memcpy(ptr,ss,strlen(ss)); //printf("%s",ss);
//printf("%c",src[j]);
ptr += UPQL_DUMP_EX_NUM;
}
ptr += UPQL_DUMP_EX_NUM;
ptr[-1] = '\n';
}
оно мне результат в каком то забаженом вие выводит
[COLOR=red]
756 bytes of ip/ tcpv4
00-0C-F1-AF-C5-36:10.6.83.2:3480 ==>> 00-A9-40-0F-82-08:10.0.0.1:3128
0000 00 A9 40 0F 82 08 00 0C F1 AF C5 36 08 00 45 00
0010 02 E6 66 A8 40 00 80 06 2A 61 0A 06 53 02 0A ☻цfи@
0020 00 01 0D 98 0C 38 43 78 FE 1F B0 3D 1A 41 50 18
0030 FA F0 32 AC 00 00 47 45 54 20 68 74 74 70 3A ·Ё2м
0040 2F 77 77 77 2E 78 61 6B 65 70 2E 72 75 2F 69 /www.
0050.ru/74269 74 6C 65 5F 62 6F 74 74 6F 6D 5F 62 6C title
0060om_b6575F 63 61 73 6B 61 64 65 2E 67 69 66 20 48 e_cas
0070gif 54550 2F 31 2E 30 0D 0A 55 73 65 72 2D 41 67 TP/1.
0080er-A6E674 3A 20 4D 6F 7A 69 6C 6C 61 2F 34 2E 30 nt: M
0090a/4.28263 6F 6D 70 61 74 69 62 6C 65 3B 20 4D 53 (comp
....
[/COLOR]
Всем спасибо за молчание