<?xml version="1.0"?>
<rss version="2.0">
<channel>
<title>NSA</title>
<link>http://www.tiddlywiki.com/</link>
<description>Network Security and Architecutre Laboratory</description>
<language>en-us</language>
<copyright>Copyright 2007 Benjamin Murray</copyright>
<pubDate>Mon, 25 Jun 2007 16:51:36 GMT</pubDate>
<lastBuildDate>Mon, 25 Jun 2007 16:51:36 GMT</lastBuildDate>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<generator>TiddlyWiki 1.2.39</generator>
<item>
<title>People</title>
<description>!Faculty&lt;br /&gt;| [img[images/people/henry.jpg]]| [[Dr. Henry Owen|http://users.ece.gatech.edu/%7Eowen/]] - Professor |&lt;br /&gt;&lt;br /&gt;!Students&lt;br /&gt;| [img[images/people/yuxi.jpg]] | [[Yu-Xi Lim]] |&lt;br /&gt;|[img[images/people/ying.jpg]] |[[Ying Xia]] |&lt;br /&gt;|[img[images/people/kevin.gif]] | [[Kevin Fairbanks]] |&lt;br /&gt;&lt;br /&gt;!Alumni&lt;br /&gt;| [img[images/people/hayriye.jpg]] | [[Hayriye Altunbasak]] - Ph.D. Student |&lt;br /&gt;| [img[images/people/julian.jpg]] | [[Julian Grizzard]], Ph.D. [[Website|http://www.juliangrizzard.org]]|&lt;br /&gt;| [img[images/people/jerapong.jpg]] | [[Jerapong Rojanarowan]], Ph.D |&lt;br /&gt;| [img[images/people/sven.jpg]] | [[Sven Krasser]], Ph.D. |&lt;br /&gt;| [img[images/people/jeff.jpg]] | [[Jeff Gribschaw]] |&lt;br /&gt;</description>
<link>http://www.tiddlywiki.com/#People</link>
<pubDate>Mon, 25 Jun 2007 16:51:36 GMT</pubDate>
</item>
<item>
<title>Jeff Gribschaw</title>
<description>!__Publications__&lt;br /&gt;*S. Krasser, G. Conti, J. Grizzard, J. Gribschaw, and H. Owen, &quot;Real-Time and Forensic Network Data Analysis Using Animated and Coordinated Visualization,&quot; in Proc. of sixth IEEE Systems, Man and Cybernetics Information Assurance Workshop, June 2005, pp. 42-49.</description>
<link>http://www.tiddlywiki.com/#%5B%5BJeff%20Gribschaw%5D%5D</link>
<pubDate>Mon, 25 Jun 2007 14:46:00 GMT</pubDate>
</item>
<item>
<title>Sven Krasser</title>
<description>!__Publications__&lt;br /&gt;!!Journal Publications&lt;br /&gt;*D. Barlow, V. Vassiliou, S. Krasser, H. Owen, J. Grimminger, H.-P. Huth, and J. Sokol, &quot;Traffic engineering based on local states in Internet protocol-based radio access networks,&quot; accepted IEEE Journal of Communications and Networks.&lt;br /&gt;*S. Krasser, J. Grizzard, H. Owen, and J. Levine, &quot;The use of honeynets to increase computer network security and user awareness,&quot; in Journal of Security Education, pp. 23-37, vol. 1, no. 2/3.&lt;br /&gt;!!Conference Publications&lt;br /&gt;* J. Grizzard, C. Simpson, Jr., S. Krasser, H. Owen, and G. Riley, &quot;Flow Based Observations from NETI@home and Honeynet Data,&quot; in Proc. of sixth IEEE Systems, Man and Cybernetics Information Assurance Workshop, June 2005, pp. 244-251.&lt;br /&gt;* S. Krasser, G. Conti, J. Grizzard, J. Gribschaw, and H. Owen, &quot;Real-Time and Forensic Network Data Analysis Using Animated and Coordinated Visualization,&quot; in Proc. of sixth IEEE Systems, Man and Cybernetics Information Assurance Workshop, June 2005, pp. 42-49.&lt;br /&gt;* S. Krasser, H. Owen, J. Sokol, H.-P. Huth, and J. Grimminger, &quot;Adaptive per-flow traffic engineering based on probe packet measurements,&quot; accepted CNSR 2005.&lt;br /&gt;* H. Altunbasak, S. Krasser, H. Owen, J. Grimminger, H.-P. Huth, and J. Sokol, &quot;Securing layer 2 in local area networks,&quot; accepted IEEE ICN 2005.&lt;br /&gt;* H. Altunbasak, S. Krasser, H. Owen, J. Sokol, J. Grimminger, and H.-P. Huth, &quot;Addressing the weak link between layer 2 and layer 3 in the Internet architecture,&quot; in Proc. IEEE International Conference on Local Computer Networks, Tampa, Florida, USA, pp. 417-418, November 2004.&lt;br /&gt;*J. Grizzard, S. Krasser, H. Owen, G. Conti, and E. Dodson, &quot;Towards an approach for automatically repairing compromised network systems,&quot; in Proc. 3rd IEEE International Symposium on Network Computing and Applications, Cambridge, Massachusetts, USA, pp. 389-392, August 2004.&lt;br /&gt;*S. Krasser, H. Owen, J. Grimminger, H.-P. Huth, and J. Sokol, &quot;Online traffic engineering and connection admission control based on path queue states,&quot; in Proc. IEEE SoutheastCon 2004, Greensboro, North Carolina, USA, pp. 255-260, March 2004.&lt;br /&gt;*S. Krasser, H. Owen, J. Grimminger, H.-P. Huth, and J. Sokol, &quot;Probing available bandwidth in radio access networks,&quot; in Proc. IEEE Global Communications Conference 2003, San Francisco, California, USA, vol. 6, pp. 3437-3441, December 2003.&lt;br /&gt;*S. Krasser, H. Owen, J. Grimminger, H.-P. Huth, and J. Sokol, &quot;Distributed bandwidth reservation by probing for available bandwidth,&quot; in Proc. IEEE International Conference on Networks 2003, Sydney, Australia, pp. 443-448, September 2003.&lt;br /&gt;*S. Krasser, H. Owen, D. Barlow, J. Grimminger, H.-P. Huth, and J. Sokol, &quot;Evaluation of the local state fair share bandwidth algorithm,&quot; in Proc. International Conference on Telecommunications 2003, Papeete, French Polynesia, vol. 2, pp. 911-916, February 2003.&lt;br /&gt;&lt;br /&gt;</description>
<link>http://www.tiddlywiki.com/#%5B%5BSven%20Krasser%5D%5D</link>
<pubDate>Mon, 25 Jun 2007 14:45:00 GMT</pubDate>
</item>
<item>
<title>Julian Grizzard</title>
<description>!__Publications__&lt;br /&gt;!!Journal Publications&lt;br /&gt;*J. Levine, J. Grizzard, and H.Owen, &quot;Detecting and Categorizing Kernel-Level Rootkits to Aid Future Detection,&quot; in IEEE Security &amp; Privacy, January/February 2006, pp. 24-32, vol. 4, no. 1. (featured article)&lt;br /&gt;*D. Barlow, V. Vassiliou, S. Krasser, H. Owen, J. Grimminger, H.-P. Huth, and J. Sokol, &quot;Traffic engineering based on local states in Internet protocol-based radio access networks,&quot; accepted IEEE Journal of Communications and Networks.&lt;br /&gt;*J. Levine, J. Grizzard, and H. Owen, &quot;Using honeynets to protect large enterprise networks,&quot; in IEEE Security &amp; Privacy, November/December 2004, pp. 73-75, vol. 2, no. 6.&lt;br /&gt;*S. Krasser, J. Grizzard, H. Owen, and J. Levine, &quot;The use of honeynets to increase computer network security and user awareness,&quot; in Journal of Security Education, pp. 23-37, vol. 1, no. 2/3.&lt;br /&gt;!!Conference Publications&lt;br /&gt;* J. Grizzard and H. Owen, &quot;On a µ-kernel Based System Architecture Enabling Recovery from Rootkits&quot;, accepted First IEEE International Workshop on Critical Infrastructure Protection, 2005.&lt;br /&gt;* J. Grizzard, C. Simpson, Jr., S. Krasser, H. Owen, and G. Riley, &quot;Flow Based Observations from NETI@home and Honeynet Data,&quot; in Proc. of sixth IEEE Systems, Man and Cybernetics Information Assurance Workshop, June 2005, pp. 244-251.&lt;br /&gt;* S. Krasser, G. Conti, J. Grizzard, J. Gribschaw, and H. Owen, &quot;Real-Time and Forensic Network Data Analysis Using Animated and Coordinated Visualization,&quot; in Proc. of sixth IEEE Systems, Man and Cybernetics Information Assurance Workshop, June 2005, pp. 42-49. &lt;br /&gt;* J. Grizzard, J. Levine, and H. Owen, &quot;Re-establishing trust in compromised systems: Recovering from rootkits that trojan the system call table,&quot; in Proc. 9th European Symposium on Research in Computer Security, September 2004, pp. 369-384.&lt;br /&gt;* D. Dagon, X. Qin, G. Gu, W. Lee, J. Grizzard, J. Levine, and H. Owen, &quot;Honeystat: local worm detection using honeypots,&quot; in 7th International Symposium on Recent Advances in Intrusion Detection, Sophia Antipolis, France, September 2004.&lt;br /&gt;* J. Grizzard, S. Krasser, H. Owen, G. Conti, and E. Dodson, &quot;Towards an approach for automatically repairing compromised network systems,&quot; in Proc. 3rd IEEE International Symposium on Network Computing and Applications, Cambridge, Massachusetts, USA, pp. 389-392, August 2004.&lt;br /&gt;* J. Grizzard, E. Dodson, G. Conti, J. Levine, and H. Owen, &quot;Towards a trusted immutable kernel extension (TIKE) for selfhealing systems: a virtual machine approach,&quot; in Proc. 5th IEEE Information Assurance Workshop, June 2004, pp. 444-446.&lt;br /&gt;* J. Levine, J. Grizzard, and H. Owen, &quot;A methodology to detect and characterize kernel level rootkit exploits involving redirection of the system call table,&quot; in Proc. of Second IEEE International Information Assurance Workshop, April 2004, pp. 107-125.&lt;br /&gt;* T. Jackson, J. Levine, J. Grizzard, and H. Owen, &quot;An investigation of a compromised host on a honeynet begin used to increase the security of a large enterprise network,&quot; in Proc. 5th IEEE Information Assurance Workshop, March 2004, pp. 9-14.&lt;br /&gt;* J. Levine, J. Grizzard, and H. Owen, &quot;Application of a methodology to characterize rootkits retrieved from honeynets,&quot; in Proc. 5th IEEE Information Assurance Workshop, March 2004, pp. 15-21.</description>
<link>http://www.tiddlywiki.com/#%5B%5BJulian%20Grizzard%5D%5D</link>
<pubDate>Mon, 25 Jun 2007 14:41:00 GMT</pubDate>
</item>
<item>
<title>Hayriye Altunbasak</title>
<description>!__Publications__&lt;br /&gt;* H. Altunbasak, S. Krasser, H. Owen, J. Grimminger, H.-P. Huth, and J. Sokol, &quot;Securing layer 2 in local area networks,&quot; accepted IEEE ICN 2005.&lt;br /&gt;* H. Altunbasak, S. Krasser, H. Owen, J. Sokol, J. Grimminger, and H.-P. Huth, &quot;Addressing the weak link between layer 2 and layer 3 in the Internet architecture,&quot; in Proc. IEEE International Conference on Local Computer Networks, Tampa, Florida, USA, pp. 417-418, November 2004.</description>
<link>http://www.tiddlywiki.com/#%5B%5BHayriye%20Altunbasak%5D%5D</link>
<pubDate>Mon, 25 Jun 2007 14:38:00 GMT</pubDate>
</item>
<item>
<title>Kevin Fairbanks</title>
<description>!__Publications__&lt;br /&gt;* Kevin D. Fairbanks, Christopher P. Lee, Ying H. Xia, Henry L. Owen III. “TimeKeeper: A Metadata Archiving Method for Honeypot Forensics.” 8th Annual IEEE SMC Information Assurance Workshop. West Point, NY. 20-22 June 2007&lt;br /&gt;* Xia, Y., Fairbanks, K., Owen, H. &quot;Establishing trust in black-box programs.&quot; SoutheastCon, 2007. IEEE, Vol., Iss., March 2007, pp. 462-465. </description>
<link>http://www.tiddlywiki.com/#%5B%5BKevin%20Fairbanks%5D%5D</link>
<pubDate>Mon, 25 Jun 2007 14:37:00 GMT</pubDate>
</item>
<item>
<title>Ying Xia</title>
<description>!__Publications__&lt;br /&gt;* Kevin D. Fairbanks, Christopher P. Lee, Ying H. Xia, Henry L. Owen III. “TimeKeeper: A Metadata Archiving Method for Honeypot Forensics.” 8th Annual IEEE SMC Information Assurance Workshop. West Point, NY. 20-22 June 2007&lt;br /&gt;* Xia, Y., Fairbanks, K., Owen, H. &quot;Establishing trust in black-box programs.&quot; SoutheastCon, 2007. IEEE, Vol., Iss., March 2007, pp. 462-465. </description>
<link>http://www.tiddlywiki.com/#%5B%5BYing%20Xia%5D%5D</link>
<pubDate>Mon, 25 Jun 2007 14:36:00 GMT</pubDate>
</item>
<item>
<title>Yu-Xi Lim</title>
<description>!__Publications__&lt;br /&gt;*Yu-Xi Lim and Henry Owen, &quot;Secure wireless location services,&quot; in Proceedings of IEEE SoutheastCon 2007, 22-25 Mar, 2007.</description>
<link>http://www.tiddlywiki.com/#%5B%5BYu-Xi%20Lim%5D%5D</link>
<pubDate>Mon, 25 Jun 2007 14:36:00 GMT</pubDate>
</item>
<item>
<title>Research</title>
<description>!__Security Research__&lt;br /&gt;!!The Georgia Tech Honeynet&lt;br /&gt;NSA runs a honeynet in cooperation with the [[Honeynet Research Alliance|http://www.honeynet.org/alliance/index.html]]. More information can be found on our [[project webpage|The Georgia Tech Honeynet]].&lt;br /&gt;!!Establishing Trust in black-box programs&lt;br /&gt;Encrypted binaries are increasingly being used as deterrence for software piracy as well as vulnerability exploitation. The application of encrypted programs, however, leads to  increased security concerns, as users are unable to identify malicious behavior by monitoring the encrypted executables. This paper proposes a method to monitor encrypted programs that assures users that the black-box program on their system is not violating any security concerns. Our approach is to embed a system call monitoring tool into the operating system that monitors system call content for suspicious behavior or the lack thereof.&lt;br /&gt;&lt;br /&gt;!__Forensics Research__&lt;br /&gt;!!~TimeKeeper: A Metadata Archiving Method for Honeypot Forensics &lt;br /&gt;Internet attacks are becoming more advanced as the economy for cybercrime grows and the tools for evading detection become ubiquitous. To counter this threat, new detection and forensics tools are needed to capture these new techniques.  In this paper, we propose a method to extract and analyze a richer set of forensic information from the file system journal of honeypots in spite of anti-forensic tool use.  We show initial results of our journal monitoring prototype, ~TimeKeeper, of file system activities and argue that by detecting these events, we are able to capture previously unavailable forensic information.  This forensic information can then be used for system recovery, research on attack techniques, insight into attacker motives, and for criminal investigations.&lt;br /&gt;&lt;br /&gt;!__Networking Research__&lt;br /&gt;!!Secure wireless location services&lt;br /&gt;Wireless Internet access is becoming increasingly pervasive, and likewise we increasingly expect to use this Internet access while &quot;on the go.&quot; In such a scenario where both the service and the users are no longer constrained by simple physical boundaries, there needs to be a secure means of determining the location of the users and using this information for purposes such as security or other location-based services which add value to the network. This talk proposes an architecture for such a secure location service and evaluates its&lt;br /&gt;feasibility and effectiveness and compares existing insecure architectures.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; You can also read more about  [[past research|Past Research Projects]].</description>
<link>http://www.tiddlywiki.com/#Research</link>
<pubDate>Mon, 25 Jun 2007 14:34:00 GMT</pubDate>
</item>
<item>
<title>Publications</title>
<description>&lt;html&gt;&lt;br /&gt;&lt;head&gt;&lt;br /&gt;&lt;h1&gt;Journal Publications&lt;/h1&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;J. Levine, J. Grizzard, and H.Owen, &amp;quot;&lt;a href=&quot;papers/2006_levine_s&amp;p.pdf&quot;&gt;Detecting and Categorizing Kernel-Level Rootkits to Aid Future Detection&lt;/a&gt;,&amp;quot; in &lt;i&gt;IEEE Security &amp; Privacy&lt;/i&gt;, January/February 2006, pp. 24-32, vol. 4, no. 1. (&lt;i&gt;featured article&lt;/i&gt;)&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;D. Barlow, V. Vassiliou, S. Krasser, H. Owen, J. Grimminger, H.-P. Huth, and J. Sokol, &amp;quot;Traffic engineering based on local states in Internet protocol-based radio access networks,&amp;quot; accepted &lt;i&gt;IEEE Journal of Communications and Networks&lt;/i&gt;.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;J. Levine, J. Grizzard, and H. Owen, &amp;quot;&lt;a href=&quot;papers/2004_levine_s&amp;p.pdf&quot;&gt;Using honeynets to protect large enterprise networks&lt;/a&gt;,&amp;quot; in &lt;i&gt;IEEE Security &amp; Privacy&lt;/i&gt;, November/December 2004, pp. 73-75, vol. 2, no. 6.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;S. Krasser, J. Grizzard, H. Owen, and J. Levine, &amp;quot;&lt;a href=&quot;papers/use_of_honeynets.pdf&quot;&gt;The use of honeynets to increase computer network security and user awareness&lt;/a&gt;,&amp;quot; in &lt;i&gt;Journal of Security Education&lt;/i&gt;, pp. 23-37, vol. 1, no. 2/3.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;a &lt;br /&gt;href=&quot;http://users.ece.gatech.edu/~owen/Research/Journal%20Publications/journal_publications.htm&quot;&gt;[more journal publications]&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h1&gt;Refereed Conference Publications&lt;/h1&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Kevin D. Fairbanks, Christopher P. Lee, Ying H. Xia, Henry L. Owen III. “TimeKeeper: A Metadata Archiving Method for Honeypot Forensics.” 8th Annual IEEE SMC Information Assurance Workshop. West Point, NY. 20-22 June 2007&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Xia, Y., Fairbanks, K., Owen, H. &quot;&lt;a href = &quot;papers/blackbox.pdf&quot;&gt;Establishing trust in black-box programs.&lt;/a&gt;&quot; SoutheastCon, 2007. IEEE, Vol., Iss., March 2007, pp. 462-465.&lt;br /&gt;&lt;li&gt;Yu-Xi Lim and Henry Owen, &quot;&lt;a href=&quot;papers/secureservices.pdf&quot;&gt;Secure wireless location services&lt;/a&gt;,&quot; in Proceedings of IEEE SoutheastCon 2007, 22-25 Mar, 2007.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;J. Grizzard and H. Owen, &amp;quot;&lt;a href=&quot;papers/2005_grizzard_iwcip.pdf&quot;&gt;On a µ-kernel Based System Architecture Enabling Recovery from Rootkits&lt;/a&gt;&amp;quot;, accepted First IEEE International Workshop on Critical Infrastructure Protection, 2005.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;J. Grizzard, C. Simpson, Jr., S. Krasser, H. Owen, and G. Riley, &amp;quot;&lt;a href=&quot;papers/2005_grizzard_iaw.pdf&quot;&gt;Flow Based Observations from NETI@home and Honeynet Data&lt;/a&gt;,&amp;quot; in &lt;i&gt;Proc. of sixth IEEE Systems, Man and Cybernetics Information Assurance Workshop&lt;/i&gt;, June 2005, pp. 244-251.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;S. Krasser, G. Conti, J. Grizzard, J. Gribschaw, and H. Owen, &amp;quot;&lt;a href=&quot;papers/2005_krasser_iaw.pdf&quot;&gt;Real-Time and Forensic Network Data Analysis Using Animated and Coordinated Visualization&lt;/a&gt;,&amp;quot; in &lt;i&gt;Proc. of sixth IEEE Systems, Man and Cybernetics Information Assurance Workshop&lt;/i&gt;, June 2005, pp. 42-49.&lt;br /&gt;&lt;li&gt;S. Krasser, H. Owen, J. Sokol, H.-P. Huth, and J. Grimminger, &amp;quot;Adaptive per-flow traffic engineering based on probe packet measurements,&amp;quot; accepted &lt;i&gt;CNSR 2005&lt;/i&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;H. Altunbasak, S. Krasser, H. Owen, J. Grimminger, H.-P. Huth, and J. Sokol, &amp;quot;Securing layer 2 in local area networks,&amp;quot; accepted &lt;i&gt;IEEE ICN 2005&lt;/i&gt;.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;H. Altunbasak, S. Krasser, H. Owen, J. Sokol, J. Grimminger, and H.-P. Huth, &amp;quot;Addressing the weak link between layer 2 and layer 3 in the Internet architecture,&amp;quot; in &lt;i&gt;Proc. IEEE International Conference on Local Computer Networks&lt;/i&gt;, Tampa, Florida, USA, pp. 417-418, November 2004.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;J. Grizzard, J. Levine, and H. Owen, &amp;quot;&lt;a href=&quot;papers/2004_grizzard_esorics.pdf&quot;&gt;Re-establishing trust in compromised systems: Recovering from rootkits that trojan the system call table&lt;/a&gt;,&amp;quot; in &lt;i&gt;Proc. 9th European Symposium on Research in Computer Security&lt;/i&gt;, September 2004, pp. 369-384.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;D. Dagon, X. Qin, G. Gu, W. Lee, J. Grizzard, J. Levine, and H. Owen, &amp;quot;&lt;a href=&quot;papers/2004_dagon_raid.pdf&quot;&gt;Honeystat: local worm detection using honeypots&lt;/a&gt;,&amp;quot; in &lt;i&gt;7th International Symposium on Recent Advances in Intrusion Detection&lt;/i&gt;, Sophia Antipolis, France, September 2004.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;J. Grizzard, S. Krasser, H. Owen, G. Conti, and E. Dodson, &amp;quot;&lt;a href=&quot;http://users.ece.gatech.edu/~owen/Research/Conference%20Publications/Grizzard_NCA2004.pdf&quot;&gt;Towards an approach for automatically repairing compromised network systems&lt;/a&gt;,&amp;quot; in &lt;i&gt;Proc. 3rd IEEE International Symposium on Network Computing and Applications&lt;/i&gt;, Cambridge, Massachusetts, USA, pp. 389-392, August 2004.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;J. Grizzard, E. Dodson, G. Conti, J. Levine, and H. Owen, &amp;quot;&lt;a href=&quot;grizzard_iaw2004.pdf&quot;&gt;Towards a trusted immutable kernel extension (TIKE) for selfhealing systems: a virtual machine approach&lt;/a&gt;,&amp;quot; in &lt;i&gt;Proc. 5th IEEE Information Assurance Workshop&lt;/i&gt;, June 2004, pp. 444-446.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;J. Levine, J. Grizzard, and H. Owen, &amp;quot;A methodology to detect and characterize kernel level rootkit exploits involving redirection of the system call table,&amp;quot; in &lt;i&gt;Proc. of Second IEEE International Information Assurance Workshop&lt;/i&gt;, April 2004, pp. 107-125.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;S. Krasser, H. Owen, J. Grimminger, H.-P. Huth, and J. Sokol, &amp;quot;&lt;a href=&quot;http://users.ece.gatech.edu/~owen/Research/Conference%20Publications/krasser-secon04-c.pdf&quot;&gt;Online traffic engineering and connection admission control based on path queue states&lt;/a&gt;,&amp;quot; in &lt;i&gt;Proc. IEEE SoutheastCon 2004&lt;/i&gt;, Greensboro, North Carolina, USA, pp. 255-260, March 2004.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;T. Jackson, J. Levine, J. Grizzard, and H. Owen, &amp;quot;An investigation of a compromised host on a honeynet begin used to increase the security of a large enterprise network,&amp;quot; in &lt;i&gt;Proc. 5th IEEE Information Assurance Workshop&lt;/i&gt;, March 2004, pp. 9-14.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;J. Levine, J. Grizzard, and H. Owen, &amp;quot;Application of a methodology to characterize rootkits retrieved from honeynets,&amp;quot; in &lt;i&gt;Proc. 5th IEEE Information Assurance Workshop&lt;/i&gt;, March 2004, pp. 15-21.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;S. Krasser, H. Owen, J. Grimminger, H.-P. Huth, and J. Sokol, &amp;quot;&lt;a href=&quot;http://users.ece.gatech.edu/~owen/Research/Conference%20Publications/sven_globecom2003.pdf&quot;&gt;Probing available bandwidth in radio access networks&lt;/a&gt;,&amp;quot; in &lt;i&gt;Proc. IEEE Global Communications Conference 2003&lt;/i&gt;, San Francisco, California, USA, vol. 6, pp. 3437-3441, December 2003.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;S. Krasser, H. Owen, J. Grimminger, H.-P. Huth, and J. Sokol, &amp;quot;&lt;a href=&quot;http://users.ece.gatech.edu/~owen/Research/Conference%20Publications/Krasser_ICON2003.pdf&quot;&gt;Distributed bandwidth reservation by probing for available bandwidth&lt;/a&gt;,&amp;quot; in &lt;i&gt;Proc. IEEE International Conference on Networks 2003&lt;/i&gt;, Sydney, Australia, pp. 443-448, September 2003.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;S. Krasser, H. Owen, D. Barlow, J. Grimminger, H.-P. Huth, and J. Sokol, &amp;quot;&lt;a href=&quot;http://users.ece.gatech.edu/~owen/Research/Conference%20Publications/lsfsb_ICT2003.pdf&quot;&gt;Evaluation of the local state fair share bandwidth algorithm&lt;/a&gt;,&amp;quot; in &lt;i&gt;Proc. International Conference on Telecommunications 2003&lt;/i&gt;, Papeete, French Polynesia, vol. 2, pp. 911-916, February 2003.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a &lt;br /&gt;href=&quot;http://users.ece.gatech.edu/~owen/Research/Conference%20Publications/conference_publications.htm&quot;&gt;[more &lt;br /&gt;conference publications]&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;div id=&quot;msiehack2&quot;&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/body&gt;&lt;br /&gt;&lt;br /&gt;&lt;/html&gt;</description>
<link>http://www.tiddlywiki.com/#Publications</link>
<pubDate>Mon, 25 Jun 2007 14:09:00 GMT</pubDate>
</item>
<item>
<title>DatePlugin</title>
<description>/***&lt;br /&gt;|Name|DatePlugin|&lt;br /&gt;|Source|http://www.TiddlyTools.com/#DatePlugin|&lt;br /&gt;|Version|2.3.0|&lt;br /&gt;|Author|Eric Shulman - ELS Design Studios|&lt;br /&gt;|License|http://www.TiddlyTools.com/#LegalStatements &lt;&lt;br&gt;&gt;and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|&lt;br /&gt;|~CoreVersion|2.1|&lt;br /&gt;|Type|plugin|&lt;br /&gt;|Requires||&lt;br /&gt;|Overrides||&lt;br /&gt;|Description|formatted dates plus popup menu with 'journal' link, changes and (optional) reminders|&lt;br /&gt;&lt;br /&gt;There are quite a few calendar generators, reminders, to-do lists, 'dated tiddlers' journals, blog-makers and GTD-like schedule managers that have been built around TW.  While they all have different purposes, and vary in format, interaction, and style, in one way or another each of these plugins displays and/or uses date-based information to make finding, accessing and managing relevant tiddlers easier.  This plugin provides a general approach to embedding dates and date-based links/menus within tiddler content.&lt;br /&gt;&lt;br /&gt;This plugin display formatted dates, for the specified year, month, day using number values or mathematical expressions such as (Y+1) or (D+30).  Optionally, you can create a link from the formatted output to a 'dated tiddler' for quick blogging or create a popup menu that includes the dated tiddler link plus links to changes made on that date as well as links to any pending reminders for the coming 31 days (if the RemindersPlugin is installed).  This plugin also provides a public API for easily incorporating formatted date output (with or without the links/popups) into other plugins, such as calendar generators, etc.&lt;br /&gt;!!!!!Usage&lt;br /&gt;&lt;&lt;&lt;&lt;br /&gt;When installed, this plugin defines a macro: {{{&lt;&lt;date [mode] [date] [format] [linkformat]&gt;&gt;}}}.  All of the macro parameters are optional and, in it's simplest form, {{{&lt;&lt;date&gt;&gt;}}}, it is equivalent to the ~TiddlyWiki core macro, {{{&lt;&lt;today&gt;&gt;}}}.&lt;br /&gt;&lt;br /&gt;However, where {{{&lt;&lt;today&gt;&gt;}}} simply inserts the current date/time in a predefined format (or custom format, using {{{&lt;&lt;today [format]&gt;&gt;}}}), the {{{&lt;&lt;date&gt;&gt;}}} macro's parameters take it much further than that:&lt;br /&gt;* [mode] is either ''display'', ''link'' or ''popup''.  If omitted, it defaults to ''display''.  This param let's you select between simply displaying a formatted date, or creating a link to a specific 'date titled' tiddler or a popup menu containing a dated tiddler link, plus links to changes and reminders.&lt;br /&gt;* [date] lets you enter ANY date (not just today) as ''year, month, and day values or simple mathematical expressions'' using pre-defined variables, Y, M, and D for the current year, month and day, repectively.  You can display the modification date of the current tiddler by using the keyword: ''tiddler'' in place of the year, month and day parameters.  Use ''tiddler://name-of-tiddler//'' to display the modification date of a specific tiddler.  You can also use keywords ''today'' or ''filedate'' to refer to these //dynamically changing// date/time values.  &lt;br /&gt;* [format] and [linkformat] uses standard ~TiddlyWiki date formatting syntax.  The default is &quot;YYYY.0MM.0DD&quot;&lt;br /&gt;&gt;^^''DDD'' - day of week in full (eg, &quot;Monday&quot;), ''DD'' - day of month, ''0DD'' - adds leading zero^^&lt;br /&gt;&gt;^^''MMM'' - month in full (eg, &quot;July&quot;), ''MM'' - month number, ''0MM'' - adds leading zero^^&lt;br /&gt;&gt;^^''YYYY'' - full year, ''YY'' - two digit year, ''hh'' - hours, ''mm'' - minutes, ''ss'' - seconds^^&lt;br /&gt;&gt;^^//note: use of hh, mm or ss format codes is only supported with ''tiddler'', ''today'' or ''filedate'' values//^^&lt;br /&gt;* [linkformat] - specify an alternative date format so that the title of a 'dated tiddler' link can have a format that differs from the date's displayed format&lt;br /&gt;&lt;br /&gt;In addition to the macro syntax, DatePlugin also provides a public javascript API so that other plugins that work with dates (such as calendar generators, etc.) can quickly incorporate date formatted links or popups into their output:&lt;br /&gt;&lt;br /&gt;''{{{showDate(place, date, mode, format, linkformat, autostyle, weekend)}}}'' &lt;br /&gt;&lt;br /&gt;Note that in addition to the parameters provided by the macro interface, the javascript API also supports two optional true/false parameters:&lt;br /&gt;* [autostyle] - when true, the font/background styles of formatted dates are automatically adjusted to show the date's status:  'today' is boxed, 'changes' are bold, 'reminders' are underlined, while weekends and holidays (as well as changes and reminders) can each have a different background color to make them more visibly distinct from each other.&lt;br /&gt;* [weekend] - true indicates a weekend, false indicates a weekday.  When this parameter is omitted, the plugin uses internal defaults to automatically determine when a given date falls on a weekend.&lt;br /&gt;&lt;&lt;&lt;&lt;br /&gt;!!!!!Examples&lt;br /&gt;&lt;&lt;&lt;&lt;br /&gt;The current date: &lt;&lt;date&gt;&gt;&lt;br /&gt;The current time: &lt;&lt;date today &quot;0hh:0mm:0ss&quot;&gt;&gt;&lt;br /&gt;Today's blog: &lt;&lt;date link today &quot;DDD, MMM DDth, YYYY&quot;&gt;&gt;&lt;br /&gt;Recent blogs/changes/reminders: &lt;&lt;date popup Y M D-1 &quot;yesterday&quot;&gt;&gt; &lt;&lt;date popup today &quot;today&quot;&gt;&gt; &lt;&lt;date popup Y M D+1 &quot;tomorrow&quot;&gt;&gt;&lt;br /&gt;The first day of next month will be a &lt;&lt;date Y M+1 1 &quot;DDD&quot;&gt;&gt;&lt;br /&gt;This tiddler (DatePlugin) was last updated on: &lt;&lt;date tiddler &quot;DDD, MMM DDth, YYYY&quot;&gt;&gt;&lt;br /&gt;The SiteUrl was last updated on: &lt;&lt;date tiddler:SiteUrl &quot;DDD, MMM DDth, YYYY&quot;&gt;&gt;&lt;br /&gt;This document was last saved on &lt;&lt;date filedate &quot;DDD, MMM DDth, YYYY at 0hh:0mm:0ss&quot;&gt;&gt;&lt;br /&gt;&lt;&lt;date 2006 07 24 &quot;MMM DDth, YYYY&quot;&gt;&gt; will be a &lt;&lt;date 2006 07 24 &quot;DDD&quot;&gt;&gt;&lt;br /&gt;&lt;&lt;&lt;&lt;br /&gt;!!!!!Installation&lt;br /&gt;&lt;&lt;&lt;&lt;br /&gt;import (or copy/paste) the following tiddlers into your document:&lt;br /&gt;''DatePlugin'' (tagged with &lt;&lt;tag systemConfig&gt;&gt;)&lt;br /&gt;&lt;&lt;&lt;&lt;br /&gt;!!!!!Revision History&lt;br /&gt;&lt;&lt;&lt;&lt;br /&gt;''2007.05.31 [2.3.0]'' list &quot;created&quot; tiddlers in date popup.  Also, force re-cache of created/modified indices when displaying current date and store.isDirty(), so that popup is kept in sync with tiddler changes.&lt;br /&gt;''2006.05.09 [2.2.1]'' added &quot;todaybg&quot; handling to set background color of current date.  Also, honor excludeLists tag when getting lists of tiddlers.  Based on suggestions by Mark Hulme.&lt;br /&gt;''2006.05.05 [2.2.0]'' added &quot;linkedbg&quot; handling to set background color when a 'dated tiddler' exists.  Based on a suggestion by Mark Hulme.&lt;br /&gt;''2006.03.08 [2.1.2]'' add 'override leadtime' flag param in call to findTiddlersWithReminders(), and add &quot;Enter a title&quot; default text to new reminder handler.  Thanks to Jeremy Sheeley for these additional tweaks.&lt;br /&gt;''2006.03.06 [2.1.0]'' hasReminders() nows uses window.reminderCacheForCalendar[] when present.  If calendar cache is not present, indexReminders() now uses findTiddlersWithReminders() with a 90-day look ahead to check for reminders.  Also, switched default background colors for autostyled dates: reminders are now greenish (&quot;c0ffee&quot;) and holidays are now reddish (&quot;ffaace&quot;).&lt;br /&gt;''2006.02.14 [2.0.5]'' when readOnly is set (by TW core), omit &quot;new reminders...&quot; popup menu item and, if a &quot;dated tiddler&quot; does not already exist, display the date as simple text instead of a link.&lt;br /&gt;''2006.02.05 [2.0.4]'' added var to variables that were unintentionally global.  Avoids FireFox 1.5.0.1 crash bug when referencing global variables&lt;br /&gt;''2006.01.18 [2.0.3]'' In 1.2.x the tiddler editor's text area control was given an element ID=(&quot;tiddlerBody&quot;+title), so that it was easy to locate this field and programmatically modify its content.  With the addition of configuration templates in 2.x, the textarea no longer has an ID assigned.  To find this control we now look through all the child nodes of the tiddler editor to locate a &quot;textarea&quot; control where attribute(&quot;edit&quot;) equals &quot;text&quot;, and then append the new reminder to the contents of that control.&lt;br /&gt;''2006.01.11 [2.0.2]'' correct 'weekend' override detection logic in showDate()&lt;br /&gt;''2006.01.10 [2.0.1]'' allow custom-defined weekend days (default defined in config.macros.date.weekend[] array)&lt;br /&gt;added flag param to showDate() API to override internal weekend[] array&lt;br /&gt;''2005.12.27 [2.0.0]'' Update for TW2.0&lt;br /&gt;Added parameter handling for 'linkformat'&lt;br /&gt;''2005.12.21 [1.2.2]'' FF's date.getYear() function returns 105 (for the current year, 2005).  When calculating a date value from Y M and D expressions, the plugin adds 1900 to the returned year value get the current year number.  But IE's date.getYear() already returns 2005.  As a result, plugin calculated date values on IE were incorrect (e.g., 3905 instead of 2005).  Adding +1900 is now conditional so the values will be correct on both browsers.&lt;br /&gt;''2005.11.07 [1.2.1]'' added support for &quot;tiddler&quot; dynamic date parameter&lt;br /&gt;''2005.11.06 [1.2.0]'' added support for &quot;tiddler:title&quot; dynamic date parameter&lt;br /&gt;''2005.11.03 [1.1.2]'' when a reminder doesn't have a specified title parameter, use the title of the tiddler that contains the reminder as &quot;fallback&quot; text in the popup menu.  Based on a suggestion from BenjaminKudria.&lt;br /&gt;''2005.11.03 [1.1.1]'' Temporarily bypass hasReminders() logic to avoid excessive overhead from generating the indexReminders() cache.  While reminders can still appear in the popup menu, they just won't be indicated by auto-styling the date number that is displayed.  This single change saves approx. 60% overhead (5 second delay reduced to under 2 seconds).&lt;br /&gt;''2005.11.01 [1.1.0]'' corrected logic in hasModifieds() and hasReminders() so caching of indexed modifieds and reminders is done just once, as intended.  This should hopefully speed up calendar generators and other plugins that render multiple dates...&lt;br /&gt;''2005.10.31 [1.0.1]'' documentation and code cleanup&lt;br /&gt;''2005.10.31 [1.0.0]'' initial public release&lt;br /&gt;''2005.10.30 [0.9.0]'' pre-release&lt;br /&gt;&lt;&lt;&lt;&lt;br /&gt;!!!!!Credits&lt;br /&gt;&lt;&lt;&lt;&lt;br /&gt;This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].&lt;br /&gt;&lt;&lt;&lt;&lt;br /&gt;!!!!!Code&lt;br /&gt;***/&lt;br /&gt;//{{{&lt;br /&gt;version.extensions.date = {major: 2, minor: 3, revision: 0, date: new Date(2007,5,31)};&lt;br /&gt;//}}}&lt;br /&gt;&lt;br /&gt;//{{{&lt;br /&gt;config.macros.date = {&lt;br /&gt;	format: &quot;YYYY.0MM.0DD&quot;, // default date display format&lt;br /&gt;	linkformat: &quot;YYYY.0MM.0DD&quot;, // 'dated tiddler' link format&lt;br /&gt;	linkedbg: &quot;#babb1e&quot;, // &quot;babble&quot;&lt;br /&gt;	todaybg: &quot;#ffab1e&quot;, // &quot;fable&quot;&lt;br /&gt;	weekendbg: &quot;#c0c0c0&quot;, // &quot;cocoa&quot;&lt;br /&gt;	holidaybg: &quot;#ffaace&quot;, // &quot;face&quot;&lt;br /&gt;	createdbg: &quot;#bbeeff&quot;, // &quot;beef&quot;&lt;br /&gt;	modifiedsbg: &quot;#bbeeff&quot;, // &quot;beef&quot;&lt;br /&gt;	remindersbg: &quot;#c0ffee&quot;, // &quot;coffee&quot;&lt;br /&gt;	holidays: [ &quot;01/01&quot;, &quot;07/04&quot;, &quot;07/24&quot;, &quot;11/24&quot; ], // NewYearsDay, IndependenceDay(US), Eric's Birthday (hooray!), Thanksgiving(US)&lt;br /&gt;	weekend: [ 1,0,0,0,0,0,1 ] // [ day index values: sun=0, mon=1, tue=2, wed=3, thu=4, fri=5, sat=6 ]&lt;br /&gt;};&lt;br /&gt;//}}}&lt;br /&gt;&lt;br /&gt;//{{{&lt;br /&gt;config.macros.date.handler = function(place,macroName,params)&lt;br /&gt;{&lt;br /&gt;	// do we want to see a link, a popup, or just a formatted date?&lt;br /&gt;	var mode=&quot;display&quot;;&lt;br /&gt;	if (params[0]==&quot;display&quot;) { mode=params[0]; params.shift(); }&lt;br /&gt;	if (params[0]==&quot;popup&quot;) { mode=params[0]; params.shift(); }&lt;br /&gt;	if (params[0]==&quot;link&quot;) { mode=params[0]; params.shift(); }&lt;br /&gt;	// get the date&lt;br /&gt;	var now = new Date();&lt;br /&gt;	var date = now;&lt;br /&gt;	if (!params[0] || params[0]==&quot;today&quot;)&lt;br /&gt;		{ params.shift(); }&lt;br /&gt;	else if (params[0]==&quot;filedate&quot;)&lt;br /&gt;		{ date=new Date(document.lastModified); params.shift(); }&lt;br /&gt;	else if (params[0]==&quot;tiddler&quot;)&lt;br /&gt;		{ date=store.getTiddler(story.findContainingTiddler(place).id.substr(7)).modified; params.shift(); }&lt;br /&gt;	else if (params[0].substr(0,8)==&quot;tiddler:&quot;)&lt;br /&gt;		{ var t; if ((t=store.getTiddler(params[0].substr(8)))) date=t.modified; params.shift(); }&lt;br /&gt;	else {&lt;br /&gt;		var y = eval(params.shift().replace(/Y/ig,(now.getYear()&lt;1900)?now.getYear()+1900:now.getYear()));&lt;br /&gt;		var m = eval(params.shift().replace(/M/ig,now.getMonth()+1));&lt;br /&gt;		var d = eval(params.shift().replace(/D/ig,now.getDate()+0));&lt;br /&gt;		date = new Date(y,m-1,d);&lt;br /&gt;	}&lt;br /&gt;	// date format with optional custom override&lt;br /&gt;	var format=this.format; if (params[0]) format=params.shift();&lt;br /&gt;	var linkformat=this.linkformat; if (params[0]) linkformat=params.shift();&lt;br /&gt;	showDate(place,date,mode,format,linkformat);&lt;br /&gt;}&lt;br /&gt;//}}}&lt;br /&gt;&lt;br /&gt;//{{{&lt;br /&gt;window.showDate=showDate;&lt;br /&gt;function showDate(place,date,mode,format,linkformat,autostyle,weekend)&lt;br /&gt;{&lt;br /&gt;	if (!mode) mode=&quot;display&quot;;&lt;br /&gt;	if (!format) format=config.macros.date.format;&lt;br /&gt;	if (!linkformat) linkformat=config.macros.date.linkformat;&lt;br /&gt;	if (!autostyle) autostyle=false;&lt;br /&gt;&lt;br /&gt;	// format the date output&lt;br /&gt;	var title = date.formatString(format);&lt;br /&gt;	var linkto = date.formatString(linkformat);&lt;br /&gt;&lt;br /&gt;	// just show the formatted output&lt;br /&gt;	if (mode==&quot;display&quot;) { place.appendChild(document.createTextNode(title)); return; }&lt;br /&gt;&lt;br /&gt;	// link to a 'dated tiddler'&lt;br /&gt;	var link = createTiddlyLink(place, linkto, false);&lt;br /&gt;	link.appendChild(document.createTextNode(title));&lt;br /&gt;	link.title = linkto;&lt;br /&gt;	link.date = date;&lt;br /&gt;	link.format = format;&lt;br /&gt;	link.linkformat = linkformat;&lt;br /&gt;&lt;br /&gt;	// if using a popup menu, replace click handler for dated tiddler link&lt;br /&gt;	// with handler for popup and make link text non-italic (i.e., an 'existing link' look)&lt;br /&gt;	if (mode==&quot;popup&quot;) {&lt;br /&gt;		link.onclick = onClickDatePopup;&lt;br /&gt;		link.style.fontStyle=&quot;normal&quot;;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	// format the popup link to show what kind of info it contains (for use with calendar generators)&lt;br /&gt;	if (!autostyle) return;&lt;br /&gt;	if (hasModifieds(date)||hasCreateds(date))&lt;br /&gt;		{ link.style.fontStyle=&quot;normal&quot;; link.style.fontWeight=&quot;bold&quot;; }&lt;br /&gt;	if (hasReminders(date))&lt;br /&gt;		{ link.style.textDecoration=&quot;underline&quot;; }&lt;br /&gt;	if(isToday(date))&lt;br /&gt;		{ link.style.border=&quot;1px solid black&quot;; }&lt;br /&gt;&lt;br /&gt;	if( (weekend!=undefined?weekend:isWeekend(date)) &amp;&amp; (config.macros.date.weekendbg!=&quot;&quot;) )&lt;br /&gt;		{ place.style.background = config.macros.date.weekendbg; }&lt;br /&gt;	if(isHoliday(date)&amp;&amp;(config.macros.date.holidaybg!=&quot;&quot;))&lt;br /&gt;		{ place.style.background = config.macros.date.holidaybg; }&lt;br /&gt;	if (hasCreateds(date)&amp;&amp;(config.macros.date.createdbg!=&quot;&quot;))&lt;br /&gt;		{ place.style.background = config.macros.date.createdbg; }&lt;br /&gt;	if (hasModifieds(date)&amp;&amp;(config.macros.date.modifiedsbg!=&quot;&quot;))&lt;br /&gt;		{ place.style.background = config.macros.date.modifiedsbg; }&lt;br /&gt;	if (store.tiddlerExists(linkto)&amp;&amp;(config.macros.date.linkedbg!=&quot;&quot;))&lt;br /&gt;		{ place.style.background = config.macros.date.linkedbg; }&lt;br /&gt;	if (hasReminders(date)&amp;&amp;(config.macros.date.remindersbg!=&quot;&quot;))&lt;br /&gt;		{ place.style.background = config.macros.date.remindersbg; }&lt;br /&gt;	if(isToday(date)&amp;&amp;(config.macros.date.todaybg!=&quot;&quot;))&lt;br /&gt;		{ place.style.background = config.macros.date.todaybg; }&lt;br /&gt;}&lt;br /&gt;//}}}&lt;br /&gt;&lt;br /&gt;//{{{&lt;br /&gt;function isToday(date) // returns true if date is today&lt;br /&gt;	{ var now=new Date(); return ((now-date&gt;=0) &amp;&amp; (now-date&lt;86400000)); }&lt;br /&gt;&lt;br /&gt;function isWeekend(date) // returns true if date is a weekend&lt;br /&gt;	{ return (config.macros.date.weekend[date.getDay()]); }&lt;br /&gt;&lt;br /&gt;function isHoliday(date) // returns true if date is a holiday&lt;br /&gt;{&lt;br /&gt;	var longHoliday = date.formatString(&quot;0MM/0DD/YYYY&quot;);&lt;br /&gt;	var shortHoliday = date.formatString(&quot;0MM/0DD&quot;);&lt;br /&gt;	for(var i = 0; i &lt; config.macros.date.holidays.length; i++) {&lt;br /&gt;		var holiday=config.macros.date.holidays[i];&lt;br /&gt;		if (holiday==longHoliday||holiday==shortHoliday) return true;&lt;br /&gt;	}&lt;br /&gt;	return false;&lt;br /&gt;}&lt;br /&gt;//}}}&lt;br /&gt;&lt;br /&gt;//{{{&lt;br /&gt;// Event handler for clicking on a day popup&lt;br /&gt;function onClickDatePopup(e)&lt;br /&gt;{&lt;br /&gt;	if (!e) var e = window.event;&lt;br /&gt;	var theTarget = resolveTarget(e);&lt;br /&gt;	var popup = createTiddlerPopup(this);&lt;br /&gt;	if(popup) {&lt;br /&gt;		// always show dated tiddler link (or just date, if readOnly) at the top...&lt;br /&gt;		if (!readOnly || store.tiddlerExists(this.date.formatString(this.linkformat)))&lt;br /&gt;			createTiddlyLink(popup,this.date.formatString(this.linkformat),true);&lt;br /&gt;		else&lt;br /&gt;			createTiddlyText(popup,this.date.formatString(this.linkformat));&lt;br /&gt;		addCreatedsToPopup(popup,this.date,this.format);&lt;br /&gt;		addModifiedsToPopup(popup,this.date,this.format);&lt;br /&gt;		addRemindersToPopup(popup,this.date,this.linkformat);&lt;br /&gt;	}&lt;br /&gt;	scrollToTiddlerPopup(popup,false);&lt;br /&gt;	e.cancelBubble = true;&lt;br /&gt;	if (e.stopPropagation) e.stopPropagation();&lt;br /&gt;	return(false);&lt;br /&gt;}&lt;br /&gt;//}}}&lt;br /&gt;&lt;br /&gt;//{{{&lt;br /&gt;function indexCreateds() // build list of tiddlers, hash indexed by creation date&lt;br /&gt;{&lt;br /&gt;	var createds= { };&lt;br /&gt;	var tiddlers = store.getTiddlers(&quot;title&quot;,&quot;excludeLists&quot;);&lt;br /&gt;	for (var t = 0; t &lt; tiddlers.length; t++) {&lt;br /&gt;		var date = tiddlers[t].created.formatString(&quot;YYYY0MM0DD&quot;)&lt;br /&gt;		if (!createds[date])&lt;br /&gt;			createds[date]=new Array();&lt;br /&gt;		createds[date].push(tiddlers[t].title);&lt;br /&gt;	}&lt;br /&gt;	return createds;&lt;br /&gt;}&lt;br /&gt;function hasCreateds(date) // returns true if date has created tiddlers&lt;br /&gt;{&lt;br /&gt;	if (!config.macros.date.createds) config.macros.date.createds=indexCreateds();&lt;br /&gt;	return (config.macros.date.createds[date.formatString(&quot;YYYY0MM0DD&quot;)]!=undefined);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function addCreatedsToPopup(popup,when,format)&lt;br /&gt;{&lt;br /&gt;	var force=(store.isDirty() &amp;&amp; when.formatString(&quot;YYYY0MM0DD&quot;)==new Date().formatString(&quot;YYYY0MM0DD&quot;));&lt;br /&gt;	if (force || !config.macros.date.createds) config.macros.date.createds=indexCreateds();&lt;br /&gt;	var indent=String.fromCharCode(160)+String.fromCharCode(160);&lt;br /&gt;	var createds = config.macros.date.createds[when.formatString(&quot;YYYY0MM0DD&quot;)];&lt;br /&gt;	if (createds) {&lt;br /&gt;		createds.sort();&lt;br /&gt;		var e=createTiddlyElement(popup,&quot;div&quot;,null,null,&quot;created:&quot;);&lt;br /&gt;		for(var t=0; t&lt;createds.length; t++) {&lt;br /&gt;			var link=createTiddlyLink(popup,createds[t],false);&lt;br /&gt;			link.appendChild(document.createTextNode(indent+createds[t]));&lt;br /&gt;			createTiddlyElement(popup,&quot;br&quot;,null,null,null);&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;//}}}&lt;br /&gt;&lt;br /&gt;//{{{&lt;br /&gt;function indexModifieds() // build list of tiddlers, hash indexed by modification date&lt;br /&gt;{&lt;br /&gt;	var modifieds= { };&lt;br /&gt;	var tiddlers = store.getTiddlers(&quot;title&quot;,&quot;excludeLists&quot;);&lt;br /&gt;	for (var t = 0; t &lt; tiddlers.length; t++) {&lt;br /&gt;		var date = tiddlers[t].modified.formatString(&quot;YYYY0MM0DD&quot;)&lt;br /&gt;		if (!modifieds[date])&lt;br /&gt;			modifieds[date]=new Array();&lt;br /&gt;		modifieds[date].push(tiddlers[t].title);&lt;br /&gt;	}&lt;br /&gt;	return modifieds;&lt;br /&gt;}&lt;br /&gt;function hasModifieds(date) // returns true if date has modified tiddlers&lt;br /&gt;{&lt;br /&gt;	if (!config.macros.date.modifieds) config.macros.date.modifieds = indexModifieds();&lt;br /&gt;	return (config.macros.date.modifieds[date.formatString(&quot;YYYY0MM0DD&quot;)]!=undefined);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function addModifiedsToPopup(popup,when,format)&lt;br /&gt;{&lt;br /&gt;	var force=(store.isDirty() &amp;&amp; when.formatString(&quot;YYYY0MM0DD&quot;)==new Date().formatString(&quot;YYYY0MM0DD&quot;));&lt;br /&gt;	if (force || !config.macros.date.modifieds) config.macros.date.modifieds=indexModifieds();&lt;br /&gt;	var indent=String.fromCharCode(160)+String.fromCharCode(160);&lt;br /&gt;	var mods = config.macros.date.modifieds[when.formatString(&quot;YYYY0MM0DD&quot;)];&lt;br /&gt;	if (mods) {&lt;br /&gt;		mods.sort();&lt;br /&gt;		var e=createTiddlyElement(popup,&quot;div&quot;,null,null,&quot;changed:&quot;);&lt;br /&gt;		for(var t=0; t&lt;mods.length; t++) {&lt;br /&gt;			var link=createTiddlyLink(popup,mods[t],false);&lt;br /&gt;			link.appendChild(document.createTextNode(indent+mods[t]));&lt;br /&gt;			createTiddlyElement(popup,&quot;br&quot;,null,null,null);&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;//}}}&lt;br /&gt;&lt;br /&gt;//{{{&lt;br /&gt;function indexReminders(date,leadtime) // build list of tiddlers with reminders, hash indexed by reminder date&lt;br /&gt;{&lt;br /&gt;	var reminders = { };&lt;br /&gt;	if(window.findTiddlersWithReminders!=undefined) { // reminder plugin is installed&lt;br /&gt;		// DEBUG var starttime=new Date();&lt;br /&gt;		var t = findTiddlersWithReminders(date, [0,leadtime], null, null, 1);&lt;br /&gt;		for(var i=0; i&lt;t.length; i++) reminders[t[i].matchedDate]=true;&lt;br /&gt;		// DEBUG var out=&quot;Found &quot;+t.length+&quot; reminders in &quot;+((new Date())-starttime+1)+&quot;ms\n&quot;;&lt;br /&gt;		// DEBUG out+=&quot;startdate: &quot;+date.toLocaleDateString()+&quot;\n&quot;+&quot;leadtime: &quot;+leadtime+&quot; days\n\n&quot;;&lt;br /&gt;		// DEBUG for(var i=0; i&lt;t.length; i++) { out+=t[i].matchedDate.toLocaleDateString()+&quot; &quot;+t[i].params.title+&quot;\n&quot;; }&lt;br /&gt;		// DEBUG alert(out);&lt;br /&gt;	}&lt;br /&gt;	return reminders;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function hasReminders(date) // returns true if date has reminders&lt;br /&gt;{&lt;br /&gt;	if (window.reminderCacheForCalendar)&lt;br /&gt;		return window.reminderCacheForCalendar[date]; // use calendar cache&lt;br /&gt;	if (!config.macros.date.reminders)&lt;br /&gt;		config.macros.date.reminders = indexReminders(date,90); // create a 90-day leadtime reminder cache&lt;br /&gt;	return (config.macros.date.reminders[date]);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function addRemindersToPopup(popup,when,format)&lt;br /&gt;{&lt;br /&gt;	if(window.findTiddlersWithReminders==undefined) return; // reminder plugin not installed&lt;br /&gt;&lt;br /&gt;	var indent = String.fromCharCode(160)+String.fromCharCode(160);&lt;br /&gt;	var reminders=findTiddlersWithReminders(when, [0,31],null,null,1);&lt;br /&gt;	var e=createTiddlyElement(popup,&quot;div&quot;,null,null,&quot;reminders:&quot;+(!reminders.length?&quot; none&quot;:&quot;&quot;));&lt;br /&gt;	for(var t=0; t&lt;reminders.length; t++) {&lt;br /&gt;		link = createTiddlyLink(popup,reminders[t].tiddler,false);&lt;br /&gt;		var diff=reminders[t].diff;&lt;br /&gt;		diff=(diff&lt;1)?&quot;Today&quot;:((diff==1)?&quot;Tomorrow&quot;:diff+&quot; days&quot;);&lt;br /&gt;		var txt=(reminders[t].params[&quot;title&quot;])?reminders[t].params[&quot;title&quot;]:reminders[t].tiddler;&lt;br /&gt;		link.appendChild(document.createTextNode(indent+diff+&quot; - &quot;+txt));&lt;br /&gt;		createTiddlyElement(popup,&quot;br&quot;,null,null,null);&lt;br /&gt;	}&lt;br /&gt;	if (readOnly) return;	// omit &quot;new reminder...&quot; link&lt;br /&gt;	var link = createTiddlyLink(popup,indent+&quot;new reminder...&quot;,true); createTiddlyElement(popup,&quot;br&quot;);&lt;br /&gt;	var title = when.formatString(format);&lt;br /&gt;	link.title=&quot;add a reminder to '&quot;+title+&quot;'&quot;;&lt;br /&gt;	link.onclick = function() {&lt;br /&gt;		// show tiddler editor&lt;br /&gt;		story.displayTiddler(null, title, 2, null, null, false, false);&lt;br /&gt;		// find body 'textarea'&lt;br /&gt;		var c =document.getElementById(&quot;tiddler&quot; + title).getElementsByTagName(&quot;*&quot;);&lt;br /&gt;		for (var i=0; i&lt;c.length; i++) if ((c[i].tagName.toLowerCase()==&quot;textarea&quot;) &amp;&amp; (c[i].getAttribute(&quot;edit&quot;)==&quot;text&quot;)) break;&lt;br /&gt;		// append reminder macro to tiddler content&lt;br /&gt;		if (i&lt;c.length) {&lt;br /&gt;			if (store.tiddlerExists(title)) c[i].value+=&quot;\n&quot;; else c[i].value=&quot;&quot;;&lt;br /&gt;			c[i].value += &quot;&lt;&lt;reminder&quot;;&lt;br /&gt;			c[i].value += &quot; day:&quot;+when.getDate();&lt;br /&gt;			c[i].value += &quot; month:&quot;+(when.getMonth()+1);&lt;br /&gt;			c[i].value += &quot; year:&quot;+when.getFullYear();&lt;br /&gt;			c[i].value += ' title:&quot;Enter a title&quot; &gt;&gt;';&lt;br /&gt;		}&lt;br /&gt;	};&lt;br /&gt;}&lt;br /&gt;//}}}&lt;br /&gt;</description>
<category>systemConfig</category>
<link>http://www.tiddlywiki.com/#DatePlugin</link>
<pubDate>Wed, 20 Jun 2007 14:42:00 GMT</pubDate>
</item>
<item>
<title>News</title>
<description>Today is &lt;&lt;date link today &quot;DDD, MMM DDth, YYYY&quot;&gt;&gt; &lt;br /&gt;The current time is &lt;&lt;date today &quot;hh:mm&quot;&gt;&gt;&lt;br /&gt;&lt;br /&gt;!__Current Events__&lt;br /&gt;&lt;br /&gt;!__Past Events__</description>
<link>http://www.tiddlywiki.com/#News</link>
<pubDate>Wed, 20 Jun 2007 14:42:00 GMT</pubDate>
</item>
<item>
<title>L4Linux-2.6 System Call Locations</title>
<description>Note: all folders in l4linux-2.6/&lt;br /&gt;*Documentation/~DocBook/kernel-hacking.tmpl:&lt;br /&gt;**asmlinkage long sys_mycall(int arg)&lt;br /&gt;*arch/i386/kernel/sys_i386.c:&lt;br /&gt;**int sys_pipe(unsigned long _user * fildes)&lt;br /&gt;**int sys_olduname(struct oldold_utsname _user * name)&lt;br /&gt;**int old_select(struct sel_arg_struct _user *arg)&lt;br /&gt;**int old_mmap(struct mmap_arg_struct _user *arg)&lt;br /&gt;**int sys_uname(struct old_utsname _user * name)&lt;br /&gt;**int sys_ipc (uint call, int first, int second, int third, void _user *ptr, long fifth)&lt;br /&gt;**long sys_mmap2(unsigned long addr, unsigned long len, unsigned long prot, unsigned long flags, unsigned long fd, unsigned long pgoff)&lt;br /&gt;*arch/l4/kernel/arch-i386/ioport.c:&lt;br /&gt;**long sys_ioperm(unsigned long from, unsigned long num, int turn_on)&lt;br /&gt;**long sys_iopl(unsigned long unused)&lt;br /&gt;*arch/l4/kernel/arch-i386/ldt.c:&lt;br /&gt;**int sys_modify_ldt(int func, void _user *ptr, unsigned long bytecount)&lt;br /&gt;*arch/l4/kernel/arch-i386/process.c:&lt;br /&gt;**int sys_fork(void)&lt;br /&gt;**int sys_clone(void)&lt;br /&gt;**int sys_vfork(void)&lt;br /&gt;**int sys_execve(char *name, char **argv, char **envp)&lt;br /&gt;**int sys_set_thread_area(struct user_desc _user *u_info)&lt;br /&gt;**int sys_get_thread_area(struct user_desc _user *u_info)&lt;br /&gt;*arch/l4/kernel/arch-i386/ptrace.c:&lt;br /&gt;**int sys_ptrace(long request, long pid, long addr, long data)&lt;br /&gt;*arch/l4/kernel/arch-i386/signal.c:&lt;br /&gt;**int sys_sigaltstack(unsigned long ebx)&lt;br /&gt;**int sys_rt_sigsuspend(struct pt_regs _regs)&lt;br /&gt;**int sys_sigreturn(unsigned long _unused)&lt;br /&gt;**int sys_rt_sigreturn(unsigned long _unused)&lt;br /&gt;**int sys_sigaction(int sig, const struct old_sigaction _user *act, struct old_sigaction _user *oact)&lt;br /&gt;**int sys_sigsuspend(int history0, int history1, old_sigset_t mask)&lt;br /&gt;*arch/l4/kernel/arch-i386/unimpl.c:&lt;br /&gt;**int sys_vm86(void)&lt;br /&gt;**int sys_vm86old(void)&lt;br /&gt;*fs/aio.c:&lt;br /&gt;**long sys_io_setup(unsigned nr_events, aio_context_t _user *ctxp)&lt;br /&gt;**long sys_io_destroy(aio_context_t ctx)&lt;br /&gt;**long sys_io_submit(aio_context_t ctx_id, long nr, struct iocb _user * _user *iocbpp)&lt;br /&gt;**long sys_io_cancel(aio_context_t ctx_id, struct iocb _user *iocb, struct io_event _user *result)&lt;br /&gt;**long sys_io_getevents(aio_context_t ctx_id, long min_nr, long nr, struct io_event _user *events, struct timespec _user *timeout)&lt;br /&gt;*fs/buffer.c:&lt;br /&gt;**long sys_sync(void)&lt;br /&gt;**long sys_fsync(unsigned int fd)&lt;br /&gt;**long sys_fdatasync(unsigned int fd)&lt;br /&gt;**long sys_bdflush(int func, long data)&lt;br /&gt;*fs/dcache.c:&lt;br /&gt;**long sys_getcwd(char _user *buf, unsigned long size)&lt;br /&gt;*fs/dcookies.c:&lt;br /&gt;**long sys_lookup_dcookie(u64 cookie64, char _user * buf, size_t len)&lt;br /&gt;*fs/eventpoll.c:&lt;br /&gt;**long sys_epoll_ctl(int epfd, int op, int fd, struct epoll_event _user *event)&lt;br /&gt;**long sys_epoll_create(int size)&lt;br /&gt;**long sys_epoll_wait(int epfd, struct epoll_event _user *events, int maxevents, int timeout)&lt;br /&gt;*fs/exec.c:&lt;br /&gt;**long sys_uselib(const char _user * library)&lt;br /&gt;*fs/fcntl.c:&lt;br /&gt;**long sys_dup2(unsigned int oldfd, unsigned int newfd)&lt;br /&gt;**long sys_dup(unsigned int fildes)&lt;br /&gt;**long sys_fcntl(unsigned int fd, unsigned int cmd, unsigned long arg)&lt;br /&gt;**long sys_fcntl64(unsigned int fd, unsigned int cmd, unsigned long arg)&lt;br /&gt;*fs/filesystems.c:&lt;br /&gt;**long sys_sysfs(int option, unsigned long arg1, unsigned long arg2)&lt;br /&gt;*fs/ioctl.c:&lt;br /&gt;**long sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg)&lt;br /&gt;*fs/locks.c:&lt;br /&gt;**long sys_flock(unsigned int fd, unsigned int cmd)&lt;br /&gt;*fs/namei.c:&lt;br /&gt;**long sys_mknod(const char _user * filename, int mode, unsigned dev)&lt;br /&gt;**long sys_mkdir(const char _user * pathname, int mode)&lt;br /&gt;**long sys_rmdir(const char _user * pathname)&lt;br /&gt;**long sys_unlink(const char _user * pathname)&lt;br /&gt;**long sys_symlink(const char _user * oldname, const char _user * newname)&lt;br /&gt;**long sys_link(const char _user * oldname, const char _user * newname)&lt;br /&gt;**long sys_rename(const char _user * oldname, const char _user * newname)&lt;br /&gt;*fs/namespace.c:&lt;br /&gt;**long sys_umount(char _user * name, int flags)&lt;br /&gt;**long sys_oldumount(char _user * name)&lt;br /&gt;**long sys_mount(char _user * dev_name, char _user * dir_name, char _user * type, unsigned long flags, void _user * data)&lt;br /&gt;**long sys_pivot_root(const char _user *new_root, const char _user *put_old)&lt;br /&gt;*fs/nfsctl.c:&lt;br /&gt;**sys_nfsservctl(int cmd, struct nfsctl_arg _user *arg, void _user *res)&lt;br /&gt;*fs/open.c:&lt;br /&gt;**long sys_statfs(const char _user * path, struct statfs _user * buf)&lt;br /&gt;**long sys_statfs64(const char _user *path, size_t sz, struct statfs64 _user *buf)&lt;br /&gt;**long sys_fstatfs(unsigned int fd, struct statfs _user * buf)&lt;br /&gt;**long sys_fstatfs64(unsigned int fd, size_t sz, struct statfs64 _user *buf)&lt;br /&gt;**long sys_truncate(const char _user * path, unsigned long length)&lt;br /&gt;**long sys_ftruncate(unsigned int fd, unsigned long length)&lt;br /&gt;**long sys_truncate64(const char _user * path, loff_t length)&lt;br /&gt;**long sys_ftruncate64(unsigned int fd, loff_t length)&lt;br /&gt;**long sys_utime(char _user * filename, struct utimbuf _user * times)&lt;br /&gt;**long sys_utimes(char _user * filename, struct timeval _user * utimes)&lt;br /&gt;**long sys_access(const char _user * filename, int mode)&lt;br /&gt;**long sys_chdir(const char _user * filename)&lt;br /&gt;**long sys_fchdir(unsigned int fd)&lt;br /&gt;**long sys_chroot(const char _user * filename)&lt;br /&gt;**long sys_fchmod(unsigned int fd, mode_t mode)&lt;br /&gt;**long sys_chmod(const char _user * filename, mode_t mode)&lt;br /&gt;**long sys_chown(const char _user * filename, uid_t user, gid_t group)&lt;br /&gt;**long sys_lchown(const char _user * filename, uid_t user, gid_t group)&lt;br /&gt;**long sys_fchown(unsigned int fd, uid_t user, gid_t group)&lt;br /&gt;**long sys_open(const char _user * filename, int flags, int mode)&lt;br /&gt;**long sys_creat(const char _user * pathname, int mode)&lt;br /&gt;**long sys_close(unsigned int fd)&lt;br /&gt;**long sys_vhangup(void)&lt;br /&gt;*fs/quota.c:&lt;br /&gt;**long sys_quotactl(unsigned int cmd, const char _user *special, qid_t id, void _user *addr)&lt;br /&gt;*fs/read_write.c:&lt;br /&gt;**ssize_t sys_readv(unsigned long fd, const struct iovec _user *vec, unsigned long vlen)&lt;br /&gt;**size_t sys_writev(unsigned long fd, const struct iovec _user *vec, unsigned long vlen)&lt;br /&gt;**off_t sys_lseek(unsigned int fd, off_t offset, unsigned int origin)&lt;br /&gt;**long sys_llseek(unsigned int fd, unsigned long offset_high, unsigned long offset_low, loff_t _user * result, unsigned int origin)&lt;br /&gt;**ssize_t sys_read(unsigned int fd, char _user * buf, size_t count)&lt;br /&gt;**ssize_t sys_write(unsigned int fd, const char _user * buf, size_t count)&lt;br /&gt;**ssize_t sys_pread64(unsigned int fd, char _user *buf, size_t count, loff_t pos)&lt;br /&gt;**ssize_t sys_pwrite64(unsigned int fd, const char _user *buf, size_t count, loff_t pos)&lt;br /&gt;**ssize_t sys_sendfile(int out_fd, int in_fd, off_t _user *offset, size_t count)&lt;br /&gt;**ssize_t sys_sendfile64(int out_fd, int in_fd, loff_t _user *offset, size_t count)&lt;br /&gt;*fs/readdir.c:&lt;br /&gt;**long old_readdir(unsigned int fd, struct old_linux_dirent _user * dirent, unsigned int count)&lt;br /&gt;**long sys_getdents(unsigned int fd, struct linux_dirent _user * dirent, unsigned int count)&lt;br /&gt;**long sys_getdents64(unsigned int fd, struct linux_dirent64 _user * dirent, unsigned int count)&lt;br /&gt;*fs/select.c:&lt;br /&gt;**long sys_poll(struct pollfd _user * ufds, unsigned int nfds, long timeout)&lt;br /&gt;**long sys_select(int n, fd_set _user *inp, fd_set _user *outp, fd_set _user *exp, struct timeval _user *tvp)&lt;br /&gt;*fs/stat.c:&lt;br /&gt;**long sys_stat(char _user * filename, struct _old_kernel_stat _user * statbuf)&lt;br /&gt;**long sys_lstat(char _user * filename, struct _old_kernel_stat _user * statbuf)&lt;br /&gt;**long sys_fstat(unsigned int fd, struct _old_kernel_stat _user * statbuf)&lt;br /&gt;**long sys_newstat(char _user * filename, struct stat _user * statbuf)&lt;br /&gt;**long sys_newlstat(char _user * filename, struct stat _user * statbuf)&lt;br /&gt;**long sys_newfstat(unsigned int fd, struct stat _user * statbuf)&lt;br /&gt;**long sys_readlink(const char _user * path, char _user * buf, int bufsiz)&lt;br /&gt;**long sys_stat64(char _user * filename, struct stat64 _user * statbuf)&lt;br /&gt;**long sys_lstat64(char _user * filename, struct stat64 _user * statbuf)&lt;br /&gt;**long sys_fstat64(unsigned long fd, struct stat64 _user * statbuf)&lt;br /&gt;*fs/super.c:&lt;br /&gt;**long sys_ustat(unsigned dev, struct ustat _user * ubuf)&lt;br /&gt;*fs/xattr.c:&lt;br /&gt;**long sys_setxattr(char _user *path, char _user *name, void _user *value, size_t size, int flags)&lt;br /&gt;**long sys_lsetxattr(char _user *path, char _user *name, void _user *value, size_t size, int flags)&lt;br /&gt;**long sys_fsetxattr(int fd, char _user *name, void _user *value, size_t size, int flags)&lt;br /&gt;**ssize_t sys_getxattr(char _user *path, char _user *name, void _user *value, size_t size)&lt;br /&gt;**ssize_t sys_lgetxattr(char _user *path, char _user *name, void _user *value, size_t size)&lt;br /&gt;**ssize_t sys_fgetxattr(int fd, char _user *name, void _user *value, size_t size)&lt;br /&gt;**ssize_t sys_listxattr(char _user *path, char _user *list, size_t size)&lt;br /&gt;**ssize_t sys_llistxattr(char _user *path, char _user *list, size_t size)&lt;br /&gt;**ssize_t sys_flistxattr(int fd, char _user *list, size_t size)&lt;br /&gt;**long sys_removexattr(char _user *path, char _user *name)&lt;br /&gt;**long sys_lremovexattr(char _user *path, char _user *name)&lt;br /&gt;**long sys_fremovexattr(int fd, char _user *name)&lt;br /&gt;*ipc/mqueue.c:&lt;br /&gt;**long sys_mq_open(const char _user *u_name, int oflag, mode_t mode, int oflag, mode_t mode, struct mq_attr _user *u_attr)&lt;br /&gt;**long sys_mq_unlink(const char _user *u_name)&lt;br /&gt;**long sys_mq_timedsend(mqd_t mqdes, const char _user *u_msg_ptr, size_t msg_len, unsigned int msg_prio, const struct timespec _user *u_abs_timeout)&lt;br /&gt;**ssize_t sys_mq_timedreceive(mqd_t mqdes, char _user *u_msg_ptr, size_t msg_len, unsigned int _user *u_msg_prio, const struct timespec _user *u_abs_timeout)&lt;br /&gt;**long sys_mq_notify(mqd_t mqdes, const struct sigevent _user *u_notification)&lt;br /&gt;**long sys_mq_getsetattr(mqd_t mqdes, const struct mq_attr _user *u_mqstat, struct mq_attr _user *u_omqstat)&lt;br /&gt;*kernel/acct.c:&lt;br /&gt;**long sys_acct(const char _user *name)&lt;br /&gt;*kernel/capability.c:&lt;br /&gt;**long sys_capget(cap_user_header_t header, cap_user_data_t dataptr)&lt;br /&gt;**long sys_capset(cap_user_header_t header, const cap_user_data_t data)&lt;br /&gt;*kernel/exec_domain.c:&lt;br /&gt;**long sys_personality(u_long personality)&lt;br /&gt;*kernel/exit.c:&lt;br /&gt;**long sys_exit(int error_code)&lt;br /&gt;**void sys_exit_group(int error_code)&lt;br /&gt;**long sys_waitid(int which, pid_t pid, struct siginfo _user *infop, int options, struct rusage _user *ru)&lt;br /&gt;**long sys_wait4(pid_t pid, int _user *stat_addr, int options, struct rusage _user *ru)&lt;br /&gt;**long sys_waitpid(pid_t pid, int _user *stat_addr, int options)&lt;br /&gt;*kernel/fork.c:&lt;br /&gt;**long sys_set_tid_address(int _user *tidptr)&lt;br /&gt;*kernel/futex.c:&lt;br /&gt;**long sys_futex(u32 _user *uaddr, int op, int val, struct timespec _user *utime, u32 _user *uaddr2, int val3)&lt;br /&gt;*kernel/itimer.c:&lt;br /&gt;**long sys_getitimer(int which, struct itimerval _user *value)&lt;br /&gt;**long sys_setitimer(int which, struct itimerval _user *value, struct itimerval _user *ovalue)&lt;br /&gt;*kernel/module.c:&lt;br /&gt;**long sys_init_module(void _user *umod, unsigned long len, const char _user *uargs)&lt;br /&gt;**long sys_delete_module(const char _user *name_user, unsigned int flags)&lt;br /&gt;*kernel/posix-timers.c:&lt;br /&gt;**long sys_timer_create(clockid_t which_clock, struct sigevent _user *timer_event_spec, timer_t _user * created_timer_id)&lt;br /&gt;**long sys_timer_settime(timer_t timer_id, int flags, const struct itimerspec _user *new_setting, struct itimerspec _user *old_setting)&lt;br /&gt;**long sys_timer_gettime(timer_t timer_id, struct itimerspec _user *setting)&lt;br /&gt;**long sys_timer_getoverrun(timer_t timer_id)&lt;br /&gt;**long sys_timer_delete(timer_t timer_id)&lt;br /&gt;**long sys_clock_gettime(clockid_t which_clock, struct timespec _user *tp)&lt;br /&gt;**long sys_clock_settime(clockid_t which_clock, const struct timespec _user *tp)&lt;br /&gt;**long sys_clock_getres(clockid_t which_clock, struct timespec _user *tp)&lt;br /&gt;**long sys_clock_nanosleep(clockid_t which_clock, int flags, const struct timespec _user *rqtp, struct timespec _user *rmtp)&lt;br /&gt;*kernel/printk.c:&lt;br /&gt;**long sys_syslog(int type, char _user * buf, int len)&lt;br /&gt;*kernel/sched.c:&lt;br /&gt;**long sys_nice(int increment)&lt;br /&gt;**long sys_sched_setscheduler(pid_t pid, int policy, struct sched_param _user *param)&lt;br /&gt;**long sys_sched_setparam(pid_t pid, struct sched_param _user *param)&lt;br /&gt;**long sys_sched_getscheduler(pid_t pid)&lt;br /&gt;**long sys_sched_getparam(pid_t pid, struct sched_param _user *param)&lt;br /&gt;**long sys_sched_setaffinity(pid_t pid, unsigned int len, unsigned long _user *user_mask_ptr)&lt;br /&gt;**long sys_sched_getaffinity(pid_t pid, unsigned int len, unsigned long _user *user_mask_ptr)&lt;br /&gt;**long sys_sched_yield(void)&lt;br /&gt;**long sys_sched_get_priority_max(int policy)&lt;br /&gt;**long sys_sched_get_priority_min(int policy)&lt;br /&gt;**long sys_sched_rr_get_interval(pid_t pid, struct timespec _user *interval)&lt;br /&gt;*kernel/signal.c:&lt;br /&gt;**long sys_tkill(int pid, int sig)&lt;br /&gt;**long sys_rt_sigaction(int sig, const struct sigaction _user *act, struct sigaction _user *oact, size_t sigsetsize)&lt;br /&gt;**long sys_rt_sigprocmask(int how, sigset_t _user *set, sigset_t _user *oset, size_t sigsetsize)&lt;br /&gt;**long sys_rt_sigpending(sigset_t _user *set, size_t sigsetsize)&lt;br /&gt;**long sys_rt_sigtimedwait(const sigset_t _user *uthese, siginfo_t _user *uinfo, const struct timespec _user *uts, size_t sigsetsize)&lt;br /&gt;**long sys_rt_sigqueueinfo(int pid, int sig, siginfo_t _user *uinfo)&lt;br /&gt;**long sys_sigprocmask(int how, old_sigset_t _user *set, old_sigset_t _user *oset)&lt;br /&gt;**long sys_restart_syscall(void)&lt;br /&gt;**long sys_tgkill(int tgid, int pid, int sig)&lt;br /&gt;**long sys_pause(void)&lt;br /&gt;**long sys_kill(int pid, int sig)&lt;br /&gt;**unsigned long sys_signal(int sig, _sighandler_t handler)&lt;br /&gt;**long sys_sgetmask(void)&lt;br /&gt;**long sys_ssetmask(int newmask)&lt;br /&gt;**long sys_sigpending(old_sigset_t _user *set)&lt;br /&gt;*kernel/sys.c:&lt;br /&gt;**long sys_setpriority(int which, int who, int niceval)&lt;br /&gt;**long sys_getpriority(int which, int who)&lt;br /&gt;**long sys_reboot(int magic1, int magic2, unsigned int cmd, void _user * arg)&lt;br /&gt;**long sys_setregid(gid_t rgid, gid_t egid)&lt;br /&gt;**long sys_setgid(gid_t gid)&lt;br /&gt;**long sys_setreuid(uid_t ruid, uid_t euid)&lt;br /&gt;**long sys_setuid(uid_t uid)&lt;br /&gt;**long sys_setresuid(uid_t ruid, uid_t euid, uid_t suid)&lt;br /&gt;**long sys_getresuid(uid_t _user *ruid, uid_t _user *euid, uid_t _user *suid)&lt;br /&gt;**long sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid)&lt;br /&gt;**long sys_getresgid(gid_t _user *rgid, gid_t _user *egid, gid_t _user *sgid)&lt;br /&gt;**long sys_setfsuid(uid_t uid)&lt;br /&gt;**long sys_setfsgid(gid_t gid)&lt;br /&gt;**long sys_times(struct tms _user * tbuf)&lt;br /&gt;**long sys_setpgid(pid_t pid, pid_t pgid)&lt;br /&gt;**long sys_getpgid(pid_t pid)&lt;br /&gt;**long sys_getpgrp(void)&lt;br /&gt;**long sys_getsid(pid_t pid)&lt;br /&gt;**long sys_setsid(void)&lt;br /&gt;**long sys_getgroups(int gidsetsize, gid_t _user *grouplist)&lt;br /&gt;**long sys_setgroups(int gidsetsize, gid_t _user *grouplist)&lt;br /&gt;**long sys_newuname(struct new_utsname _user * name)&lt;br /&gt;**long sys_sethostname(char _user *name, int len)&lt;br /&gt;**long sys_setdomainname(char _user *name, int len)&lt;br /&gt;**long sys_getrlimit(unsigned int resource, struct rlimit _user *rlim)&lt;br /&gt;**long sys_old_getrlimit(unsigned int resource, struct rlimit _user *rlim)&lt;br /&gt;**long sys_setrlimit(unsigned int resource, struct rlimit _user *rlim)&lt;br /&gt;**long sys_getrusage(int who, struct rusage _user *ru)&lt;br /&gt;**long sys_umask(int mask)&lt;br /&gt;**long sys_prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5)&lt;br /&gt;*kernel/sys_ni.c:&lt;br /&gt;**long sys_ni_syscall(void)&lt;br /&gt;*kernel/sysctl.c:&lt;br /&gt;**long sys_sysctl(struct _sysctl_args _user *args)&lt;br /&gt;*kernel/time.c:&lt;br /&gt;**long sys_time(time_t _user * tloc)&lt;br /&gt;**long sys_stime(time_t _user *tptr)&lt;br /&gt;**long sys_gettimeofday(struct timeval _user *tv, struct timezone _user *tz)&lt;br /&gt;**long sys_settimeofday(struct timeval _user *tv, struct timezone _user *tz)&lt;br /&gt;**long sys_adjtimex(struct timex _user *txc_p)&lt;br /&gt;*kernel/timer.c:&lt;br /&gt;**unsigned long sys_alarm(unsigned int seconds)&lt;br /&gt;**long sys_getpid(void)&lt;br /&gt;**long sys_getppid(void)&lt;br /&gt;**long sys_getuid(void)&lt;br /&gt;**long sys_geteuid(void)&lt;br /&gt;**long sys_getgid(void)&lt;br /&gt;**long sys_getegid(void)&lt;br /&gt;**long sys_gettid(void)&lt;br /&gt;**long sys_nanosleep(struct timespec _user *rqtp, struct timespec _user *rmtp)&lt;br /&gt;**long sys_sysinfo(struct sysinfo _user *info)&lt;br /&gt;*kernel/uid16.c:&lt;br /&gt;**long sys_chown16(const char _user * filename, old_uid_t user, old_gid_t group)&lt;br /&gt;**long sys_lchown16(const char _user * filename, old_uid_t user, old_gid_t group)&lt;br /&gt;**long sys_fchown16(unsigned int fd, old_uid_t user, old_gid_t group)&lt;br /&gt;**long sys_setregid16(old_gid_t rgid, old_gid_t egid)&lt;br /&gt;**long sys_setgid16(old_gid_t gid)&lt;br /&gt;**long sys_setreuid16(old_uid_t ruid, old_uid_t euid)&lt;br /&gt;**long sys_setuid16(old_uid_t uid)&lt;br /&gt;**long sys_setresuid16(old_uid_t ruid, old_uid_t euid, old_uid_t suid)&lt;br /&gt;**long sys_getresuid16(old_uid_t _user *ruid, old_uid_t _user *euid, old_uid_t _user *suid)&lt;br /&gt;**long sys_setresgid16(old_gid_t rgid, old_gid_t egid, old_gid_t sgid)&lt;br /&gt;**long sys_getresgid16(old_gid_t _user *rgid, old_gid_t _user *egid, old_gid_t _user *sgid)&lt;br /&gt;**long sys_setfsuid16(old_uid_t uid)&lt;br /&gt;**long sys_setfsgid16(old_gid_t gid)&lt;br /&gt;**long sys_getgroups16(int gidsetsize, old_gid_t _user *grouplist)&lt;br /&gt;**long sys_setgroups16(int gidsetsize, old_gid_t _user *grouplist)&lt;br /&gt;**long sys_getuid16(void)&lt;br /&gt;**long sys_geteuid16(void)&lt;br /&gt;**long sys_getgid16(void)&lt;br /&gt;**long sys_getegid16(void)&lt;br /&gt;*mm/fadvise.c:&lt;br /&gt;**long sys_fadvise64_64(int fd, loff_t offset, loff_t len, int advice)&lt;br /&gt;**long sys_fadvise64(int fd, loff_t offset, size_t len, int advice)&lt;br /&gt;*mm/filemap.c:&lt;br /&gt;**ssize_t sys_readahead(int fd, loff_t offset, size_t count)&lt;br /&gt;*mm/fremap.c:&lt;br /&gt;**long sys_remap_file_pages(unsigned long start, unsigned long size, unsigned long _prot, unsigned long pgoff, unsigned long flags)&lt;br /&gt;*mm/madvise.c:&lt;br /&gt;**long sys_madvise(unsigned long start, size_t len_in, int behavior)&lt;br /&gt;*mm/mempolicy.c:&lt;br /&gt;**long sys_mbind(unsigned long start, unsigned long len, unsigned long mode, unsigned long _user *nmask, unsigned long maxnode, unsigned flags)&lt;br /&gt;**long sys_set_mempolicy(int mode, unsigned long _user *nmask, unsigned long maxnode)&lt;br /&gt;**long sys_get_mempolicy(int _user *policy, unsigned long _user *nmask, unsigned long maxnode, unsigned long addr, unsigned long flags&lt;br /&gt;*mm/mincore.c:&lt;br /&gt;**long sys_mincore(unsigned long start, size_t len, unsigned char _user * vec)&lt;br /&gt;*mm/mlock.c:&lt;br /&gt;**long sys_mlock(unsigned long start, size_t len)&lt;br /&gt;**long sys_munlock(unsigned long start, size_t len)&lt;br /&gt;**long sys_mlockall(int flags)&lt;br /&gt;**long sys_munlockall(void)&lt;br /&gt;*mm/mmap.c:&lt;br /&gt;**unsigned long sys_brk(unsigned long brk)&lt;br /&gt;**long sys_munmap(unsigned long addr, size_t len)&lt;br /&gt;*mm/mremap.c:&lt;br /&gt;**unsigned long sys_mremap(unsigned long addr, unsigned long old_len, unsigned long new_len, unsigned long flags, unsigned long new_addr)&lt;br /&gt;*mm/msync.c:&lt;br /&gt;**long sys_msync(unsigned long start, size_t len, int flags)&lt;br /&gt;*mm/nommu.c:&lt;br /&gt;**unsigned long sys_brk(unsigned long brk)&lt;br /&gt;**long sys_munmap(unsigned long addr, size_t len)&lt;br /&gt;*mm/mprotect.c:&lt;br /&gt;**long sys_mprotect(unsigned long start, size_t len, unsigned long prot)&lt;br /&gt;*mm/swapfile.c:&lt;br /&gt;**long sys_swapoff(const char _user * specialfile)&lt;br /&gt;**long sys_swapon(const char _user * specialfile, int swap_flags)&lt;br /&gt;*security/keys/keyctl.c:&lt;br /&gt;**long sys_add_key(const char _user *_type, const char _user *_description, const void _user *_payload, size_t plen, key_serial_t ringid)&lt;br /&gt;**long sys_request_key(const char _user *_type, const char _user *_description, const char _user *_callout_info, key_serial_t destringid)&lt;br /&gt;**long sys_keyctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5)&lt;br /&gt;</description>
<link>http://www.tiddlywiki.com/#%5B%5BL4Linux-2.6%20System%20Call%20Locations%5D%5D</link>
<pubDate>Wed, 20 Jun 2007 13:44:00 GMT</pubDate>
</item>
<item>
<title>spine</title>
<description>This is a random collection of L4 notes until we get enough content to organize.&lt;br /&gt;!__Links__&lt;br /&gt;*[[L4 Fiasco homepage|http://os.inf.tu-dresden.de/fiasco/]]&lt;br /&gt;*[[L4 lecture slides|http://os.inf.tu-dresden.de/Studium/KMB/SS2004/]]&lt;br /&gt;*[[L4Linux homepage|http://os.inf.tu-dresden.de/L4/LinuxOnL4/]]&lt;br /&gt;*[[L4 system call C-bindings reference manual (L4 version 2)|http://os.inf.tu-dresden.de/l4env/doc/l4sys-l4v2/]]&lt;br /&gt;*[[Subscribe to l4-hackers mailing list|http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers]]&lt;br /&gt;*[[L4-hackers mail archive|http://os.inf.tu-dresden.de/pipermail/l4-hackers/]]&lt;br /&gt;*[[Manpages for L4/x86 and Fiasco system calls and services|http://os.inf.tu-dresden.de/L4/l4man.html]]&lt;br /&gt;*[[Manpage for Fiasco kernel|http://os.inf.tu-dresden.de/fiasco/man.html]]&lt;br /&gt;*[[L4 Environment|http://os.inf.tu-dresden.de/l4env/]]&lt;br /&gt;*[[Multiboot specification|http://orgs.man.ac.uk/documentation/grub/multiboot.html]]&lt;br /&gt;*[[Linux System Calls|http://www.cs4nerds.com/school/resources/syscalls.htm]]&lt;br /&gt;*[[Linux Source Code|http://lxr.linux.no]]&lt;br /&gt;*[[Export of Sys Call Table|http://seclists.org/lists/linux-kernel/2002/Oct/1192.html]]&lt;br /&gt;!__Installation Notes__&lt;br /&gt;*[[20041021 Installation Notes for Hello World Example|20041021_l4_install.notes]]&lt;br /&gt;*[[20050523 Installation Notes for Hello World Example|20050523_l4_install.notes]]&lt;br /&gt;*[[20050629 Installation Notes for L4Linux-2.6|20050629_l4linux26_install.notes]]&lt;br /&gt;&lt;br /&gt;!__20050706 Test Box Setup Notes__&lt;br /&gt;# install debian from CD&lt;br /&gt;# add sources to /etc/apt/sources.list &lt;br /&gt;##e.g.&lt;br /&gt;##deb http://mirrors.kernel.org/debian/ sarge main&lt;br /&gt;##deb http://mirrors.kernel.org/debian/ sarge contrib&lt;br /&gt;##deb http://mirrors.kernel.org/debian/ sarge non-free&lt;br /&gt;##deb-src http://mirrors.kernel.org/debian/ sarge main&lt;br /&gt;##deb-src http://mirrors.kernel.org/debian/ sarge contrib&lt;br /&gt;##deb-src http://mirrors.kernel.org/debian/ sarge non-free&lt;br /&gt;##deb http://security.debian.org/ sarge/updates main&lt;br /&gt;##deb http://security.debian.org/ sarge/updates contrib&lt;br /&gt;##deb http://security.debian.org/ sarge/updates non-free&lt;br /&gt;# apt-get install ssh&lt;br /&gt;# setup public key:&lt;br /&gt;##scp ~/.ssh/id_rsa.pub ${1}:&lt;br /&gt;##ssh ${1} &quot;mkdir -p .ssh &amp;&amp; cat id_rsa.pub &gt;&gt;.ssh/authorized_keys&quot;&lt;br /&gt;##ssh ${1} &quot;chmod og-rwx .ssh/authorized_keys&quot;&lt;br /&gt;##ssh ${1} &quot;rm id_rsa.pub&quot;&lt;br /&gt;##WHERE ${1} is of the form @&lt;br /&gt;#add development IP to /etc/hosts file&lt;br /&gt;#apt-get install gcc-2.95 gcc binutils-doc cpp-doc make manpages-dev autoconf automake libtool flex bison gdb gcc-doc gcc-3.3-doc libc-dev libc6-dev libncurses5-dev gawk module-init-tools g++ python zlib1g zlib1g-dev latex latex2html transfig tetex-extra vim-full cvs&lt;br /&gt;#cd /usr/bin&lt;br /&gt;#rm gcc&lt;br /&gt;#ln -s gcc-2.95 gcc&lt;br /&gt;#scp grub from /group/logger/20050523_fiasco_cvs/grub&lt;br /&gt;#cd grub&lt;br /&gt;#./configure&lt;br /&gt;#make&lt;br /&gt;#make install&lt;br /&gt;#/usr/local/sbin/grub-install /dev/hda1&lt;br /&gt;!__RMGR Congiguration Example - Limit ~L4Linux Memory__&lt;br /&gt;&lt;br /&gt;__Contents of menu.lst file:__&lt;br /&gt;title ~L4Linux&lt;br /&gt;   root (hd0,0)&lt;br /&gt;   kernel /boot/rmgr_mod -sigma0 -configfile&lt;br /&gt;   modaddr 0x02000000&lt;br /&gt;   module /boot/main -nokdb -nowait -serial -comport 1&lt;br /&gt;   module /boot/sigma0&lt;br /&gt;   module /boot/rmgr.cfg&lt;br /&gt;   module /boot/vmlinuz.V2 no-scroll no-hlt l4irqack=linux root=/dev/hda1&lt;br /&gt;__Contents of rmgr.cfg file:__&lt;br /&gt;task modname &quot;vmlinuz&quot;&lt;br /&gt;memory max 0x10000000 in [0, 0x10000000]&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;!__Directory/File Locations__&lt;br /&gt;main kernel source&lt;br /&gt;DIR: l4/kernel/fiasco/src/kern&lt;br /&gt;&lt;br /&gt;interrupt descriptor table&lt;br /&gt;FILE: l4/kernel/fiasco/src/kern/shared/idt.cpp&lt;br /&gt;&lt;br /&gt;linux sys calls&lt;br /&gt;FILE: l4linux-2.4/arch/l4/kernel/entry.S&lt;br /&gt;&lt;br /&gt;L4 emulates syscalls&lt;br /&gt;DIR: l4linux-2.4/arch/l4/emulib/&lt;br /&gt;&lt;br /&gt;L4 emulates syscalls - main&lt;br /&gt;FILE: l4linux-2.4/arch/l4/emulib/user.c&lt;br /&gt;!__L4 ~APIs __&lt;br /&gt;Notes from [[l4-hackers mailing archive|http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers]] (March 14, 2003):&lt;br /&gt;&lt;br /&gt;There are currently three L4 ~APIs in more or less widespread use:&lt;br /&gt;-//Version 2//, //Version X.0//, and //Version X.2// (aka, Version 4)&lt;br /&gt;!!*Version 2&lt;br /&gt;This is the original L4 API as implemented in Jochens assembly kernels. The API supports 64 bit thread ~IDs with subfields containing (among other things) the thread no, task no, chief no, and version no.&lt;br /&gt;&lt;br /&gt;The chief field of the thread ID is used for implementing the Clans &amp; Chiefs security model. A thread within a Clan can only communicate with other threads within the Clan, or the Chief of the Clan. Any attempt to communicate with any outside parties are automatically redirected to the Chief. The Chief is then used to enforce the communication security policies for the threads within its Clan.&lt;br /&gt;&lt;br /&gt;Having large thread ~IDs also enables a relatively large number of threads/tasks to be created. However, the fixed amount of bits allocated to thread numbers and task numbers still makes the scheme unsuitable for many purposes. (There can only be a fixed amount of threads within a task. For most purposes this amount is way to high. For other purposes the amount of threads within a task is to low.) The fixed association of threads to tasks also makes it impossible to migrate a thread to another address spaces---an important operation for NUMA systems.&lt;br /&gt;&lt;br /&gt;      The original Version 2 API is very ia32 specific. ~APIs for other architectures (e.g., MIPS and Alpha) have been ported to the Version 2 API in ad hoc ways.&lt;br /&gt;&lt;br /&gt;      Fiasco implements the Version 2 API.&lt;br /&gt;!!*Version X.0&lt;br /&gt;This API was targeted at dealing with some of the problems experienced with the Version 2 API. The API is very similar to Version 2, the most notable differences being the 32 bit thread ~IDs and the lack of Clans &amp; Chiefs.&lt;br /&gt;&lt;br /&gt;The change in the thread ID came about because the Version 2 thread ~IDs were found to be unwieldly and inflexible. Reducing the ID to 32 bits freed up one register for other purposes and made thread ID handling more efficient. The freed up register enabled the IPC ABI to be use 50% more registers (i.e., 3 instead of 2) for register only IPC transfer. This boosted performance for many common micro kernel applications.&lt;br /&gt;&lt;br /&gt;The Clans and Chiefs model of Version 2 was found to be way to inefficient for most purposes (the overhead of redirection was too great). The scheme is also unflexible since a thread is tied to a Chief for the complete lifetime of the thread (the Chief is specified in the thread ID). This prevents dynamically changing security policies to be implemented efficiently. With Version X.0 we experimented with other ways to deal with security policies. Most notable is a more flexible and efficient IPC redirection scheme (implemented in IBM internal versions of L4, not in Hazelnut).&lt;br /&gt;&lt;br /&gt;It should be noted that the Version X.0 API was not meant to necessarily solve all the problems with the Version 2 API. Rather, the API was meant as an experimental, albeit very stable, test-bench (hance the X in the version number) to try out new ideas. It was merely meant as a step in the direction of what we envisioned the new improved next generation microkernel API to look like. In particular, the API does not solve all the issues related to flexible and efficient security policy management.&lt;br /&gt;&lt;br /&gt;      Hazelnut implements the Version X.0 API.&lt;br /&gt;!!*Version X.2 (aka. Version 4)&lt;br /&gt;This API aims at solving many of the problems we identified while working with the X.0 API. The task ~IDs are now completely separated from the thread ~IDs; task (address space) and thread management is separated. The memory management is more flexible. The IPC operation is more powerful and allows for medium and short size messages to be transferred more efficiently. There is support for multiprocessing, and the API enables better control over processor and system resources.&lt;br /&gt;&lt;br /&gt;The most notable difference for the users of the new API is that there is now a clear separation between API and ABI. This makes Version X.2 (Version 4) compliant L4 applications much more portable.&lt;br /&gt;&lt;br /&gt;Pistachio implements the Version X.2 API. Current architectures supported by Pistachio are: ia32, ia64, ~PowerPC, MIPS, and Alpha. The Version X.2 API is meant to eventually stabilize and become Version 4.&lt;br /&gt;&lt;br /&gt;!__CVS Notes__&lt;br /&gt;&lt;br /&gt;--Update repository:&lt;br /&gt;cvs up -dP&lt;br /&gt;!__Sys Call Locations__&lt;br /&gt;[[L4Linux-2.4 System Call Locations]]&lt;br /&gt;&lt;br /&gt;[[L4Linux-2.6 System Call Locations]]&lt;br /&gt;&lt;br /&gt;[[L4Linux-2.4 System Calls]]&lt;br /&gt;!__Rebooting Linux 2.6 Reboots System__&lt;br /&gt;&lt;br /&gt;In l4linux-2.6/arch/l4/kernel/main.c --- main.c&lt;br /&gt;+++ main.c&lt;br /&gt;@ @ -36,6 +36,7 @ @&lt;br /&gt; #include&lt;br /&gt; #include&lt;br /&gt; #include&lt;br /&gt; +#include&lt;br /&gt;&lt;br /&gt; #include&lt;br /&gt; #include&lt;br /&gt;@ @ -847,6 +848,7 @ @&lt;br /&gt;     l4xi_linux_main_exit_recv(&amp;main_id, &amp;server_env);&lt;br /&gt;&lt;br /&gt;        ~LOG_printf(&quot;Terminating ~L4Linux.\n&quot;);&lt;br /&gt; +    l4util_reboot();&lt;br /&gt;        return 0;&lt;br /&gt; }&lt;br /&gt;!__Names Module__&lt;br /&gt;&lt;br /&gt;include file: l4/pkg/names/include/libnames.h&lt;br /&gt;*int names_register(const char* name);&lt;br /&gt;*int names_register_thread_weak(const char* name, l4_threadid_t id);&lt;br /&gt;*int names_unregister(const char* name);&lt;br /&gt;*int names_unregister_thread(const char* name, l4_threadid_t id);&lt;br /&gt;*int names_query_name(const char* name, l4_threadid_t* id);&lt;br /&gt;*int names_query_id(const l4_threadid_t id, char* name, const int length);&lt;br /&gt;*int names_waitfor_name(const char* name, l4_threadid_t* id, const int timeout);&lt;br /&gt;*int names_query_nr(int nr, char* name, int length, l4_threadid_t *id);&lt;br /&gt;*int names_unregister_task(l4_threadid_t tid);&lt;br /&gt;*int names_dump(void);&lt;br /&gt;!__L4Linux task with L4 IPC __&lt;br /&gt;Good example of creating an ~L4Linux task that can do L4 IPC as well: l4/pkg/loader/examples/dump-l4/&lt;br /&gt;</description>
<link>http://www.tiddlywiki.com/#spine</link>
<pubDate>Wed, 20 Jun 2007 13:44:00 GMT</pubDate>
</item>
<item>
<title>Intrusion Analysis November 2003</title>
<description>On November 1, 2003 a Microsoft Windows 2000 Pro machine on the Georgia Tech Honey Net was compromised by an attacker.  The attack originated from eastnet on Georgia Tech's Eastnet .  However, analysis of the data seems to indicate that this host was only a relay for the attack and not the attacker's actual machine.&lt;br /&gt;&lt;br /&gt;The attack first appeared as a standard Nachi attack, but after an initial attempt to compromise the machine revealed to the attacker that the machine had already been infected, he or she switched tactics and used an ~MSBlaster style exploit to open port 4444 with root privileges, thus indicating by the sophistication and the timing that this was a life attacker not an automated program.  He or she then began setting up a root-kit on the machine.&lt;br /&gt;&lt;br /&gt;The root-kit is made up of two self-extracting .exe files.  This attacker names them c.exe and x.exe.  The former extracts to a directory named &quot;svchost&quot; with a subdirectory &quot;service&quot; while the later extracts to &quot;service&quot; and &quot;spools.&quot;  The &quot;svchost&quot; directory contains ~WinMngr.EXE, ident.bat, one.exe, svc.bat, win.dll, cygwin1.dll, lsass.exe, regsvc.exe services.exe, and svchost.exe.  These form the core of the root-kit.  The subdirectory &quot;svchost\service&quot; is used for storage of warez, but  because the attacker does not want disk usage to be noticed, he or she only places a few files on each compromised machine.  The &quot;service&quot; directory created by x.exe contains mostly duplicate files from the &quot;svchost&quot; directory (possibly to avoid path issues), but it does have one important file in thug.bat. &lt;br /&gt;&lt;br /&gt;Our attacker extracts these files and directories to &quot;C:\WINNT\system32\Setup.&quot;  The attacker then moves into the &quot;svchost&quot; directory and executes svc.bat.  This file is the primary installer of the root-kit.  The svc.bat file sets the user name of the IRC bot in win.dll (which is actually just a plain text file) and starts both the &quot;Remote Registry Backup&quot; service and the &quot;Microsoft Networks&quot; service, but binds both to the attacker's &quot;svchost\lsass.exe&quot; file.  This results in 3 processes called lsass.exe, though only one is legitimate.  The &quot;Remote Registry Backup&quot; service is also bound to &quot;svchost\ident.bat&quot; which executes ~WinMngr.EXE, while &quot;Microsoft Networks&quot; is also tied to &quot;svchost\regsvc.exe.&quot;  The effect of starting all of these files as services is to make them impossible to kill via the Windows(r) Task Manager.  It is necessary to stop the services these files are attached to in order to bring them down.  The next step taken by svc.bat is to hide the directories created by the zip file.  Using the &quot;attrib&quot; command, the bat file runs: &quot;attrib +S +H spools&quot; (aka C:\WINNT\system32\Setup\spools) and &quot;attrib +S +H svchost.&quot;  These commands set both the system bit and the hidden bit on the directories causing Windows to hide them unless the bits are unset or someone checks &quot;show hidden files and directories&quot; and unchecks &quot;hide protected operating system files&quot; in the tools-&gt;file options-&gt;view menu of any Windows Explorer window.  &lt;br /&gt;&lt;br /&gt;[img[images/image002.gif]]&lt;br /&gt;__Figure 1:  Windows Explorer view of system compromise__&lt;br /&gt;&lt;br /&gt;The fact that svc.bat which came from c.exe hides a directory &quot;spools&quot; that came from x.exe suggests that both files were created by the same person and intended to work together as a single root-kit.&lt;br /&gt;&lt;br /&gt;The other half of this root-kit, x.exe, provides similar tools to the attacker, but with some things added.  &quot;Spools&quot; for instance contains a number of utilities useful for hacking, such as wget, netcat, fport, and fscan.  None of these are called directly by the services that are set up.  This suggests the attacker wants the ability to hack other machines from this one.  While it is possible the attacker just wanted to have certain tools around for setting things up, the deletion of the zip files (presumably just so save space) combined with the small amount of warez stored on the machine seems to negate this as our attacker seems to be interested in saving space so as to not show up on a cursory disk usage analysis.  Given this evidence, and the sophistication of this attack, as well as the number of compromised boxes found (some 25 machines on Georgia Tech's campus alone, including the attacking host) it seems likely that the attacking host was being used a relay and the owner is not our attacker.&lt;br /&gt;&lt;br /&gt;The third directory created by our attacker contains more interesting tools, including one (kill.exe) that is very useful in purging the system of this root-kit.  The first file ofimportance is thug.bat.  This is where the &quot;Virtual Guide Numbering&quot; service is created and bound to &quot;service\lsass.exe&quot; (which gives us a total of 4 processes named lsass running) and &quot;services\winampa.exe&quot; (which the name of the popular media player Winamp's background executable).  This gives us two more processes running that are attached to services and can't be killed from the Task Manager.   The batch file then hides the &quot;C:\WINNT\system32\service&quot; directory in the same manner as the other two and removes x.exe.&lt;br /&gt;&lt;br /&gt;At some point in running these various programs, one of them creates a number of registry keys.  This is the root-kit's signature and can be found on any machine infected by an unaltered version.  The keys are placed in ~HKEY_USERS--&gt;S-1-5-21-79052478-1383384898-1202660629-1107(this number may be unique to each install) --&gt;Software--&gt;Microsoft--&gt;Internet Explorer--&gt;Explorer Bars--&gt;{~C4EE31F3-4768-11D2-BE5C-00A0C9A83DA1}(again possibly unique to each install)--&gt;~FilesNamedMRU.  Each one registers the name of a file the attacker installed but not its full path.  Currently, it seems logical to conclude that the programs themselves both set and read these keys, thus executing all of the files listed if any one of them is started.&lt;br /&gt;&lt;br /&gt;[img[images/image004.gif]]&lt;br /&gt;__Figure 2: registry entry of compromised system__&lt;br /&gt;&lt;br /&gt;This root-kit does not appear to cause any actual damage to the attacked system (in fact it patches the system against future attacks on port 135), but instead sets the machine up as a warez server via IRC.  The bot installed connects to irc.efnet.com and joins the channel #~XiSO, where it broadcasts repeatedly the files it has available for download from the svchost\service directory.&lt;br /&gt;Fortunately, removing this root-kit is not especially difficult after it is understood.  To remove it, simply do the following:&lt;br /&gt;&lt;br /&gt;# Using the Administrative Tools, stop the services that are infected and set them to manual start.  (Be careful if you decide to disable them as doing so can cause headaches if the wrong services are disabled when the system is restarted).&lt;br /&gt;#Edit the C:\WINNT\system32\Setup\svchost\x.pid file to find the process id (PID) of the IRC daemon.&lt;br /&gt;#Using the kill.exe found in either &quot;service&quot; or &quot;spools,&quot; kill the pid using C:\kill.exe &lt;pid&gt;.  This stops the IRC daemon from running.  Your logs will no longer be flooded with IRC data.  You may also safely kill all ~WinMngr.EXE, winampa.exe and cmd.exe processes.  You may kill the lsass and svchost processes, but the legitimate versions of these need to be running and may or may not restart properly if killed.&lt;br /&gt;#Delete, or move the directories the attacker created:&lt;br /&gt;##C:\WINNT\system32\Setup\spools&lt;br /&gt;##C:\WINNT\system32\Setup\service&lt;br /&gt;##C:\WINNT\system32\Setup\svchost&lt;br /&gt;#Using regedit, remove all the keys placed by the attacker.&lt;br /&gt;#Upon first booting the machine, ensure that you have only one copy of lsass.exe running, the registry keys are gone, and that none of the illegal services started.  This is your indication that the machine is clean.&lt;br /&gt;&lt;br /&gt;In conclusion, this root-kit displays a fair amount of skill and is not the work of a &quot;script-kiddie.&quot;  Analysis of the techniques used, as well as the tools involved, suggest an experienced, though not necessarily a highly-skilled, person conducted the attack.  The root-kit itself suggests that the machine attacking our Honey Net was a relay machine.  The hacking tools present in the kit suggest the intended use for this kit is not just to run an IRC bot, but also to allow remote control of and subsequent hacking using a compromised box.  The techniques used by the attacker make it difficult, though not impossible, to find his or her files.  Once located and understood, the root-kit is easily removed.  However, the complexity of the kit itself and its potential to reinsert parts of itself make it difficult to deal with until it is understood.  Had the attacker removed kill.exe, not used x.pid, and used executables instead of batch files the root-kit would have been very difficult to remove indeed.  In short, this was a basic attack, based on someone else's work, that used good tools that could be improved to be very difficult to remove.</description>
<link>http://www.tiddlywiki.com/#%5B%5BIntrusion%20Analysis%20November%202003%5D%5D</link>
<pubDate>Wed, 20 Jun 2007 13:43:00 GMT</pubDate>
</item>
<item>
<title>Turn off Auto WikiWord Plugin</title>
<description>// //[[Alan Watson|http://www.alan-watson.org/]]&lt;br /&gt;// //2 September 2005&lt;br /&gt;&lt;br /&gt;// //Standard ~TiddlyWiki implicitly links ~WikiWords. This plugin changes that behaviour, causing ~WikiWords and ~WikiWordEscapes to be treated as normal text. You can still make explicit links to tiddlers using [ [ and ] ].&lt;br /&gt;&lt;br /&gt;// //To use this plugin, copy this tiddler to your ~TiddlyWiki and tag it with systemConfig.&lt;br /&gt;&lt;br /&gt;// //The code really is a bit of a hack. It would be cleaner to add a boolean option and a tiny bit of logic to Tiddler.prototype.changed and wikifyLinks. Instead, we change the ~WikiWord regular expresssion to use reversed ~BOMs, which should not appear in well-formed text.&lt;br /&gt;&lt;br /&gt;{{{&lt;br /&gt;wikiNamePattern = &quot;(\uFFFE)(\uFFFE)&quot;;&lt;br /&gt;setupRegexp();&lt;br /&gt;for (var t in store.tiddlers)&lt;br /&gt;   store.tiddlers[t].changed();&lt;br /&gt;}}}</description>
<link>http://www.tiddlywiki.com/#%5B%5BTurn%20off%20Auto%20WikiWord%20Plugin%5D%5D</link>
<pubDate>Wed, 20 Jun 2007 13:39:00 GMT</pubDate>
</item>
<item>
<title>October 2005 – March 2006</title>
<description>!__1. Deployments__&lt;br /&gt;!!''1.1 Current technologies deployed. Describe anything that you have deployed that is collecting information, including honeynets, client honeypots, honeyd, mwcollect, or anything else honeypot related.''&lt;br /&gt;We are running a GEN II Honeynet with a variety of ~OSs of interest. We are using the honeywall &quot;roo&quot; CDROM and conduct all monitoring of the honeynet on an analysis box that is separate from the honeywall (bridge) machine. We continue to maintain a Darknet within our honeynet and a majority of our real machines are high-interaction honeypots, although we are starting to experiment with low-interaction honeypots (nepenthes). We have one linux (~RH8) and two Win XP (w &amp; w/o ~SP2) boxes.&lt;br /&gt;&lt;br /&gt;Our focus is on using the honeynet as an intrusion detection tool to help secure the campus network and to promote visualization research. We aim to make management of the honeynet more scalable by providing real-time visualization1, daily report generation2, trend analysis3, and attack analysis tools4. Additionally, we have worked on a network capture (pcap) anonymization script5 that help the administrator to share data to promote further research.&lt;br /&gt;&lt;br /&gt;   1. ~HoneyTrap, Rumint, ~SecVis, ~VisualFirewall&lt;br /&gt;   2. ~HoneyReport, ~TrojanSSH&lt;br /&gt;   3. FAD: Flow Analysis Database&lt;br /&gt;   4. Rumint, ~SecVis&lt;br /&gt;   5. ~PacketScrubber&lt;br /&gt;&lt;br /&gt;!!1.2 Activity timeline: Highlight attacks, compromises, and interesting information collected.&lt;br /&gt;During this last quarter, we observed only one successful compromised. Earlier this year (say about mid February) we were SSH brute forced. The attacker installed a simple spam mailing script and tested it a couple of times before the compromised was detected and cut. The details of this attack will be release to the public at a later date.&lt;br /&gt;!__2.0 Findings__&lt;br /&gt;!!2.1 Highlight any unique findings, attacks, tools, or methods.&lt;br /&gt;!!2.2 Any trends seen in the past six months.&lt;br /&gt;Our most notable finding is that there has been a stark decrease in on-campus activity seen on the honeypots. We believe this trend (we are still investigating) is due to the partitioning our campus network with separate firewall, effectively separating us from the dorm networks and removing the more interesting attacks. Also, our Office of Information Technology (OIT) in alliance with our Residential Network Office (~ResNet) as deployed a START system that scans new machines as they register on the network before they are allowed normal access. OIT also actively scans the networks for known vulnerabilities.&lt;br /&gt;&lt;br /&gt;We are also trying to perform long-term analysis, but haven't progressed far in our research yet. Here are some initial graphs to show flow counts over time. &lt;br /&gt;[img[images/http.png]]&lt;br /&gt;[img[images/smb.png]]&lt;br /&gt;[img[images/ssh.png]]&lt;br /&gt;[img[images/WindowMessenger.png]]&lt;br /&gt;&lt;br /&gt;!!2.3 What are you using for data analysis? What is working well, and what is missing, what data analysis functionality would you like to see developed?&lt;br /&gt;We are using our own custom tools for data analysis: ~HoneyReport, ~SecVis, Rumint, ~TrojanSSH, FAD, and ~HoneyTrap. We will describe them in Section 4.&lt;br /&gt;&lt;br /&gt;!__3.0 Lessons Learned__&lt;br /&gt;!!3.1 What new positive things can you share with the community, so they can replicate your success?&lt;br /&gt;We are working on new reporting and visualization techniques that will aid in maintaining a honeynet, responding to attacks, and analyzing trends in data. We are also working on packet anonymization.&lt;br /&gt;!!3.2 What new mistakes can you share with the community, so they don't make the same mistakes?&lt;br /&gt;We have repeated this often, but documentation of the current state of our honeynet is constantly stale and is hard to keep updated. We want to think of ways that honeynet deployment is almost self-documenting.&lt;br /&gt;!!3.3 Are there any research ideas you would like to see developed?&lt;br /&gt;We are interested in continuing our research in reporting and visualization and we want to consider practices that are self-documenting, meaning that in the very act of doing our tasks, current documentation is kept.&lt;br /&gt;!__4.0 New Tools__&lt;br /&gt;!!4.1 What new tools or technology are you working on?&lt;br /&gt;Data analysis is our primary focus. We are working on several projects to enable more real-time monitoring and daily report generation. Additionally, we are also developing a pcap file anonymization tool.&lt;br /&gt;&lt;br /&gt;Our daily reporting tool is called ~HoneyReport. Our tool duplicates much of the functionality of ~HoneySnap, developed by the UK Honeynet Project, but has some additional functionality that we find useful. We believe that everyone's reporting needs are different and that making a generic tool that everyone would like may be difficult. With that in mind, our tool generates reports that are useful to our organization and may be useful to other organizations.&lt;br /&gt;&lt;br /&gt;~HoneyReport parses pcap files to generate flow records and captures traffic from various protocols. The flow records are saved to a database for our FAD analysis later. Statistics are then run on the flow data to generate reports on top attackers, biggest flows, port hit counts, and other interesting data. The reports are generated as HTML documents and stored on our data processing box. The HTML is then rendered as a text document using &quot;links&quot;, is PGP encrypted, and then sent via email to the honeynet administrators. There are two other reports with different information that is sent to Georgia Tech's Office of Information Technology (OIT) for doing campus intrusion detection. An example ~HoneyReport report will be provided with this status report.&lt;br /&gt;&lt;br /&gt;We have written before about Greg Conti, Julian Grizzard, and Sven Krasser's work on Rumint and ~SecVis. These tools provide a real-time or forensic analysis visualization using parallel coordinate plots. A screenshot of ~SecVis is provided below. &lt;br /&gt;&lt;br /&gt;[img[images/secvis.jpg]]&lt;br /&gt;&lt;br /&gt;We have been interested in getting information about keystrokes and logins via SSH. We originally tried to use the sebek client but found it was logging too much information. Instead, our solution was to simply trojan our version of SSH to drop all the password attempts and record each keystroke. Each login attempt will send the attacker IP, attempted username, and attempted password via a UDP packet sent to an unrouteable address (so it doesn't leave the honeynet). The honeywall can then capture that information and present it in the ~HoneyReport report. So far we have collected a few thousand login username/password pairs including some interesting ones like: harrypotter/harrypotter. Hopefully we can use this information later to discuss trends in password attempts (e.g., longer password attempts, more dictionary words). Successful logins generate a different record type in the UDP packet sent to alert the honeywall of a successful login (for fast reporting and reaction). A third packet type is used to send keystrokes. At a later date, we will present how to edit sshd to drop this information.&lt;br /&gt;&lt;br /&gt;We are logging flows into our Flow Analysis Database (FAD) for performing long-term trend analysis. This database was used to generate the four flow count charts above. Currently there are about 3 1/2 million flow records in the database covering approximately the last 3 years. We are currently redesigning this tool to provide a richer repository of information and keep much more metadata about attackers such as traceroute, ping times, whois records, and country of origin. We will use this to generate week, monthly, and yearly reports of honeynet activity. &lt;br /&gt;&lt;br /&gt;[img[images/CountryCounts_200602.png]]&lt;br /&gt;&lt;br /&gt;We have just started research in a new real-time, passive visualization interface called ~HoneyTrap. This interface is meant to remain on the screen of a computer in the corner or on a secondary monitor. The administrator would simply glance at it periodically to see if new activity is spotted on the honeynet. This is a flash application that polls a web page that generates flash consumable data structures from an alarm database. The flash application continues to poll the webserver every five seconds to check for new alarms. We are working on a write up for this tool and will deliver a pre-publish copy to the Alliance. The rest of you must wait until we've published.&lt;br /&gt;&lt;br /&gt;[img[images/HT_3.1_02.png]]&lt;br /&gt;&lt;br /&gt;Our last tool is ~PacketScrubber, a pcap header and payload anonymization script. This script parses packets, maps the IP addresses using multimap techniques that somewhat prefix preserving, updates checksums, maps payload-embedded IP addresses, removes hostnames and netbios share names, and offsets mac addresses. In trying to share this tool with other organizations, we have found, just like with reporting, everyone's needs are different. We feel that we provide a lot of novel functionality that could easily be modified to suit different organizations' needs. We are working hard to provide a publicly releasable version of this tool.&lt;br /&gt;&lt;br /&gt;!!4.2 Would you like to integrate this with any other tools, or you looking for help or collaboration with others in testing or developing the tool?&lt;br /&gt;We would like to release ~HoneyReport, ~HoneyTrap, and ~PacketScrubber and receive feature requests for future enhancement. We will enlist several undergraduate students to join us and help us enhance these tools and motivate them to future research.&lt;br /&gt;&lt;br /&gt;We have learned that packet anonymization is a daunting task, but we are able to do a good 95% approach with our current methods. We would like to find developers to write ~NetPacket modules (in perl) to dissect more packet types. &lt;br /&gt;! __5.0 Papers and Presentations __&lt;br /&gt;!!5.1 Are you working any papers to be published, such as KYE or academic papers?&lt;br /&gt;We are currently in the first phase of writing a paper on ~HoneyTrap and hope to submit it to ~VizSec 2006.&lt;br /&gt;!!5.2 Are you looking for any data or people to help with your papers?&lt;br /&gt;We would be happy to discuss ideas for possible publications.&lt;br /&gt;!!5.3 Where did you publish/present honeypot-related material?&lt;br /&gt;Julian Grizzard presented &quot;Visualizations for Honeynet Data Analysis&quot; at the Department of Energy Honeynet Workshop in March.&lt;br /&gt;Published paper:&lt;br /&gt;G. Conti, K. Abdullah, J. Grizzard, J. Stasko, J. Copeland, and M. Ahamad, and C. Lee, &quot;Countering Security Analyst and Network Administrator Overload Through Alert and Packet Visualization,&quot; IEEE Computer Graphics &amp; Applications, March/April 2006, pp. 60-70, vol. 26, no. 2. &lt;br /&gt;!__6.0 Organizational__&lt;br /&gt;!!6.1 Changes in the structure of your organization.&lt;br /&gt;Christopher Lee is transitioning to lead of the Georgia Tech ~HoneyNet and will be responsible for daily maintenance, status reports (including this one), communicating with other alliance members, recruiting researchers, and sharing results. Julian Grizzard will graduate in May.&lt;br /&gt;!!6.2 Your feedback on Alliance activities.&lt;br /&gt;We are excited to see the new ways that we can communicate with other Alliance members, especially being able to communicate with new honeynet groups as to expand our base of deployed honeynets. The internal website, SILC channel, mailing lists, and IRC channels are excellent for contacting other members, but it would be helpful to have more chatrooms for various purposes (e.g., not just Roo development). We would also like to see an emphasis on detecting and understanding botnets and phishing. The German Honeynet Project's work on the topic has been quite promising.&lt;br /&gt;!!6.3 Any suggestions for improving the Alliance?&lt;br /&gt;We see a lot of good improvements with internal, mailing lists, and IRC. We would like a general topic SILC channel along with several other specific topics such as analysis, visualization, and reporting.&lt;br /&gt;!__7.0 Goals__&lt;br /&gt;!!7.1 Which of your goals did you meet for the last six months?&lt;br /&gt;*We developed an anonymization tool: ~PacketScrubber&lt;br /&gt;*Developed ~HoneyReport, ~HoneyTrap, ~TrojanSSH, and FAD&lt;br /&gt;*Successfully captured an SSH break in and spamming package&lt;br /&gt;*Started generating new reports for OIT that they requested&lt;br /&gt;!!7.2 Which of your goals did you not meet for the last six months?&lt;br /&gt;*We did not release any tools that we developed since the last report.&lt;br /&gt;!!7.3 Goals for the next six months&lt;br /&gt;   1. Develop anonymization tools so that data can be publicly released&lt;br /&gt;   2. Continue visualization work in real-time, daily, and long-term analysis&lt;br /&gt;   3. Release tools: ~PacketScrubber, ~HoneyReport, and perhaps ~HoneyTrap&lt;br /&gt;   4. Contribute to ~SotM&lt;br /&gt;   5. Expand our low-interaction honeypot deployment&lt;br /&gt;!__8.0 Misc. Activities__&lt;br /&gt;!!8.1 Anything else not covered you would like to share.&lt;br /&gt;!__Appendix A__&lt;br /&gt;Example ~HoneyReport report. All data is representative.&lt;br /&gt;&lt;html&gt;&lt;br /&gt;&lt;head&gt;&lt;br /&gt;  &lt;meta content=&quot;text/html; charset=ISO-8859-1&quot;&lt;br /&gt; http-equiv=&quot;content-type&quot;&gt;&lt;br /&gt;  &lt;title&gt;&lt;/title&gt;&lt;br /&gt;&lt;/head&gt;&lt;br /&gt;&lt;body style=&quot;color: rgb(0, 0, 0);&quot; alink=&quot;#ee0000&quot;&lt;br /&gt; link=&quot;#0000ee&quot; vlink=&quot;#551a8b&quot;&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;div =&quot;&quot;&gt;&lt;br /&gt;&lt;div&lt;br /&gt; style=&quot;border: thin solid black; background: rgb(255, 255, 204) none repeat scroll 0%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;&quot;&gt;&lt;br /&gt;Honeynet Report for 20060411&lt;br&gt;Generated on 04/12/2006&lt;br&gt;Overall Throughput&lt;br&gt;In: 43537 packets, 89163776 bytes&lt;br&gt;Out: 37403 packets, 76601344 bytes&lt;br&gt;Flows inbound: 5021, Flows outbound: 0&lt;br&gt;data/20060411/pcap.20060411.1144713662 (20835456)&lt;br&gt;eb9b69993d9bf3ba7b5d65743229df79&lt;br&gt;Outbound Flows&lt;br&gt;Id Start Time Src IP Dst IP Src Port Dst Port Pkts Bytes&lt;br&gt;Packets vs. Time&lt;br&gt;^ | 50,000&lt;br&gt;* | 49,000&lt;br&gt;* | 48,000&lt;br&gt;* | 47,000&lt;br&gt;* | 46,000&lt;br&gt;* | 45,000&lt;br&gt;* | 44,000&lt;br&gt;* | 43,000&lt;br&gt;* | 42,000&lt;br&gt;* | 41,000&lt;br&gt;* | 40,000&lt;br&gt;* | 39,000&lt;br&gt;* | 38,000&lt;br&gt;* | 37,000&lt;br&gt;* | 36,000&lt;br&gt;* | 35,000&lt;br&gt;* | 34,000&lt;br&gt;* | 33,000&lt;br&gt;* | 32,000&lt;br&gt;* | 31,000&lt;br&gt;* | 30,000&lt;br&gt;* | 29,000&lt;br&gt;* | 28,000&lt;br&gt;* | 27,000&lt;br&gt;* | 26,000&lt;br&gt;* | 25,000&lt;br&gt;* | 24,000&lt;br&gt;* | 23,000&lt;br&gt;* | 22,000&lt;br&gt;* | 21,000&lt;br&gt;* | 20,000&lt;br&gt;* | 19,000&lt;br&gt;* | 18,000&lt;br&gt;* | 17,000&lt;br&gt;* | 16,000&lt;br&gt;* | 15,000&lt;br&gt;* | 14,000&lt;br&gt;* | 13,000&lt;br&gt;* | 12,000&lt;br&gt;* | 11,000&lt;br&gt;* | 10,000&lt;br&gt;* | 9,000&lt;br&gt;** | 8,000&lt;br&gt;** | 7,000&lt;br&gt;* ** | 6,000&lt;br&gt;* ** | 5,000&lt;br&gt;* ** | 4,000&lt;br&gt;* ** | 3,000&lt;br&gt;* ** *| 2,000&lt;br&gt;* ** *| 1,000&lt;br&gt;***** ** *** ************* *** *****************| 0,000&lt;br&gt;------------------------------------------------+&lt;br&gt;000000000000000000001111111111111111111122222222&lt;br&gt;001122334455667788990011223344556677889900112233&lt;br&gt;030303030303030303030303030303030303030303030303&lt;br&gt;000000000000000000000000000000000000000000000000&lt;br&gt;Top 10 Flows&lt;br&gt;Source IP Src Port Destination IP Dst Port Packets Bytes&lt;br&gt;58.251.33.172 40738 100.100.100.39 22 49 100352&lt;br&gt;58.251.33.172 58260 100.100.100.33 22 48 98304&lt;br&gt;58.251.33.172 39313 100.100.100.33 22 48 98304&lt;br&gt;58.251.33.172 54085 100.100.100.33 22 48 98304&lt;br&gt;58.251.33.172 53318 100.100.100.39 22 48 98304&lt;br&gt;58.251.33.172 42196 100.100.100.39 22 48 98304&lt;br&gt;58.251.33.172 43757 100.100.100.33 22 48 98304&lt;br&gt;58.251.33.172 50125 100.100.100.19 22 47 96256&lt;br&gt;216.57.7.90 34041 100.100.100.13 22 45 92160&lt;br&gt;58.251.33.172 43101 100.100.100.14 22 44 90112&lt;br&gt;Managed IPs&lt;br&gt;Mananged IP Ports Date Hostname&lt;br&gt;Top Ten Offenders&lt;br&gt;Attacker IP Country Packets&lt;br&gt;58.251.33.172 - 69052&lt;br&gt;216.57.7.90 US 8355&lt;br&gt;140.247.94.201 US 600&lt;br&gt;210.103.124.7 KR 293&lt;br&gt;212.227.62.110 DE 290&lt;br&gt;204.16.208.114 - 268&lt;br&gt;80.168.22.243 GB 240&lt;br&gt;62.94.87.181 IT 178&lt;br&gt;125.188.163.49 - 160&lt;br&gt;67.90.90.10 US 157&lt;br&gt;204.16.208.75 - 154&lt;br&gt;204.16.208.106 - 141&lt;br&gt;Per Port Statistics&lt;br&gt;Proto Port Pkts Bytes&lt;br&gt;tcp 21 56 114688&lt;br&gt;tcp 22 77990 159723520&lt;br&gt;tcp 80 310 634880&lt;br&gt;tcp 113 124 253952&lt;br&gt;tcp 555 128 262144&lt;br&gt;tcp 697 79 161792&lt;br&gt;tcp 1021 122 249856&lt;br&gt;tcp 1532 114 233472&lt;br&gt;tcp 2100 138 282624&lt;br&gt;tcp 3128 2 4096&lt;br&gt;tcp 3306 157 321536&lt;br&gt;tcp 3372 94 192512&lt;br&gt;tcp 5900 278 569344&lt;br&gt;tcp 8080 4 8192&lt;br&gt;tcp 10000 240 491520&lt;br&gt;tcp 23241 112 229376&lt;br&gt;udp 2 7 14336&lt;br&gt;udp 1026 799 1636352&lt;br&gt;udp 1027 159 325632&lt;br&gt;udp 1030 4 8192&lt;br&gt;udp 1031 2 4096&lt;br&gt;udp 1032 2 4096&lt;br&gt;udp 1033 9 18432&lt;br&gt;udp 4321 3 6144&lt;br&gt;udp 4329 7 14336&lt;br&gt;HTTP Traffic URIs&lt;br&gt;Client IP Destination IP URL&lt;br&gt;60.208.212.1 100.100.100.43 GET http://hacker.org.ru/prxjdg.php&lt;br&gt;60.208.217.95 100.100.100.43 GET http://hacker.org.ru/prxjdg.php&lt;br&gt;60.208.219.17 100.100.100.43 GET http://hacker.org.ru/prxjdg.php&lt;br&gt;60.216.176.56 100.100.100.43 GET http://hacker.org.ru/prxjdg.php&lt;br&gt;62.94.87.181 100.100.100.43 HEAD /&lt;br&gt;218.56.240.198 100.100.100.43 GET http://hacker.org.ru/prxjdg.php&lt;br&gt;218.56.243.116 100.100.100.43 GET http://hacker.org.ru/prxjdg.php&lt;br&gt;221.196.242.108 100.100.100.43 GET&lt;br&gt;http://www.proxygrade.com/proxygrade.php?hash=7D86E0933DFFEAF682CF812B&lt;br&gt;005099B04EBEAD5324EC&lt;br&gt;GET&lt;br&gt;http://www.proxygrade.com/proxygrade.php?hash=7D86E0933DFFEAF682CF812B&lt;br&gt;005099B04EBEAD5324EC&lt;br&gt;FTP Sessions&lt;br&gt;1144718479.532958: 84.173.189.8:2605 -&amp;gt; 100.100.100.4:21&lt;br&gt;1144718479.543423: 84.173.189.8:2606 -&amp;gt; 100.100.100.6:21&lt;br&gt;1144718479.545087: 84.173.189.8:2607 -&amp;gt; 100.100.100.9:21&lt;br&gt;1144718479.546555: 84.173.189.8:2608 -&amp;gt; 100.100.100.11:21&lt;br&gt;1144718479.548001: 84.173.189.8:2609 -&amp;gt; 100.100.100.17:21&lt;br&gt;1144718479.548956: 84.173.189.8:2610 -&amp;gt; 100.100.100.18:21&lt;br&gt;1144718479.550266: 84.173.189.8:2611 -&amp;gt; 100.100.100.19:21&lt;br&gt;1144718479.551426: 84.173.189.8:2612 -&amp;gt; 100.100.100.27:21&lt;br&gt;1144718479.552802: 84.173.189.8:2613 -&amp;gt; 100.100.100.28:21&lt;br&gt;1144718479.553749: 84.173.189.8:2614 -&amp;gt; 100.100.100.31:21&lt;br&gt;1144718479.555584: 84.173.189.8:2615 -&amp;gt; 100.100.100.32:21&lt;br&gt;1144718479.556792: 84.173.189.8:2616 -&amp;gt; 100.100.100.37:21&lt;br&gt;1144718479.558209: 84.173.189.8:2617 -&amp;gt; 100.100.100.38:21&lt;br&gt;1144718479.559980: 84.173.189.8:2618 -&amp;gt; 100.100.100.39:21&lt;br&gt;Trojaned SSH&lt;br&gt;100.100.100.43&lt;br&gt;root:root&lt;br&gt;root:root123&lt;br&gt;root:password&lt;br&gt;root:!@#$%^&amp;amp;*(&lt;br&gt;root:123456&lt;br&gt;root:root1234&lt;br&gt;root:antonio&lt;br&gt;root:root12345JJJJ&lt;br&gt;root:12345&amp;Atilde;&amp;sup1;&amp;Atilde;&amp;sup1;&amp;Atilde;&amp;sup1;&amp;Atilde;&amp;sup1;&amp;Atilde;&amp;sup1;&amp;Atilde;&amp;sup1;&amp;Atilde;&amp;sup1;&amp;Atilde;&amp;sup1;&lt;br&gt;news:news&lt;br&gt;news:news123&lt;br&gt;news:123456&lt;br&gt;news:12345&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&lt;br&gt;john:john&lt;br&gt;john:john123&lt;br&gt;john:12345--------&lt;br&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div id=&quot;msiehack2&quot;&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/body&gt;&lt;br /&gt;&lt;/html&gt;&lt;br /&gt;</description>
<link>http://www.tiddlywiki.com/#%5B%5BOctober%202005%20%E2%80%93%20March%202006%5D%5D</link>
<pubDate>Wed, 20 Jun 2007 13:38:00 GMT</pubDate>
</item>
<item>
<title>Honeynet Network Capture Anonymization</title>
<description>In order to release captures of network attack traffic to the public, much of the sensitive information contained within the capture files must be removed. The goals of our anonymization algorithms are to protect the sensitive information while allowing researchers and the public at large to examine and analyze the network attacks. Our solution uses one-to-one mappings of IP addresses (even within payloads) and overwriting of hostnames.&lt;br /&gt;&lt;br /&gt;!Anonymization Methods&lt;br /&gt;------------------------------------&lt;br /&gt;!!__IP Address Mapping__&lt;br /&gt;We map the top two octets and the bottom two octets separately. For the top two octets, we generate one map and for the bottom two octets we create a map for each of our subdomains with the Georgia Tech IP space and one for other non-Georgia Tech addresses. Some /16 networks should not be mapped since they are private, unroutable, or have some special attribute. We identified several networks that we do not map the top two octets as listed below. For the remaining networks, we randomly mix the mapping.&lt;br /&gt;*0.0.0.0/8&lt;br /&gt;*10.0.0.0/8&lt;br /&gt;*127.0.0.0/8&lt;br /&gt;*169.254.0.0/16&lt;br /&gt;*172.16.0.0/16&lt;br /&gt;*192.168.0.0/16&lt;br /&gt;*224.0.0.0/4&lt;br /&gt;*240.0.0.0/4&lt;br /&gt;The lower mappings consist of mapping the lower two octets of the IP addresses. In the lower mappings, if the last octet is equal to 0 or 255, it is mapped to another address ending in 0 or 255. All other lower two octets are randomly mapped. &lt;br /&gt;&lt;br /&gt;!!__IP Header Anonymization__&lt;br /&gt;For each IP packet, the packet is first disassembled. Then, the source and destination IP addresses are remapped, and then reassemble the packet. We use a perl module, ~NetPacket::IP for the purpose of parsing and reassembling the packet. This perl module is kind enough to recalculate the IP header checksum so that an attacker can not calculate the original IP addresses.&lt;br /&gt;&lt;br /&gt;!!__ICMP, TCP, and UDP Header Anonymization__&lt;br /&gt;The next layer of the communications stack gives a new set of details that could be used to calculate the original IP addresses. Both the TCP and UDP header checksum are calculated from a psuedo-header which contains the source and destination IP addresses (from the IP header). ICMP is tricker. ICMP oftentimes embeds the headers of rejected packets within its payload that require further sanitization. We do a simple test for embedded ~IPv4 packets by looking for 0x45 as the first byte of the payload. If the test detects an embedded packet, the algorithm recurses on the payload. ~NetPacket::TCP and ~NetPacket::UDP were used to parse and reassemble the TCP and UDP packets respectively.&lt;br /&gt;&lt;br /&gt;!!__Upper Layer Packet Anonymization__&lt;br /&gt;Payload anonymization is too difficult to describe without risking censorship. Various protocols find interesting ways of hiding revealing information in the payload in ways completely unparsable by anything (including the original software). We have leaned on the side of protecting privacy at the risk of destroying information in the payload. To this end, we overwrite data that matches a very general regular expression with 'X' characters, and hope that it was not something needed for analysis.&lt;br /&gt;&lt;br /&gt;!!!DNS Protocol Sanitization&lt;br /&gt;Among the various problematic packets that require anonymization, are DNS packets. The format of DNS packets varies upon the codes within the packet and requires a full decode to correctly manipulate. For example, if the packet is a response packet and has a code equal to 0, then the last 4 bytes are an IP address that must be mapped. If the code was equal to 3, a dynamic update, then there yet another domain name that must be removed.&lt;br /&gt;&lt;br /&gt;!!!Samba Protocol Sanitization&lt;br /&gt;Another frustrating protocol is the Windows Networking protocol, known as samba. The Tree Connect ~AndX Request message includes a path portion that contains a unicode encoded string with slashes and a host network name, IP address, or ~NetBios name. Since the format of this path is difficult to anticipate, we simply replaced any printable character between the beginning two slashes, and the next slash. (E.g. \\POTENTIAL.NOWHERE.COM\IPC$) There are other messages such as the Trans2 Request that sometimes has the hostname as the file specification, but without the proper slash notation. This much be removed by a general regular expression. The netbios name is impossible to recognize without a full decode of the SMB protocol. We have not been able to accomplish this yet.&lt;br /&gt;&lt;br /&gt;!!!IRC Traffic Sanitization&lt;br /&gt;Currently we only perform regular expression search and replace on IRC traffic. No attempts were made to actually decode the protocol. The regular expression contains all letters, digits, at-symbols, and periods ending with a valid domain such as com, edu, jp, nl, ro, and biz. This has an unfortunate effect of obfuscating entities that are not proper domain names because of the generality of the regular expression.&lt;br /&gt;&lt;br /&gt;!Future Work Needed&lt;br /&gt;---------------------------------&lt;br /&gt;We have only begun the rigorous work of packet sanitation and much work is needed. First, we need to learn from the community what information is vital to retain in order for proper analysis and balance their needs with the complexity of maintaining privacy. Secondly, decoders are needed for many protocols, but focusing first on protocols used during attacks such as SMB, FTP, IRC, HTTP, and DNS. Next, a flexible but fast-running packet manipulation framework needs to be made that can rapidly manipulate packets.&lt;br /&gt;&lt;br /&gt;!Conclusion&lt;br /&gt;--------------------&lt;br /&gt;The Georgia Tech Honeynet team has created a pcap-file anonymization tool in PERL that allows for quick remapping of IP addresses and does some packet decoding and a lot of string searches and replacements in order to anonymize the traffic captures. We believe this to be a good first-order approach to the problem of packet anonymization, but a more flexible approach is needed for future work. </description>
<link>http://www.tiddlywiki.com/#%5B%5BHoneynet%20Network%20Capture%20Anonymization%5D%5D</link>
<pubDate>Wed, 20 Jun 2007 13:31:00 GMT</pubDate>
</item>
<item>
<title>Past Research Projects</title>
<description>!__Data Link Layer Security__&lt;br /&gt;Nsa is investigating architectural approaches to secure the data link layer (Layer 2) in wired local area networks. The main objectives of this research are to address the weak link between Layer 2 and upper layers and accommodate future network architectures.&lt;br /&gt;!__Traffic Engineering/Quality of Service__&lt;br /&gt;The objective of this research is to develop a multipath traffic engineering framework to deliver more equal shares of bandwidth to best-effort users as compared to traditionalshortest path algorithm. In a multi-service capable network, some portion of the bandwidth is reserved for guaranteed services and the leftover portion is dedicated to best-effort service. This research examines a problem of traffic engineering for the remaining network bandwidth which is utilized by best-effort traffic where demands are not known a priori. This framework will result in making the limited available best-effort traffic bandwidth more equitably shared by the best-effort flows over a wide range of demands. &lt;br /&gt;!__Re-establishing Trust in Compromised Hosts__&lt;br /&gt;We are investigating approaches to automatically recover from compromises without the need to completely reinstall the system. An [[overview poster|self-healing-systems.pdf]] of this research is available. This research topic uses the [[Fiasco L4 microkernel|http://os.inf.tu-dresden.de/fiasco/]] as a secure foundation of integrity. You can find local L4 notes and more on the [[spine]] webpage.&lt;br /&gt;!__Large-Scale Network Simulation for Security and Survivability Evaluation__&lt;br /&gt;In a project conducted jointly with [[MANIACS|http://www.ece.gatech.edu/research/labs/MANIACS/]], NSA is researching on large-scale simulations of critical Internet infrastructure including DNS and BGP using the [[Georgia Tech Network Simulator|http://www.ece.gatech.edu/research/labs/MANIACS/GTNetS/]].&lt;br /&gt;!__Network Security Visualization__&lt;br /&gt;NSA is investigating novel approaches to visualize network security data for intrusion detection and forensic analysis.</description>
<link>http://www.tiddlywiki.com/#%5B%5BPast%20Research%20Projects%5D%5D</link>
<pubDate>Wed, 20 Jun 2007 13:30:00 GMT</pubDate>
</item>
<item>
<title>TWSECategories</title>
<description>IS410&lt;br /&gt;Systems Analysis&lt;br /&gt;IS420&lt;br /&gt;Advanced Database&lt;br /&gt;IS450&lt;br /&gt;Web Programming I&lt;br /&gt;Acct 201&lt;br /&gt;Intro to Accounting</description>
<link>http://www.tiddlywiki.com/#TWSECategories</link>
<pubDate>Tue, 19 Jun 2007 20:27:00 GMT</pubDate>
</item>
</channel>
</rss>