Skip to content

Commit

Permalink
ticket VG-202
Browse files Browse the repository at this point in the history
add option hide_message_content for hide message content
  • Loading branch information
rbucek committed Jun 12, 2014
1 parent 0a3d4db commit 34f4137
Show file tree
Hide file tree
Showing 10 changed files with 128 additions and 72 deletions.
17 changes: 11 additions & 6 deletions calltable.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ extern int opt_skinny;
extern int opt_enable_fraud;
extern char opt_callidmerge_header[128];
extern int opt_sdp_multiplication;
extern int opt_hide_message_content;

SqlDb *sqlDbSaveCall = NULL;
bool existsColumnCalldateInCdrNext = true;
Expand Down Expand Up @@ -586,19 +587,19 @@ Call::get_index_by_ip_port(in_addr_t addr, unsigned short port){

/* analyze rtcp packet */
void
Call::read_rtcp(unsigned char* data, int datalen, struct pcap_pkthdr *header, u_int32_t saddr, u_int32_t daddr, unsigned short sport, unsigned short dport, int iscaller,
Call::read_rtcp(unsigned char* data, int datalen, int dataoffset, struct pcap_pkthdr *header, u_int32_t saddr, u_int32_t daddr, unsigned short sport, unsigned short dport, int iscaller,
char enable_save_packet, const u_char *packet, char istcp, int dlt, int sensor_id) {
parse_rtcp((char*)data, datalen, this);

if(enable_save_packet && opt_rtpsave_threaded) {
save_packet(this, header, packet, saddr, sport, daddr, dport, istcp, (char*)data, datalen, TYPE_RTP,
save_packet(this, header, packet, saddr, sport, daddr, dport, istcp, (char*)data, datalen, dataoffset, TYPE_RTP,
dlt, sensor_id);
}
}

/* analyze rtp packet */
void
Call::read_rtp(unsigned char* data, int datalen, struct pcap_pkthdr *header, struct iphdr2 *header_ip, u_int32_t saddr, u_int32_t daddr, unsigned short sport, unsigned short dport, int iscaller, int *record,
Call::read_rtp(unsigned char* data, int datalen, int dataoffset, struct pcap_pkthdr *header, struct iphdr2 *header_ip, u_int32_t saddr, u_int32_t daddr, unsigned short sport, unsigned short dport, int iscaller, int *record,
char enable_save_packet, const u_char *packet, char istcp, int dlt, int sensor_id) {

*record = 0;
Expand Down Expand Up @@ -767,12 +768,12 @@ Call::read_rtp(unsigned char* data, int datalen, struct pcap_pkthdr *header, str
header->caplen > (unsigned)(datalen - RTP_FIXED_HEADERLEN)) {
unsigned int tmp_u32 = header->caplen;
header->caplen = header->caplen - (datalen - RTP_FIXED_HEADERLEN);
save_packet(this, header, packet, saddr, sport, daddr, dport, istcp, (char*)data, datalen, TYPE_RTP,
save_packet(this, header, packet, saddr, sport, daddr, dport, istcp, (char*)data, datalen, dataoffset, TYPE_RTP,
dlt, sensor_id);
header->caplen = tmp_u32;
}
} else {
save_packet(this, header, packet, saddr, sport, daddr, dport, istcp, (char*)data, datalen, TYPE_RTP,
save_packet(this, header, packet, saddr, sport, daddr, dport, istcp, (char*)data, datalen, dataoffset, TYPE_RTP,
dlt, sensor_id);
}
}
Expand Down Expand Up @@ -2883,7 +2884,11 @@ Call::saveMessageToDb(bool enableBatchIfPossible) {
}
cdr.add(sqlEscapeString(fbasename), "fbasename");
if(message) {
cdr.add(sqlEscapeString(message), "message");
if(opt_hide_message_content) {
cdr.add("SHA256: " + GetStringSHA256(message), "message");
} else {
cdr.add(sqlEscapeString(message), "message");
}
}

cdr.add(lastSIPresponseNum, "lastSIPresponseNum");
Expand Down
4 changes: 2 additions & 2 deletions calltable.h
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@ class Call {
* @param saddr source IP adress of the packet
*
*/
void read_rtp(unsigned char *data, int datalen, struct pcap_pkthdr *header, struct iphdr2 *header_ip, u_int32_t saddr, u_int32_t daddr, unsigned short sport, unsigned short dport, int iscaller, int *record,
void read_rtp(unsigned char *data, int datalen, int dataoffset, struct pcap_pkthdr *header, struct iphdr2 *header_ip, u_int32_t saddr, u_int32_t daddr, unsigned short sport, unsigned short dport, int iscaller, int *record,
char enable_save_packet, const u_char *packet, char istcp, int dlt, int sensor_id);

/**
Expand All @@ -312,7 +312,7 @@ class Call {
* @param saddr source IP adress of the packet
*
*/
void read_rtcp(unsigned char*, int, pcap_pkthdr*, u_int32_t saddr, u_int32_t daddr, short unsigned int sport, short unsigned int dport, int iscaller,
void read_rtcp(unsigned char *data, int datalen, int dataoffset, pcap_pkthdr*, u_int32_t saddr, u_int32_t daddr, short unsigned int sport, short unsigned int dport, int iscaller,
char enable_save_packet, const u_char *packet, char istcp, int dlt, int sensor_id);

/**
Expand Down
6 changes: 3 additions & 3 deletions pcap_queue.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@

using namespace std;

extern Call *process_packet(unsigned int saddr, int source, unsigned int daddr, int dest, char *data, int datalen,
extern Call *process_packet(unsigned int saddr, int source, unsigned int daddr, int dest, char *data, int datalen, int dataoffset,
pcap_t *handle, pcap_pkthdr *header, const u_char *packet, int istcp, int dontsave, int can_thread, int *was_rtp, struct iphdr2 *header_ip, int *voippacket, int disabledsave,
pcap_block_store *block_store, int block_store_index, int dlt, int sensor_id,
bool mainProcess = true, int sipOffset = 0);
Expand Down Expand Up @@ -3740,8 +3740,8 @@ void PcapQueue_readFromFifo::processPacket(pcap_pkthdr_plus *header_plus, u_char
int voippacket = 0;
if(!useTcpReassembly && opt_enable_tcpreassembly != 2) {
process_packet(header_ip->saddr, htons(header_udp->source), header_ip->daddr, htons(header_udp->dest),
data, datalen, this->getPcapHandle(dlt), header, packet, istcp, 0, 1, &was_rtp, header_ip, &voippacket, 0,
block_store, block_store_index, dlt, sensor_id);
data, datalen, data - (char*)packet, this->getPcapHandle(dlt), header, packet, istcp, 0, 1, &was_rtp, header_ip, &voippacket, 0,
block_store, block_store_index, dlt, sensor_id);
}

// if packet was VoIP add it to ipaccount
Expand Down
30 changes: 15 additions & 15 deletions skinny.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1390,17 +1390,17 @@ Call *new_skinny_channel(int state, char *data, int datalen, struct pcap_pkthdr
return call;
}

void *handle_skinny2(pcap_pkthdr *header, const u_char *packet, unsigned int saddr, int source, unsigned int daddr, int dest, char *data, int datalen,
void *handle_skinny2(pcap_pkthdr *header, const u_char *packet, unsigned int saddr, int source, unsigned int daddr, int dest, char *data, int datalen, int dataoffset,
pcap_t *handle, int dlt, int sensor_id);


void *handle_skinny(pcap_pkthdr *header, const u_char *packet, unsigned int saddr, int source, unsigned int daddr, int dest, char *data, int datalen,
void *handle_skinny(pcap_pkthdr *header, const u_char *packet, unsigned int saddr, int source, unsigned int daddr, int dest, char *data, int datalen, int dataoffset,
pcap_t *handle, int dlt, int sensor_id) {

int remain = datalen;
while(1) {
//cycle through all PDUs in one message
handle_skinny2(header, packet, saddr, source, daddr, dest, data, datalen, handle, dlt, sensor_id);
handle_skinny2(header, packet, saddr, source, daddr, dest, data, datalen, dataoffset, handle, dlt, sensor_id);
unsigned int plen = (unsigned int)letohl(*(uint32_t*)data); // first 4 bytes is length of skinny data
if(plen == 0 or plen > remain) {
break;
Expand All @@ -1418,7 +1418,7 @@ void *handle_skinny(pcap_pkthdr *header, const u_char *packet, unsigned int sadd
return NULL;
}

void *handle_skinny2(pcap_pkthdr *header, const u_char *packet, unsigned int saddr, int source, unsigned int daddr, int dest, char *data, int datalen,
void *handle_skinny2(pcap_pkthdr *header, const u_char *packet, unsigned int saddr, int source, unsigned int daddr, int dest, char *data, int datalen, int dataoffset,
pcap_t *handle, int dlt, int sensor_id) {

if(data == 0 or datalen == 0 or datalen <= skinny_header_size) {
Expand Down Expand Up @@ -1521,7 +1521,7 @@ void *handle_skinny2(pcap_pkthdr *header, const u_char *packet, unsigned int sad
break;
}

save_packet(call, header, packet, saddr, source, daddr, dest, 1, data, datalen, TYPE_SKINNY,
save_packet(call, header, packet, saddr, source, daddr, dest, 1, data, datalen, dataoffset, TYPE_SKINNY,
dlt, sensor_id);

}
Expand All @@ -1533,7 +1533,7 @@ void *handle_skinny2(pcap_pkthdr *header, const u_char *packet, unsigned int sad
SKINNY_DEBUG(DEBUG_PACKET, 3, "Received START_TONE_MESSAGE ref %d\n", ref);
sprintf(callid, "%d", ref);
if((call = calltable->find_by_call_id(callid, strlen(callid)))){
save_packet(call, header, packet, saddr, source, daddr, dest, 1, data, datalen, TYPE_SKINNY,
save_packet(call, header, packet, saddr, source, daddr, dest, 1, data, datalen, dataoffset, TYPE_SKINNY,
dlt, sensor_id);
}
}
Expand All @@ -1545,7 +1545,7 @@ void *handle_skinny2(pcap_pkthdr *header, const u_char *packet, unsigned int sad
SKINNY_DEBUG(DEBUG_PACKET, 3, "Received STOP_TONE_MESSAGE ref %d\n", ref);
sprintf(callid, "%d", ref);
if ((call = calltable->find_by_call_id(callid, strlen(callid)))){
save_packet(call, header, packet, saddr, source, daddr, dest, 1, data, datalen, TYPE_SKINNY,
save_packet(call, header, packet, saddr, source, daddr, dest, 1, data, datalen, dataoffset, TYPE_SKINNY,
dlt, sensor_id);
}
}
Expand All @@ -1561,7 +1561,7 @@ void *handle_skinny2(pcap_pkthdr *header, const u_char *packet, unsigned int sad
memcpy(call->caller, req.data.callinfo.callingParty, sizeof(req.data.callinfo.callingParty));
memcpy(call->called, req.data.callinfo.calledParty, sizeof(req.data.callinfo.calledParty));

save_packet(call, header, packet, saddr, source, daddr, dest, 1, data, datalen, TYPE_SKINNY,
save_packet(call, header, packet, saddr, source, daddr, dest, 1, data, datalen, dataoffset, TYPE_SKINNY,
dlt, sensor_id);
}
}
Expand Down Expand Up @@ -1653,7 +1653,7 @@ void *handle_skinny2(pcap_pkthdr *header, const u_char *packet, unsigned int sad
if(i > 8)
memcpy(call->callername, callingPartyName, strlen(callingPartyName) + 1);

save_packet(call, header, packet, saddr, source, daddr, dest, 1, data, datalen, TYPE_SKINNY,
save_packet(call, header, packet, saddr, source, daddr, dest, 1, data, datalen, dataoffset, TYPE_SKINNY,
dlt, sensor_id);
}
}
Expand All @@ -1679,7 +1679,7 @@ void *handle_skinny2(pcap_pkthdr *header, const u_char *packet, unsigned int sad
sprintf(callid, "%d", ref);
if ((call = calltable->find_by_call_id(callid, strlen(callid)))){
calltable->skinny_partyID[pid] = call;
save_packet(call, header, packet, saddr, source, daddr, dest, 1, data, datalen, TYPE_SKINNY,
save_packet(call, header, packet, saddr, source, daddr, dest, 1, data, datalen, dataoffset, TYPE_SKINNY,
dlt, sensor_id);
}
}
Expand All @@ -1692,7 +1692,7 @@ void *handle_skinny2(pcap_pkthdr *header, const u_char *packet, unsigned int sad
sprintf(callid, "%d", ref);
if((call = calltable->find_by_call_id(callid, strlen(callid)))){
strncpy(call->called, req.data.dialednumber.dialedNumber, sizeof(call->called));
save_packet(call, header, packet, saddr, source, daddr, dest, 1, data, datalen, TYPE_SKINNY,
save_packet(call, header, packet, saddr, source, daddr, dest, 1, data, datalen, dataoffset, TYPE_SKINNY,
dlt, sensor_id);
}
}
Expand Down Expand Up @@ -1739,7 +1739,7 @@ void *handle_skinny2(pcap_pkthdr *header, const u_char *packet, unsigned int sad
if(call->add_ip_port(ipaddr, port, NULL, 0, call->sipcallerip == saddr, rtpmap) != -1){
calltable->hashAdd(ipaddr, port, call, call->sipcallerip == saddr, 0, 0, 1);
}
save_packet(call, header, packet, saddr, source, daddr, dest, 1, data, datalen, TYPE_SKINNY, dlt, sensor_id);
save_packet(call, header, packet, saddr, source, daddr, dest, 1, data, datalen, dataoffset, TYPE_SKINNY, dlt, sensor_id);
}
}
break;
Expand All @@ -1763,7 +1763,7 @@ void *handle_skinny2(pcap_pkthdr *header, const u_char *packet, unsigned int sad
char callid[16];
sprintf(callid, "%d", ref);
if((call = calltable->find_by_call_id(callid, strlen(callid)))){
save_packet(call, header, packet, saddr, source, daddr, dest, 1, data, datalen, TYPE_SKINNY,
save_packet(call, header, packet, saddr, source, daddr, dest, 1, data, datalen, dataoffset, TYPE_SKINNY,
dlt, sensor_id);
}
}
Expand All @@ -1775,7 +1775,7 @@ void *handle_skinny2(pcap_pkthdr *header, const u_char *packet, unsigned int sad
SKINNY_DEBUG(DEBUG_PACKET, 3, "Received DISPLAY_PROMPT_STATUS_MESSAGE ref %u\n", ref);
sprintf(callid, "%d", ref);
if((call = calltable->find_by_call_id(callid, strlen(callid)))){
save_packet(call, header, packet, saddr, source, daddr, dest, 1, data, datalen, TYPE_SKINNY,
save_packet(call, header, packet, saddr, source, daddr, dest, 1, data, datalen, dataoffset, TYPE_SKINNY,
dlt, sensor_id);
}
}
Expand Down Expand Up @@ -1934,7 +1934,7 @@ void *handle_skinny2(pcap_pkthdr *header, const u_char *packet, unsigned int sad
if(call->add_ip_port(ipaddr, port, NULL, 0, call->sipcallerip == saddr, rtpmap) != -1){
calltable->hashAdd(ipaddr, port, call, call->sipcallerip == saddr, 0, 0, 1);
}
save_packet(call, header, packet, saddr, source, daddr, dest, 1, data, datalen, TYPE_SKINNY,
save_packet(call, header, packet, saddr, source, daddr, dest, 1, data, datalen, dataoffset, TYPE_SKINNY,
dlt, sensor_id);
}
}
Expand Down
2 changes: 1 addition & 1 deletion skinny.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#ifndef SKINNY_H
#define SKINNY_H

void *handle_skinny(pcap_pkthdr *, const u_char *, unsigned int, int, unsigned int, int, char *, int,
void *handle_skinny(pcap_pkthdr *, const u_char *, unsigned int, int, unsigned int, int, char *, int, int,
pcap_t *handle, int dlt, int sensor_id);

#endif
Loading

0 comments on commit 34f4137

Please sign in to comment.