/* tcpalter - revise pcap files exported from Wireshark */ #include #include #pragma warning (disable : 4305) #include "data.c" #define ISIZEOF(x) (sizeof x/sizeof x[0]) typedef unsigned __int8 __int8u; typedef unsigned __int16 __int16u; typedef unsigned __int32 __int32u; FILE *out_stream, *packet_stream; void fatal_err_msg(const char *msg_string,int err_code) { printf("aborting, fatal error %i %s",err_code, msg_string); exit(1); } void warning_err_msg(const char *msg_string,int err_code) { printf("non-fatal error %i %s",err_code, msg_string); } int init(void) { if ((out_stream = fopen("tcpalter.txt","wt")) == NULL) { fatal_err_msg("could not open output file",2); } if ((packet_stream = fopen("tcpalter.tcp","wb")) == NULL) { fatal_err_msg("could not open packet file",2); } fwrite("\xD4\xC3\xB2\xA1\x02\x00\x04\x00",1,8,packet_stream); //magic, major ver, minor ver fwrite("\x00\x00\x00\x00\x00\x00\x00\x00",1,8,packet_stream); //timezone offset, time accuracy fwrite("\xFF\xFF\x00\x00\x01\x00\x00\x00",1,8,packet_stream); //max pkt len, linktype return 0; } int fin(void) { fclose(out_stream); fclose(packet_stream); return 0; } void write_packet(double timeNow, char *packet, int iPacketLength) { __int32u secNow = (__int32u)timeNow; __int32u uSecNow = (__int32u)((timeNow-(double)secNow)*1.0E6); fwrite(&secNow,sizeof secNow,1,packet_stream); fwrite(&uSecNow,sizeof uSecNow,1,packet_stream); fwrite(&iPacketLength,sizeof iPacketLength,1,packet_stream); fwrite(&iPacketLength,sizeof iPacketLength,1,packet_stream); fwrite(packet,1,iPacketLength,packet_stream); } int main(int argc, char **argv) { #define REPEATS 5 #define WIRE_SPEED_MB 100 #define PACKET_DELAY ((double)ISIZEOF(pkt1)*10.0/(double)WIRE_SPEED_MB*1e-6) int iRepeats; double dTime = 0.0; init(); for (iRepeats=0; iRepeats