Sunday, March 27, 2011

Netcat Basics

I think if you were going to master only one of these two-letter commands for hacking purposes besides vi, nc is the best candidate. If you are unfamiliar with nc (or netcat), it is an incredibly versatile tool that allows you to open or listen for TCP and UDP connections. It's the original network Swiss Army knife, and it's a valuable tool to have in your arsenal whether you're a sysadmin or a hacker. In the case of both hacking and troubleshooting, it's useful because you can use it like telnet to connect to a remote server and port and start an interactive session:

$ nc mail.example.org 25

220 mail.example.net ESMTP Postfix

. . .

QUIT

Netcat as a Simple Chat Service

You also could open one nc session on a port in listen mode and start a second nc session on a remote host to connect to that port and send text back and forth like a basic chat program. On the listening host, run:

$ nc -l 31337

On the remote host, type:

$ nc hostname 31337

You also can substitute the IPs for hostnames in both examples. Once the connection is made, anything typed on one end is displayed on the other, and you can press Ctrl-D in either session to close the connection.

Netcat for File Transfers

A number of sysadmins have long used this functionality as a quick-and-dirty file-transfer protocol. Start the first nc session in listen mode, and redirect its output to a file:

$ nc -l 31337 > output_file

On the remote machine from which you want to send the file, you would type:

$ nc hostname 31337 < input_file

Once the file has finished transferring, the connection will close automatically.

Netcat as a Port Scanner

Another incredibly useful function of nc is as a port scanner when something more sophisticated isn't around. Just use the -z option to have nc test only whether a port is open instead of connecting to it, add -v for verbose output, and provide a port range as arguments. So to scan a host for open ports between 20 and 25 (good for testing for open FTP, telnet, SSH and SMTP services), you would type:

$ nc -zv host.example.org 20-25

nc: connect to host.example.org port 20 (tcp) failed:

↪Connection refused

Connection to host.example.org 21 port [tcp/ftp] succeeded!

Connection to host.example.org 22 port [tcp/ssh] succeeded!

nc: connect to host.example.org port 23 (tcp) failed:

↪Connection refused

nc: connect to host.example.org port 24 (tcp) failed:

↪Connection refused

Connection to host.example.org 25 port [tcp/smtp] succeeded!

Taken From: http://www.linuxjournal.com/article/10883

Internet Command Line Applications

If you're wondering when the command line will die, the answer is simple: when we all decide to give up and use Windows.

The Linux graphical desktop has improved vastly since its inception some 18 years ago. Gone are the days in which system configuration necessitated use of the command line. The Ubuntu generation has come to age in a world where using the command line is optional. Although many people still choose to hone their console skills, just as many do not.

The command line, however, is far from irrelevant. Whether you are trying to get the most out of an older system or wanting to access your applications from anywhere over SSH, the console still remains one of the most powerful tools in the Linux user's toolbox. From traditional system utilities to Web and multimedia applications, there are many CLI (command-line interface) versions of our desktop staples. Here's a small selection of my favorites that are still in popular use today.

Internet

A wide selection of Web applications run on the Linux shell. Dedicated downloading and torrenting applications are a natural choice for running at the command line. With the addition of a tool such as screen or dtach, long downloads can be run remotely on an always-on machine. Likewise, text-based browsers can be used for executing downloads that are too deeply buried behind redirects for curl or wget. Console browsers also are invaluable as tools for testing Web site accessibility or avoiding noxious advertising—especially on machines with limited resources.

rTorrent (libtorrent.rakshasa.no)

A popular text-based BitTorrent client, rTorrent boasts an impressive feature set. It supports partial downloading of multifile torrents and session saving, and it can be used with screen or dtach. rTorrent also has a built-in XMLRPC interface with a number of third-party Web-based front ends available. This combined with rTorrent's ability to watch a specified directory for the appearance of torrent files—and when found, execute them—allows users to create a powerful remote torrenting tool with ease.

Wget (www.gnu.org/software/wget)

Of course, a torrenting server with a Web-based front end is over-engineering the solution just a little if you need to download only an ISO or two without interruption. Wget is a simple utility for downloading files over HTTP, HTTPS and FTP. It is included in most Linux distributions. Wget can be used to download individual files or mirror entire Web sites. It supports downloading through proxies, resuming partial downloads and various forms of authentication.

Curl (curl.haxx.se)

Another simple downloader, Curl is both a tool and a library for transferring data over a range of protocols. Curl, of course, supports HTTP, HTTPS and FTP, but it differs from Wget in also supporting LDAP, POP3 and DICT, among others. Curl also supports downloading through proxies, resuming partial downloads and various forms of authentication.

w3m (w3m.sourceforge.net)

A pager like less or more for HTML files, w3m supports rendering both local HTML files and remote URLs. It supports operating through a proxy, cookies and SSL. As it is designed to act as a file pager or viewer, w3m must be invoked either with a remote URL or a local file as an argument.

ELinks (elinks.or.cz)

If you are looking for something with a little more functionality, ELinks is an extremely feature-rich text-mode browser. It's capable of displaying tables and frames, and as of version 0.10, ELinks can render CSS and supports up to 256 colors. ELinks makes for a powerful downloading tool. It's able to download multiple files at once and perform background file transfers while you are browsing.

clip_image001

Figure 1. ELinks, a Text-Mode Browser

Instant Messaging/Chat

Running a client in a screen session still is extremely popular among IRC users. Running IRC on a remote server accessed via SSH provides access to IRC from restricted networks and allows for messages to be left with your client for you to read on your return. Chat logs are kept in one place, instead of being spread across every computer you use. And, instant messaging can benefit from being run at the console for all of the same reasons.

Irssi (www.irssi.org)

Irssi is a very popular IRC client for the console. Features include logging, custom formatting and themes, configurable key bindings and many, many others. Irssi provides a powerful Perl scripting interface, with many contributed scripts available from Irssi.org. Irssi uses a windowing interface that allows for dozens of server connections, channels and messaging windows to be open and accessible at once.

clip_image002

Figure 2. IRSSI IRC Client

Finch (pidgin.im)

If you've used Pidgin, you'll find Finch hauntingly familiar. Finch is a CLI instant-messaging program that is part of the Pidgin codebase and uses the libpurple instant-messaging libraries. Finch's user interface is modeled as closely to Pidgin as ncurses will allow. They both will save their configuration to the same directory (~/.libpurple), and if Pidgin already is configured on your machine, Finch will pick up its settings automatically. Finch supports chatting on all of the protocols included with libpurple: AIM, MSN, Yahoo! and Jabber, just to name a few.

naim (naim.n.ml.org)

Supporting AIM, ICQ, Lily and IRC, naim is an elegantly designed alternative to Finch if you don't need all of libpurple's protocols. naim uses a very simple command-driven interface. All text entered with a preceding / is considered a command, and all other text is sent as a message to the current active window. naim supports simultaneous connections to multiple networks and IRC servers, with each “window” displayed in a slide-out list that can be called up with the Tab key.

Taken From: http://www.linuxjournal.com/article/10854

Install SNMP on Windows 7

To install SNMP on Windows 7, open Control Panel and then click on Programs and Features. Then, click on "Turn Windows features on or off" link in the left pane. If UAC prompted, then click on Yes. Then, in the Windows Features window, scroll down and select "Simple Network Management Protocol (SNMP)" check box and click on OK. Then, wait for some time to install SNMP.
After installing SNMP, click on Start Orb and then type Services.msc in the Search box and hit Enter. Then, scroll down in the right pane and right click on SNMP Services and select Properties. Then, click on Traps tab. Now, in the Community Name box, type the community name to which your computer will send trap messages and then click on "Add to list" button. Then, click on Apply and then OK.
 
Taken From: http://www.itechtalk.com/thread7216.html

Saturday, March 19, 2011

Android Development Environment (SDK and Eclipse)

This page describes how to install the Android SDK and set up your development environment for the first time.
If you encounter any problems during installation, see the Troubleshooting section at the bottom of this page.
Updating?
If you already have an Android SDK, use the Android SDK and AVD Manager tool to install updated tools and new Android platforms into your existing environment. For information about how to do that, see Adding SDK Components

Step 1. Preparing Your Development Computer

Before getting started with the Android SDK, take a moment to confirm that your development computer meets the System Requirements. In particular, you might need to install the JDK, if you don't have it already.
If you will be developing in Eclipse with the Android Development Tools (ADT) Plugin—the recommended path if you are new to Android—make sure that you have a suitable version of Eclipse installed on your computer as described in the System Requirements document. If you need to install Eclipse, you can download it from this location:
http://www.eclipse.org/downloads/
The "Eclipse Classic" version is recommended. Otherwise, a Java or RCP version of Eclipse is recommended.

Step 2. Downloading the SDK Starter Package

The SDK starter package is not a full development environment—it includes only the core SDK Tools, which you can use to download the rest of the SDK components (such as the latest Android platform).
If you haven't already, get the latest version of the SDK starter package from the SDK download page.
If you downloaded a .zip or .tgz package (instead of the SDK installer), unpack it to a safe location on your machine. By default, the SDK files are unpacked into a directory named android-sdk-<machine-platform>.
If you downloaded the Windows installer (.exe file), run it now and it will check whether the proper Java SE Development Kit (JDK) is installed (installing it, if necessary), then install the SDK Tools into a default location (which you can modify).
Make a note of the name and location of the SDK directory on your system—you will need to refer to the SDK directory later, when setting up the ADT plugin and when using the SDK tools from command line.

Step 3. Installing the ADT Plugin for Eclipse

Android offers a custom plugin for the Eclipse IDE, called Android Development Tools (ADT), that is designed to give you a powerful, integrated environment in which to build Android applications. It extends the capabilites of Eclipse to let you quickly set up new Android projects, create an application UI, debug your applications using the Android SDK tools, and even export signed (or unsigned) APKs in order to distribute your application. In general, developing in Eclipse with ADT is a highly recommended approach and is the fastest way to get started with Android.
If you'd like to use ADT for developing Android applications, install it now.
Downloading the ADT Plugin
Use the Update Manager feature of your Eclipse installation to install the latest revision of ADT on your development computer.
Assuming that you have a compatible version of the Eclipse IDE installed, as described in Preparing for Installation, above, follow these steps to download the ADT plugin and install it in your Eclipse environment.
  1. Start Eclipse, then select Help > Install New Software....
  2. Click Add, in the top-right corner.
  3. In the Add Repository dialog that appears, enter "ADT Plugin" for the Name and the following URL for the Location:
    https://dl-ssl.google.com/android/eclipse/
    Note: If you have trouble acquiring the plugin, try using "http" in the Location URL, instead of "https" (https is preferred for security reasons).
  4. Click OK.
  5. In the Available Software dialog, select the checkbox next to Developer Tools and click Next.
  6. In the next window, you'll see a list of the tools to be downloaded. Click Next.
  7. Read and accept the license agreements, then click Finish.
  8. When the installation completes, restart Eclipse.
Configuring the ADT Plugin 
Once you've successfully downloaded ADT as described above, the next step is to modify your ADT preferences in Eclipse to point to the Android SDK directory:
  1. Select Window > Preferences... to open the Preferences panel (Mac OS X: Eclipse > Preferences).
  2. Select Android from the left panel.
  3. For the SDK Location in the main panel, click Browse... and locate your downloaded SDK directory.
  4. Click Apply, then OK.
Done! If you haven't encountered any problems, then the installation is complete. If you're installing the Android SDK for the first time, return to Installing the SDK to complete your setup.

If you prefer to work in a different IDE, you do not need to install Eclipse or ADT, instead, you can directly use the SDK tools to build and debug your application. The Overview section of the developer guide outlines the major steps that you need to complete when developing in Eclipse or other IDEs.

Step 4. Adding Platforms and Other Components

The last step in setting up your SDK is using the Android SDK and AVD Manager (a tool included in the SDK starter package) to download essential SDK components into your development environment.

The SDK uses a modular structure that separates the major parts of the SDK—Android platform versions, add-ons, tools, samples, and documentation—into a set of separately installable components. The SDK starter package, which you've already downloaded, includes only a single component: the latest version of the SDK Tools. To develop an Android application, you also need to download at least one Android platform and the SDK Platform-tools (tools that the latest platform depend upon). However, downloading additional components is highly recommended.

If you used the Windows installer, when you complete the installation wizard, it will launch the Android SDK and AVD Manager with a default set of platforms and other components selected for you to install. Simply click Install to accept the recommended set of components and install them. You can then skip to Step 5, but we recommend you first read the section about the Available Components to better understand the components available from the Android SDK and AVD Manager.

You can launch the Android SDK and AVD Manager in one of the following ways:
  • From within Eclipse, select Window > Android SDK and AVD Manager.
  • On Windows, double-click the SDK Manager.exe file at the root of the Android SDK directory.
  • On Mac or Linux, open a terminal and navigate to the tools/ directory in the Android SDK, then execute:

    android
To download components, use the graphical UI of the Android SDK and AVD Manager, shown in Figure 1, to browse the SDK repository and select new or updated components. The Android SDK and AVD Manager will install the selected components in your SDK environment. For information about which components you should download, see the following section about Recommended Components.





Figure 1. The Android SDK and AVD Manager's Available Packages panel, which shows the SDK components that are available for you to download into your environment.

Available Components
By default, there are two repositories of components for your SDK: Android Repository and Third party Add-ons.

The Android Repository offers these types of components:
  • SDK Tools (pre-installed in the Android SDK starter package) — Contains tools for debugging and testing your application and other utility tools. You can access these in the <sdk>/tools/ directory of your SDK and read more about them in the Tools section of the developer guide.
  • SDK Platform-tools — Contains tools that are required to develop and debug your application, but which are developed alongside the Android platform in order to support the latest features. These tools are typically updated only when a new platform becomes available. You can access these in the <sdk>/platform-tools/ directory. Read more about them in the Tools section of the developer guide.
  • Android platforms — An SDK platform is available for every production Android platform deployable to Android-powered devices. Each platform component includes a fully compliant Android library and system image, sample code, emulator skins, and any version specific tools. For detailed information about each platform, see the overview documents available under the section "Downloadable SDK Components," at left.
  • USB Driver for Windows (Windows only) — Contains driver files that you can install on your Windows computer, so that you can run and debug your applications on an actual device. You do not need the USB driver unless you plan to debug your application on an actual Android-powered device. If you develop on Mac OS X or Linux, you do not need a special driver to debug your application on an Android-powered device. (See Developing on a Device for more information about developing on a real device.)
  • Samples — Contains the sample code and apps available for each Android development platform. If you are just getting started with Android development, make sure to download the samples to your SDK.
  • Documentation — Contains a local copy of the latest multiversion documentation for the Android framework API.
The Third party Add-ons provide components that allow you to create a development environment using a specific Android external library (such as the Google Maps library) or a customized (but fully compliant) Android system image. You can add additional Add-on repositories, by clicking Add Add-on Site.
Recommended Components
The SDK repository contains a range of components that you can download. Use the table below to determine which components you need, based on whether you want to set up a basic, recommended, or full development environment:


image


image


image


Once you've installed at least the basic configuration of SDK components, you're ready to start developing Android apps. The next section describes the contents of the Android SDK to familiarize you with the components you've just installed.

For more information about using the Android SDK and AVD Manager, see the Adding SDK Components document.

Step 5. Exploring the SDK (Optional)

Once you've installed the SDK and downloaded the platforms, documentation, and add-ons that you need, we suggest that you open the SDK directory and take a look at what's inside.

The table below describes the full SDK directory contents, with components installed.

add-ons/
Contains add-ons to the Android SDK development environment, which let you develop against external libraries that are available on some devices.


docs/
A full set of documentation in HTML format, including the Developer's Guide, API Reference, and other information. To read the documentation, load the file offline.html in a web browser.


platform-tools/
Contains development tools that may be updated with each platform release (from the Android SDK Platform-tools component). Tools in here include adb, dexdump, and others others that you don't typically use directly. These tools are separate from the generic development tools in the tools/ directory, because these tools may be updated in order to support new features in the latest Android platform, whereas the other tools have no dependencies on the platform version.


platforms/
Contains a set of Android platform versions that you can develop applications against, each in a separate directory.


<platform>/
Platform version directory, for example "android-1.6". All platform version directories contain a similar set of files and subdirectory structure.


data/
Storage area for default fonts and resource definitions.


images/
Storage area for default disk images, including the Android system image, the default userdata image, the default ramdisk image, and more. The images are used in emulator sessions.


skins/
A set of emulator skins available for the platform version. Each skin is designed for a specific screen resolution.


templates/
Storage area for file templates used by the SDK development tools.


tools/
This directory is used only by SDK Tools r7 and below for development tools that are specific to this platform version—it's not used by SDK Tools r8 and above.


android.jar
The Android library used when compiling applications against this platform version.


samples/
Sample code and apps that are specific to platform version.


tools/
Contains the set of development and profiling tools that are platform-independent, such as the emulator, the AVD and SDK Manager, ddms, hierarchyviewer and more. The tools in this directory may be updated at any time (from the Android SDK Tools component), independent of platform releases, whereas the tools in platform-tools/ may be updated based on the latest platform release.


SDK Readme.txt
A file that explains how to perform the initial setup of your SDK, including how to launch the Android SDK and AVD Manager tool on all platforms


SDK Manager.exe
Windows SDK only. A shortcut that launches the Android SDK and AVD Manager tool, which you use to add components to your SDK.


Optionally, you might want to add the location of the SDK's tools/ and platform-tools to your PATH environment variable, to provide easy access to the tools.


How to update your PATH

Next Steps

Once you have completed installation, you are ready to begin developing applications. Here are a few ways you can get started:

Set up the Hello World application
  • If you have just installed the SDK for the first time, go to the Hello World tutorial. The tutorial takes you step-by-step through the process of setting up your first Android project, including setting up an Android Virtual Device (AVD) on which to run the application.
Following the Hello World tutorial is an essential first step in getting started with Android development.

Learn about Android
  • Take a look at the Dev Guide and the types of information it provides
  • Read an introduction to Android as a platform in What is Android?
  • Learn about the Android framework and how applications run on it in Application Fundamentals
  • Take a look at the Android framework API specification in the Reference tab
Explore the development tools
Follow the Notepad tutorial
  • The Notepad Tutorial shows you how to build a full Android application and provides helpful commentary on the Android system and API. The Notepad tutorial helps you bring together the important design and architectural concepts in a moderately complex application.
Following the Notepad tutorial is an excellent second step in getting started with Android development.

Explore some code
  • The Android SDK includes sample code and applications for each platform version. You can browse the samples in the Resources tab or download them into your SDK using the Android SDK and AVD Manager. Once you've downloaded the samples, you'll find them in <sdk>/samples/<platform>/.

Visit the Android developer groups
  • Take a look at the Community pages to see a list of Android developers groups. In particular, you might want to look at the Android Developers group to get a sense for what the Android developer community is like.

Troubleshooting

Ubuntu Linux Notes
  • If you need help installing and configuring Java on your development machine, you might find these resources helpful:

  • Here are the steps to install Java and Eclipse, prior to installing the Android SDK and ADT Plugin.
    1. If you are running a 64-bit distribution on your development machine, you need to install the ia32-libs package using apt-get::

      apt-get install ia32-libs

    2. Next, install Java:
      apt-get install sun-java6-jdk

    3. The Ubuntu package manager does not currently offer an Eclipse 3.3 version for download, so we recommend that you download Eclipse from eclipse.org (http://www.eclipse.org/ downloads/). A Java or RCP version of Eclipse is recommended.
    4. Follow the steps given in previous sections to install the SDK and the ADT plugin.
Other Linux Notes
  • If JDK is already installed on your development computer, please take a moment to make sure that it meets the version requirements listed in the System Requirements. In particular, note that some Linux distributions may include JDK 1.4 or Gnu Compiler for Java, both of which are not supported for Android development.
Based On: http://developer.android.com/sdk/installing.html