This seems to be a C programming question rather than sqlite related issue. 

You even did not mention which information you would like to store, we only 
have a code snippet that processes a captured network packet.


something like this would work

sqlite3_prepare_v2() // use a template with ?
while(read_packet) {
    ProcessPack()
    sqlite3_bind_text()
    sqlite3_step()
    sqlite3_reset()
}
sqlite3_finalize()



________________________________
 From: Newbie89 <sh_ta...@hotmail.com>
To: sqlite-users@sqlite.org 
Sent: Wednesday, May 1, 2013 4:57 PM
Subject: [sqlite] How to link the packet in C file then store in sqlite 
database?
 

Here is the  c file code I need to link and store in database:


struct Packet
{
char Src_MAC[18], Dest_MAC[18];
char Net_P[5],Trans_P[5];
char Src_IP[16], Dest_IP[16];
long int Src_Port,Dest_Port, Cap_Bytes; //[ long int Range: −2,147,483,648
to 2,147,483,647]
};

struct Packet Pack[60000];

void ProcessPack(u_char *ul,const struct pcap_pkthdr* pkthdr,const
u_char*pckt)
{
// Declare pointers to packet headers
const struct sniff_ip *ip; // IP Header Pointer
const struct sniff_tcp *tcp; // TCP Header Pointer
const struct sniff_udp *udp; // TCP Header Pointer
struct sniff_ethernet *eptr; // Ethernet Header Pointer

int size_ip;
int size_tcp;
char buffer[65535];

// Capture packet length in Bytes
Pack[Cnt].Cap_Bytes = pkthdr->len;
TB += pkthdr->len;

//================ Ethernet Header Info ==============================

eptr = (struct sniff_ethernet*)(pckt);

ip = (struct sniff_ip*) (pckt + SIZE_ETHERNET);
size_ip = IP_HL(ip)*4;

tcp = (struct sniff_tcp*) (pckt + SIZE_ETHERNET + size_ip);
size_tcp = TH_OFF(tcp)*4;

if ( (size_ip < 20) || (size_tcp < 20))
{

if (size_ip < 20)
{ Wrg_IpH++; T_Wrg_IpH++; }
if (size_tcp < 20)
{ Wrg_TcpH++; T_Wrg_TcpH++; }

}

// Check to see if we have an ip packet
if (ntohs (eptr->ether_type) == ETHERTYPE_IP)
{
strcpy(Pack[Cnt].Net_P,"IP");
Ip++;
T_IP++;
}
else if (ntohs (eptr->ether_type) == ETHERTYPE_ARP)
{
strcpy(Pack[Cnt].Net_P,"ARP");
Arp++;
T_ARP++;
}
else
{
strcpy(Pack[Cnt].Net_P,"OTH");
OTH_Net1++;
T_OTH_Net++;
}

// Source and Destination MAC address.
strcpy(Pack[Cnt].Src_MAC,(char*)ether_ntoa(eptr->ether_shost));
strcpy(Pack[Cnt].Dest_MAC,(char*)ether_ntoa(eptr->ether_dhost));

//======================== IP header Info =============================



strcpy(Pack[Cnt].Src_IP,"");
strcpy(Pack[Cnt].Dest_IP,"");

strcpy(Pack[Cnt].Src_IP,inet_ntoa(ip->ip_src)); //Source IP
strcpy(Pack[Cnt].Dest_IP,inet_ntoa(ip->ip_dst)); // Destination IP


if(strstr(Pack[Cnt].Src_IP,"255") || strstr(Pack[Cnt].Dest_IP,"255") )
{
BdCast++; T_BdCast++;
}

//===================== TCP & UDP header Info ========================

udp = (struct sniff_udp*) (pckt + SIZE_ETHERNET + size_ip);

// Determine protocol
switch(ip->ip_p)
{
// IPPROTO_TCP = 6, Transmission Control Protocol.
case IPPROTO_TCP:
strcpy(Pack[Cnt].Trans_P,"TCP");
Pack[Cnt].Src_Port = ntohs(tcp->th_sport); // Src Port
Pack[Cnt].Dest_Port = ntohs(tcp->th_dport); // Dest Port
Tcp++;
T_TCP++;
break;

// IPPROTO_UDP = 17, User Datagram Protocol.
case IPPROTO_UDP:
strcpy(Pack[Cnt].Trans_P,"UDP");
Pack[Cnt].Src_Port = ntohs(udp->source); // Src Port
Pack[Cnt].Dest_Port = ntohs(udp->dest); // Dest Port
Udp++;
T_UDP++;
break;

// IPPROTO_ICMP = 1, Internet Control Message Protocol.
case IPPROTO_ICMP:
strcpy(Pack[Cnt].Trans_P,"ICMP");
//strcpy(Pack[Cnt].Trans_P,"OTH");
Pack[Cnt].Src_Port = 0; // Source Port
Pack[Cnt].Dest_Port = 0; // Destination Port
Icmp++;
//OTH_Trans1++;
T_ICMP++;
//T_OTH_Trans++;

break;

default:
strcpy(Pack[Cnt].Trans_P,"OTH");
Pack[Cnt].Src_Port = 0; // Src Port
Pack[Cnt].Dest_Port = 0; // Dest Port
OTH_Trans1++; T_OTH_Trans++;
break;
}

Cnt++;

return;
}

how to do from c file to link with sqlite to store into database?thanks 



--
View this message in context: 
http://sqlite.1065341.n5.nabble.com/How-to-link-the-packet-in-C-file-then-store-in-sqlite-database-tp68593.html
Sent from the SQLite mailing list archive at Nabble.com.
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to