worm.h
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:2k
源码类别:

通讯编程

开发平台:

Visual C++

  1. // worm propagation model
  2. #ifndef ns_worm_h
  3. #define ns_worm_h
  4. #include "timer-handler.h"
  5. #include "app.h"
  6. class WormApp;
  7. // timer to control worm scan rate, etc
  8. class ProbingTimer : public TimerHandler {
  9.  public:
  10.   ProbingTimer(WormApp* t) : TimerHandler(), t_(t) {};
  11.   inline virtual void expire(Event*);
  12.  protected:
  13.   WormApp* t_;
  14. };
  15. // base class, by default hosts are NOT vulnerable
  16. class WormApp : public  Application {
  17.  public:
  18.   WormApp();
  19.   // timer handler
  20.   virtual void timeout();
  21.   // agent call back function
  22.   void process_data(int, AppData*);
  23.   virtual int command(int argc, const char*const* argv);
  24.  protected:
  25.   // need to define recv and timeout 
  26.   virtual void recv(int nbytes);
  27.   // id of the node attached
  28.   unsigned long  my_addr_;
  29.   // the toal Internet address space
  30.   static double total_addr_;
  31.   // flag to record first probe
  32.   static int first_probe_;
  33.   // configs for worm probing behavior
  34.   double scan_rate_;
  35.   int scan_port_;
  36.   int p_size_;
  37. };
  38. // model invulnerable hosts in detailed networks
  39. class DnhWormApp : public WormApp {
  40.  public:
  41.   DnhWormApp();
  42.   // timer handler
  43.   void timeout();
  44.   int command(int argc, const char*const* argv);
  45.  protected:
  46.   void recv(int nbytes);
  47.   void send_probe();
  48.   void probe();
  49.   bool infected_;
  50.   static unsigned long infect_total_;
  51.   ProbingTimer *timer_;
  52.   // control the rate of probing
  53.   double p_inv_;
  54.   // the address space of my networks
  55.   static unsigned long addr_low_, addr_high_;
  56.   
  57.   // the probability to scan local hosts
  58.   static float local_p_;
  59.   
  60.   // the access point to other networks like AN
  61.   static unsigned long default_gw_;
  62. };
  63. // model a network with SIR model
  64. class AnWormApp : public WormApp {
  65.  public:
  66.   AnWormApp();
  67.   // timer handler
  68.   void timeout();
  69.   int command(int argc, const char*const* argv);
  70.  protected:
  71.   void start();
  72.   void update();
  73.  
  74.   void recv(int nbytes);
  75.   void probe(int);
  76.   ProbingTimer *timer_;
  77.   int time_step_;
  78.   // the address space of my networks
  79.   unsigned long addr_low_, addr_high_;
  80.   unsigned long dn_low_, dn_high_;
  81.   // SIR model states:
  82.   double s_, i_, r_, s_max_, n_;
  83.   double v_percentage_;
  84.   double beta_, gamma_;
  85.   // interaction with DN
  86.   double probe_in, probe_recv;
  87.   double probe_out;
  88. };
  89. #endif