<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.vineetdhanawat.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"> <channel><title>BOTS World</title> <link>http://www.vineetdhanawat.com/blog</link> <description>Blog for Tech Enthusiasts by @vineetdhanawat</description> <lastBuildDate>Sat, 07 Apr 2012 11:10:53 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator>  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.vineetdhanawat.com/botsworld" /><feedburner:info uri="botsworld" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://superfeedr.com/hubbub" /><geo:lat>12.938179</geo:lat><geo:long>77.609804</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-nc-sa/3.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><feedburner:emailServiceId>botsworld</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item><title>How to use Broadcast Receiver in Android – Send and Receive SMS</title><link>http://feeds.vineetdhanawat.com/~r/botsworld/~3/PbnW3dnYn7Y/</link> <comments>http://www.vineetdhanawat.com/blog/2012/04/how-to-use-broadcast-receiver-in-android-send-and-receive-sms/#comments</comments> <pubDate>Sat, 07 Apr 2012 11:06:47 +0000</pubDate> <dc:creator>vineetdhanawat</dc:creator> <category><![CDATA[Android]]></category> <category><![CDATA[Headline]]></category> <category><![CDATA[Broadcast]]></category> <category><![CDATA[Counter]]></category> <category><![CDATA[How-To]]></category> <category><![CDATA[Permission]]></category> <category><![CDATA[Receiver]]></category> <category><![CDATA[SMS]]></category> <category><![CDATA[Telephony]]></category> <category><![CDATA[Tutorial]]></category> <guid isPermaLink="false">http://www.vineetdhanawat.com/blog/?p=573</guid> <description><![CDATA[Sending SMS is one of the basic features every phone has. In this tutorial we&#8217;ll create a SMS Sending Application for Android. You app can also Intercept any incoming SMS and perform task based on pre-defined rules, we&#8217;ll use Broadcast receiver for the listening  purpose.&#8230;
You may also like:<ol><li><a
href='http://www.vineetdhanawat.com/blog/2011/11/how-to-determine-location-using-gps-in-android-phones/' rel='bookmark' title='How to determine location using GPS in Android Phones'>How to determine location using GPS in Android Phones</a></li></ol>]]></description> <content:encoded><![CDATA[<p>Sending SMS is one of the basic features every phone has. In this tutorial we&#8217;ll create a SMS Sending Application for Android. You app can also Intercept any incoming SMS and perform task based on pre-defined rules, we&#8217;ll use <a
title="Broadcast Receiver" href="http://developer.android.com/reference/android/content/BroadcastReceiver.html" target="_blank">Broadcast receiver</a> for the listening  purpose.</p> <address><strong>Project Name</strong>: HelloSMS</address> <address><strong>Android Level</strong>: Android 2.3.3</address> <address><strong>Application Name</strong>: HelloSMS</address> <address><strong>Package Name</strong>: com.vineetdhanawat.hellosms</address> <address><strong>Create Activity</strong>: HelloSMS</address> <address><strong>Min SDK</strong> Version: 10</address> <address> </address><h3>Layout</h3><p>We&#8217;ll start with creating a layout for our main screen.</p><p><strong>Components</strong></p><ul><li>2 Text Strings</li><li>2 Editable Text Box</li><li>Character Counter in Message</li><li>Send Button</li></ul><div
id="attachment_575" class="wp-caption aligncenter" style="width: 313px"><a
href="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/03/Send-SMS.png"><img
class="size-full wp-image-575" title="Send-SMS" src="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/03/Send-SMS.png" alt="Send-SMS" width="303" height="308" /></a><p
class="wp-caption-text">The Home Screen of the SendSMS App</p></div><pre class="brush: plain; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
 android:orientation=&quot;vertical&quot;
 android:layout_width=&quot;fill_parent&quot;
 android:layout_height=&quot;fill_parent&quot;
 &gt;
&lt;TextView
 android:layout_width=&quot;fill_parent&quot;
 android:layout_height=&quot;wrap_content&quot;
 android:text=&quot;Enter the phone number of the recipient&quot;
 /&gt;
&lt;EditText
 android:id=&quot;@+id/phoneNo&quot;
 android:layout_width=&quot;fill_parent&quot;
 android:layout_height=&quot;wrap_content&quot;
/&gt;
&lt;TextView
 android:layout_width=&quot;fill_parent&quot;
 android:layout_height=&quot;wrap_content&quot;
 android:text=&quot;Message&quot;
/&gt;
&lt;EditText
 android:id=&quot;@+id/textMessage&quot;
 android:layout_width=&quot;fill_parent&quot;
 android:layout_height=&quot;160px&quot;
 android:gravity=&quot;top&quot;
/&gt;
&lt;TextView
 android:id=&quot;@+id/counter&quot;
 android:layout_width=&quot;fill_parent&quot;
 android:layout_height=&quot;wrap_content&quot;
 android:text=&quot;160/0&quot;
/&gt;
&lt;Button
 android:id=&quot;@+id/sendSMS&quot;
 android:layout_width=&quot;fill_parent&quot;
 android:layout_height=&quot;wrap_content&quot;
 android:text=&quot;Send SMS&quot;
/&gt;
&lt;/LinearLayout&gt;
</pre><h3>HelloSMS Main Activity</h3><p>In the Main HelloSMS Activity, we&#8217;ll do 2 things.</p><ul><li>Bind the <strong>Send SMS </strong>button to a OnClickListener() for sending sms.</li><li>Bind the Message Text box to addTextChangedListener() for counter.</li></ul><pre class="brush: plain; title: ; notranslate">
package com.vineetdhanawat.hellosms;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class HelloSMS extends Activity {
 /* Called when the activity is first created. */
  Button sendSMS;
  EditText phoneNo;
  EditText textMessage;
  TextView mCounter;
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    sendSMS = (Button) findViewById(R.id.sendSMS);
    phoneNo = (EditText) findViewById(R.id.phoneNo);
    textMessage = (EditText) findViewById(R.id.textMessage);
    mCounter = (TextView) findViewById(R.id.counter);
    textMessage.addTextChangedListener(mTextEditorWatcher);
    /* On Click Listener on the sendSMS Button. */
    sendSMS.setOnClickListener(new View.OnClickListener() {
      public void onClick(View v) {
        String mobNo = phoneNo.getText().toString();
        String message = textMessage.getText().toString();
        if (mobNo.length()&gt;0 &amp;&amp; message.length()&gt;0)
          sendSMS(mobNo, message);
        else
          Toast.makeText(getBaseContext(),
          &quot;Please enter both phone number and message.&quot;,
          Toast.LENGTH_SHORT).show();
      }
    });
  }
}
</pre><p>The sendSMS() is defined as follows: We do not need to instantiate this class directly, Instead we can call getdefault() to obtain the SmsManager Object. sendTextMessage() send the sms with a PendingIntent. In this case it does nothing, but it can be used to monitor the status of sent SMS.</p><pre class="brush: plain; title: ; notranslate">
/* Method to send SMS. */
private void sendSMS(String phoneNumber, String message)
{
  PendingIntent pi = PendingIntent.getActivity(this, 0,
    new Intent(this, SMS.class), 0);
  SmsManager sms = SmsManager.getDefault();
  sms.sendTextMessage(phoneNumber, null, message, pi, null);
}
</pre><p>Let us modify the code to monitor the Sent / Delivered status of the SMS. We&#8217;ll need to use BroadcastReceiver object for the purpose.</p><pre class="brush: plain; title: ; notranslate">
/* Method to send SMS. */
private void sendSMS(String mobNo, String message) {
  String smsSent = &quot;SMS_SENT&quot;;
  String smsDelivered = &quot;SMS_DELIVERED&quot;;
  PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
     new Intent(smsSent), 0);
  PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
     new Intent(smsDelivered), 0);
  /* Receiver for Sent SMS. */
  registerReceiver(new BroadcastReceiver(){
    @Override
    public void onReceive(Context arg0, Intent arg1) {
      switch (getResultCode())
      {
        case Activity.RESULT_OK:
          Toast.makeText(getBaseContext(), &quot;SMS sent&quot;,
            Toast.LENGTH_SHORT).show();
          break;
        case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
          Toast.makeText(getBaseContext(), &quot;Generic failure&quot;,
            Toast.LENGTH_SHORT).show();
          break;
        case SmsManager.RESULT_ERROR_NO_SERVICE:
          Toast.makeText(getBaseContext(), &quot;No service&quot;,
            Toast.LENGTH_SHORT).show();
          break;
        case SmsManager.RESULT_ERROR_NULL_PDU:
          Toast.makeText(getBaseContext(), &quot;Null PDU&quot;,
            Toast.LENGTH_SHORT).show();
          break;
        case SmsManager.RESULT_ERROR_RADIO_OFF:
          Toast.makeText(getBaseContext(), &quot;Radio off&quot;,
            Toast.LENGTH_SHORT).show();
          break;
      }
    }
  }, new IntentFilter(smsSent));
  /* Receiver for Delivered SMS. */
  registerReceiver(new BroadcastReceiver(){
    @Override
    public void onReceive(Context arg0, Intent arg1) {
      switch (getResultCode())
      {
        case Activity.RESULT_OK:
          Toast.makeText(getBaseContext(), &quot;SMS delivered&quot;,
            Toast.LENGTH_SHORT).show();
          break;
        case Activity.RESULT_CANCELED:
          Toast.makeText(getBaseContext(), &quot;SMS not delivered&quot;,
            Toast.LENGTH_SHORT).show();
          break;
        }
      }
    }, new IntentFilter(smsDelivered));
  SmsManager sms = SmsManager.getDefault();
  sms.sendTextMessage(mobNo, null, message, sentPI, deliveredPI);
}
</pre><p>Let us now implement the addTextChangedListener() as Counter.</p><div
id="attachment_586" class="wp-caption aligncenter" style="width: 593px"><a
href="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/03/SMS-Counter.png"><img
class="size-full wp-image-586" title="SMS-Counter" src="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/03/SMS-Counter.png" alt="SMS-Counter" width="583" height="176" /></a><p
class="wp-caption-text">Counter Display = No of Chars Left / Required SMS Count</p></div><pre class="brush: plain; title: ; notranslate">
private final TextWatcher mTextEditorWatcher = new TextWatcher() {
  public void beforeTextChanged(CharSequence s, int start,
   int count, int after) {
  }
  public void onTextChanged(CharSequence s, int start,
   int before, int count) {
    //This sets a textview to the current length
    String smsNo;
    if(s.length() == 0)
      smsNo = &quot;0&quot;;
    else
    smsNo = String.valueOf(s.length()/160 + 1);
    String smsLength = String.valueOf(160-(s.length()%160));
    mCounter.setText(smsLength+&quot;/&quot;+smsNo);
  }
  @Override
  public void afterTextChanged(Editable arg0) {
    // TODO Auto-generated method stub
  }
};
</pre><h3>Permissions</h3><p>In the <code>AndroidManifest.xml</code> file, we need to add the two permissions <strong>SEND_SMS</strong> and <strong>RECEIVE_SMS</strong></p><pre class="brush: plain; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    package=&quot;com.vineetdhanawat.hellosms&quot;
    android:versionCode=&quot;1&quot;
    android:versionName=&quot;1.0&quot; &gt;
    &lt;uses-sdk android:minSdkVersion=&quot;10&quot; /&gt;
    &lt;application
        android:icon=&quot;@drawable/ic_launcher&quot;
        android:label=&quot;@string/app_name&quot; &gt;
        &lt;activity
            android:name=&quot;.HelloSMS&quot;
            android:label=&quot;@string/app_name&quot; &gt;
            &lt;intent-filter&gt;
               &lt;action android:name=&quot;android.intent.action.MAIN&quot; /&gt;
               &lt;category android:name=&quot;android.intent.category.LAUNCHER&quot; /&gt;
            &lt;/intent-filter&gt;
        &lt;/activity&gt;
    &lt;/application&gt;
    &lt;uses-permission android:name=&quot;android.permission.SEND_SMS&quot;&gt;
	&lt;/uses-permission&gt;
	&lt;uses-permission android:name=&quot;android.permission.RECEIVE_SMS&quot;&gt;
	&lt;/uses-permission&gt;
&lt;/manifest&gt;
</pre><h3>Broadcast Receiver (Intercepting SMS)</h3><p>Applications can intercept Incoming SMS as well. To do so, you need to add &lt;receiver&gt; element inside <code>AndroidManifest.xml</code> . Make sure it is included inside element.</p><pre class="brush: plain; title: ; notranslate">
&lt;receiver android:name=&quot;com.vineetdhanawat.hellosms.SMSReceiver&quot;
  android:enabled=&quot;true&quot;&gt;
  &lt;intent-filter&gt;
  &lt;action android:name=&quot;android.provider.Telephony.SMS_RECEIVED&quot; /&gt;
  &lt;/intent-filter&gt;
&lt;/receiver&gt;
</pre><p>Add a new Class file <code>SMSReceiver.java</code>. Here we&#8217;ll be parsing the intercepted sms and displaying as Toast. But this will Toast all the incoming sms. In case you want to Toast particular senders, use getOriginatingAddress();</p><pre class="brush: plain; title: ; notranslate">
package com.vineetdhanawat.hellosms;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;
public class SMSReceiver extends BroadcastReceiver {
	@Override
	public void onReceive(Context context, Intent intent) {
	    /* Parse the SMS. */
		Bundle bundle = intent.getExtras();
		SmsMessage[] msgs = null;
		String str = &quot;&quot;;
		if (bundle != null)
		{
			/* Retrieve the SMS. */
			Object[] pdus = (Object[]) bundle.get(&quot;pdus&quot;);
			msgs = new SmsMessage[pdus.length];
			for (int i=0; i&lt;msgs.length; i++)
			{
				msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
				/* In case of a particular App / Service. */
                //if(msgs[i].getOriginatingAddress().equals(&quot;+91XXX&quot;))
                //{
				str += &quot;SMS from &quot; + msgs[i].getOriginatingAddress();
				str += &quot; :&quot;;
				str += msgs[i].getMessageBody().toString();
				str += &quot;\n&quot;;
                //}
            }
			/* Display the SMS as Toast. */
            Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
        }
	}
}
</pre><p>That&#8217;s it. You can also use two emulators, By default they will have device names as emulator-5554 and emulator-5556. You can test it by sending sms from one of them to another giving emulator-5556 or just 5556 as the number.</p><h3>App Ideas?</h3><p>Using the <a
title="How to determine location using GPS in Android Phones" href="http://www.vineetdhanawat.com/blog/2011/11/how-to-determine-location-using-gps-in-android-phones/" target="_blank">Location Sensing (GPS)</a> post which i posted a while before, and Broadcast Receiver above, It opens up a whole lot possibility of Apps.</p><p>Apps like JustDial. Where you have a lot of options like Theatres, Restaurant etc. All you need to do is choose an option. The app detects your location and sends your location to a pre-defined no. The server responds with list of available results (Say nearest Restaurants).</p><p>Want to learn more about Android Service and Broadcast Receiver? Check out <a
title="Android Service and Broadcast Receiver Tutorial" href="http://www.vogella.de/articles/AndroidServices/article.html" target="_blank">Vogel&#8217;s Blog</a></p><p><em><strong>Do you have any other Interesting App Ideas? Do share with us in the comments!</strong></em></p><p>You may also like:</p><ol><li><a
href='http://www.vineetdhanawat.com/blog/2011/11/how-to-determine-location-using-gps-in-android-phones/' rel='bookmark' title='How to determine location using GPS in Android Phones'>How to determine location using GPS in Android Phones</a></li></ol>
<p><a href="http://feedads.g.doubleclick.net/~a/CxTdBU8my_8oQeuI_Vj3unhcCMg/0/da"><img src="http://feedads.g.doubleclick.net/~a/CxTdBU8my_8oQeuI_Vj3unhcCMg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/CxTdBU8my_8oQeuI_Vj3unhcCMg/1/da"><img src="http://feedads.g.doubleclick.net/~a/CxTdBU8my_8oQeuI_Vj3unhcCMg/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.vineetdhanawat.com/~ff/botsworld?a=PbnW3dnYn7Y:4I30UAKj0T8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/botsworld?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/botsworld/~4/PbnW3dnYn7Y" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.vineetdhanawat.com/blog/2012/04/how-to-use-broadcast-receiver-in-android-send-and-receive-sms/feed/</wfw:commentRss> <slash:comments>4</slash:comments> <feedburner:origLink>http://www.vineetdhanawat.com/blog/2012/04/how-to-use-broadcast-receiver-in-android-send-and-receive-sms/</feedburner:origLink></item> <item><title>Learn Ethical Hacking – Innobuzz Training Program</title><link>http://feeds.vineetdhanawat.com/~r/botsworld/~3/ys3gu1qXng0/</link> <comments>http://www.vineetdhanawat.com/blog/2012/03/learn-ethical-hacking-innobuzz-training-program/#comments</comments> <pubDate>Thu, 29 Mar 2012 17:28:26 +0000</pubDate> <dc:creator>vineetdhanawat</dc:creator> <category><![CDATA[Web]]></category> <category><![CDATA[Ethical Hacking]]></category> <guid isPermaLink="false">http://www.vineetdhanawat.com/blog/?p=604</guid> <description><![CDATA[Hacker
Hacker (computer security) or cracker, who accesses a computer system by circumventing its security system
Hacker (programmer subculture), who shares an anti-authoritarian approach to software development now associated with the free software movement
Hacker is mostly widely used as a derogatory term for someone who is involved in illegal online activities.&#8230;
No related posts.]]></description> <content:encoded><![CDATA[<h3 id="firstHeading">Hacker</h3><ul><li>Hacker (computer security) or cracker, who accesses a computer system by circumventing its security system</li><li>Hacker (programmer subculture), who shares an anti-authoritarian approach to software development now associated with the free software movement</li></ul><p>Hacker is mostly widely used as a derogatory term for someone who is involved in illegal online activities. Its actually meant for many things including : [a] person who delights in having an intimate understanding of the internal workings of a system, computers and computer networks in particular</p><h3>Ethical Hacking</h3><p>The more we advance in technology and its use in security, the more advanced are defacements. There is a certain need for Hackers who foolproof the system mechanisms before <a
title="Crackers" href="http://catb.org/jargon/html/C/cracker.html" target="_blank">crackers</a> find loopholes.</p><h3>Certified Ethical Hacker (CEH)</h3><p>With the increasing need of Hackers, so came the need of <a
title="Certified Ethical Hacker" href="http://en.wikipedia.org/wiki/Certified_Ethical_Hacker" target="_blank">Certification</a>.  A Certified Ethical Hacker has obtained a certification in how to look for the weaknesses and vulnerabilities in target systems and uses the same knowledge and tools as a hacker. One such Certification is given by <a
title="EC-Council" href="http://en.wikipedia.org/wiki/EC-Council" target="_blank">EC-Council</a>.</p><p>In India, there are many organizations which offer courses similar to EC-Council&#8217;s CEH and are great to start like the <a
title="Innobuzz - Ethical Hacking (CISE)" href="http://www.innobuzz.in/ethicalhacking.html" target="_blank">Ethical Hacking &#8211; Certified Information Security Expert</a> (CISE) course by Innobuzz.in. CISE is an International certification not just offered in India, but about 20 more countries.</p><h3><a
href="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/03/innobuzz_logo.png"><img
class="aligncenter size-full wp-image-617" title="Innobuzz" src="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/03/innobuzz_logo.png" alt="Innobuzz" width="300" height="70" /></a></h3><h3>Why CISE?</h3><p>Online Security Breaches are happening at a very fast rate and experts are needed to check and cure these. ITS (IT Security) Experts are in demand. According to NASSCOM, the demand for ITS Experts is going to rise substantially worldwide. ITS is a THE next big thing in ICT and you should make the best of it.</p><ul><li>One of the most <strong>recognized </strong>courses for Information Security and Ethical Hacking in India.</li><li><strong>Pre-requisite</strong> : Basic knowledge of Computers will suffice.</li><li>Covers all important aspects including Basic of networking to Trojans, Reverse Engineering and Session Hijacking.</li><li>Only certification with a &#8220;<strong>Live Online Lab based Exam</strong>&#8220;, in comparison to multiple choice questions which most of the exams have.</li><li>Moreover its economical! (:P)</li></ul><p>By the end of course you&#8217;ll have a great deal of know-how on how to spot system vulnerabilities by performing typical hacks in a controlled environment and understanding its working.</p><p><em>Disclaimer: Paid Content by <a
href="http://www.innobuzz.in/">http://www.innobuzz.in/</a></em></p><p>No related posts.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/JnaJV8KqrxBrqCALYyqfasCQ0JA/0/da"><img src="http://feedads.g.doubleclick.net/~a/JnaJV8KqrxBrqCALYyqfasCQ0JA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/JnaJV8KqrxBrqCALYyqfasCQ0JA/1/da"><img src="http://feedads.g.doubleclick.net/~a/JnaJV8KqrxBrqCALYyqfasCQ0JA/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.vineetdhanawat.com/~ff/botsworld?a=ys3gu1qXng0:oYJdkYqquNw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/botsworld?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/botsworld/~4/ys3gu1qXng0" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.vineetdhanawat.com/blog/2012/03/learn-ethical-hacking-innobuzz-training-program/feed/</wfw:commentRss> <slash:comments>2</slash:comments> <feedburner:origLink>http://www.vineetdhanawat.com/blog/2012/03/learn-ethical-hacking-innobuzz-training-program/</feedburner:origLink></item> <item><title>Twitter – Its not me, Its You!!</title><link>http://feeds.vineetdhanawat.com/~r/botsworld/~3/jbxwGC7q3oU/</link> <comments>http://www.vineetdhanawat.com/blog/2012/03/twitter-its-not-me-its-you/#comments</comments> <pubDate>Thu, 29 Mar 2012 13:49:36 +0000</pubDate> <dc:creator>vineetdhanawat</dc:creator> <category><![CDATA[Featured]]></category> <category><![CDATA[Rant]]></category> <category><![CDATA[Account]]></category> <category><![CDATA[Suspension]]></category> <category><![CDATA[Twitter]]></category> <guid isPermaLink="false">http://www.vineetdhanawat.com/blog/?p=625</guid> <description><![CDATA[<strong>[Mar 29, 2012 4:00PM]&#8230;</strong> Twitter suspended my account (@vineetdhanawat)
I joined twitter on April 1, 2010. Almost 2 years of Happily Tweeting. I&#8217;m not sure why / how, But my account was simply suspended. No warning / notification email as well!
No related posts.]]></description> <content:encoded><![CDATA[<p><strong>[Mar 29, 2012 4:00PM]</strong> Twitter suspended my account (<a
title="Vineet Dhanawat Twitter" href="https://twitter.com/#!/vineetdhanawat" target="_blank">@vineetdhanawat</a>)</p><p>I joined twitter on April 1, 2010. Almost 2 years of Happily Tweeting. I&#8217;m not sure why / how, But my account was simply suspended. No warning / notification email as well!</p><p>At first i thought it to be mistake. Refreshed a couple of time, then did a logout-login, but all to my dismay. My account was really suspended.</p><p><a
href="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/03/Twitter-Suspended.png"><img
class="aligncenter size-full wp-image-626" title="Twitter-Suspended" src="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/03/Twitter-Suspended.png" alt="Twitter-Suspended" width="583" height="132" /></a></p><p>Within minutes i was scanning through my mind for all the tweets i did in past 24 hours. Did i tweet a image violating copyright? Did i tweet something abusive? Nothing was going right. In my mind I was cursing Twitter for doing so.</p><p><em>Take away my Facebook if you want, I do not deserve to be banned from twitter! </em>I opened Facebook and Google Plus. Felt odd.</p><p>A simple google search revealed that 1000s of account has been banned in past few months, associated with spam accounts. Every-time few users get involved in middle. With hope I clicked on <a
title="Twitter Suspended Accounts" href="https://support.twitter.com/groups/33-report-a-violation/topics/122-reporting-violations/articles/15790-my-account-is-suspended" target="_blank">Suspended Accounts</a> for help. Immediately dropped a mail to support folks.</p><p><strong></strong><strong>[Update - Mar 30, 2012 4:00PM]</strong> 24 Hours over. No Reply yet. Account still suspended.</p><p><strong>[Update - Mar 31, 2012 3:00AM] </strong>Account restored<strong>. </strong>Everything seems to be working fine. No Emails though.</p><p><strong>[Update - Apr 04, 2012 5:09AM]</strong> Finally an email response from twitter support</p> <address><a
href="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/03/Twitter-Support-Response.png"><img
class="aligncenter size-full wp-image-644" title="Twitter-Support-Response" src="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/03/Twitter-Support-Response.png" alt="Twitter-Support-Response" width="583" height="187" /></a></address> <address>Stuck in the same boat? Here&#8217;s What you should do</address><ul><li>Make sure you&#8217;ve read <a
title="Twitter Rules" href="https://support.twitter.com/forums/26257/entries/18311" target="_blank">The Twitter Rules</a></li><li>Email Support for Requesting a Review for <a
title="Twitter Suspended Accounts" href="https://support.twitter.com/forms/general?subtopic=suspended" target="_blank">Suspended Accounts</a>. If you cannot submit, email them at <a
href="mailto:suspended@twitter.com" target="_blank">suspended@twitter.com</a></li><li>Check the <a
title="Twitter Status Blog" href="http://status.twitter.com/" target="_blank">Twitter status blog</a>, the <a
title="Twitter Spam Account" href="http://twitter.com/spam" target="_blank">@spam account</a>, and <a
title="Twitter Suspended Account Search" href="http://search.twitter.com/search?q=Twitter+account+suspended" target="_blank">search the public tweet stream</a> to see if there is a lot of account suspension activity</li></ul><p><strong><em>Ever got suspended yourself? Do share with us in the comments!</em></strong></p><p>No related posts.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/F4nmxucULPjKz7M6Jej0_rKo4Tk/0/da"><img src="http://feedads.g.doubleclick.net/~a/F4nmxucULPjKz7M6Jej0_rKo4Tk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/F4nmxucULPjKz7M6Jej0_rKo4Tk/1/da"><img src="http://feedads.g.doubleclick.net/~a/F4nmxucULPjKz7M6Jej0_rKo4Tk/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.vineetdhanawat.com/~ff/botsworld?a=jbxwGC7q3oU:JXzedDdg_J0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/botsworld?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/botsworld/~4/jbxwGC7q3oU" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.vineetdhanawat.com/blog/2012/03/twitter-its-not-me-its-you/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://www.vineetdhanawat.com/blog/2012/03/twitter-its-not-me-its-you/</feedburner:origLink></item> <item><title>Why You Should Always Use Free Public DNS</title><link>http://feeds.vineetdhanawat.com/~r/botsworld/~3/g6SgH2Y3hr0/</link> <comments>http://www.vineetdhanawat.com/blog/2012/03/why-you-should-always-use-free-public-dns/#comments</comments> <pubDate>Tue, 13 Mar 2012 20:21:54 +0000</pubDate> <dc:creator>vineetdhanawat</dc:creator> <category><![CDATA[Featured]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[Block]]></category> <category><![CDATA[CDN]]></category> <category><![CDATA[Content]]></category> <category><![CDATA[DNS]]></category> <category><![CDATA[Filtration]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Level 3]]></category> <category><![CDATA[Norton]]></category> <category><![CDATA[OpenDNS]]></category> <category><![CDATA[Privacy]]></category> <category><![CDATA[ScrubIT]]></category> <category><![CDATA[Secure]]></category> <guid isPermaLink="false">http://www.vineetdhanawat.com/blog/?p=533</guid> <description><![CDATA[Today&#8217;s Incident of Facebook not opening in India made one thing clear: You cannot rely on default DNS of your ISP. Following ISPs were observed to block Facebook:
MTNL
BSNL
Tikona
Reliance
Airtel
Earlier, Indian Govt had requested Facebook and Google to screen the content. This time, No Public statement was released, but it was observed nationwide, but yes things were back to normal in a couple of hours!&#8230;
No related posts.]]></description> <content:encoded><![CDATA[<p>Today&#8217;s Incident of <a
title="Facebook Blocked in India" href="http://www.teknobites.com/2012/03/13/facebook-blocked-in-india/" target="_blank">Facebook not opening in India</a> made one thing clear: You <em>cannot rely</em> on default DNS of your ISP. Following ISPs were observed to block Facebook:</p><ul><li>MTNL</li><li>BSNL</li><li>Tikona</li><li>Reliance</li><li>Airtel</li></ul><p>Earlier, Indian Govt had <a
title="Facebook Google Censor" href="http://india.blogs.nytimes.com/2011/12/05/india-asks-google-facebook-others-to-screen-user-content/" target="_blank">requested</a> Facebook and Google to screen the content. This time, No Public statement was released, but it was observed nationwide, but yes things were back to normal in a couple of hours!</p><p
style="text-align: center;"><a
href="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/03/DNS-Down.png"><img
class="aligncenter size-full wp-image-536" title="DNS Down" src="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/03/DNS-Down.png" alt="DNS Down" width="400" height="300" /></a></p><h3>What is DNS?</h3><p>DNS means Domain Name System.  The DNS Servers are primarily responsible for query translation. With a vast no of websites being registered everyday and IP addresses are difficult to remember, the concept of DNS came into being. Basically DNS server resolves the domain queries to IP addresses.</p><h3>Why Public DNS?</h3><p>Whenever you type a website name onto address bar, the query first goes to your DNS Server at ISP which are often unreliable and slow. There are many more faster superior Public DNS available and you should choose one of them. Here is great <a
title="Change your DNS" href="https://store.opendns.com/setup/computer/" target="_blank">step-by-step tutorial to change your DNS</a> on Windows/Linux/Mac/Mobile (Linux Users: Still reading, really?).</p><p>After changing DNS, make sure you <a
title="Flush DNS Cache" href="http://www.opendns.com/support/article/68" target="_blank">flush your DNS resolver cache</a> and <a
title="Web Browser Cache" href="http://www.opendns.com/support/article/67" target="_blank">web browser caches</a> to ensure that your new DNS configuration settings take immediate effect.</p><h3><strong>Performance Issues with CDN?</strong></h3><p>Content Delivery Networks (<strong>CDNs</strong>) use a Global Load Balancing Technology. They use DNS Tricks and redirecting to the nearest server, basically using DNS Dynamically. DNS was never meant for <a
title="What DNS is NOT" href="http://queue.acm.org/detail.cfm?id=1647302" target="_blank">this purpose</a>.</p><p>Using the IP source address of a DNS request, the CDNs locate the source of requests geographically. Now based on the factors like Load on each Content Delivery Network Server, Network Traffic / Load and Proximity to the request origin, a DNS response is crafted to direct that source to the closest or best content server for that URI domain.</p><p>Simply speaking, If you use a Public DNS based at USA, High chances you will be served using a CDN server at USA and not the one at Asia, thus increasing the Latency. Read more about Impact of third-party DNS on CDN <a
title="CDN Performance with Public DNS" href="http://jet-stream.com/blog/cdn-performance-heavily-disrupted-by-dns-services/" target="_blank">here</a>.</p><h3>List of Free Public DNS</h3><ol><li><a
title="Google Public DNS" href="http://code.google.com/speed/public-dns/" target="_blank">Google Public DNS</a> (Fastest &amp; Recommended)<ul><li>8.8.8.8</li><li>8.8.4.4</li></ul></li><li><a
title="OpenDNS" href="http://en.wikipedia.org/wiki/OpenDNS" target="_blank">OpenDNS</a><ul><li>208.67.222.222</li><li>208.67.220.220</li><li>208.67.222.220</li><li>208.67.220.222</li></ul></li><li><a
title="ScrubIT" href="http://www.scrubit.com/" target="_blank">ScrubIT</a><ul><li>67.138.54.100</li><li>207.225. 209.66</li></ul></li><li><a
title="Level 3 DNS" href="http://www.tummy.com/Community/Articles/famous-dns-server/" target="_blank">Level 3 DNS</a> (GTEI DNS, now Verizon)<ul><li>4.2.2.1</li><li>4.2.2.2 (most famous)</li><li>4.2.2.3</li><li>4.2.2.4</li><li>4.2.2.5</li><li>4.2.2.6</li></ul></li><li><a
title="Norton DNS" href="https://dns.norton.com/dnsweb/huConfigurePc.do" target="_blank">Norton</a><ul><li>198.153.192.1</li><li>198.153.194.1</li><li>198.153.192.40 (security)</li><li>198.153.194.40 (security)</li><li>198.153.192.50 (security + pornography)</li><li>198.153.194.50 (security + pornography)</li><li>198.153.192.60 (security + pornography + non-family friendly)</li><li>198.153.194.60 (security + pornography + non-family friendly)</li></ul></li><li><a
title="DNS Advantage" href="http://www.dnsadvantage.com/" target="_blank">DNS Advantage</a><ul><li>156.154.70.1</li><li>156.154.71.1</li></ul></li></ol><p><em><strong>Were you using the default DNS till now? Which one are you planning to switch to? Do share with us in the comments!</strong></em></p><p>No related posts.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/tL-utD4jMlWogG8lDSFoSuhLMk8/0/da"><img src="http://feedads.g.doubleclick.net/~a/tL-utD4jMlWogG8lDSFoSuhLMk8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/tL-utD4jMlWogG8lDSFoSuhLMk8/1/da"><img src="http://feedads.g.doubleclick.net/~a/tL-utD4jMlWogG8lDSFoSuhLMk8/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.vineetdhanawat.com/~ff/botsworld?a=g6SgH2Y3hr0:Xxy4lLvt-5U:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/botsworld?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/botsworld/~4/g6SgH2Y3hr0" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.vineetdhanawat.com/blog/2012/03/why-you-should-always-use-free-public-dns/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://www.vineetdhanawat.com/blog/2012/03/why-you-should-always-use-free-public-dns/</feedburner:origLink></item> <item><title>How to Remove 16,000+ Comments and Combat SPAM on your WordPress Blog</title><link>http://feeds.vineetdhanawat.com/~r/botsworld/~3/alvR9ZN5_iY/</link> <comments>http://www.vineetdhanawat.com/blog/2012/02/i-received-16000-spam-comments-within-a-month-on-my-wordpress-blog/#comments</comments> <pubDate>Sat, 04 Feb 2012 20:56:04 +0000</pubDate> <dc:creator>vineetdhanawat</dc:creator> <category><![CDATA[Featured]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[Akismet]]></category> <category><![CDATA[Blog]]></category> <category><![CDATA[Captcha]]></category> <category><![CDATA[Comments]]></category> <category><![CDATA[Count]]></category> <category><![CDATA[cPanel]]></category> <category><![CDATA[Disqus]]></category> <category><![CDATA[Facebook Comments]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Plugin]]></category> <category><![CDATA[reCaptcha]]></category> <category><![CDATA[Site Speed]]></category> <category><![CDATA[SPAM]]></category> <category><![CDATA[Wordpress]]></category> <guid isPermaLink="false">http://www.vineetdhanawat.com/blog/?p=475</guid> <description><![CDATA[Recently one of my Friends Blog received 16000+ SPAM Comments in a span of just over a month.
<strong>TimeLine:</strong> <strong>Jan 1:</strong> Checkpoint <strong>Jan 23:</strong> Spam at its Peak <strong>Jan 24:</strong> Corrective Measure Taken <strong>Jan 31:&#8230;</strong> Checkpoint
 
WordPress 3.0 &#8211; No Plugins, Default Installation.
No related posts.]]></description> <content:encoded><![CDATA[<p>Recently one of my Friends Blog received 16000+ SPAM Comments in a span of just over a month.</p><p><a
href="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/02/16127-Comments.png"><img
class="aligncenter size-full wp-image-517" title="16127-Comments" src="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/02/16127-Comments.png" alt="" width="555" height="188" /></a></p> <address><strong>TimeLine:</strong></address> <address><strong>Jan 1:</strong> Checkpoint</address> <address><strong>Jan 23:</strong> Spam at its Peak</address> <address><strong>Jan 24:</strong> Corrective Measure Taken</address> <address><strong>Jan 31:</strong> Checkpoint</address> <address> </address> <address>WordPress 3.0 &#8211; No Plugins, Default Installation.</address> <address> </address><h3>Statistics / Graphs</h3> <address>Lets look at the different Web Stats for the domain.</address><div
id="attachment_519" class="wp-caption aligncenter" style="width: 593px"><a
href="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/02/Web-Stats-Traffic-Graph.png"><img
class="size-full wp-image-519" title="Web-Stats-Traffic-Graph" src="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/02/Web-Stats-Traffic-Graph.png" alt="Web-Stats-Traffic-Graph" width="583" height="238" /></a><p
class="wp-caption-text">Notice the spike in bandwidth (green) and then the drop when the spam techniques were implemented.</p></div><div
id="attachment_518" class="wp-caption aligncenter" style="width: 593px"><a
href="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/02/Web-Stats-Traffic-Count.png"><img
class="size-full wp-image-518" title="Web-Stats-Traffic-Count" src="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/02/Web-Stats-Traffic-Count.png" alt="Web-Stats-Traffic-Count" width="583" height="605" /></a><p
class="wp-caption-text">Again, notice how much bandwidth is used before and after spam techniques were implemented.</p></div><h3>The Damage SPAM Can Do</h3><p>Clearly its a case of spam bots / links exchange program run via softwares like <a
title="XRumer" href="http://en.wikipedia.org/wiki/XRumer" target="_blank">XRumer</a> etc. Nearly 100% of comments were genuine-looking with a single purpose of posting their links as username. Without any plugin or <a
title="rel=&quot;nofollow&quot;" href="http://support.google.com/webmasters/bin/answer.py?hl=en&amp;answer=96569" target="_blank">rel=&#8221;nofollow&#8221;</a> attribute, it acts as a back-link and helps boost their <a
title="Google Page Rank" href="http://en.wikipedia.org/wiki/PageRank" target="_blank">Google PageRank</a>.</p><p>As you can see the Traffic (Hits) increased nearly 5 times, whereas Traffic (Bandwidth) increased nearly 50 times!</p><p>This was mainly because of spam. The wordpress installation was default with no comments plugin. Each comment was approved and loaded as part of post in HTML Format. With days, no of comments increased an so did the size of each post, accounting for huge daily data transfer.</p><h2>Measures Taken</h2><h3>1. Old SPAM?</h3><p>Well the <strong>million dollar question</strong> is &#8211; &#8220;What will you do with 16000+ approved comments (spam)?&#8221;</p><p><strong>DO NOT </strong>directly install a plugin like <a
title="Disqus" href="http://www.disqus.com/" target="_blank">Disqus</a>. It will retrieve all the existing plugins and upload, making them almost impossible to remove. You must get rid of them before proceeding.</p><p>As of now WordPress does not allow to delete ALL Blog comments at once.</p><p>Login to your cPanel -&gt; phpMyAdmin -&gt; SQL . Execute the following queries there.</p><pre class="brush: plain; title: ; notranslate">
delete from wp_comments where comment_approved=&quot;0&quot;;
delete from wp_comments where comment_approved=&quot;spam&quot;;
delete from wp_comments where comment_approved=&quot;1&quot;;
</pre><div></div><div>Now, you will face one more issue. The displayed comments count on each of your post will not change. You need to <a
title="Reset Comment Count in WordPress" href="http://www.ankurb.info/2008/11/16/reseting-post-and-comment-count-in-wordpress/" target="_blank">reset the comment count in wordpress</a>. Copy the following code into something like updatecount.php and run it on your blog web folder. Make sure you delete the file when done.</div><pre class="brush: plain; title: ; notranslate">
&lt;?php include('wp-config.php'); // Needed for login details to WordPress database to make necessary changes
function updateCount()
    {
        $posts = mysql_fetch_row(mysql_query(&quot;SELECT ID FROM wp_posts ORDER BY ID DESC LIMIT 1&quot;)); // Fetch row in WordPress database containing information about post data
        for ($i = 1; $i &lt; ($posts[0] + 1); $i++)
        {
     $comments = mysql_query(&quot;SELECT SQL_CALC_FOUND_ROWS comment_ID FROM wp_comments WHERE comment_post_ID = '$i' AND comment_approved = 1;&quot;) or die(&quot;Failed to calculate number of approved comments&quot;); // Calculate the number of approved comments for a post and store in a variable. If unsuccessful, end program.
     mysql_query(&quot;UPDATE wp_posts SET comment_count = '&quot;.mysql_num_rows($comments).&quot;' WHERE id = '$i';&quot;) or die(&quot;Failed to update the number of comments calculated&quot;); // Update the comment count using the comment number fetched earlier. If unsuccessful, end program
     echo &quot;Updated Post #$i - &quot;.mysql_num_rows($comments).&quot; comments &lt;br /&gt;&quot;; // Display message to user for each post comment count successfully updated
        }
    }
updateCount();
?&gt;
</pre><h3>2. Install Plugins</h3><p>Plugins are a definite way to stop blog comments spam.</p><ul><li><a
title="Akismet" href="http://akismet.com/" target="_blank">Akismet</a> The Best one ever! Installed by default, but you need to register before actually start using it. This plugin trackbacks all the spam on various blog and blocks it globally. These load the comments dynamically from their server, thereby reducing load on your database / hosting server.</li><li><a
title="Disqus" href="http://www.disqus.com/" target="_blank">Disqus</a>, <a
title="IntenseDebate" href="http://www.intensedebate.com/" target="_blank">IntenseDebate</a>, <a
title="Facebook Comments" href="https://developers.facebook.com/docs/reference/plugins/comments/" target="_blank">Facebook Comments</a> are good alternate comments system.</li><li><a
title="Captcha" href="http://bestwebsoft.com/plugin/" target="_blank">Math Captcha</a>, <a
title="reCaptcha" href="http://wordpress.org/extend/plugins/wp-recaptcha/" target="_blank">reCaptcha</a> are must-install in case you want to stick to WP Native Commenting system. Not all comments are from Bots, but few are actually done by Human Farms for backlinks. Nevertheless, it will reduce spam drastically.</li></ul><h3>3. Other Measures</h3><ul><li><strong>Close Comments on Older Articles</strong> &#8211; This one is NOT recommended, but you know your readers better. You can choose to block comments on all posts (say older than 30 days). Go to wp-admin &gt;&gt; Settings &gt;&gt; Discussion &gt;&gt; Automatically close comments on articles older than (tick).</li><li><strong>Ban IP Address</strong> - This should be your Last Option. You can either see the stats for Hits v/s IP log via Awstats in your cPanel or you can directly see most common IPs in your Comments Logs. You can now Block certain IPs directly from cPanel or in case you love using WordPress Plugins use <a
title="WP-Ban" href="http://lesterchan.net/wordpress/readme/wp-ban.html" target="_blank">WP-Ban</a> or <a
title="Perishable Press 5G Blacklist" href="http://perishablepress.com/5g-blacklist-2012/" target="_blank">Perishable Press 5G Blacklist</a>.</li></ul><h3>4. Conclusion</h3><p>These did not reduce the no of hits on my blog. After installing Akismet approved comments reduced drastically but it still let through roughly 5% of the SPAMs.</p><p>After installing Math Captcha, the no of comments now reduced to roughly 10% of post akismet spam. (Intelligent bots? Or Human Farms)</p><p>No of daily hits are still the same. I guess the bots havent learnt yet! It will take time, definitely. Meanwhile it just messes up your Google Analytics.</p><p>This Post has been Featured at <a
title="http://wplifeguard.com/how-to-remove-16000-comments-and-combat-spam-on-your-wordpress-blog/" href="http://wplifeguard.com/how-to-remove-16000-comments-and-combat-spam-on-your-wordpress-blog/" target="_blank">wpLifeGuard</a>.</p><p>No related posts.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/5f30wdsZt3k7NYqkh8i8Y4EsxC0/0/da"><img src="http://feedads.g.doubleclick.net/~a/5f30wdsZt3k7NYqkh8i8Y4EsxC0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/5f30wdsZt3k7NYqkh8i8Y4EsxC0/1/da"><img src="http://feedads.g.doubleclick.net/~a/5f30wdsZt3k7NYqkh8i8Y4EsxC0/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.vineetdhanawat.com/~ff/botsworld?a=alvR9ZN5_iY:Qd4fp1v_S2c:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/botsworld?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/botsworld/~4/alvR9ZN5_iY" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.vineetdhanawat.com/blog/2012/02/i-received-16000-spam-comments-within-a-month-on-my-wordpress-blog/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://www.vineetdhanawat.com/blog/2012/02/i-received-16000-spam-comments-within-a-month-on-my-wordpress-blog/</feedburner:origLink></item> <item><title>Why Can’t Google Fix its Own URLs?</title><link>http://feeds.vineetdhanawat.com/~r/botsworld/~3/rE6r68YP1F4/</link> <comments>http://www.vineetdhanawat.com/blog/2012/01/why-cant-google-fix-its-own-urls/#comments</comments> <pubDate>Sat, 21 Jan 2012 22:08:10 +0000</pubDate> <dc:creator>vineetdhanawat</dc:creator> <category><![CDATA[Rant]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[/]]></category> <category><![CDATA[404]]></category> <category><![CDATA[Add]]></category> <category><![CDATA[Content]]></category> <category><![CDATA[Error]]></category> <category><![CDATA[forward]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[slash]]></category> <category><![CDATA[URL]]></category> <guid isPermaLink="false">http://www.vineetdhanawat.com/blog/?p=450</guid> <description><![CDATA[Today, I was trying to submit a URL to Google. As usual i simply opened Google and searched for &#8220;add url to google&#8221; , Google returned me the following results.
The Top Result https://www.google.com/webmasters/tools/submit-url/ actually gives a 404 error (Jan 22, 2012 &#8211; 3.16 AM IST)
Surprisingly when you remove the / (forward slash) from the end of URL, it starts working https://www.google.com/webmasters/tools/submit-url
The URL has been fixed on Google &#8220;Submit Your Content&#8221; Page, but search results are still returning old URL.&#8230;
No related posts.]]></description> <content:encoded><![CDATA[<p>Today, I was trying to submit a URL to Google. As usual i simply opened Google and searched for &#8220;<a
title="Add URL to Google" href="http://www.google.co.in/search?sourceid=chrome&amp;ie=UTF-8&amp;q=add+url+to+google" target="_blank">add url to google</a>&#8221; , Google returned me the following results.</p><p><a
href="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/01/Add-URL-Search-Results.png"><img
class="aligncenter size-full wp-image-451" title="Add-URL-Search-Results" src="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/01/Add-URL-Search-Results.png" alt="Add-URL-Search-Results" width="480" height="240" /></a></p><p>The Top Result <a
title="Submit URL to Google" href="https://www.google.com/webmasters/tools/submit-url/" target="_blank">https://www.google.com/webmasters/tools/submit-url/</a> actually gives a 404 error (Jan 22, 2012 &#8211; 3.16 AM IST)</p><p><a
href="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/01/Add-URL-404-Error.png"><img
class="aligncenter size-full wp-image-452" title="Add-URL-404-Error" src="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/01/Add-URL-404-Error.png" alt="Add-URL-404-Error" width="477" height="180" /></a></p><p>Surprisingly when you remove the / (forward slash) from the end of URL, it starts working <a
title="Submit URL to Google" href="https://www.google.com/webmasters/tools/submit-url/" target="_blank">https://www.google.com/webmasters/tools/submit-url</a></p><p>The URL has been fixed on Google &#8220;<a
title="Submit Your Content" href="http://www.google.com/submityourcontent/website-owner/" target="_blank">Submit Your Content</a>&#8221; Page, but search results are still returning old URL.</p><p><a
href="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/01/Submit-Content-Page.png"><img
class="aligncenter size-full wp-image-454" title="Submit-Content-Page" src="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/01/Submit-Content-Page.png" alt="Submit-Content-Page" width="480" height="130" /></a></p><h3>Question!</h3><p>I always assumed a URL is same with or without the ending / (forward slash). How can they behave differently?</p> <address>Well, it seems they can behave differently and is simple to configure. HN Reply <a
title="HN Reply" href="http://news.ycombinator.org/item?id=3494866" target="_blank">http://news.ycombinator.org/item?id=3494866</a> (edited)</address><p><strong>More importantly why cant Google fix it? Maybe a simple redirection!</strong></p><p>No related posts.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/Ij33xeSl5p5Ib7HW6XQwdvzAZts/0/da"><img src="http://feedads.g.doubleclick.net/~a/Ij33xeSl5p5Ib7HW6XQwdvzAZts/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Ij33xeSl5p5Ib7HW6XQwdvzAZts/1/da"><img src="http://feedads.g.doubleclick.net/~a/Ij33xeSl5p5Ib7HW6XQwdvzAZts/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.vineetdhanawat.com/~ff/botsworld?a=rE6r68YP1F4:nMr9idsNJrE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/botsworld?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/botsworld/~4/rE6r68YP1F4" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.vineetdhanawat.com/blog/2012/01/why-cant-google-fix-its-own-urls/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://www.vineetdhanawat.com/blog/2012/01/why-cant-google-fix-its-own-urls/</feedburner:origLink></item> <item><title>How To Blackout Your Website (Outage) – The Right Way</title><link>http://feeds.vineetdhanawat.com/~r/botsworld/~3/VD8RwU-Y3PA/</link> <comments>http://www.vineetdhanawat.com/blog/2012/01/how-to-blackout-your-website-outage-the-right-way/#comments</comments> <pubDate>Fri, 20 Jan 2012 23:55:31 +0000</pubDate> <dc:creator>vineetdhanawat</dc:creator> <category><![CDATA[Web]]></category> <category><![CDATA[503]]></category> <category><![CDATA[Blackout]]></category> <category><![CDATA[Crawler]]></category> <category><![CDATA[GoogleBot]]></category> <category><![CDATA[HTTP]]></category> <category><![CDATA[Offline]]></category> <category><![CDATA[Outage]]></category> <category><![CDATA[PIPA]]></category> <category><![CDATA[SOPA]]></category> <category><![CDATA[Website]]></category> <category><![CDATA[Wikipedia]]></category> <guid isPermaLink="false">http://www.vineetdhanawat.com/blog/?p=431</guid> <description><![CDATA[Last week we saw a mass online Blackout (#WikipediaBlackout). We also implemented a 503 Status Code Outage.
Now several people suggested methods for blackout. Lets take each of them.
1. Delete The Content
Never do this mistake. Since you dont have any files on your web folder anymore, it will return a 404 error.&#8230;
No related posts.]]></description> <content:encoded><![CDATA[<p>Last week we saw a mass online Blackout (#<a
title="Wikipedia Blackout" href="http://en.wikipedia.org/wiki/Wikipedia:SOPA_initiative/Learn_more" target="_blank"><em>WikipediaBlackout</em></a>). We also implemented a 503 Status Code Outage.</p><p><a
href="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/01/sopa.png"><img
class="aligncenter size-full wp-image-432" title="Site Temporary Unavailable" src="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/01/sopa.png" alt="Site Temporary Unavailable" width="496" height="269" /></a></p><p>Now several people suggested methods for blackout. Lets take each of them.</p><h2><del>1. Delete The Content</del></h2><p>Never do this mistake. Since you dont have any files on your web folder anymore, it will return a 404 error. Now neither your visitors will see any content on your site nor any crawler/bot will be able to get anything.</p><p><a
href="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/01/404.png"><img
class="aligncenter size-full wp-image-436" title="404" src="http://www.vineetdhanawat.com/blog/wp-content/uploads/2012/01/404.png" alt="" width="495" height="161" /></a></p><h2><del>2. Simple Message Post</del></h2><p>Again, this is WRONG. This time your visitors will get the message, but the crawler/bot will access your site and consider the message as an updated post. Thus your &#8216;Message&#8217; will be crawled eventually affecting search results.</p><h2>3. 503 HTTP Header</h2><h3>Yup, The correct way.</h3><ul><li>It will return a 503 error to bots/crawlers, notifying them that the site is not available at the moment but will return. This way there will be no change in search results.</li><li>Apparently Google&#8217;s crawl rate will drop when it sees a spike in 503 errors. But this is normal and it will return to normal in a couple of days.</li></ul><h3>Robots.txt File</h3><ul><li>The current GoogleBot works in a way, that it will halt crawling as soon it gets 503 error for the robots.txt file of the site. It will continue to blackout untill unless it gets an acceptable code (200 or 404). So in case you plan to block a section of your website, make sure robots.txt is accessible.</li><li>Few webmasters use &#8220;Disallow: /&#8221; . This will simply block Google Bot from crawling your website, and there is a very high chance that crawl rate recovery can take longer than expected.</li></ul><h3>Crawl Errors</h3><p>Google Webmaster Tools will report about the blackout. Make sure you keep checking the crawl errors section, for around a couple of weeks. In case of any errors, fix them / resubmit URLs.</p><h2>Code Implementation</h2><p>Create a 503.php file in your webroot directory, with the following code. The first two lines indicate 503 HTTP Error to the bots / crawlers and the third line informs them with a come back date-time.</p><pre class="brush: plain; title: ; notranslate">
&lt;?php
header(&quot;HTTP/1.1 503 Service Temporarily Unavailable&quot;);
header(&quot;Status: 503 Service Temporarily Unavailable&quot;);
header(&quot;Retry-After: Thu, 19 Jan 2012 00:00:00 GMT&quot;);
?&gt;
</pre><p>Now you need to redirect all your visitors on that page. On a linux/apache server, its really easy. Look for .htaccess file in the webroot folder. In case you already have a configured .htaccess file for redirects etc, make sure you create a backup. Use the following code in the new .htaccess file.</p><pre class="brush: plain; title: ; notranslate">
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REMOTE_ADDR} !^00\.00\.00\.00
RewriteCond %{REQUEST_URI} !^/503.php [NC]
RewriteRule .* /503.php [R,L]
</pre><p>In case you are blocking parts of website, use absolute url instead of relative. Currently the code blocks all IPs, in case you want to access the site at all time, modify the 00\.00\.00\.00 part to your IP in 4 set of octets.</p><p>You may want to display different message to your visitors. Just edit the 503.php like normal HTML file.</p><pre class="brush: plain; title: ; notranslate">
&lt;?php
header(&quot;HTTP/1.1 503 Service Temporarily Unavailable&quot;);
header(&quot;Status: 503 Service Temporarily Unavailable&quot;);
header(&quot;Retry-After: Thu, 19 Jan 2012 00:00:00 GMT&quot;);
?&gt;
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Site is Temporary Unavailable.&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Site is Temporary Unavailable. &lt;/h1&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre><p>Our task is done!</p><p>Note taken using suggestions from</p><ul><li>Pierre Far&#8217;s Google+ Post on <a
title="https://plus.google.com/115984868678744352358/posts/Gas8vjZ5fmB" href="https://plus.google.com/115984868678744352358/posts/Gas8vjZ5fmB" target="_blank">Website outages and blackouts the right way</a>.</li><li>and SEOMoz post on <a
title="How To Handle Downtime During Site Maintenance" href="http://www.seomoz.org/blog/how-to-handle-downtime-during-site-maintenance" target="_blank">How to Handle Downtime During Site Maintenance</a></li></ul><p>No related posts.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/qhhVdY8ddc6xfC1oLK1_SCPRgWk/0/da"><img src="http://feedads.g.doubleclick.net/~a/qhhVdY8ddc6xfC1oLK1_SCPRgWk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/qhhVdY8ddc6xfC1oLK1_SCPRgWk/1/da"><img src="http://feedads.g.doubleclick.net/~a/qhhVdY8ddc6xfC1oLK1_SCPRgWk/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.vineetdhanawat.com/~ff/botsworld?a=VD8RwU-Y3PA:VZ_H6zMqiLw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/botsworld?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/botsworld/~4/VD8RwU-Y3PA" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.vineetdhanawat.com/blog/2012/01/how-to-blackout-your-website-outage-the-right-way/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://www.vineetdhanawat.com/blog/2012/01/how-to-blackout-your-website-outage-the-right-way/</feedburner:origLink></item> <item><title>How to S-OFF, Flash Custom Recovery and Root your HTC Android Phone – For Dummies</title><link>http://feeds.vineetdhanawat.com/~r/botsworld/~3/lGHwlX2r-hI/</link> <comments>http://www.vineetdhanawat.com/blog/2011/12/how-to-s-off-flash-custom-recovery-and-root-your-htc-android-phone-for-dummies/#comments</comments> <pubDate>Wed, 30 Nov 2011 20:49:32 +0000</pubDate> <dc:creator>vineetdhanawat</dc:creator> <category><![CDATA[Android]]></category> <category><![CDATA[Featured]]></category> <category><![CDATA[4EXT]]></category> <category><![CDATA[ClockworkMod]]></category> <category><![CDATA[CyanogenMod]]></category> <category><![CDATA[Debugging]]></category> <category><![CDATA[FastBoot]]></category> <category><![CDATA[Flash]]></category> <category><![CDATA[FOTA]]></category> <category><![CDATA[HBOOT]]></category> <category><![CDATA[HTC]]></category> <category><![CDATA[HTCDev]]></category> <category><![CDATA[Manager]]></category> <category><![CDATA[NAND]]></category> <category><![CDATA[Recovery]]></category> <category><![CDATA[Revolutionary]]></category> <category><![CDATA[ROM]]></category> <category><![CDATA[Root]]></category> <category><![CDATA[S-OFF]]></category> <category><![CDATA[SuperUser]]></category> <category><![CDATA[Titanium]]></category> <category><![CDATA[USB]]></category> <category><![CDATA[Warranty]]></category> <guid isPermaLink="false">http://www.vineetdhanawat.com/blog/?p=380</guid> <description><![CDATA[<strong>[Updated]&#8230;</strong> 17/03/2012 : Included Rooting via HTCDev Bootloader Unlocking + Android Flasher Utility. Jump to Update
Recently i attended Droidcon India 2011 and had a quick chat with a team installing CyanogenMod for interested attendees there. I finally decided to give it a shot.
No related posts.]]></description> <content:encoded><![CDATA[<p><strong>[Updated]</strong> 17/03/2012 : Included Rooting via HTCDev Bootloader Unlocking + Android Flasher Utility. <a
href="#update-17-mar-12">Jump to Update</a></p><p>Recently i attended <a
title="Droidcon India" href="http://www.droidcon.in/" target="_blank">Droidcon India</a> 2011 and had a quick chat with a team installing <a
title="CyanogenMod" href="http://www.cyanogenmod.com/" target="_blank">CyanogenMod</a> for interested attendees there. I finally decided to give it a shot. In this part of tutorial I&#8217;ll explain till rooting of the phone. Next tutorial will contain instructions to install Cyanogen Mod.</p><p><em>*WARNING: This will void your Manufacturer&#8217;s Warranty</em></p><h2>What is S-OFF (Security Off)</h2><p>HTC recently added an extra layer of security on their Android Phones, NAND Security. S-ON basically means read-lock on /system , /recovery partition etc.</p><h2>What is Flash Custom Recovery</h2><p>Custom Recovery allows you to do advanced tasks like recovery,  installation etc on your Android device that are not possible with the available stock recovery. We are going to use <a
title="ClockworkMod" href="http://www.clockworkmod.com/" target="_blank">ClockworkMod</a> Recovery for the purpose.</p><h2>What is Rooting</h2><p><a
title="Rooting" href="http://en.wikipedia.org/wiki/Rooting_(Android_OS)" target="_blank">Rooting</a> is a process that allows users to gain root-access. Its similar to JailBreak in iOS.</p><h2>1. Revolutionary Method</h2><h3>Always have Backups!</h3><p>Before proceeding, you should backup as much data as possible (Just in case). As an extra precaution, make a copy of your SD Card as well.</p><ul><li>If you have synced contacts at Google account, Good! else export all Phone contacts to SD card.</li><li>Use <a
title="SMS Backup &amp; Restore" href="http://market.android.com/details?id=com.riteshsahu.SMSBackupRestore" rel="nofollow" target="_blank">SMS Backup &amp; Restore</a> to backup all your SMS and <a
title="Call Backup &amp; Restore" href="https://market.android.com/details?id=com.riteshsahu.CallLogBackupRestore" target="_blank">Call Backup &amp; Restore</a> to backup all call records (available).</li><li>You can backup all your application <a
title="APK" href="http://en.wikipedia.org/wiki/APK_(file_format)" target="_blank">APK</a>s as well using <a
title="Astro File Manager" href="https://market.android.com/details?id=com.metago.astro" target="_blank">Astro File Manager</a>.</li></ul><h3>Revolutionary Tool</h3><p>We are going to use <a
title="Revolutionary Tool" href="http://revolutionary.io/" target="_blank">Revolutionary Tool</a>, which is a complete solution for gaining S-OFF, Custom Recovery and Rooting.</p><p>Revolutionary currently supports the following Android phones and HBOOT versions: (as per <a
title="RootWiki" href="http://unrevoked.com/rootwiki/doku.php/public/revolutionary" target="_blank">RootWiki</a>)</p><div><ul><li><div>HTC Desire (bravo) 0.93.0001, 1.02.0001</div></li><li><div>HTC Desire CDMA (bravoc) 1.06.0000</div></li><li><div>HTC Wildfire (buzz) 1.01.0001</div></li><li><div>HTC Aria (liberty) 1.02.0000</div></li><li><div>HTC Incredible S (vivo) 1.09.0000 and 1.13.0000</div></li><li><div>HTC Droid Incredible 2 (vivow) 0.97.0000 (Gingerbread only!)</div></li><li><div>HTC Desire S (saga) 0.98.0000 and 0.98.0002</div></li><li><div>HTC View (express) 1.09.0000 and 1.13.0000</div></li><li><div>HTC Flyer (flyer) 1.10.0000, 1.11.0003</div></li><li><div>HTC Sensation (pyramid) 1.17.0006, .0008, .0011 and .0012, 1.18.0000</div></li><li><div>HTC Evo 3D (shooter) 1.30.0000 and 1.40.0000</div></li><li><div>HTC EVO 3D GSM (shooteru) 1.49.0007, 1.49.0008</div></li><li><div>HTC Thunderbolt (mecha) 1.04.0000, 1.05.0000</div></li><li><div>HTC EVO 4G (supersonic) 2.15.0001, 2.16.0001</div></li><li><div>HTC myTouch Slide 4G (doubleshot) 1.44.0007</div></li></ul><p>Revolutionary will permanently unlock NAND write protection by default on the following phones:</p><ul><li><div>HTC Sensation (pyramid)</div></li><li><div>HTC Evo 3D (shooter)</div></li><li><div>HTC EVO 3D GSM (shooteru)</div></li><li>HTC myTouch Slide 4G</li></ul><p>*In case you have a different HBOOT version, Revolutionary method is not supported as of now. Scroll down for the HTCDev Boot Unlocker Method.</p><h3>FastBoot, HTC Sync and USB Debugging</h3><ul><li>If you have HTC Sync installed, Please remove it. It may cause a few issues.</li><li>Install these <a
title="FastBoot Drivers" href="http://downloads.unrevoked.com/HTCDriver3.0.0.007.exe" target="_blank">FastBoot Drivers</a> as given on <a
title="RootWiki" href="http://unrevoked.com/rootwiki/doku.php/public/revolutionary" target="_blank">RootWiki</a>.</li><li>Disable FastBoot on Phone. Click on Settings &gt; Power &gt; FastBoot</li><li>Enable USB Debugging on your Android Phone. Click on Settings &gt; Applications &gt; Development &gt; Turn USB Debugging ON.</li></ul><h3>HBOOT Version and Device Serial No.</h3><ul><li>To get the HBOOT Version, start your device in Bootloader*. Turn off your phone, now Pressing the Volume Down button start the Phone. You will boot into bootloader (FastBoot must be disabled). Note down the HBOOT Version. You will also notice S-ON written on Top. Reboot now.</li><li>Serial No. is written behind battery. or you can see it from Settings &gt;&gt; About Phone &gt;&gt; Phone Identity.</li></ul><p>*I&#8217;m using HTC Desire S, method may differ for different models. Google up!</p><h3>Gaining S-OFF</h3><ul><li>Download the <a
title="Revolutionary Tool" href="http://www.revolutionary.io/" target="_blank">Revolutionary Tool</a>. You need Beta key as well. Fill up the form on the site with HBOOT Version and Serial Key, it will generate one for you.</li><li>Unzip and run the utility (For Windows &#8211; Make sure you have administrative access). Enter the beta key correctly (case sensitive).</li><li>Withing minutes your Phone will reboot in FastBoot. You can notice on top, Revolutionary written in pink. and S-OFF below it, which means we have gained S-OFF.</li></ul><h3>Flash ClockworkMod Recovery</h3><ul><li>The Revolutionary Tool, next will prompt to download and flash ClockworkMod Recovery. Press Y to start* the installation.</li><li>Command prompt will automatically close within a minute indicating that the installation is done. (You are still on the BootLoader screen)</li><li>Reboot your Phone. (Use volume keys / power button to navigate the BootLoader)</li></ul><p>* Alternatively you can install <a
title="ROM Manager" href="https://market.android.com/details?id=com.koushikdutta.rommanager" target="_blank">ROM Manager</a> (rooted phone), which will install ClockworkMod Recovery</p><h3>Root Access (SuperUser)</h3><ul><li>Download the <a
title="Root Access Zip File" href="http://downloads.androidsu.com/superuser/Superuser-3.0.7-efgh-signed.zip" target="_blank">zip file</a> given on the <a
title="RootWiki" href="http://unrevoked.com/rootwiki/doku.php/public/revolutionary" target="_blank">RootWiki</a> Page.</li><li>Place the zip file on your SD Card and Reboot the phone in BootLoader &gt;&gt; Recovery.</li><li>You will see custom ClockworkMod Recovery screen.</li><li>Go to &#8216;install zip from sd card&#8217; &gt;&gt; &#8216;choose zip from sd card&#8217; &gt;&gt; Choose the downloaded zip file on sd card &gt;&gt; Apply &gt;&gt; Confirm</li><li>Installation will finish within seconds. Go back twice. Reboot.</li><li>You now have root access on your droid. Congratulations!</li></ul><h3>Must Installs</h3><ul><li><a
title="ROM Manager" href="https://market.android.com/details?id=com.koushikdutta.rommanager" target="_blank">ROM Manager</a> &#8211; To backup your current stock ROM (available on the device). We will install CyanogenMod in our next Tutorial.</li><li><a
title="Titanium Backup" href="https://market.android.com/details?id=com.keramidas.TitaniumBackup" target="_blank">Titanium Backup</a> &#8211; To backup all user+system apps etc on your device</li></ul><p>For more visit: <a
title="LifeHacker Post" href="http://lifehacker.com/5806135/the-10-best-android-apps-that-make-rooting-your-phone-worth-the-hassle" target="_blank">The 10 Best Android Apps that make Rooting your Phone Worth the Hassle</a> (via LifeHacker.com)</p><p>In case you are looking to root any other phone, have a look at <a
title="LifeHacker Post" href="http://lifehacker.com/5789397/the-always-up+to+date-guide-to-rooting-any-android-phone" target="_blank">The Always Uo-To-Date Guide to Rooting Any Android Phone</a> (via LifeHacker.com)</p><p><strong><a
href="http://www.desirefanatics.com/" target="_blank">DesireFanatics</a> have an awesome video elaborating the process from start to end</strong><br
/> <iframe
src="http://www.youtube.com/embed/kvg0i8in96M" frameborder="0" width="560" height="315"></iframe><br
/> <a
name="update-17-mar-12"></a><br
/><h2>2. HTCDev Boot Unlocker Method</h2><p>HTC released Firmware Over-the-air (FOTA) Upgrade for few Models (like Desire S), and thus the HBOOT Versions have changed. Revolutionary does not support all HBOOT versions as of now, so above method will fail.</p><p><strong>Example</strong>: HTC Desire S (India) has HBOOT 2.00.0002 after the FOTA Update</p><h3>HTCDev BootLoader</h3><ul><li>You can unlock your BootLoader using the official HTC Site. <a
href="http://htcdev.com/bootloader/">http://htcdev.com/bootloader/</a>. Desire S is not listed in unlockable phones list, but it perfectly works. Choose HTC Desire in dropdown and proceed.</li><li>Warning: After unlocking the bootloader, the phone does a factory reset. Backup all your personal data prior to running the procedure.</li></ul><h3>FastBoot, HTC Sync and USB Debugging</h3><p>Install HTC Drivers, Disable FastBoot and Enable USB Debugging (Same as above, check Revolutionary Method for the details). Make sure your MicroSD card is formatted.</p><h3>SuperUser (SU) and Android Flasher</h3><ul><li>Superuser is the app that manages what apps on your rooted device have access to su. Download the <a
title="SuperUser" href="http://androidsu.com/superuser/" target="_blank">superuser.zip</a> file and place it on MicroSD Card.</li><li>Download the <a
title="Android Flasher Utility" href="http://deltaxent.com.au/af/download.php" target="_blank">Android Flasher (AF) Utility</a>.</li></ul><h3>ClockworkMod / 4EXT Recovery</h3><p>You need a Custom Recovery to flash your device. Download <a
title="ClockworkMod Recovery" href="http://clockworkmod.com/rommanager" target="_blank">ClockworkMod Recovery</a> (You can just download the recovery instead of entire ROM Manager) or <a
title="4EXT Recovery" href="http://4ext.net/" target="_blank">4EXT Recovery</a>. Personally, I prefer CWM over 4EXT.</p><h3>Gaining Root</h3><ul><li>Extract the AndroidFlasher and run (as administrator) the exe file. Choose Desire S (or any other) phone. In the Recovery section browse for the recovery.img file (see the previous step).</li><li>Device will reboot into bootloader. Navigate to recovery. The ClockworkMod Recovery screen will appear. Go to &#8220;Install from SD card&#8221; and choose the su-3.0.7-efgh-signed.zip file from the SD card.</li></ul><p>Thats it. You now have Rooted your device (SuperUser access), though it is still S-ON.</p><h3>Difference between S-OFF and S-ON</h3><p>1. For installing any other custom ROM, you need to use fast boot to flash the kernel (boot.img)<br
/> 2. Cannot change Radio, which anyways you rarely need to do so.</p><p><strong>Device</strong>: <span
style="color: red;">HTC Desire S SAGA PVT S-ON</span><br
/> <strong>ROM</strong>:<span
style="color: #006400;">Stock ROM (Android 2.3.5 Sense 3.0)</span><br
/> <strong>HBOOT</strong>: <span
style="color: red;">HBOOT 2.00.2000</span><br
/> <strong>Kernel</strong>: <span
style="color: #006400;">2.6.35.10-ga76c374</span><br
/> <strong>Radio</strong>: <span
style="color: red;">20.4801.30.0822U_3822.10.08.04_M</span><br
/> <strong>Software Version</strong>:<span
style="color: #006400;">2.15.720.3</span><br
/> <strong>Recovery</strong>: <span
style="color: red;">CWM</span></p><p><strong><em>Which method did you use? Do share with us in the comments!</em></strong></p></div><p>No related posts.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/-6rFfDTcfJPxXQIQk6zcm38VrUc/0/da"><img src="http://feedads.g.doubleclick.net/~a/-6rFfDTcfJPxXQIQk6zcm38VrUc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/-6rFfDTcfJPxXQIQk6zcm38VrUc/1/da"><img src="http://feedads.g.doubleclick.net/~a/-6rFfDTcfJPxXQIQk6zcm38VrUc/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.vineetdhanawat.com/~ff/botsworld?a=lGHwlX2r-hI:-EVzND0esHg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/botsworld?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/botsworld/~4/lGHwlX2r-hI" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.vineetdhanawat.com/blog/2011/12/how-to-s-off-flash-custom-recovery-and-root-your-htc-android-phone-for-dummies/feed/</wfw:commentRss> <slash:comments>4</slash:comments> <feedburner:origLink>http://www.vineetdhanawat.com/blog/2011/12/how-to-s-off-flash-custom-recovery-and-root-your-htc-android-phone-for-dummies/</feedburner:origLink></item> <item><title>How to determine location using GPS in Android Phones</title><link>http://feeds.vineetdhanawat.com/~r/botsworld/~3/jMzdLWDJAc8/</link> <comments>http://www.vineetdhanawat.com/blog/2011/11/how-to-determine-location-using-gps-in-android-phones/#comments</comments> <pubDate>Thu, 10 Nov 2011 20:21:14 +0000</pubDate> <dc:creator>vineetdhanawat</dc:creator> <category><![CDATA[Android]]></category> <category><![CDATA[Coordinates]]></category> <category><![CDATA[DDMS]]></category> <category><![CDATA[GPS]]></category> <category><![CDATA[Listener]]></category> <category><![CDATA[Location]]></category> <category><![CDATA[Manifest]]></category> <category><![CDATA[Network]]></category> <category><![CDATA[Provider]]></category> <category><![CDATA[Service]]></category> <category><![CDATA[Toast]]></category> <category><![CDATA[WiFi]]></category> <guid isPermaLink="false">http://www.vineetdhanawat.com/blog/?p=304</guid> <description><![CDATA[In this tutorial we&#8217;ll create a small app which displays a Toast Notification whenever GPS Coordinates changes.  Start a new Project.
<strong>Project Name</strong>: HelloGps <strong>Android Level</strong>: Android 2.1 <strong>Application Name</strong>: HelloGps <strong>Package Name</strong>: com.vineetdhanawat.hellogps <strong>Create Activity</strong>: HelloGps <strong>Min SDK&#8230;</strong> Version: 7
1.
No related posts.]]></description> <content:encoded><![CDATA[<p>In this tutorial we&#8217;ll create a small app which displays a <a
href="http://developer.android.com/guide/topics/ui/notifiers/toasts.html" target="_blank">Toast Notification</a> whenever GPS Coordinates changes.  Start a new Project.</p> <address><strong>Project Name</strong>: HelloGps </address> <address><strong>Android Level</strong>: Android 2.1 </address> <address><strong>Application Name</strong>: HelloGps </address> <address><strong>Package Name</strong>: com.vineetdhanawat.hellogps </address> <address><strong>Create Activity</strong>: HelloGps </address> <address><strong>Min SDK</strong> Version: 7</address> <address></address> <address></address><h2>1. Implementing Location Listener</h2><p>Lets start with the code. Inside the onCreate() method include these lines</p><pre class="brush: plain; title: ; notranslate">
/* Use the LocationManager class to obtain GPS locations */
LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener mlocListener = new MyLocationListener();
mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
</pre><p>If asked, import all required packages like import android.location.LocationManager; etc  The <a
title="Location Manager" href="http://developer.android.com/reference/android/location/LocationManager.html" target="_blank">Location Manager</a> Object is obtained by calling the method with Context.LOCATION_SERVICE parameter.  0, 0 in parameters to requestLocationUpdates is the min Time &amp; min Distance respectively, after which onLocationChanged() is called.  Lets implement a nested class for LocationListener now</p><pre class="brush: plain; title: ; notranslate">
public class MyLocationListener implements LocationListener
{
	@Override
	public void onLocationChanged(Location loc)
	{
		String Text=&quot;Location Not Set&quot;;
		Text = &quot;My current location is: \n&quot; +
		&quot;Latitude = &quot; + loc.getLatitude() +
		&quot;\nLongitude = &quot; + loc.getLongitude();
		Toast.makeText(getApplicationContext(),Text,Toast.LENGTH_LONG).show();
	}
}
</pre><p>This will basically display a notification on screen (Toast), as soon as the GPS Coordinates changes  Now just implement rest of the required methods as follows</p><pre class="brush: plain; title: ; notranslate">
@Override
public void onProviderDisabled(String provider)
{
	Toast.makeText( getApplicationContext(),&quot;GPS Disabled&quot;,Toast.LENGTH_LONG ).show();
}
@Override
public void onProviderEnabled(String provider)
{
	Toast.makeText( getApplicationContext(),&quot;GPS Enabled&quot;,Toast.LENGTH_LONG).show();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras)
{}
</pre><h2>2. Layout and Manifest File</h2><p>Lets look at <strong>main.xml</strong> (UI) now. Just display a string on the main screen. GPS coordinates will splash anytime it changes</p><pre class="brush: plain; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
android:orientation=&quot;vertical&quot;
android:layout_width=&quot;fill_parent&quot;
android:layout_height=&quot;fill_parent&quot;&gt;
&lt;TextView
android:layout_width=&quot;fill_parent&quot;
android:layout_height=&quot;wrap_content&quot;
android:text=&quot;@string/hello&quot;/&gt;
&lt;/LinearLayout&gt;
</pre><p>Define the app name and display text in <strong>string.xml</strong> file</p><pre class="brush: plain; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;resources&gt;
    &lt;string name=&quot;hello&quot;&gt;GPS Coordinates will splash on screen&lt;/string&gt;
    &lt;string name=&quot;app_name&quot;&gt;GPS&lt;/string&gt;
&lt;/resources&gt;
</pre><p>One <strong>Major change</strong> in <strong>AndroidManifest.xml</strong> file this time is GPS Permission.  &lt;uses-permission android:name=&#8221;android.permission.ACCESS_FINE_LOCATION&#8221;&gt;&lt;/uses-permission&gt;</p><pre class="brush: plain; title: ; notranslate">
&lt;uses-permission android:name=&quot;android.permission.ACCESS_FINE_LOCATION&quot;&gt;
&lt;/uses-permission&gt;
</pre><h2>3. Test Application</h2><p><a
href="http://www.vineetdhanawat.com/blog/wp-content/uploads/2011/11/gpsapp.png"><img
class="alignright size-full wp-image-333" title="gpsapp" src="http://www.vineetdhanawat.com/blog/wp-content/uploads/2011/11/gpsapp.png" alt="" width="183" height="301" /></a></p><h3>a) DDMS</h3><p>You can test application by using an Emulator Control. Window &gt; <strong>Open Perspective &gt; Other &#8230; &gt; DDMS</strong> Now under Location Controls, pass any thing in decimal form in latitude and Longitude. The same will splash on screen.</p><h3>b) Telnet</h3><p>Emulator has an inbuilt Telnet Server. To connect, first make sure you have a telnet client.</p> <address>&gt;telnet localhost 5554</address> <address> &gt;geo fix 30 28</address> <address></address> <address></address> <address></address> <address></address> <address></address> <address></address> <address></address><h2>4. Location using Network Provider</h2><p>You need to make a few changes.</p><pre class="brush: plain; title: ; notranslate">
/*mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener);*/
mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mlocListener);
</pre><p>In AndroidManifest file, this works for both GPS and Network Provider</p><pre class="brush: plain; title: ; notranslate">
&lt;uses-permission android:name=&quot;android.permission.ACCESS_FINE_LOCATION&quot;&gt;
&lt;/uses-permission&gt;
</pre><p>In case you want to use only network Provider, use</p><pre class="brush: plain; title: ; notranslate">
&lt;uses-permission android:name=&quot;android.permission.ACCESS_COARSE_LOCATION&quot;&gt;
&lt;/uses-permission&gt;
</pre><p>Location manager also allows to get the last known location</p><pre class="brush: plain; title: ; notranslate">
LocationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER)
</pre><p>No related posts.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/366MIoZNHqpt9lHNbAZg8I8AF2M/0/da"><img src="http://feedads.g.doubleclick.net/~a/366MIoZNHqpt9lHNbAZg8I8AF2M/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/366MIoZNHqpt9lHNbAZg8I8AF2M/1/da"><img src="http://feedads.g.doubleclick.net/~a/366MIoZNHqpt9lHNbAZg8I8AF2M/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.vineetdhanawat.com/~ff/botsworld?a=jMzdLWDJAc8:Gkw_gZ6da1E:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/botsworld?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/botsworld/~4/jMzdLWDJAc8" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.vineetdhanawat.com/blog/2011/11/how-to-determine-location-using-gps-in-android-phones/feed/</wfw:commentRss> <slash:comments>3</slash:comments> <feedburner:origLink>http://www.vineetdhanawat.com/blog/2011/11/how-to-determine-location-using-gps-in-android-phones/</feedburner:origLink></item> <item><title>Diving into Android Development – Brew Timer Application</title><link>http://feeds.vineetdhanawat.com/~r/botsworld/~3/a5vU4o1AIls/</link> <comments>http://www.vineetdhanawat.com/blog/2011/10/diving-into-android-development-brew-timer-application/#comments</comments> <pubDate>Sat, 15 Oct 2011 22:20:08 +0000</pubDate> <dc:creator>vineetdhanawat</dc:creator> <category><![CDATA[Android]]></category> <category><![CDATA[ADT]]></category> <category><![CDATA[Application]]></category> <category><![CDATA[Brew]]></category> <category><![CDATA[Clock]]></category> <category><![CDATA[Database]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Interface]]></category> <category><![CDATA[Listener]]></category> <category><![CDATA[SQLite]]></category> <category><![CDATA[Timer]]></category> <guid isPermaLink="false">http://www.vineetdhanawat.com/blog/?p=277</guid> <description><![CDATA[Ready to dive into real android applications? Its been a while since i have blogged about my experiences with android app development. This is a great post i found at SmashingMag.
Prerequisites:
Working Eclipse IDE with ADT installed (Tutorial)
What is great in this Tutorial?&#8230;
You may also like:<ol><li><a
href='http://www.vineetdhanawat.com/blog/2011/01/getting-started-with-android-development/' rel='bookmark' title='Getting Started with Android Development'>Getting Started with Android Development</a></li><li><a
href='http://www.vineetdhanawat.com/blog/2011/03/ultimate-temperature-converter-sample-android-app/' rel='bookmark' title='Ultimate Temperature Converter – Sample Android App'>Ultimate Temperature Converter – Sample Android App</a></li></ol>]]></description> <content:encoded><![CDATA[<p><a
href="http://www.vineetdhanawat.com/blog/wp-content/uploads/2011/10/brewclock.jpg"><img
class="alignright size-full wp-image-280" title="brewclock" src="http://www.vineetdhanawat.com/blog/wp-content/uploads/2011/10/brewclock.jpg" alt="Brew Clock Application" width="255" height="336" /></a>Ready to dive into real android applications? Its been a while since i have blogged about my experiences with android app development. This is a great post i found at <a
href="http://www.smashingmagazine.com/">SmashingMag</a>.</p> <address>Prerequisites:<br
/> Working Eclipse IDE with ADT installed (<a
href="http://www.vineetdhanawat.com/blog/2011/01/getting-started-with-android-development/">Tutorial</a>)</p><p>What is great in this Tutorial?<br
/> 1. It talks about interface / different layouts<br
/> 2. It talks about various listeners / event handlers<br
/> 3. Most importantly, data storage (SQLite database)</p> </address><p>Sounds interesting? Then go ahead and give it a shot</p><p>Tutorial: <a
title="Brew Clock Application" href="http://coding.smashingmagazine.com/2010/10/25/get-started-developing-for-android-with-eclipse/" target="_blank">Part 1</a> | <a
title="Brew Clock Application Reloaded" href="http://coding.smashingmagazine.com/2011/03/28/get-started-developing-for-android-with-eclipse-reloaded/" target="_blank">Part 2</a></p><p>You may also like:</p><ol><li><a
href='http://www.vineetdhanawat.com/blog/2011/01/getting-started-with-android-development/' rel='bookmark' title='Getting Started with Android Development'>Getting Started with Android Development</a></li><li><a
href='http://www.vineetdhanawat.com/blog/2011/03/ultimate-temperature-converter-sample-android-app/' rel='bookmark' title='Ultimate Temperature Converter – Sample Android App'>Ultimate Temperature Converter – Sample Android App</a></li></ol>
<p><a href="http://feedads.g.doubleclick.net/~a/nZ-H8TjRNQJ7gYVXml-8iWq1UIk/0/da"><img src="http://feedads.g.doubleclick.net/~a/nZ-H8TjRNQJ7gYVXml-8iWq1UIk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/nZ-H8TjRNQJ7gYVXml-8iWq1UIk/1/da"><img src="http://feedads.g.doubleclick.net/~a/nZ-H8TjRNQJ7gYVXml-8iWq1UIk/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.vineetdhanawat.com/~ff/botsworld?a=a5vU4o1AIls:fyoNBtkF-sM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/botsworld?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/botsworld/~4/a5vU4o1AIls" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.vineetdhanawat.com/blog/2011/10/diving-into-android-development-brew-timer-application/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://www.vineetdhanawat.com/blog/2011/10/diving-into-android-development-brew-timer-application/</feedburner:origLink></item> </channel> </rss>

