<?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-9064130078297918417</id><updated>2025-07-14T23:24:59.529+08:00</updated><title type='text'>-2o1o- Transcending Nature</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://alwayscp.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://alwayscp.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>-2o1o- AlwaysCp</name><uri>http://www.blogger.com/profile/01191694150108771620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9064130078297918417.post-7547801160871686715</id><published>2010-04-15T04:47:00.019+08:00</published><updated>2010-04-17T05:42:02.899+08:00</updated><title type='text'>-2o1o- ARP Poisoning</title><content type='html'>&lt;span style=&quot;font-size:180%;&quot;&gt;Introduction&lt;/span&gt;&lt;br /&gt;When i think of writing descriptive/procedural oriented articles like what I&#39;ve done in the previous article, i cringe in horror; for a simple reason that they bore me easily when it comes to writing them. On the contrary, my blood pressure tends to mount upwards as an effect of the excitement I always get by just thinking how much fun and challenge I would get in the process of writing a conceptual based article like this. Note that this article is meant for educational purposes only, I am not responsible for any loss incurred or harm caused from the practice of the skills/techniques taught.&lt;br /&gt;&lt;br /&gt;Imagine one day when you are seated in Starbucks with a cup of your favorite Espresso and laptop by your side, listening to a business plan (which you deem not viable) of a young local entrepreneur who decided to franchise his business overseas. Boredom strikes and you decided to logon to Friendster via the wireless network to perform some social networking activities, until he finally notices your show of disinterest and leaves in utter disappointment. The next moment some anonymous guy taps your shoulder from the back and says “Hey I have your Friendster account!”&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Note&lt;/strong&gt; : You might be wondering why i chose to use a less popular site Friendster over high popularity sites like Facebook, Hotmail, and Yahoo. This is because Friendster is by far the first well established site I’ve come across, without encryption implemented in its authentication system.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;The Nature of Network&lt;/span&gt;&lt;br /&gt;Before proceeding to the interesting part, let us first fortify our knowledge on how the network transmits packets and how the router route the packets from the source to the destination. For people who do not wish to read to understand the underlying concept, you are at liberty to skip reading everything until the section “Demonstration of ARP Poisoning Attack”.&lt;br /&gt;&lt;br /&gt;Consider the following example, user A is a home computer user with three computers connected to a router (192.168.1.1/24). One day he picked up a web designing course and decided to make a homepage of himself and host it locally. When people ask user A for the address of his newly created homepage, he would give them his IP address or domain name and people would enter the IP address/domain name in their browser, and the browser would send a SYN packet to initiate the TCP 3-way handshake process.&lt;br /&gt;&lt;br /&gt;Everything works smooth without flaw until this point, however problem arises when the packet reaches the user A&#39;s router. His router would not be able to reach the destination because the packet contains only WAN logical IP address for itself to reach the router; it does not tell where the router should send itself to. A simple workaround for this is to send the packet to all computers connected to the router, but this apparently is not the most ideal solution, as it floods the whole network with unnecessary traffic and eventually causes traffic congestion or even Denial of Service (DoS) attack within the network.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Port Forwarding&lt;br /&gt;&lt;/span&gt;This is where the port forwarding makes its debut in this article. Port forwarding is a NAT extension whereby the packets are directed to the intended destination by referring to the port mapping table. Of course, before everything takes place, the user has to map the port to its own logical address in order for the router to understand where to direct the packets to. Continuing from the above example, in order for the router to know how to route traffics coming to port 80 to user A&#39;s computer, it&#39;s a must for user A to map the port to his computer&#39;s IP address. After user A has done with the mapping, the router would, in essence, forward every traffic coming to port 80 to his IP address, which we assume as192.168.1.13. This also explains why a router can only have one device mapped to one port. The router however, still does not know how to reach the recipient simply by just knowing the address.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Note&lt;/strong&gt;: A router uses NAT (Network Address Translation) to translate addresses initiated locally whereas the NAT extension “port forwarding” is used to translate address initiated outside the local network. In this article I chose to use port forwarding to explain the example because I think readers would prefer to read port forwarding over NAT.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Address Resolution Protocol&lt;/span&gt;&lt;br /&gt;Now please allow me to introduce you the ARP (Address Resolution Protocol). ARP is a protocol used to determine the physical address (also known as MAC address) when only the logical address(IP address) is known. When a device wishes to locate another device on the same network, it would send an ARP request to every device with the message &quot;Who has this IP Address?” and it expects the correspondent device to send back an ARP reply with the message &quot;I have this IP address and this is my MAC address&quot;. Continuing from the above example again, the router would send every devices on the local network, says &quot;Who has the IP Address 192.168.1.13?&quot; and the user A&#39;s computer would send back an ARP reply &quot;I have the IP address 192.168.1.13 and my MAC address is 00-52-FF-07-82-93&quot;. The router then sends the packet to user A’s computer and the connection ends gracefully when both parties have finished sending data and decide to terminate the session.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;ARP Poisoning&lt;/span&gt;&lt;br /&gt;Finally it comes to the wonderful part, suppose that user B, who is someone with malicious intent, happens to be living near user A and has access to his wireless network. He connects to the network, tells the router by sending an ARP reply indicating that he is 192.168.1.13(user A&#39;s IP address) and does the same to user A, indicating that he is the router (192.168.1.1). Interestingly, the router unfortunately does not know how to verify the authenticity of the ARP reply. It would only blindly thinks that user B is 192.168.1.13 and forward every packet that which is intended for 192.168.1.13 to user B. Likewise, the user A would also think that user B is the router and it would also forward every outbound packet to user B. With the possession of these packets, user B can view the contents and even launch a Man in the Middle Attack (MITM Attack) against user A.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=arp1.png&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/arp1.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;em&gt;(Screenshot depicts the network activity when ARP spoofing/poisoning takes place where 192.168.123.145,192.168.123.151,192.168.123.254 are the victims and 192.168.123.123 with the MAC address 00:0c:29:bd:8c:3a is the attacker)&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;User B simply sends the original packets to user A and it would not raise suspicion for user A because he is essentially getting the data that he wants (unless it has been modified).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;Demonstration of ARP Poisoning Attack&lt;/span&gt;&lt;br /&gt;An ARP poisoning attack will be demonstrated below using Cain &amp;amp; Abel, which can be downloaded from http://www.oxid.it/cain.html&lt;br /&gt;1. Activate the sniffer&lt;br /&gt;2. Start ARP Poisoning&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=arp2.jpg&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/arp2.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Click Sniffer tab and click the plus sign to scan for all MAC Addresses in the same subnet.&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=arp3.jpg&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/arp3.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4. Click ARP tab and click the plus sign to add host to be ARP poisoned. Now we want to intercept the connection between the computer 192.168.123.151 and the router, which is 192.168.123.254. So we would select 192.168.123.151 and 192.168.123.254 from the list.&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=3.jpg&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/3.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;you should get something similar to the screenshot below.&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=arp4.jpg&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/arp4.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;5. On another computer, I innocently enter my username and password and log into the Friendster website.&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=arp5.jpg&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/arp5.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;6. Click the passwords tab and select HTML, and there you see the username and password. taykahhoe89@hotmail.com and KLSDJ9S, mission accomplished.&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=arp6.jpg&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/arp6.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Note&lt;/strong&gt;: For wireless adapters, turn off the promiscuous mode if you fail to detect any MAC addresses. This should fix your problem, but you won’t be able to spoof your MAC address with promiscuous mode turned off.</content><link rel='replies' type='application/atom+xml' href='http://alwayscp.blogspot.com/feeds/7547801160871686715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9064130078297918417/7547801160871686715' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/7547801160871686715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/7547801160871686715'/><link rel='alternate' type='text/html' href='http://alwayscp.blogspot.com/2010/04/2o1o-arp-poisoning.html' title='-2o1o- ARP Poisoning'/><author><name>-2o1o- AlwaysCp</name><uri>http://www.blogger.com/profile/01191694150108771620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9064130078297918417.post-740534989746937254</id><published>2010-04-15T04:39:00.024+08:00</published><updated>2010-04-15T22:21:26.253+08:00</updated><title type='text'>DotAAssistant + AudiSim + cPrOxCMS</title><content type='html'>&lt;span style=&quot;font-size:180%;&quot;&gt;Introduction&lt;/span&gt;&lt;br /&gt;Most of the time when I run my IDE, the image in my mind would turn monochromic; it happens especially when I look into the list of projects I developed over the past 3 years. At that particular instant I would rekindle the sweet past I had with each and every of the programs I developed, and my heart would go filled with guilt because I feel that it’s a sin to keep programs with superior level of built-in intelligence but not touching them. So I decided to release them to the public, and do bear in mind that you are free to improve or use any part of my releases below.&lt;br /&gt;&lt;br /&gt;Here comes the most favorable moment, I hereby present you three of my wonderful releases:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;-2o1o- DotA Assistant (2009)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;DA and the Fuzzy Logic&lt;/span&gt;&lt;br /&gt;DA is a program written based on the fuzzy logic, it operates by the means of what the human perceives as true. In a fuzzy logic program, things are evaluated based on the human&#39;s reasoning, which is approximate, rather than precise.&lt;br /&gt;&lt;br /&gt;For instance, in this program I define a player as &quot;absent&quot; if the DA fails to locate the RGB of players after 8 scans. However, the concept of absence may differ between each individual. Another programmer who develops a similar program may see the phenomenon “absence” as player who goes disappear from minimap for longer than 10 seconds. Each of us uses a different way of defining the absence of a player. Despite the fact some people who may think our statements are incorrect; we could arguably say that we are both correct, essentially. This in turn, implies that fuzzy logic relies on the mathematical model of the vagueness phenomenon, on the basis of degree of truth.&lt;br /&gt;&lt;br /&gt;The picture below illustrates one of the possible outcomes in the process of detecting the player’s changes of state (ea: from absent to present), with the following conditions:&lt;br /&gt;-Missing counter increases by one per scan if DA fails to detect one of the possible combinations of RGB for the player in the minimap&lt;br /&gt;-Missing counter resets back to 0 whenever DA detects one of the possible combinations of RGB for the player in the minimap&lt;br /&gt;-DA reports the player as out of sight as soon as the missing counter for the player reaches more than 4&lt;br /&gt;-DA declares the player as missing as soon as the missing counter for the player reaches more than 8&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=fuzzy1.png&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/fuzzy1.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The picture below illustrates one of the possible outcomes in the process of determining the existence of a player&lt;br /&gt;We assume that&lt;br /&gt;-Player 1 = Player with strong RGB = Player with color which is NOT susceptible for DA to be misled another color for it (ea: red,blue,white)&lt;br /&gt;-Player 2 = Player with weak RGB = Player with color which is susceptible for DA to be misled another color for it (ea: pink and teal)&lt;br /&gt;-Player 1 and 2 exists in the game&lt;br /&gt;-Player 3 does not exist in the game(does not exist in minimap)&lt;br /&gt;&lt;br /&gt;with the following conditions:&lt;br /&gt;-Registration counter increases by one whenever DA detects one of the possible combinations of RGB for the player&lt;br /&gt;-DA registers the player as soon as the registration counter reaches more than 5&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=fuzzy2.png&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/fuzzy2.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Classes in DA&lt;/span&gt;&lt;br /&gt;DA contains 13 classes. 4 of the classes were used solely for testing purpose, 7 contains algorithms used for various functions, 1 class contains predefined sets of variable for character recognition, and the last class contains Main, used for executing DA. The brief descriptions of significant classes in DA are as follows:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;CharRecognition&lt;/strong&gt;&lt;br /&gt;Contains the method definition for the size, pattern points and precedence of the characters. Also contains the logic for character scanner and logic..&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;CharRecognitionHandler&lt;/strong&gt; &lt;em&gt;(there&#39;s one faux paus committed, the CharRecognition which contains the method definition should be named CharRecognitionHandler whereas the CharRecognitionHandler which contains the predefinition of variable should be named CharRecognition)&lt;br /&gt;&lt;/em&gt;Contains only the predefined sets of variable for character recognition&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;DBHandler&lt;/strong&gt;&lt;br /&gt;Contains various methods involving the interaction with DA database&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;DotAAssistant&lt;/strong&gt;&lt;br /&gt;Contains fuzzy logic to determine what the DA should do if the player changes its state, ea: from absent to present&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;DotALogic&lt;br /&gt;&lt;/strong&gt;Contains mathematical logic involving formulas used to calculate attributes of a player&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;FileOperator&lt;/strong&gt;&lt;br /&gt;Contains various methods involving file I/O operations&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ItemRecognition (&lt;em&gt;Incomplete&lt;/em&gt;)&lt;/strong&gt;&lt;br /&gt;Contains the methods used to retrieve RGB codes of different items to form a combination of pattern points&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Player&lt;br /&gt;&lt;/strong&gt;Contains the definition for the player object&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;PlayerHandler&lt;/strong&gt;&lt;br /&gt;Contains various methods which handle the changes of player state&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;AudiSim (2009)&lt;/span&gt;&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=audi1-1.png&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/audi1-1.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=audi2-2.png&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/audi2-2.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;AudiSim is a simulator for the game Audition Online, which was written in Java. It serves as a training tool for the user to improve by a larger margin. Do bear in mind that in practice the effect may vary, depending on the individual attributes. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;I’ve also written a replay viewer for AudiSim, a program which has the ability to load the AudiSim replay files. In order for the replay viewer to load the replay file, you would need to insert the directory of the replay file in the command line (by right clicking run.bat -&gt; edit). &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;The user configuration file&lt;/strong&gt;(&lt;em&gt;config.ini&lt;/em&gt;)&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=audi_config-1.png&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/audi_config-1.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;span style=&quot;font-size:0;&quot;&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Nature of the program&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=audi3-1.png&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/audi3-1.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;AudiSim first retrieves the user configuration from the file passed to the ini constructor (Main.java) . It thereafter passes the retrieved user configuration to the AudiSim Interface constructor. &lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=audi1.png&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/audi1.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Next, AudiSim instantiates/initializes the necessary objects and variables for the GUI to be loaded. At this point the database handler(DBHandler) begins to come into the picture by executing a query on the AudiSim database to retrieve the number of moves left for the user to successfully complete the training session. &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=audi2.png&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/audi2.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=audi3.png&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/audi3.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;AudiSim then passes the value to the moveArray for the program to allocate the space needed to store the moves. After that, AudiSim explicitly invoke the method retrieveSetofMoves(int bpm) in DBHandler to retrieve the set of keys left, fills the moveArray up with the set of keys stored in the result set and DBHandler terminates the loop after it reaches the last set of key. Next, AudiSim shuffles the key in order for them to appear in randomized order (if you do not want the key to be shuffled, change the shuffle = true to false).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=audi4.png&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/audi4.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=audi5.png&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/audi5.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;After shuffling the collection of moves, AudiSim retrieves the first set of move in the collection and assigns a copy of current move to the log data buffer (&lt;em&gt;var : dataBuffer&lt;/em&gt;). AudiSim identifies the length of the current move to ascertain the number of image panel needs to be repainted. Each of the keys goes through the arrow handler procedure, the segment where the chance handler kicks in and assigns chance flag to the selected keys. &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=audi6.png&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/audi6.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Lastly, AudiSim creates the key listener to listen for user input for appropriate changes to be made on the image panel when user presses an arrow key. AudiSim also creates file handles and output stream associated with the replay and log file if the user specifies the session to be saved and logged.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;cPrOxCMS (2008)&lt;/span&gt;&lt;br /&gt;cPrOxCMS is a web content management system for MapleStory private server written fully in PHP. It serves as a framework for the players to access information and several features in the server. The core feature of cPrOxCMS which makes it distinctive from all other available MapleStory CMS around is the crafting system, which I would delve deeper into it in the latter part of this post(don&#39;t expect much though, as I will only be posting screenshots of it). &lt;/p&gt;&lt;p&gt;&lt;br /&gt;I won’t be explaining much about this release because if I were to do so for these 70 files of PHP code, I believe I’ll lose my sanity before I even finish writing the first half of the files. Hence, I will only be listing out the features for this release. Pardon my inability to fully enlist the features of the CMS because my memory decided to fail me at this point of time.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Warning:&lt;/strong&gt; You are strongly advisable to place the news_insert.php, news_insertion.php and a copy of config.php in another hidden directory in your webserver otherwise anyone who accesses your web could easily load the news insertion page and create a big havoc in the news section.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Features&lt;br /&gt;&lt;/span&gt;-Sanitizing forms/queries input to prevent SQL Injection attacks&lt;br /&gt;-Cookie checking to prevent cookie modification&lt;br /&gt;-Auto tracing unrecognized user inputs&lt;br /&gt;-Nation&lt;br /&gt;-Shoutbox&lt;br /&gt;-Ranking&lt;br /&gt;-Crafting system&lt;br /&gt;-Allows user to customize permissions for viewing buddy and guild list&lt;br /&gt;-Allows user to view guild members/BBS threads and posts&lt;br /&gt;-Allows user to view buddy list&lt;br /&gt;-Allows user to upload screenshots&lt;br /&gt;-Allows user to perform character reset&lt;br /&gt;-Allow user to add stats&lt;br /&gt;-Fully customizable crafting rate&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Screenshots&lt;/span&gt;&lt;br /&gt;The main page&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=maple1a.png&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/maple1a.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Overview of an account&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=maple2.png&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/maple2.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Rebirth system&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=maple3.png&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/maple3.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Shoutbox&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=maple4.png&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/maple4.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Cash purchase system&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=maple5a.png&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/maple5a.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Crafting system(Settings)&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=maple0.png&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/maple0.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Crafting system (Step 2 of 4)&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=maple6a.png&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/maple6a.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Crafting system (Step 3 of 4)&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=maple7a.png&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/maple7a.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Crafting system (Step 4 of 4)&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=maple8a.png&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/maple8a.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=maple8.png&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/maple8.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;Download links&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.megaupload.com/?d=YNYHSU9D&quot;&gt;DotA Assistant&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.megaupload.com/?d=BYH280DM&quot;&gt;AudiSim&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.megaupload.com/?d=GQ4M4QHP&quot;&gt;cPrOxCMS&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://alwayscp.blogspot.com/feeds/740534989746937254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9064130078297918417/740534989746937254' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/740534989746937254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/740534989746937254'/><link rel='alternate' type='text/html' href='http://alwayscp.blogspot.com/2010/04/dotaassistant-audisim-cproxcms.html' title='DotAAssistant + AudiSim + cPrOxCMS'/><author><name>-2o1o- AlwaysCp</name><uri>http://www.blogger.com/profile/01191694150108771620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9064130078297918417.post-7584742898981621178</id><published>2009-11-17T21:54:00.034+08:00</published><updated>2009-11-18T13:33:05.731+08:00</updated><title type='text'>-2o1o- DotA Assistant</title><content type='html'>&lt;span style=&quot;font-size:180%;&quot;&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;DotA Assistant is a program fully built in Java, with pixel scanning merchanism as the core. It&#39;s meant to work alongside with Warcraft III : DotA, with the features listed as follows:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Main features :&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Detecting opponent heroes and notifying the user when the program loses vision of the heroes in the minimap &lt;/li&gt;&lt;li&gt;Assessing the battling ability of heroes and displaying the probability of one hero winning another to the user &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Note :&lt;/strong&gt; &lt;em&gt;Bear in mind that this program is still heavily being tested and the information produced are therefore susceptible to inaccuracy. &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;&lt;strong&gt;The Hero Detection System&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/pic1.png&quot; /&gt;&lt;/img&gt;&lt;br /&gt;At the beginning of the game the program will scan the minimap and register the hero when its found by the scanner.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/DA_pic2.png&quot; /&gt;&lt;/img&gt;&lt;br /&gt;When any of the registered heroes appear to be missing, the user will be notified by the program about the absence of the hero.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/DA_pic13.png&quot; /&gt;&lt;/img&gt;&lt;br /&gt;The hero will also be notified when the hero is no longer absent.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;The Hero Assessment System&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;The hero assessment system basically retrieves the attribute information of the hero(es) and produces useful information such as the effective hitpoints, attack cooldown, amount of time needed for a hero to kill another hero, and the probability of a hero winning another hero.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/DA_pic15.png&quot;&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/DA_pic15.png&quot; /&gt;&lt;/a&gt; &lt;span style=&quot;font-size:85%;&quot;&gt;&lt;em&gt;(The timer starts at the moment the projectile of my hero&#39;s shot reaches my opponent)&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The screenshot above demonstrates the output produced by the hero assessment system. Pay more attention to the fourth line counting from the bottom,&lt;em&gt; Amount of time needed for Drow Ranger to kill Dwarven Sniper&lt;/em&gt; and the magnified timer on top(click on the ss if you&#39;re unable to view it in full).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/DA_pic14.png&quot;&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/DA_pic14.png&quot; /&gt;&lt;/img&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The magic of mathematics,&lt;br /&gt;31 + 15.84 = &lt;strong&gt;46.84s = 47s(as shown in the screenshot)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/BMpfTQK1ax4&amp;amp;hl=en&amp;amp;fs=1&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/BMpfTQK1ax4&amp;hl=en&amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Note :&lt;/strong&gt; &lt;em&gt;The information produced only serve as a benchmark for the user to gauge the battling ability of the selected hero. By the program telling me that my hero needs 15.84s to kill my opponent DOES NOT mean that my hero would take that amount of time to kill the hero when it comes to real-play situation.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;Nature of the program&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;It&#39;s always more interesting when it comes to the conceptual explanation of any of the -2o1o- grand releases because their true beauty and elegance do not come from the output it produces to the user, which I&#39;ve briefly covered some of them above; it conversely comes from the inner design of the program: the robustness of algorithm, the style of programming logic, the control flags, the playaround of APIs. These are the few elements, which forms the core, the foundation of the program.&lt;br /&gt;&lt;br /&gt;Please do not feel perplexed as you scroll down and read the walls of technical terms/graphical illustration. Trust me, its not as hard as it seems if you have the foundation in programming; you just have to be ready work with pixels and myriads of RGB codes&lt;br /&gt;&lt;br /&gt;This program technically encompasses of three main modules:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The Minimap Scanner&lt;/li&gt;&lt;li&gt;The Name Scanner&lt;/li&gt;&lt;li&gt;The Attribute Scanner&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;The Minimap Scanner&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/DA_pic3.png&quot; /&gt;&lt;/img&gt;&lt;br /&gt;The program uses Robot API to create an image capture at the minimap region of the screen(captured image as shown in the picture above). Initially the program was set to scan at an incremental value of 3 for both the x and y value each time it moves, it was however being found out that the algorithm could not achieve the intended accuracy after performing several stages of testing.&lt;br /&gt;&lt;br /&gt;For the sake of producing promising information to the user(I would not say its 100% accurate but at least the inaccuracy is pardonable), I&#39;ve decided to use the performance-accuracy tradeoff approach. The accuracy of the scanner was increased at the expense of the CPU performance by decreasing the incremental value for both x and y from 3 to 1, thus proportionally increasing the number of pixel scans from 4333 1/3(195 x 200 / (3x3)) to 39000(195 x 200 / (1x1)) scans for each cycle(195 x 200 is the size of the minimap).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Note :&lt;/strong&gt; &lt;em&gt;For users with low computer performance, the minimap scanner will hog a considerable amount of CPU usage whenever its scanning takes place. I&#39;ll revise the algorithm so that it overcomes such deficiency if there&#39;s a high demand from the users.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Once the program found a pixel containing the RGB value listed in the predefined sets of RGB range, it will register the found pixel as an identifier of a player, in accordance with the player number set for the predefined range of RGB codes&lt;br /&gt;&lt;br /&gt;If any of the opponent heroes happens to be missing from the sight of the user or his/her allied units, the mini dot corresponding to the missing hero would likewise be missing from the minimap. This event would render the minimap scanner unable to scan for the missing hero range of RGB codes, thus making it consider the hero missing from the map. When this happens, the Robot API typeMessage() method would explicitly be invoked by the program to send a message notifying the user regarding the absence of the hero.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;The Name Scanner&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Its the human&#39;s nature for being able to recognize the letters at a glance, irregardless of how badly written the letter is or how much the letter deviates from its actual style. This is also the main reason why image verification mechanism become one of the most powerful and prominent security measure in the world.&lt;/p&gt;&lt;p&gt;But let&#39;s face it, computer processes at a speed where not even millions of our human brain could beat it. When it comes to character recognition, I certainly do not deny the fact that the computer may not be able to recognize letter as good as the human at first; but when its crafted with a well structured algorithm defining the technical way of recognizing the letters in procedural manner, it&#39;s not a total impossibility for a computer attain the same level of character recognition as the human. When this stage is achieved, the level and amount information a computer produces over time could far surpass the human.&lt;/p&gt;&lt;p&gt;I crave your pardon for being slightly out of topic, but this is exactly what&#39;s on my mind before it comes to the development of the scanners, especially the name and attribute scanners. You see, being able to analyse up to 10k characters and generating up to thousands lines of information per sec to the user, I believe that it&#39;s not beyond the bounds of possibility for a player to play DotA in a complete flawless style. Let&#39;s get back on topic, introducing you the second core module of the program - the name scanner.&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/DA_pic4.png&quot; /&gt;&lt;/img&gt;&lt;br /&gt;Similar to the aforementioned minimap scanner, the name scanner uses Robot API to capture an image of the region which contains the level and the name of hero.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/DA_pic5.png&quot; /&gt;&lt;/img&gt;&lt;br /&gt;The only difference is that the y value works as a baseline and remains as a constant whenever the name scanner does its scanning, whereas the value of x changes as the scanner pointer moves. The scanner travels on x axis, on the basis of pixel by pixel, ignores every black pixels it come across and stops at the point where a white pixel is detected.&lt;br /&gt;&lt;br /&gt;Take the picture above as an example, the first point, with the coordinate being (538,733), is the point where the scanner stops(we call it the point of origin) to scan for the pattern of the character it stops at(in this case its the letter L), and compares with the predefined pattern points to determine what letter it is.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/DA_pic7.png&quot; /&gt;&lt;/img&gt;&lt;br /&gt;&lt;br /&gt;The letter which resides on the point of origin has to match all the predefined pattern points before it&#39;s being recognized as the corresponding letter. For simplicity&#39;s sake, I&#39;ll omit 8 out of 12 of the pattern points for the letter L, leaving only 4 pattern points to be discussed.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Note&lt;/strong&gt; : &lt;em&gt;the combination of both integer value x and y form a pattern point which denotes the distance of the pattern point from the point of origin.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Since 8 of the pattern points for the letter &#39;L&#39; have been omitted, lets just deny their existence. Don&#39;t look at them, don&#39;t even think of the purpose of them being there; just focus on the four points circled in red.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Note :&lt;/strong&gt; &lt;em&gt;The coordinate system in computer does not work the same as the Cartesian coordinate system, the decrement of value y in the computer system indicates that the point is moving upwards instead of downwards. In another word, the smaller the value y of a point, the higher the position of the point in the computer coordinate system.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/DA_pic9.png&quot; /&gt;&lt;/img&gt;&lt;br /&gt;&lt;br /&gt;The scanner begins by checking the first pattern point for the letter &#39;L&#39;, (0,-4). If the pixel 0 x and -4 y distance away from the origin is a white pixel the scanner will proceed to the second pattern point; if its a black pixel, the scanner directly negate the possibility of the letter being &#39;L&#39;. In this case the origin is (538,733) and the pixel at the position 0 x and -4 y distance away from the origin is not a black pixel. &lt;/p&gt;&lt;p&gt;Next, the scanner will check the second pattern point for the letter &#39;L&#39; (1,-4).&lt;br /&gt;Similar to the concept above, if the pixel at the position 1 x and -4 y distance away from the origin is not a black pixel, the program will preserve the possibility of the letter being &#39;L&#39; and continue to check for the next pattern point.&lt;br /&gt;&lt;br /&gt;The process repeats until the scanner reaches the last pattern point.&lt;br /&gt;If every of the pixels scanned does not appear to be a black pixel to the program, the program will recognize the letter as the corresponding letter(in this case the program will recognize the letter above as a &#39;L&#39;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The character precedence&lt;/strong&gt;&lt;br /&gt;Now we&#39;ve finished about the character recognition part; the program could now recognize the letters individually if we supply the pattern points as a guideline for the program, but what happens if the program tries to recognize letters bearing a resemblance to another letter?&lt;br /&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/DA_pic10.png&quot; /&gt;&lt;/img&gt;&lt;br /&gt;For instance, the letter c could be recognized by the program as an &#39;e&#39; and the letter l could be recognized by the program as a &#39;L&#39;, owing to the fact that the letter e and l have all the pattern points for the letter c and L respectively. When the scanner scans the line of text &#39;Level 1 Bone Fletcher&#39; it will produce the output &lt;strong&gt;Llecvecl 1l Bocnec Fllectlchlecr. &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/DA_pic11.png&quot; /&gt;&lt;/img&gt;&lt;br /&gt;A simple workaround for this is to specify a set of precedence for every of the letters bearing a resemblance to another letter. Taking the first part as an example, if the scanner scans and recognizes a letter being both letter a and i, it will negate the possibility of the letter being &#39;i&#39; because logically the letter a has more pattern points(more pixels) compared to the letter &#39;i&#39;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;The Attribute Scanner&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/DA_pic12.png&quot; /&gt;&lt;/img&gt;&lt;br /&gt;The attribute scanner does not differ much from the name scanner except that instead of having only one baseline, the attribute scanner scans on 5 different elevation of y axis. After the translation of pixels to numbers, the translated numbers will be passed to the DotALogic class to process other information which the users may deem useful, such as the EHP, DPS, AC, damage reduction, hp regen, mp regen. The formulas to perform calculation as such are listed as follows:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Assume that&lt;br /&gt;Average Damage = avgDmg&lt;br /&gt;Minimum Damage = minDmg&lt;br /&gt;Maximum Damage = maxDmg&lt;br /&gt;Additional Dmg = addDmg&lt;br /&gt;Total Dmg = totalDmg&lt;br /&gt;Attack Cooldown = AC&lt;br /&gt;Damage per second = DPS&lt;br /&gt;Effective HP = EHP&lt;br /&gt;Hit point = HP&lt;br /&gt;Time needed to kill = TNTK&lt;br /&gt;Probability of winning = PoW&lt;br /&gt;Additional Agility = addAgi&lt;br /&gt;Damage Reduction = dmgReduction&lt;br /&gt;Additional Armor = addArmor;&lt;br /&gt;Hero1 = First hero to be compared&lt;br /&gt;Hero2 = Second hero to be compared&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;avgDmg&lt;/strong&gt; = (minDmg + maxDmg) * 0.5&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;totalDmg&lt;/strong&gt; = avgDmg + additionalDmg&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;AC&lt;/strong&gt; = baseAC / (1 + ((agi + addAgi) * 0.01))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;DPS&lt;/strong&gt; = (addDmg + avgDmg) /AC&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;DPS&lt;/strong&gt; = (addDmg + avgDmg) / ( baseAC / (1 + ((agi + addAgi) * 0.01)))&lt;br /&gt;dmgReduction = 1 - (1 / (1 + ((armor + addArmor) * 0.06)))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;EHP&lt;/strong&gt; = HP/damageReduction&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;EHP&lt;/strong&gt; = HP / 1 - (1 / (1 + ((armor + addArmor) * 0.06)))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Hero1.TNTK&lt;/strong&gt; = Hero2.HP / ((Hero1.totalDmg * (1-Hero2.dmgReduction / Hero1.AC) )-Hero2.HPRegen)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Hero1.TNTK&lt;/strong&gt; = Hero2.HP / (((((Hero1.minDmg + Hero1.maxDmg) * 0.5) + Hero1.additionalDmg) * (1-(1 - (1 / (1 + ((Hero2.armor + Hero2.addArmor) * 0.06)))) / (Hero1.baseAC / (1 + ((Hero1.agi + Hero1.addAgi) * 0.01)))) )-Hero2.HPRegen)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Hero2.TNTK&lt;/strong&gt; = Hero2.HP / ((Hero2.totalDmg * (1-Hero1.dmgReduction / Hero2.AC) )-Hero1.HPRegen)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Hero2.TNTK&lt;/strong&gt; = Hero1.HP / (((((Hero2.minDmg + Hero2.maxDmg) * 0.5) + Hero2.additionalDmg) * (1-(1 - (1 / (1 + ((Hero1.armor + Hero1.addArmor) * 0.06)))) / (Hero2.baseAC / (1 + ((Hero2.agi + Hero2.addAgi) * 0.01)))) )-Hero1.HPRegen)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Hero1.PoW&lt;/strong&gt; = 1 - Hero1.TNTK / Hero1.TNTK + Hero2.TNTK&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Hero1.PoW&lt;/strong&gt; = 1 - (Hero2.HP / (((((Hero1.minDmg + Hero1.maxDmg) * 0.5) + Hero1.additionalDmg) * (1-(1 - (1 / (1 + ((Hero2.armor + Hero2.addArmor) * 0.06)))) / (Hero1.baseAC / (1 + ((Hero1.agi + Hero1.addAgi) * 0.01)))) )-Hero2.HPRegen)) / ((Hero2.HP / (((((Hero1.minDmg + Hero1.maxDmg) * 0.5) + Hero1.additionalDmg) * (1-(1 - (1 / (1 + ((Hero2.armor + Hero2.addArmor) * 0.06)))) / (Hero1.baseAC / (1 + ((Hero1.agi + Hero1.addAgi) * 0.01)))) )-Hero2.HPRegen))+(Hero1.HP / (((((Hero2.minDmg + Hero2.maxDmg) * 0.5) + Hero2.additionalDmg) * (1-(1 - (1 / (1 + ((Hero1.armor + Hero1.addArmor) * 0.06)))) / (Hero2.baseAC / (1 + ((Hero2.agi + Hero2.addAgi) * 0.01)))) )-Hero1.HPRegen)))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;Future enhancement&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Item recognition&lt;br /&gt;&lt;/strong&gt;&lt;em&gt;I&#39;ve already completed coding the algorithm its just that the process of extracting up to 3k sets of item RGB codes is a big hurdle for me, even with the assistance of an API written intentionally for this purpose.&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Skill prediction&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;To calculate the damage and predict the sequence of skill the opponent will use on the user&#39;s hero&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Enhanced version of hero assessment system&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;Enhanced version of hero assessment version will take orb effects such as critical strike, life steal and bashing into account.&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Performance &lt;/strong&gt;&lt;br /&gt;&lt;em&gt;The current algorithm scans up to 500k or even 1 million pixels per second would gradually lead to CPU exhaustion, it needs to be revised and rewritten.&lt;/em&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/DA_pic16.png&quot; /&gt;&lt;/img&gt; &lt;span style=&quot;font-size:85%;&quot;&gt;&lt;em&gt;(a screenshot of the database for item recognition module in 0th Normalization Form 0NF)&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I won&#39;t release the executables or the source code anytime soon because currently the codes are still at the level of content coupling and commucational cohesion and furthermore there are still lots of architectural revision to be made.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://alwayscp.blogspot.com/feeds/7584742898981621178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9064130078297918417/7584742898981621178' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/7584742898981621178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/7584742898981621178'/><link rel='alternate' type='text/html' href='http://alwayscp.blogspot.com/2009/11/2o1o-dota-assistant.html' title='-2o1o- DotA Assistant'/><author><name>-2o1o- AlwaysCp</name><uri>http://www.blogger.com/profile/01191694150108771620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9064130078297918417.post-9050699567297028730</id><published>2008-11-18T23:59:00.001+08:00</published><updated>2008-11-18T23:59:32.143+08:00</updated><title type='text'>-2o1o- Cracking SHA1/SHA512/MSSQL hashes</title><content type='html'>--</content><link rel='replies' type='application/atom+xml' href='http://alwayscp.blogspot.com/feeds/9050699567297028730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9064130078297918417/9050699567297028730' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/9050699567297028730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/9050699567297028730'/><link rel='alternate' type='text/html' href='http://alwayscp.blogspot.com/2008/11/2o1o-cracking-sha1sha512mssql-hashes.html' title='-2o1o- Cracking SHA1/SHA512/MSSQL hashes'/><author><name>-2o1o- AlwaysCp</name><uri>http://www.blogger.com/profile/01191694150108771620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9064130078297918417.post-8977166806597559084</id><published>2008-11-18T23:58:00.000+08:00</published><updated>2008-11-18T23:59:13.363+08:00</updated><title type='text'>-2o1o- Challenge spoofing/NTLM downgrading</title><content type='html'>--</content><link rel='replies' type='application/atom+xml' href='http://alwayscp.blogspot.com/feeds/8977166806597559084/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9064130078297918417/8977166806597559084' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/8977166806597559084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/8977166806597559084'/><link rel='alternate' type='text/html' href='http://alwayscp.blogspot.com/2008/11/2o1o-challenge-spoofingntlm-downgrading.html' title='-2o1o- Challenge spoofing/NTLM downgrading'/><author><name>-2o1o- AlwaysCp</name><uri>http://www.blogger.com/profile/01191694150108771620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9064130078297918417.post-4270534613603178400</id><published>2008-11-18T23:52:00.001+08:00</published><updated>2008-11-18T23:52:36.771+08:00</updated><title type='text'>-2o1o- An example of ARP poisoning(HTML form password stealing)</title><content type='html'>--</content><link rel='replies' type='application/atom+xml' href='http://alwayscp.blogspot.com/feeds/4270534613603178400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9064130078297918417/4270534613603178400' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/4270534613603178400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/4270534613603178400'/><link rel='alternate' type='text/html' href='http://alwayscp.blogspot.com/2008/11/2o1o-example-of-arp-poisoninghtml-form.html' title='-2o1o- An example of ARP poisoning(HTML form password stealing)'/><author><name>-2o1o- AlwaysCp</name><uri>http://www.blogger.com/profile/01191694150108771620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9064130078297918417.post-437499974938156385</id><published>2008-11-18T23:49:00.025+08:00</published><updated>2008-11-23T17:16:36.061+08:00</updated><title type='text'>-2o1o- Birthday Attack!</title><content type='html'>&lt;strong&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;The Birthday Paradox&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;em&gt;In probability theory, the birthday problem, or birthday paradox[1]&lt;br /&gt;pertains to the probability that in a set of randomly chosen people some pair of&lt;br /&gt;them will have the same birthday. In a group of 23 (or more) randomly chosen&lt;br /&gt;people, there is more than 50% probability that some pair of them will both have&lt;br /&gt;been born on the same day. For 57 or more people, the probability is more than&lt;br /&gt;99%, reaching 100% as the number of people reaches 366.[2] The mathematics&lt;br /&gt;behind this problem leads to a well-known cryptographic attack called the&lt;br /&gt;birthday attack. [Wikipedia.org]&lt;/em&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;“How many birthdays does a person have in a year?”&lt;br /&gt;“One”&lt;br /&gt;“Then assume in a group of 23, how do we calculate the probability of a person having the same birth date as another?”&lt;br /&gt;“Since the probability of one person’s birthday falls on a day is 1/365, so in a group of 23 it would be 23/365 = &lt;strong&gt;6.3%&lt;/strong&gt;”&lt;br /&gt;(&lt;em&gt;not taking the presence of leap years into account&lt;/em&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;&lt;strong&gt;WRONG&lt;/strong&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;So what’s the right way of answering this?&lt;br /&gt;The simpler version of formula is&lt;br /&gt;(number of people * (number of people – 1) ) / 2&lt;br /&gt;(23 * 22) / 2 = &lt;strong&gt;253 pairs&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;If you’re so inclined to find out the proper way of solving the case above, you can search for permutations and combinations on the web. Yea, and be prepared to work with big numbers.&lt;br /&gt;&lt;br /&gt;Next, we calculate the probability of one person’s birthday &lt;strong&gt;DOESN’T&lt;/strong&gt; fall on a day, and that would be&lt;br /&gt;364/365 = 0.99726 (&lt;strong&gt;99.72%&lt;/strong&gt;) &lt;em&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;it seems really big now but trust me, after a number of self multiplication, it shrinks really fast&lt;/span&gt;&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;we then apply the 253 as the exponent since now we are trying to get the probability of 253 pairs(group of 23).&lt;br /&gt;&lt;br /&gt;and it would be&lt;br /&gt;&lt;br /&gt;0.99726^253 = 0.4995 (&lt;strong&gt;49.95%&lt;/strong&gt;) &lt;span style=&quot;font-size:85%;&quot;&gt;&lt;em&gt;get what i was trying to say?&lt;/em&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Now we’ve gotten the probability, but we are not done yet. Note that we were only focusing on the problem scenario (with the keyword DOESN’T), so in order to get the probability of a group of 23 sharing the same birth date we would do&lt;br /&gt;&lt;br /&gt;1 – 0.4995 = 0.5005 (&lt;strong&gt;50.05%&lt;/strong&gt;)&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/5/56/Birthday_paradox.png/800px-Birthday_paradox.png&quot; /&gt;&lt;br /&gt;&lt;em&gt;A graph showing the approximate probability of at least two people sharing a birthday amongst a certain number of people.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now that we’ve calculated the number of pairs, the problem scenario’s probability and the actual probability. So what does it got to do with cryptography?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;The Digital Signature&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;We are proceeding to the interesting part; let’s take the common archetypes in cryptography as an example: Alice, Bob, Mallory, Carol and Bob. Suppose that Alice wants to send an encrypted letter to Carol, and with the content that she wants to recommend Dave as the IT manager in the company, her letter would look something like&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Dear Carol,&lt;br /&gt;I would like to recommend Dave as the IT manager of our company because from my observation he has the potential to handle the role as an IT manager. Furthermore he is hardworking and does not late..&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;Then the Alice would digitally sign the letter using PGP(&lt;em&gt;Pretty Good Privacy&lt;/em&gt;) and hand it to her secretary Mallory. However due to some personal disputes Mallory had with Dave, Mallory does not want Dave to hold the position. Hence, she would write another letter to stop Dave from getting the job and the letter would look like&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Dear Carol,&lt;br /&gt;I feel that Dave is not a perfect candidate for the role as the IT manager because he is often late and does not show any commitment in his work. Furthermore he does not know how to cooperate with his colleagues..&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;Indeed this letter would be perfect for Mallory to achieve her goal, but obviously Carol would not sign this letter and it is computationally infeasible for Mallory to obtain the private key from the digital signature. To further enhance your understanding on how the Birthday Attack takes place in this scenario, I will break down the following explanation into steps.&lt;br /&gt;&lt;br /&gt;1. Alice is given two keys. One is called the public key and another one is called the private key.&lt;br /&gt;2. The public key is given to anyone who needs it, but the private key is kept to her only.&lt;br /&gt;3. Both one of the key can encrypt the data and the other key can be used to decrypt the data&lt;br /&gt;4. Alice can encrypt the letter using her private key and Carol can decrypt the letter thereafter using her public key and vice versa. Mallory has the access of the encrypted letter but without the Alice&#39;s private key she can do nothing with it.&lt;br /&gt;5. In order to sign a document, Alice will convert the letter into just a few lines by a process called “hashing” (ie: MD5, SHA). These few lines are called the message digest, and since it was created using one-way-hash function, it cannot be reverted back to its initial plaintext form.&lt;br /&gt;6. Alice then encrypts the message digest using her private key and that would produce the digital signature.&lt;br /&gt;7. Alice attaches the digital signature to the letter and passes it to her secretary Mallory, asking her to pass the encrypted letter to Carol.&lt;br /&gt;8. Mallory decrypts the digital signature back to the message digest form.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;img src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/Digital_Signature_-_How_it_works.jpg/412px-Digital_Signature_-_How_it_works.jpg&quot; /&gt; &lt;span class=&quot;Apple-style-span&quot; style=&quot;LINE-HEIGHT: 15px;font-family:-webkit-sans-serif;font-size:11;&quot;  &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;FONT-STYLE: italic&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;LINE-HEIGHT: 15px;font-family:-webkit-sans-serif;&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;FONT-STYLE: italic&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;A diagram showing how a RSA digital signature is applied and then verified. (DSA and NR differ slightly.) [Wikipedia.org]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;We assume that the letter&lt;br /&gt;&lt;em&gt;Dear Carol,&lt;br /&gt;I would like to recommend Dave as the IT manager of our company because from my observation he has the potential to handle the role as an IT manager. Furthermore he is hardworking and does not late..&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;produces the message digest&lt;br /&gt;&lt;em&gt;iOJfioJcioSJSfioJSVkSMflsdfkLNSgWIjfLImnvcLKFnLhfI&lt;/em&gt;&lt;em&gt;OShfIEGNLSnbZLSHgfIHFLHGliHklvNSlgfNSLHISLIhfLnfLIjhgPQOgpGiqojOGVIAOJBKdmaKLdnVJW&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;p&gt;and the letter&lt;br /&gt;&lt;em&gt;Dear Carol,&lt;br /&gt;I feel that Dave is not a perfect candidate for the role as the IT manager because he is often late and does not show any commitment in his work. Furthermore he does not know how to cooperate with his colleagues..&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;produces the message digest&lt;br /&gt;&lt;em&gt;SGIOPDOPvmKFmvklNLSDKFLWGOPvjWIPGKBVmWKLVnLKTJWPFjIPtfwnMCnMFWPGUWJbpJKVCM:LKCMQJFaOIBPOKjfSFjKSfjKSLvjKLvKSjvSjdfjsf&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;If Mallory were to substitute the second letter with the original one and pass it to Carol, she would be able to tell that the letter has been substituted since the message digest produced by the hashing function of the second letter does not match the message digest produced by the decryption of the digital signature.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;The Birthday Attack takes place&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Mallory writes the letter again&lt;br /&gt;&lt;em&gt;Dear Carol,&lt;br /&gt;I (feel think) that Dave (is not isn’t) a perfect candidate for the role as the IT manager because (he is he’s) (often always) late and (does not doesn’t) show any (commitment responsibility) in his work. (Furthermore Moreover) he (does not doesn’t) know how to (cooperate work) with his colleagues..&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;The ( aa bb ) denotes the alternative usage of word, which means either aa or bb can be used to produce different variation of letters while keeping the message conveyance of the letter intact. Since there are 9 combinations of alternative words, Mallory is able to generate up to 2^9 amount of similar letters using all the possible alternative pairs. Mallory would then hash all of the generated letters and given enough of combinations she would eventually be able to come up with a letter with exactly the same message digest as the original one.&lt;br /&gt;&lt;br /&gt;For example,&lt;br /&gt;Letter (257/512)&lt;br /&gt;&lt;em&gt;Dear Carol,&lt;br /&gt;I think that Dave is not a perfect candidate for the role as the IT manager because he is always late and doesn’t show any responsibility in his work. Moreover he does not know how to work with his colleagues&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;Message Digest :&lt;br /&gt;&lt;em&gt;SfiPSJifoSJidfOSJDIONGWIOSNVISjfWPJDiMvNWkjdHSDjASHfuSHfoSHfoWSHfjSHDjhfushfOUShfJShfOSdhAODHOAhfOWSFhSJfhSdjHJSdhUShJfhSJfhJSHFj&lt;br /&gt;&lt;/em&gt;(does not match with the original one)&lt;br /&gt;&lt;br /&gt;Letter (412/512)&lt;br /&gt;&lt;em&gt;Dear Carol,&lt;br /&gt;I feel that Dave isn’t a perfect candidate for the role as the IT manager because he’s often late and doesn’t show any commitment in his work. Moreover he does not know how to work with his colleagues&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;Message Digest :&lt;br /&gt;i&lt;em&gt;OJfioJcioSJSfioJSVkSMflsdfkLNSgWIjfLImnvcLKFnLhfIOShfIEGNLSnbZLSHgfIHFLHGliHklvNSlgfNSLHISLIhfLnfLIjhgPQOgpGiqojOGVIAOJBKdmaKLdnVJW&lt;br /&gt;&lt;/em&gt;(&lt;strong&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;matches the original one&lt;/span&gt;&lt;/strong&gt;)&lt;br /&gt;&lt;br /&gt;Consequently, Carol would not be able to notice that the letter has been altered since the letter generates the same message digest as the digital signature.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;The Birthday Attack program&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;I&#39;ve written a program to prove the mathematics behind the probability theory. In the program there&#39;s only one constructor, accepting two parameters.&lt;/p&gt;&lt;em&gt;&lt;blockquote&gt;&lt;em&gt;public BirthdayAttack(int itemRange,int amount) {&lt;/em&gt;&lt;/blockquote&gt;&lt;/em&gt;&lt;p&gt;I shall stick to the example given above, using the same itemRange(the days) and the amount(the number of people in a group)&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;public static void main(String[] args) { BirthdayAttack ba = new BirthdayAttack(365,23); ba.generate(); ba.compare(); ba.calculate(); }&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;The Output&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;blockquote&gt;Generated numbers&lt;br /&gt;-----------------&lt;br /&gt;39&lt;br /&gt;155&lt;br /&gt;191&lt;br /&gt;327&lt;br /&gt;352&lt;br /&gt;163&lt;br /&gt;121&lt;br /&gt;282&lt;br /&gt;8&lt;br /&gt;166&lt;br /&gt;210&lt;br /&gt;182&lt;br /&gt;331&lt;br /&gt;310&lt;br /&gt;29&lt;br /&gt;358&lt;br /&gt;352&lt;br /&gt;285&lt;br /&gt;71&lt;br /&gt;92&lt;br /&gt;66&lt;br /&gt;353&lt;br /&gt;28&lt;br /&gt;--End of number generation--&lt;br /&gt;&lt;br /&gt;2 352 spotted&lt;br /&gt;&lt;br /&gt;The probability :&lt;br /&gt;50.048%&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;a href=&quot;http://www.megaupload.com/?d=XD4A3NM6&quot;&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Download Link(Megaupload)&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alwayscp.blogspot.com/feeds/437499974938156385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9064130078297918417/437499974938156385' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/437499974938156385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/437499974938156385'/><link rel='alternate' type='text/html' href='http://alwayscp.blogspot.com/2008/11/2o1o-birthday-attack.html' title='-2o1o- Birthday Attack!'/><author><name>-2o1o- AlwaysCp</name><uri>http://www.blogger.com/profile/01191694150108771620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9064130078297918417.post-1297498588993680324</id><published>2008-11-18T22:41:00.008+08:00</published><updated>2008-11-20T01:19:02.963+08:00</updated><title type='text'>JAVA : Client-Server based ATM Simulation with SSL Encryption</title><content type='html'>&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;FONT-WEIGHT: bold;font-size:85%;&quot; class=&quot;Apple-style-span&quot;&gt;Screenshots&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;ATMClient&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/atm_client776x529.jpg&quot; /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;Bank Server&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size:+0;&quot;&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/bank_server-2.jpg&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;Packets before SSL encryption implementation&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;span style=&quot;font-size:0;&quot;&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/atm_2.jpg&quot; /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Packets after SSL encryption implementation&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;span style=&quot;font-size:0;&quot;&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/atm_3-1.jpg&quot; /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;Introduction &lt;/span&gt;&lt;br /&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;The ATM simulation program is a program to simulate the real ATM machine. It provides similar functions as the real ATM machine. We will get into detail about the functions later. In brief, these are the four windows that the ATM client has:&lt;br /&gt;&lt;/span&gt;&lt;v:shapetype stroked=&quot;f&quot; filled=&quot;f&quot; path=&quot;m@4@5l@4@11@9@11@9@5xe&quot; coord spt=&quot;75&quot; preferrelative=&quot;t&quot; style=&quot;font-size:21600,21600;&quot;&gt;&lt;o:lock aspectratio=&quot;t&quot; ext=&quot;edit&quot;&gt;&lt;span style=&quot;font-size:0;&quot;&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/atm1.jpg&quot; /&gt;&lt;/span&gt;&lt;/o:lock&gt;&lt;/v:shapetype&gt;&lt;/p&gt;&lt;ul style=&quot;MARGIN-TOP: 0in&quot; type=&quot;disc&quot;&gt;&lt;br /&gt;&lt;li style=&quot;mso-list: l1 level1 lfo1; tab-stops: list .5in&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;The ATM main windows is where the user will be interacting with, to pass the request to the bank server. &lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style=&quot;mso-list: l1 level1 lfo1; tab-stops: list .5in&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;The ATM receipt windows prints the contents of a real ATM receipt.&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style=&quot;mso-list: l1 level1 lfo1; tab-stops: list .5in&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;The ATM network activity windows which displays the user the network interaction with the server. &lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style=&quot;mso-list: l1 level1 lfo1; tab-stops: list .5in&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;The ATM card slot windows which displays the current account number in use and enables the user to insert ATM card &lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style=&quot;BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; PADDING-BOTTOM: 1pt; PADDING-LEFT: 4pt; PADDING-RIGHT: 4pt; BACKGROUND: #e6e6e6; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 1pt; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;Please do note that the network activity windows is not meant to be included to the idea “simulation”. It is an add-on by us for the user to further understand how client-server interaction takes place in computing. Hence, there may be some details that should be hidden from the knowledge of an ATM user being displayed in this windows such as account number of the recipient being showed.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;Programming conventions&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;We are pleased to say that from the knowledge that we had in our previous lectures, we were able to write the program coding that conforms most of the Java coding conventions. &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;The program is written based on the conventions as follows:&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul style=&quot;MARGIN-TOP: 0in&quot; type=&quot;disc&quot;&gt;&lt;li style=&quot;mso-list: l0 level1 lfo2; tab-stops: list .5in&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;Two blank lines between sections of source file, classes and interfaces&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style=&quot;mso-list: l0 level1 lfo2; tab-stops: list .5in&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;One blank line between methods, local variables and logical sections&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style=&quot;mso-list: l0 level1 lfo2; tab-stops: list .5in&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;Naming convention such as variable should start with a lower case letter first and constant should be in capitalized form, separated by _.&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style=&quot;mso-list: l0 level1 lfo2; tab-stops: list .5in&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;C-style comment at the beginning of every source files&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;Program implementations&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;We also fully utilized the capability of OOP (Object Oriented Programming) concept. Since the Java does not advocate having too much of repetitive coding (similar coding perform similar action), we adopt the habit to convert the piece of coding into a method that features reusability also further reduces the complexity and the size of the whole program. &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;In favor of increasing the security of the program, we implemented SSL (Secure Socket Layer) into this program since in reality security is a major concern for an ATM machine. Next, we also generated approximately 500 user accounts for the user to have sufficient amount of accounts to perform simulative testing.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;em&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;**To view the continuation of the documentation please download the program&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.megaupload.com/?d=EJUIUNIC&quot;&gt;DOWNLOAD LINK(MEGAUPLOAD)&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://alwayscp.blogspot.com/feeds/1297498588993680324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9064130078297918417/1297498588993680324' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/1297498588993680324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/1297498588993680324'/><link rel='alternate' type='text/html' href='http://alwayscp.blogspot.com/2008/11/java-client-server-based-atm-simulation.html' title='JAVA : Client-Server based ATM Simulation with SSL Encryption'/><author><name>-2o1o- AlwaysCp</name><uri>http://www.blogger.com/profile/01191694150108771620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9064130078297918417.post-4823503723757350585</id><published>2008-10-31T23:54:00.014+08:00</published><updated>2008-11-01T14:04:10.266+08:00</updated><title type='text'>-2o1o- Web Spambot v1.1.5 released!</title><content type='html'>&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;After a few days of consideration again I&#39;ve decided to release this program again, lol how indecisive I am. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Warning :&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; Please be informed that excessive usage of this program could lead to a malady known as Denial of Service(DoS)/Distributed Denial of Service(DDoS) attack that may land you in court, and that could result in a sentence of up to a few years of imprisonment should you be found guilty. Use this program only for testing purposes or with the consent of others parties. Personally as a white hat hacker I myself do not advocate that nor am I responsible for any form of damage or harm incurred from the misuse of this program.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Overview of the program&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;FONT-WEIGHT: normal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/sb1.jpg&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;1.&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;WHITE-SPACE: pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;The target URL&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;2.&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;WHITE-SPACE: pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;The parameter of the POST request &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;3.&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;WHITE-SPACE: pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;The value of the parameter&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;4.&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;WHITE-SPACE: pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Number of threads to be used &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;5.&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;WHITE-SPACE: pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;The status message box&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;In order to further increase your understanding to operate this program, I’ll perform a live demo on one of the web hosted on my webserver. Take a look at the number of registered account, 3175; which means currently there’s an amount of 3175 accounts in my database. &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/phpdWK8YaPM.jpg&quot; /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;The screenshot below shows the registration form of the site. There are four mandatory fields to be filled, therefore the web spambot has to load four parameter/value fields, notwithstanding the availability of hidden fields. However this isn’t what we are going to deal with; unless you are unsure of the what value to be filled into a particular field and would like to discover the pattern of the acceptable values by playing around with the form. The main purpose of us visiting this page is to view the source code and extract the required information to perform the attack.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/sb8.jpg&quot; /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;For your viewing convenience, I’ve copy pasted the source code of the registration page and marked the important elements that you should take note of. The value in red box is the page that handles the registration form’s POST requests, and it should only have one in every form. The values in blue box on the other hand are the parameters of the form, the number of parameter in a form does not have a fixed value, and the number may vary time to time. In this case we have a total of four parameters: the&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;FONT-STYLE: italic&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; reg_id&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;, the &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;FONT-STYLE: italic&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;reg_pw&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;, the &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;FONT-STYLE: italic&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;reg_pw2&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;, and the &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;FONT-STYLE: italic&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;reg_email&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;. Now we’ve gathered enough information to launch an attack.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/sb2.jpg&quot; /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot; msonormal&quot;&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Since there are four parameters in the form and assume that I want to flood the web with 300 accounts, I would have &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;FONT-STYLE: italic&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;–n 300 -p 4&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; as the arguments to be passed to the program. &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;FONT-STYLE: italic&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;FONT-STYLE: italic&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;-n denotes the number of POST requests&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;FONT-STYLE: italic&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;-p denotes the number of parameters&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;FONT-STYLE: italic&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/sb5.jpg&quot; /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;This is how the fields should look like:&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/sb3.jpg&quot; /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;click Start&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;and&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;.......&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot; msonormal&quot;&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Done! 299 successive POST requests sent(299 registered accounts) in 17843 milisecs(17.8 secs). &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;That’s amazingly so much of deviation from the previous version of web spambot(around 74% of performance boost, not taking into account the connection latency and the nature of network performance being fluctuant when handling excessively lots of packets) &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/sb6-1.jpg&quot; /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/sb7-1.jpg&quot; /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;A screenshot of the database&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/php0Lr6Z0PM.jpg&quot; /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Pretty neat eh?&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Warning : &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Even&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;if you have the wrong parameters filled, by clicking start you and the target host would still consume considerably amount of bandwidth; the same thing happens even if the target host has your IP blocked/blacklisted, because technically the process of examining the source IP and discarding packets consumes bandwidth as well. &lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Number of threads versus Performance &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/sb10.jpg&quot; /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;I&#39;ve done a study to find out the relation between the number of threads and performance in this program using Microsoft Excel with number of POST requests, n being 50 and 300. The result of the findings turned to be somewhat out of my expectation and I don&#39;t see a clear relation of the number of threads versus performance in this program as illustrated above. For now just stick to whatever number of threads you like, I will be revising the program again after I&#39;ve done with my school exams and assignments.&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Addons&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;The class diagram&lt;/span&gt;&lt;br /&gt;&lt;a href=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/?action=view&amp;amp;current=sb_cd.jpg&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;img alt=&quot;Photobucket&quot; src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/sb_cd.jpg&quot; border=&quot;0&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href=&quot;http://files.filefront.com/2o1o+Web+Spambotrar/;12212431;/fileinfo.html&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Download link : Javadocs + Source code + JAR executable + Class diagram in a bundle&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://alwayscp.blogspot.com/feeds/4823503723757350585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9064130078297918417/4823503723757350585' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/4823503723757350585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/4823503723757350585'/><link rel='alternate' type='text/html' href='http://alwayscp.blogspot.com/2008/10/2o1o-web-spambot-v115-released.html' title='-2o1o- Web Spambot v1.1.5 released!'/><author><name>-2o1o- AlwaysCp</name><uri>http://www.blogger.com/profile/01191694150108771620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9064130078297918417.post-4747639882065252063</id><published>2008-10-28T01:03:00.007+08:00</published><updated>2008-10-28T01:40:00.609+08:00</updated><title type='text'>Web spambot</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Managed to get the spambot prototype done two days ago; I&#39;ve used it on my web server and to my surprise the spambot was able to register up to 300 accounts in approximately 30 secs(&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;that&#39;s around 860k accounts per day operating on a single-threaded environment&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;). &lt;/span&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Gonna add some enhancements like performance enhancement&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;, GUI and multi-threading support after I got my assignments done.&lt;/span&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Note&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; : I realized that if this program were to be used for non-legitimate purposes the damage that  it would inflict could be significant, hence I won&#39;t be releasing this program to the public.&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alwayscp.blogspot.com/feeds/4747639882065252063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9064130078297918417/4747639882065252063' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/4747639882065252063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/4747639882065252063'/><link rel='alternate' type='text/html' href='http://alwayscp.blogspot.com/2008/10/web-spambot.html' title='Web spambot'/><author><name>-2o1o- AlwaysCp</name><uri>http://www.blogger.com/profile/01191694150108771620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9064130078297918417.post-2874041232289843156</id><published>2008-10-23T23:57:00.010+08:00</published><updated>2008-10-24T03:13:58.849+08:00</updated><title type='text'>-2o1o- Cryptanalysis of Caesar Cipher</title><content type='html'>&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;In cryptography, a Caesar cipher, also known as a Caesar&#39;s cipher, the shift cipher, Caesar&#39;s code or Caesar shift, is one of the simplest and most widely known encryption techniques. It is a type of substitution cipher in which each letter in the plaintext is replaced by a letter some fixed number of positions down the alphabet. For example, with a shift of 3, A would be replaced by D, B would become E, and so on. The method is named after Julius Caesar, who used it to communicate with his generals.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;Quoted from Wikipedia.or&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;g&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:13px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;I found this cipher suit simple yet interesting, hence I brainstormed to program an utility out to perform the encryption process. You can download it &lt;a href=&quot;http://files.filefront.com/Caesar+CAjava/;12138872;/fileinfo.html/11/1&quot;&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;To encrypt a plaintext, you have to first call the insertPlaintext() method, and insert the required arguments. This method accepts only two arguments: the plaintext and the number of shifts. For instance, suppose &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;ce &lt;/span&gt;is the instance of Caesar_CA() that I&#39;ve created, in order to encrypt the string &quot;testing&quot; with the rows shift of 8, I will have to type this:&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;blockquote&gt;ce.insertPlaintext(&quot;testing&quot;,8);&lt;/blockquote&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Followed by an explicit method call of encrypt(),&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;blockquote&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;ce.encrypt();&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;However the encrypt method does not invoke the method to display the encrypted text, you have to call the System.out.println() or similar method to display the string returned by the displayCiphertext() method. For instance,&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;blockquote&gt;System.out.println(ce.displayCiphertext());&lt;/blockquote&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Finally, the output would be&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;|m{|qvo&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:13px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Now it comes to the interesting part; we are going to discuss about the way to decipher the ciphertext without the knowledge of the number of rows shifted through cryptanalysis. I do realise that the term cryptanalysis may be completely new to some of you, but don&#39;t worry as it doesn&#39;t require a genius to understand the underlying concept of it. Conversely, once you&#39;ve gotten the hang of it, you will begin to find it interesting. In short, Cryptanalysis is the study of translating the ciphertext back into the plaintext.&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;For the purpose of guiding you from the scratch, I shall use the cipher suit that you are already familiar with. Take the aforementioned case as example, shifting row of the plaintext &quot;testing&quot; by 8 would produce the ciphertext &quot;|m{|qvo&quot;. The decrypting process is comparatively simple, all it does is only basically reshifting the rows of the text back to its previous state. This also applies to most of the asymmetric encryptions; if you have the private key, you can decrypt the ciphertext at any point of time. Now it comes to the tricky part, also the gist of what I&#39;m trying to deliver to you. What would happen if you do not have the private key?(in Caesar, private key is similar to the number of shifted rows) Will you still be able to obtain the initial form of the ciphertext?&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;The answer is obviously yes, virtually every encryption algorithm has its own way to retrieve the plaintext-form of the ciphertext&#39;s. Don&#39;t get me wrong, theoretically retrieveable does not imply that it&#39;s retrieveable in practice. Take the hash I&#39;ve gotten from challenge spoofing for example: the Windows XP NTLM Security Session hash. In theory its perfectly possible to obtain the plaintext, that is, by performing an exhaustive search brute force attack. However the whole process of brute forcing would take more than millions or even billions of years, and just so you know there&#39;s no one that is silly enough to spend his/her entire life just for breaking a hash nor does he/she can live for that long. Consequently, it&#39;s practically impossible for a person to break a strong encryption but for a simple and weak encryption algorithim like Caesar, it&#39;s both theoretically and practically breakable.&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;In Caesar, since there are only a limited number of possible shifts.(26 for alpha combinations) One way to achieve the goal is to list out all the possible shifts in a tabular form. The program you downloaded above will demonstrate how it is done.&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;First, you have to call the method insertCiphertext() and pass the ciphertext into the argument. After which, you call the System.out.println() method to print the table returned by the cryptA() method.&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Lastly,&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/Caesar_CA.jpg&quot; /&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:13px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://alwayscp.blogspot.com/feeds/2874041232289843156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9064130078297918417/2874041232289843156' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/2874041232289843156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/2874041232289843156'/><link rel='alternate' type='text/html' href='http://alwayscp.blogspot.com/2008/10/2o1o-cryptanalysis-of-caesar-cipher.html' title='-2o1o- Cryptanalysis of Caesar Cipher'/><author><name>-2o1o- AlwaysCp</name><uri>http://www.blogger.com/profile/01191694150108771620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9064130078297918417.post-656881323791162801</id><published>2008-10-23T23:52:00.004+08:00</published><updated>2008-10-24T03:15:11.611+08:00</updated><title type='text'>-2o1o- Does MTU affect your network latency?</title><content type='html'>&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;As most of you might have already aware about, there are a few common factors that bear potential to affect the overall network performance, such as the size of bandwidth, the distance between two sending and receiving nodes, the quality of the transmission medium, the strength of the wireless signal etc. Now I&#39;m going to discuss about something other than the common factors that affects the overall network performance, the MTU.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;For simplicity&#39;s sake, I shall not confuse you passages of purple prose regarding MTU. The short yet understandable definition of MTU: MTU(Max Transmission Unit) is the maximum size of packet being sent across network without being fragmented. The pertinent question being posed is that, &quot;How does MTU affects the latency of a network?&quot;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;I do aware that the you as the one reading this might be a computer geek that does lots of network related stuff daily and you might think that since MTU is only a measure of the maximum size of a packet before it gets fragmented, the increment/decrement of its size would only affect the number of packets being fragmented across network and it would not affect the total capacity of a network, let alone the transmission speed. However, the nature of the network is that, every packet fragments will have a network frame attached to it. What a frame does that it carries the information like source/destination address, frame sequence, checksum, TTL, so that the intended recipient knows that the packet belongs to it upon reception by looking at the destination address. The recipient then assembles the fragmented packets in accordance with the frame sequence. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:13px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Consequently, it&#39;s necessary for every fragmented packets to have a frame attached so that it can be received by the intended recipient and be assembled into its initial form. In conclusion, the smaller the MTU size is, the more fragments a packet need to break into, the more frames need to be sent and ultimately it leads to heavier network overhead.&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alwayscp.blogspot.com/feeds/656881323791162801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9064130078297918417/656881323791162801' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/656881323791162801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/656881323791162801'/><link rel='alternate' type='text/html' href='http://alwayscp.blogspot.com/2008/10/2o1o-does-mtu-affect-your-network.html' title='-2o1o- Does MTU affect your network latency?'/><author><name>-2o1o- AlwaysCp</name><uri>http://www.blogger.com/profile/01191694150108771620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9064130078297918417.post-4242985901705476347</id><published>2008-10-23T23:12:00.009+08:00</published><updated>2008-10-24T10:19:39.051+08:00</updated><title type='text'>-2o1o- An Example of RSA Algorithm</title><content type='html'>&lt;div&gt;&lt;a href=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/rsa1.jpg&quot;&gt;&lt;img src=&quot;http://s285.photobucket.com/albums/ll63/crystalphoen/th_rsa1.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;An example of RSA encryption algorithim quoted from www.wikipedia.org&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;(&lt;a href=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/rsa1.jpg&quot;&gt;Click to enlarge&lt;/a&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;RSA is an asymmetric encryption algorithm that features public key cryptography technology. I&#39;ve written an example of RSA encryption in Java, you can download it &lt;a href=&quot;http://files.filefront.com/RSAjava/;12138760;/fileinfo.html/11/1&quot;&gt;here&lt;/a&gt;. Dont fret if you dont understand it at the first glance; It&#39;s not as hard as how it seems, I will go through part by part of the program with you.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;blockquote&gt;import java.math.BigInteger;&lt;/blockquote&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Since the primitive data types in Java does not support huge integers that is essentially required in RSA, I&#39;ve imported the BigInteger class as an approach for such deficiency. For more information about BigInteger. Click &lt;a href=&quot;http://files.filefront.com/RSAjava/;12138871;/fileinfo.html/11/1&quot;&gt;here&lt;/a&gt;. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;System.out.println(&quot;Generating Public and Private keys..&quot;);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;n = p * q;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;z = (p-1) * (q-1);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;Note&lt;/span&gt; : In this case we assume the totient p(n) as z&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;RSA requires a pair of key called the public key and the private key pair. Public key is meant to be distributed over the world for encrypting purpose whereas private key is meant to be kept in personal for decrypting purpose. In order to achieve this, first we will have to define two prime numbers. I will use 11 and 13 for simplicity&#39;s sake, but bear in mind that in a real situation the primes are very likely to be over more than 100 digits, and the computation of the whole process usually takes lots of CPU resources and time, hence RSA is far slower than DES and other symmetric cryptosystem. The code n = p * q; describes the process of n = pq. On the other hand, z = (p-1) * (q-1) describes the process of computing (p-1)*(q-1). The processes above compute the values n and z and this completes the public key pair. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;for (int i=3;i&lt;=z;i++) {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;if ((z % i)!=0) e=i;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;for (int x=0;x&lt;=z*3;x++) { //x has to be at least 1 time larger than z which carries the value of (p-1) * (q-1)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;(((e*x) % z) == 1) {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; d = x;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;The code above shows the process of generating one of the private key entry e, which has to be relatively prime to the value z. It also shows the generation of the private key exponential where de = n mod 1. These two values has to be kept secret.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;public BigInteger encrypt(int enc) {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; enc2 = BigInteger.valueOf(enc);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; n2 = BigInteger.valueOf(n);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; encPowE=enc2.pow(e);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; encPowEModN = encPowE.mod(n2);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; return  encPowEModN; //returns the encrypted message&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;The program first assigns the value of enc into the BigInteger instance enc since the method pow() can only be invoked by an instance of BigInteger. Likewise, n2 carries the value of n for the purpose of invocation for the method mod(). The process above can be shown with the equation as follows&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;where &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;enc = the message to be encrypted&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;e = the relative prime of the computation of (p-1) * (q-1), z&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;n = computation of pq&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;Encrypt(enc) = (enc^e) MOD n&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Assume 52 is the value we are going to encrypt, so the equation would be&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;Encrypt(52) = (25^119) MOD 143&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;           &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;equivalent to &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;103&lt;/span&gt;. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;public BigInteger decrypt(int decr) {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; decr2 = BigInteger.valueOf(decr);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; decrPowD = decr2.pow(d);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; decrPowDModN = decrPowD.mod(n2);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; return  decrPowDModN ; //returns the decrypted message&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Now it comes to the decrypting part, similar to the encrypting part, the decr2 instance holds the value of decr, also the ciphertext. The process is shown as follows&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;where &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;decr = the ciphertext to be decrypted&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;d = the private key exponential&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;n = the computation of pq&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;Decrypt(decr) = (decr^d) MOD n&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;so it would be,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;Decrypt(103) = (103^359) MOD 143&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;and Voila! You got the decrypted message &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;52&lt;/span&gt;!&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alwayscp.blogspot.com/feeds/4242985901705476347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9064130078297918417/4242985901705476347' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/4242985901705476347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/4242985901705476347'/><link rel='alternate' type='text/html' href='http://alwayscp.blogspot.com/2008/10/2o1o-example-of-rsa-algorithm.html' title='-2o1o- An Example of RSA Algorithm'/><author><name>-2o1o- AlwaysCp</name><uri>http://www.blogger.com/profile/01191694150108771620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9064130078297918417.post-2884242600960991959</id><published>2008-10-23T22:51:00.007+08:00</published><updated>2008-10-24T11:05:44.865+08:00</updated><title type='text'>2o1o- Basic Mobile Application Programming Guide</title><content type='html'>&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;First you have to download and install all the required programs listed as follows:&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;  &lt;ul style=&quot;margin-top:0in&quot; type=&quot;disc&quot;&gt;  &lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list:l0 level1 lfo1;tab-stops:list .5in&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Microsoft      ActiveSync&lt;/span&gt;&lt;/li&gt;  &lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list:l0 level1 lfo1;tab-stops:list .5in&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Microsoft      Visual Studio 05/08&lt;/span&gt;&lt;/li&gt;  &lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list:l0 level1 lfo1;tab-stops:list .5in&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Windows      Mobile 6 SDK&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;The setups for the files are pretty much straightforward so I guess it won’t be of much problem for you to get the installations done.&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;When everything is done, launch the Microsoft Visual Studio and select File -&gt; New Project, expand Visual Basic and click Smart Device Project and then select Smart Device Project at the right portion of the windows. You may change the name if you wish to; press OK when everything is done.&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Next, a dialog similar to the picture below should appear, make sure that you’ve selected the right Target platform and .Net Framework version.(It’s not a necessity to have the same settings as what shown in the picture). Press OK when you’re done.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/mobile1.jpg&quot; /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Design your form similar to the layout shown in the picture below. Again, it’s not a necessity to follow everything exactly. Just make sure that you have two textboxes for the username/password, a login button, and codes that validates the username/password combination.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/mobile2.jpg&quot; /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Similarly, design your form in accordance with the layout shown in the picture below. The recipient groups’ checkboxes allow you to specify your target recipient. Note that within the simulative environment recipient’s number can be any combination of numbers such as 02528335 or even 1234567. For instance, suppose you have the Marketing Dept and Finance Dept checkboxes ticked, the two departments have the number of 00000 and 00001 defined respectively. Upon the transmission of the SMS, the mobile phones having the number 00000 and 00001 will receive the SMS.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;The piece of code that does the SMS sending to the emulator is as follows:&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;where &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;span&gt;&lt;span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;h = The number of the recipient. For example you can do retrieve the number from a textbox like txtRecipient.text&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;g = The message to be sent. For example txtMessage.text&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;span&gt;&lt;span&gt;&lt;blockquote&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Dim VBMobileSMS As New SmsMessage(h, g)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;VBMobileSMS.Send()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Before that, you have to import an external library first(&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;place this at the topmost of the program&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt;&lt;blockquote&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Imports Microsoft.WindowsMobile.PocketOutlook&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Note&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt; : &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;If you encounter an error stating that the library could not be found, go Projects -&gt; Add Reference and select Microsoft.WindowsMobile.PocketOutlook under .NET&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/mobile3.jpg&quot; /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Once you’ve gotten the design/coding done, hit F5 once or click the green arrow-like button, a windows should appear, asking you to select an emulator to deploy for the program. Personally I prefer running my mobile programs using Windows Mobile 6 Professional Emulator, but of course ultimately the choice is still yours. (As far as I know the difference in the type of emulator chosen does not affect your programs in any way, except the appearance of course.) Most importantly, make sure that your cell emulator is running else the emulator would not load.&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Next, a mobile emulator should appear and your program will be loaded into the emulator as well. Now try to send a simple SMS, you should be able to see the message you typed in the cell emulator, similar to the picture below.&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;&lt;img src=&quot;http://i285.photobucket.com/albums/ll63/crystalphoen/mobile4.jpg&quot; /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;If you encounter an error stating that the COM port is unavailable or similar, check the bottom left of your cell emulator program, you should be able to see which port your cell emulator is currently using. Now go back to the deployment of the mobile emulator select File -&gt; Configure -&gt; Peripherals, under &lt;/span&gt;&lt;st1:place st=&quot;on&quot;&gt;&lt;st1:placename st=&quot;on&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Serial&lt;/span&gt;&lt;/st1:placename&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;  &lt;/span&gt;&lt;st1:placetype st=&quot;on&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Port&lt;/span&gt;&lt;/st1:placetype&gt;&lt;/st1:place&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt; 0, type in the port that you’ve gotten from the cell emulator.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;You can download the program &lt;/span&gt;&lt;a href=&quot;http://files.filefront.com/SMS+Senderrar/;12138873;/fileinfo.html/11/1&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alwayscp.blogspot.com/feeds/2884242600960991959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9064130078297918417/2884242600960991959' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/2884242600960991959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/2884242600960991959'/><link rel='alternate' type='text/html' href='http://alwayscp.blogspot.com/2008/10/2o1o-basic-mobile-application.html' title='2o1o- Basic Mobile Application Programming Guide'/><author><name>-2o1o- AlwaysCp</name><uri>http://www.blogger.com/profile/01191694150108771620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9064130078297918417.post-6043605771186249289</id><published>2008-10-23T22:49:00.003+08:00</published><updated>2008-11-02T15:15:30.337+08:00</updated><title type='text'>CABAL : High attack or high crit damage/rate?</title><content type='html'>Some calculations i made to calculate the efficiency of&lt;br /&gt;Red Osm single slotted weapon vs deathblow titan double slotted&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Character build&lt;/strong&gt;&lt;br /&gt;rol+1 x 2 &lt;em&gt;20% crit rate&lt;br /&gt;&lt;/em&gt;lightning blade &lt;em&gt;15% crit rate&lt;br /&gt;&lt;/em&gt;ice blade &lt;em&gt;10% crit rate&lt;br /&gt;&lt;/em&gt;character base &lt;em&gt;5% crit rate&lt;br /&gt;&lt;/em&gt;50% total crit rate&lt;br /&gt;&lt;br /&gt;helm&lt;em&gt; 20% crit dmg&lt;br /&gt;&lt;/em&gt;titan(slot extended)&lt;em&gt; 48% crit dmg &lt;/em&gt;/ red osm&lt;em&gt; 20% crit dmg&lt;br /&gt;&lt;/em&gt;ice + lightning &lt;em&gt;20% crit dmg&lt;br /&gt;&lt;/em&gt;character base &lt;em&gt;20% crit dmg&lt;br /&gt;&lt;/em&gt;108% total crit dmg / 80% total crit dmg&lt;br /&gt;&lt;br /&gt;eof+8&lt;em&gt; 5% amp&lt;br /&gt;&lt;/em&gt;bof+3 x2 &lt;em&gt;10% amp&lt;/em&gt;&lt;br /&gt;boots/suit/glove &lt;em&gt;21% amp&lt;br /&gt;&lt;/em&gt;36% total amp&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;total atk with titan/phery 700&lt;br /&gt;total atk with redosm/topaz 770&lt;br /&gt;&lt;br /&gt;cr = crit rate&lt;br /&gt;cd = crit dmg&lt;br /&gt;sw.amp = sword amp&lt;br /&gt;ch.amp = character amp&lt;br /&gt;sk.amp = skill amp&lt;br /&gt;sk.atk = skill atk&lt;br /&gt;ch.atk = character atk&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Formula to calc output damage&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;Damage rating = (cr/100)*((((sk.amp+(ch.amp/100))*ch.atk)+sk.atk)+((((sk.amp+(ch.amp/100))*ch.atk)+sk.atk)*(cd/100)))&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;titan phery estimated output damage= no amp involved* = (50/100)*(((1.7*700))+904)+((1.7*700)+904)*(108/100))) = 0.5*(2094+(2094*1.08)) = &lt;strong&gt;2177.76&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;redosm topaz estimated output damage= (50/100)*(((1.7*770))+904)+((1.7*770)+904)*(80/100)))no amp involved* = 0.5*(2213+(2213*0.8)) = 1991.7&lt;br /&gt;&lt;br /&gt;titan phery estimated output damage with 36% amp= (50/100)*(((2.06*700))+904)+((2.06*700)+904)*(108/100)))= 0.5*(2346+(2346*1.08))= &lt;strong&gt;2439.84&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;redosm topaz estimated output damage with 36% amp= (50/100)*(((2.06*770))+904)+((2.06*770)+904)*(80/100)))= 0.5*(2490+(2490*0.8))= 2241.00&lt;br /&gt;&lt;br /&gt;therefore we can deduce that db titan &gt; red osm(&lt;em&gt;higher damage rating&lt;/em&gt;)</content><link rel='replies' type='application/atom+xml' href='http://alwayscp.blogspot.com/feeds/6043605771186249289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9064130078297918417/6043605771186249289' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/6043605771186249289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/6043605771186249289'/><link rel='alternate' type='text/html' href='http://alwayscp.blogspot.com/2008/10/cabal-high-attack-or-high-crit.html' title='CABAL : High attack or high crit damage/rate?'/><author><name>-2o1o- AlwaysCp</name><uri>http://www.blogger.com/profile/01191694150108771620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9064130078297918417.post-2044968681176003462</id><published>2008-10-23T22:48:00.000+08:00</published><updated>2008-10-23T22:49:43.122+08:00</updated><title type='text'>Solution for &quot;Cannot find eksplorasi.exe&quot;</title><content type='html'>1. Start -&gt; Run -&gt; Regedit&lt;br /&gt;2.  HKEY_LOCAL_MACHINE&gt;SOFTWARE&gt;Microsoft&gt;Windows  NT&gt;CurrentVersion&gt;Winlogon(Note : always consider making a backup of your  regedit settings everytime before submitting any changes should any problems  occur later on)&lt;br /&gt;3. In the right panel of the regedit windows, you should be  able to see Shell = &quot;Explorer.exe &quot;%Windows%\Eksplorasi.exe&quot;&quot;&lt;br /&gt;4. Delete  &quot;%Windows%\Eksplorasi.exe&quot; located beside explorer.exe and you&#39;re  done&lt;br /&gt;Example : shell=&quot;Explorer.exe&quot;</content><link rel='replies' type='application/atom+xml' href='http://alwayscp.blogspot.com/feeds/2044968681176003462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9064130078297918417/2044968681176003462' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/2044968681176003462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9064130078297918417/posts/default/2044968681176003462'/><link rel='alternate' type='text/html' href='http://alwayscp.blogspot.com/2008/10/solution-for-cannot-find-eksplorasiexe.html' title='Solution for &quot;Cannot find eksplorasi.exe&quot;'/><author><name>-2o1o- AlwaysCp</name><uri>http://www.blogger.com/profile/01191694150108771620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>