text: <?xml version="1.0"?>
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
  <title> Internet Worm Propagation Simulator - Computer Virus Simulators (VX heaven)</title>
  <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
  <meta name="Author" content=""/>
  <meta name="KeyWords" lang="en" content="computer virus, virus, virii,vx, компьютерные вирусы, вирус, вири"/>
  <meta name="Description" content="Author's description  In our research on Internet worm modeling, I have written two Internet worm propagation simulators. One simulator is for simulation of uniform scan worms, such as Code Red and Slammer; another is for simulation of sequential scan worms, such as Blaster. The sequential scan worm simulator assumes that vulnerable hosts are uniformly distributed in BGP routable space.  Both are high level simulators for simulating a worm's propagation in the whole Internet. I have not considered packet-level events and Internet topological effect. These simulators do not  consider human's countermeasures and congestions caused by worm scan traffic. However, you can decrease the worm's average scan rate in the codes to consider congestion effect; and you can easily modify the codes to consider simple human countermeasures, such as considering the removal of infected hosts that follows Kermack-Mckendrick epidemic model.  Both simulators are written in C language for the consideration of simulation speed. They output their simulation results into data files. I write MATLAB programs to draw figures for our papers and to use Kalman filter for early worm detection (please see our papers in CCS'02 and CCS'03).      The C simulator for a uniform scan worm is:  simulator-codered-100run.cpp    The C simulator for a sequential scan worm is: blaster-multiMonitor-100run.cpp    The Matlab program for Kalman filter early detection is: KalmanDetection.m    The Matlab program to draw a worm's propagation curves is: blasterCodeRedCompare.m    The BGP non-overlapping prefix data used in Blaster simulator is (from Route View project for data on Sept. 22, 2003): prefix-len.20030922    The Matlab Simulink program for numerical solution of simple epidemic model is: simpleModel.mdl    Notes:      The simulators have detailed inline document (both are for 100 simulation runs). For further explanation of formulas, notations, and usage, please see our early worm detection paper in CCS'03 and our recent submitted journal version paper on early worm detection. You can see the Matlab program blasterCodeRedCompare.m to know how to extract data from output data files.    In both simulators, we do not use any model.  The propagation of a uniform scan worm or a sequential scan follows the simple epidemic model very well when the number of hosts in a simulation is large.    MATLAB is very good for data processing and for generating figures for academic paper. We have seen many papers having simulation figures with too small fonts and too thin curves, which can be easily solved by using Matlab. When you use &quot;plot&quot; command in matlab to draw a figure, you can then use the menu in the matlab figure window to directly edit this figure. You can add legend, change font size of labels or axis, change the thickness of curves, add text box, draw lines or arrows, add markers (circle, triangle, square, etc) on curves, change axis' labels, etc.  For me, I always first maximize the figure window, then use menu &quot;edit&quot;-&gt;&quot;figure property&quot;-&gt;&quot;apply template&quot; to change all font size to 20 and curve thickness to 2. In this way, the figure will have clear readable fonts and curves in my paper. You can set up this template by using menu &quot;edit&quot;-&gt;&quot;figure property&quot;-&gt;&quot;change template&quot;. After this &quot;apply template&quot; step, I save the figure in Matlab figure format to prepare for future edition and then export it as a EPS color file for my Latex paper. Thus for each figure, I generate two files, one is .fig and one is .eps. (this .fig is also useful when you make Powerpoint slides)  After the &quot;apply template&quot; step, if I need, I can change a curve's line pattern or color, size and name of font of each individual object by first selecting this object, then using menu &quot;edit&quot;-&gt;&quot;current object properties&quot;. To add readable markers on curves, I use the following command in matlab program to generate figure: t=1:15:1000; plot(t, data(t),'b--');  Then I add markers on this curve through matlab figure window (without &quot;t&quot;, markers on one curve will squeeze together).    If you use Latex to write academic paper, I have written a document to introduce how to write Latex paper in Windows more conveniently than in Linux."/>
  <script type="text/javascript">
  //<![CDATA[
  try{if (!window.CloudFlare) {var CloudFlare=[{verbose:0,p:0,byc:0,owlid:"cf",bag2:1,mirage2:0,oracle:0,paths:{cloudflare:"/cdn-cgi/nexp/dok3v=1613a3a185/"},atok:"047a5bcbf67431883fc9ed25fba33612",petok:"739312c68ec365398de91cdd21c6f5f088b6ef0a-1498760111-1800",zone:"vxheaven.org",rocket:"a",apps:{}}];document.write('<script type="text/javascript" src="//ajax.cloudflare.com/cdn-cgi/nexp/dok3v=85b614c0f6/cloudflare.min.js"><'+'\/script>');}}catch(e){};
  //]]>
  </script>
  <link rel="icon" href="/favicon.ico" type="image/x-icon"/>
  <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"/>
  <link rel="stylesheet" type="text/css" href="/style.css"/>
  <script type="text/rocketscript" data-rocketsrc="https://apis.google.com/js/plusone.js">{"parsetags": "explicit"}</script>
  </head>
  <body bgcolor="#dbc8a0" text="#302000" link="#225599" vlink="#113366">
  <div class="s1">
  <h1><a href="/" style="text-decoration: none; color: #000000;">VX Heaven</a></h1>
  <span class="nav"><a href="/lib/">Biblioteka</a> <a href="/vl.php">Collection</a> <a href="/src.php">Sources</a> <a href="/vx.php?id=eidx">Engines</a> <a href="/vx.php?id=tidx">Constructors</a> <a href="/vx.php?id=sidx">Simulators</a> <a href="/vx.php?id=uidx">Utilities</a> <a href="/links.php">Links</a> <a href="/donate.php" style="color: #706020" id="donate">Donate</a> <a href="/forum" style="text-decoration: underline;">Forum</a> </span><br clear="all"/>
  </div>
  <div><div style="float:right;"><a href="/vx.php?tbs=0"><img src="/img/min.gif" alt="Minimize"/></a></div> <form id="lf" style="margin: 0; float: right;" method="get" action="/index.php"><input type="hidden" name="action" value="set"/><select name="lang" onchange="javascript:document.getElementById('lf').submit();"><option value="ru">Русский</option><option value="en">English</option><option value="ua">Українська</option><option value="de">Deutsch</option><option value="es">Español</option><option value="fr">Fran&ccedil;ais</option><option value="it">Italiano</option><option selected="selected" value="pl">Polski</option></select></form>
  <div style="float: right;"><div id="plusone"></div></div>
  <script type="text/rocketscript">gapi.plusone.render("plusone", {"size":"small","count":"true"});</script>
  <div style="float: right;" class="addthis_toolbox addthis_default_style">
  <script type="text/rocketscript">var addthis_config = { ui_click: true }</script>
  <a style="text-decoration: none; font-size: 10pt;" href="/?action=addthis" class="addthis_button_compact">Bookmark</a>
  <script type="text/rocketscript" data-rocketsrc="http://s7.addthis.com/js/250/addthis_widget.js#username=herm1t"></script>
  </div>
  <div style="float: left;">
  <script type="text/rocketscript" data-rocketsrc="http://www.google.com/cse/brand?form=cse-search-box&amp;lang=en"></script>
  <form action="/search.php" id="cse-search-box">
  <input type="hidden" name="cx" value="002577580816726040001:z9_irkorydo"/>
  <input type="hidden" name="cof" value="FORID:10"/>
  <input type="hidden" name="ie" value="UTF-8"/>
  <input type="text" name="q" size="32" value=" "/>
  <input type="submit" name="sa" value="Search"/>
  </form>
  </div><br clear="both"/></div>
  <div class="s2"> [<a href="/vx.php?id=sh00">Previous</a>] [<a href="/vx.php?id=sidx">Index</a>] [<a href="/vx.php?id=sn00">Next</a>] <h1> Internet Worm Propagation Simulator</h1><p><strong>Author: Zou, Cliff</strong></p><p><strong>Author's description</strong></p>
  <p>In our research on Internet worm modeling, I have written two Internet worm propagation simulators. One simulator is for simulation of uniform scan worms, such as Code Red and Slammer; another is for simulation of sequential scan worms, such as Blaster. The sequential scan worm simulator assumes that vulnerable hosts are uniformly distributed in BGP routable space.</p>
  <p>Both are high level simulators for simulating a worm's propagation in the whole Internet. I have not considered packet-level events and Internet topological effect. These simulators do not consider human's countermeasures and congestions caused by worm scan traffic. However, you can decrease the worm's average scan rate in the codes to consider congestion effect; and you can easily modify the codes to consider simple human countermeasures, such as considering the removal of infected hosts that follows Kermack-Mckendrick epidemic model.</p>
  <p>Both simulators are written in C language for the consideration of simulation speed. They output their simulation results into data files. I write MATLAB programs to draw figures for our papers and to use Kalman filter for early worm detection (please see our papers in CCS'02 and CCS'03).</p>
  <ul>
  <li>The C simulator for a uniform scan worm is: simulator-codered-100run.cpp</li>
  <li>The C simulator for a sequential scan worm is: blaster-multiMonitor-100run.cpp</li>
  <li>The Matlab program for Kalman filter early detection is: KalmanDetection.m</li>
  <li>The Matlab program to draw a worm's propagation curves is: blasterCodeRedCompare.m</li>
  <li>The BGP non-overlapping prefix data used in Blaster simulator is (from Route View project for data on Sept. 22, 2003): prefix-len.20030922</li>
  <li>The Matlab Simulink program for numerical solution of simple epidemic model is: simpleModel.mdl</li>
  </ul>
  <p>Notes:</p>
  <ol>
  <li>The simulators have detailed inline document (both are for 100 simulation runs). For further explanation of formulas, notations, and usage, please see our early worm detection paper in CCS'03 and our recent submitted journal version paper on early worm detection. You can see the Matlab program blasterCodeRedCompare.m to know how to extract data from output data files.</li>
  <li>In both simulators, we do not use any model. The propagation of a uniform scan worm or a sequential scan follows the simple epidemic model very well when the number of hosts in a simulation is large.</li>
  <li>MATLAB is very good for data processing and for generating figures for academic paper. We have seen many papers having simulation figures with too small fonts and too thin curves, which can be easily solved by using Matlab. When you use "plot" command in matlab to draw a figure, you can then use the menu in the matlab figure window to directly edit this figure. You can add legend, change font size of labels or axis, change the thickness of curves, add text box, draw lines or arrows, add markers (circle, triangle, square, etc) on curves, change axis' labels, etc.
  <p>For me, I always first maximize the figure window, then use menu "edit"->"figure property"->"apply template" to change all font size to 20 and curve thickness to 2. In this way, the figure will have clear readable fonts and curves in my paper. You can set up this template by using menu "edit"->"figure property"->"change template". After this "apply template" step, I save the figure in Matlab figure format to prepare for future edition and then export it as a EPS color file for my Latex paper. Thus for each figure, I generate two files, one is .fig and one is .eps. (this .fig is also useful when you make Powerpoint slides)</p>
  <p>After the "apply template" step, if I need, I can change a curve's line pattern or color, size and name of font of each individual object by first selecting this object, then using menu "edit"->"current object properties". To add readable markers on curves, I use the following command in matlab program to generate figure: t=1:15:1000; plot(t, data(t),'b--'); Then I add markers on this curve through matlab figure window (without "t", markers on one curve will squeeze together).</p></li>
  <li>If you use Latex to write academic paper, I have written a document to introduce how to write Latex paper in Windows more conveniently than in Linux.</li>
  </ol><br clear="all"/><script type="text/rocketscript">var disqus_url = 'http://vxheaven.org/vx.php?id=si00';</script><a href="/vx.php?id=si00#disqus_thread">Comments</a><br/><div style="float:left;"><div style="float: left;"><strong>Download</strong></div><br clear="all"/><table cellspacing="0" cellpadding="0" border="1"><tr bgcolor="#aaa999"><th>&nbsp;</th><th>Filename</th><th>Size</th><th>Description</th><th>Date</th><th>&nbsp;</th></tr><tr bgcolor="#cccbbb"><td><form class="fr" method="post" action="/file.php"><input type="image" src="/img/dl.gif" alt="Download"/><input type="hidden" name="file" value="c2ltL2l3cHMuemlw"/></form></td><td><a name="f1461"></a><small><a href="/dl/sim/iwps.zip">iwps.zip</a></small></td><td><small>190458</small></td><td><small>IWPS</small></td><td><small>Feb 2004</small></td><td><small style="float: right; font-family: fixed;">MD5 sum 815759fc506fb4b652e9bc47caf6d3c0</small></td></tr></table></div><br clear="all"/><br/><div class="s2">
  <div id="disqus_thread"></div>
  <script type="text/rocketscript">
          /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
          var disqus_shortname = 'vxheaven'; // required: replace example with your forum shortname
  
          /* * * DON'T EDIT BELOW THIS LINE * * */
          (function() {
              var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
              dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
              (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
          })();
      </script>
  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript></div>
  <div><small>By accessing, viewing, downloading or otherwise using this content you agree to be bound by the <a href="/agreement.php">Terms of Use</a>!</small> <small>vxheaven.org aka vx.netlux.org</small></div>
  <div style="margin-top: 2px; float: left;" class="adsapeu">
  <script type="text/rocketscript">
  <!--
  var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="//www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})()
  //-->
  </script>
  </div>
  <script data-rocketsrc="http://www.google-analytics.com/urchin.js" type="text/rocketscript"></script><script type="text/rocketscript">try { _uacct = "UA-590608-1"; urchinTracker(); } catch(err) {}</script>
  <div style="display: none;"><a href="/vx.php?lang=de&amp;id=si00">de</a><a href="/vx.php?lang=en&amp;id=si00">en</a><a href="/vx.php?lang=es&amp;id=si00">es</a><a href="/vx.php?lang=it&amp;id=si00">it</a><a href="/vx.php?lang=fr&amp;id=si00">fr</a><a href="/vx.php?lang=pl&amp;id=si00">pl</a><a href="/vx.php?lang=ru&amp;id=si00">ru</a><a href="/vx.php?lang=ua&amp;id=si00">ua</a></div>
  </body>
  </html>
  