Tuesday, October 26, 2010

Hacking Techniques in Wireless Networks

By

Prabhaker Mateti

Department of Computer Science and Engineering
Wright State University
Dayton, Ohio 45435-0001

This article is scheduled to appear in “The Handbook of Information Security”, Hossein Bidgoli (Editor-in-Chief), John Wiley & Sons, Inc., 2005.

1. Introduction. 2

2. Wireless LAN Overview.. 3

2.1 Stations and Access Points. 3

2.2 Channels. 4

2.3 WEP. 4

2.4 Infrastructure and Ad Hoc Modes. 4

2.5 Frames. 4

2.6 Authentication. 5

2.7 Association. 6

3. Wireless Network Sniffing. 7

3.1 Passive Scanning. 7

3.2 Detection of SSID.. 8

3.3 Collecting the MAC Addresses. 8

3.4 Collecting the Frames for Cracking WEP. 8

3.5 Detection of the Sniffers. 9

4. Wireless Spoofing. 10

4.1 MAC Address Spoofing. 10

4.2 IP spoofing. 10

4.3 Frame Spoofing. 11

5. Wireless Network Probing. 11

5.1 Detection of SSID.. 12

5.2 Detection of APs and stations. 12

5.3 Detection of Probing. 12

6. AP Weaknesses. 12

6.1 Configuration. 12

6.2 Defeating MAC Filtering. 13

6.3 Rogue AP. 13

6.4 Trojan AP. 13

6.5 Equipment Flaws. 13

7. Denial of Service. 14

7.1 Jamming the Air Waves. 14

7.2 Flooding with Associations. 14

7.3 Forged Dissociation. 14

7.4 Forged Deauthentication. 15

7.5 Power Saving. 15

8. Man-in-the-Middle Attacks. 15

8.1 Wireless MITM... 16

8.2 ARP Poisoning. 16

8.3 Session Hijacking. 17

9. War Driving. 17

9.1 War chalking. 17

9.2 Typical Equipment 18

10. Wireless Security Best Practices. 19

10.1 Location of the APs. 19

10.2 Proper Configuration. 19

10.3 Secure Protocols. 20

10.4 Wireless IDS. 20

10.5 Wireless Auditing. 21

10.6 Newer Standards and Protocols. 21

10.7 Software Tools. 21

11. Conclusion. 22

GLOSSARY.. 23

Cross References. 24

References. 24

Further Reading. 25

Key Words

IEEE 802.11, wireless spoofing, cracking WEP, forged Deauthentication, rogue/ Trojan access points, session hijacking, war driving.

Abstract

This article describes IEEE 802.11-specific hacking techniques that attackers have used, and suggests various defensive measures. We describe sniffing, spoofing and probing in the context of wireless networks. We describe how SSIDs can be determined, how a sufficiently large number of frames can be collected so that WEP can be cracked. We show how easy it is to cause denial-of-service through jamming and through forged disassociations and deauthentications. We also explain three man-in-the-middle attacks using wireless networks. We give a list of selected open-source tools. We summarize the activity known as war driving. We conclude the article with several recommendations that will help improve security at a wireless deployment site.

1. Introduction

Wireless networks broadcast their packets using radio frequency or optical wavelengths. A modern laptop computer can listen in. Worse, an attacker can manufacture new packets on the fly and persuade wireless stations to accept his packets as legitimate.

We use the term hacking as described below.

hacker n. [originally, someone who makes furniture with an axe] 1. A person who enjoys exploring the details of programmable systems and how to stretch their capabilities, as opposed to most users, who prefer to learn only the minimum necessary. 2. One who programs enthusiastically (even obsessively) or who enjoys programming rather than just theorizing about programming. 3. A person capable of appreciating hack value. 4. A person who is good at programming quickly. 5. An expert at a particular program, or one who frequently does work using it or on it; as in `a Unix hacker'. (Definitions 1 through 5 are correlated, and people who fit them congregate.) 6. An expert or enthusiast of any kind. One might be an astronomy hacker, for example. 7. One who enjoys the intellectual challenge of creatively overcoming or circumventing limitations. 8. [deprecated] A malicious meddler who tries to discover sensitive information by poking around. Hence `password hacker', `network hacker'. The correct term for this sense is cracker.

From The Jargon Dictionary http://info.astrian.net/jargon/

This article describes IEEE 802.11-specific hacking techniques that attackers have used, and suggests various defensive measures. It is not an overview of security features proposed in WPA or IEEE 802.11i. We do not consider legal implications, or the intent behind such hacking, whether malevolent or benevolent. The article’s focus is in describing techniques, methods, analyses and uses in ways unintended by the designers of IEEE 802.11.

2. Wireless LAN Overview

In this section, we give a brief overview of wireless LAN (WLAN) while emphasizing the features that help an attacker. We assume that the reader is familiar with the TCP/IP suite (see, e.g., [Mateti 2003]).

IEEE 802.11 refers to a family of specifications (www.ieee802.org/11/) developed by the IEEE for over-the-air interface between a wireless client and an AP or between two wireless clients. To be called 802.11 devices, they must conform to the Medium Access Control (MAC) and Physical Layer specifications. The IEEE 802.11 standard covers the Physical (Layer 1) and Data Link (Layer 2) layers of the OSI Model. In this article, we are mainly concerned with the MAC layer and not the variations of the physical layer known as 802.11a/b/g.

2.1 Stations and Access Points

A wireless network interface card (adapter) is a device, called a station, providing the network physical layer over a radio link to another station. An access point (AP) is a station that provides frame distribution service to stations associated with it. The AP itself is typically connected by wire to a LAN.

The station and AP each contain a network interface that has a Media Access Control (MAC) address, just as wired network cards do. This address is a world-wide-unique 48-bit number, assigned to it at the time of manufacture. The 48-bit address is often represented as a string of six octets separated by colons (e.g., 00:02:2D:17:B9:E8) or hyphens (e.g., 00-02-2D-17-B9-E8). While the MAC address as assigned by the manufacturer is printed on the device, the address can be changed in software.

Each AP has a 0 to 32 byte long Service Set Identifier (SSID) that is also commonly called a network name. The SSID is used to segment the airwaves for usage. If two wireless networks are physically close, the SSIDs label the respective networks, and allow the components of one network to ignore those of the other. SSIDs can also be mapped to virtual LANs; thus, some APs support multiple SSIDs. Unlike fully qualified host names (e.g., gamma.cs.wright.edu), SSIDs are not registered, and it is possible that two unrelated networks use the same SSID.

2.2 Channels

The stations communicate with each other using radio frequencies between 2.4 GHz and 2.5 GHz. Neighboring channels are only 5 MHz apart. Two wireless networks using neighboring channels may interfere with each other.

2.3 WEP

Wired Equivalent Privacy (WEP) is a shared-secret key encryption system used to encrypt packets transmitted between a station and an AP. The WEP algorithm is intended to protect wireless communication from eavesdropping. A secondary function of WEP is to prevent unauthorized access to a wireless network. WEP encrypts the payload of data packets. Management and control frames are always transmitted in the clear. WEP uses the RC4 encryption algorithm. The shared-secret key is either 40 or 104 bits long. The key is chosen by the system administrator. This key must be shared among all the stations and the AP using mechanisms that are not specified in the IEEE 802.11.

2.4 Infrastructure and Ad Hoc Modes

A wireless network operates in one of two modes. In the ad hoc mode, each station is a peer to the other stations and communicates directly with other stations within the network. No AP is involved. All stations can send Beacon and Probe frames. The ad hoc mode stations form an Independent Basic Service Set (IBSS).

A station in the infrastructure mode communicates only with an AP. Basic Service Set (BSS) is a set of stations that are logically associated with each other and controlled by a single AP. Together they operate as a fully connected wireless network. The BSSID is a 48-bit number of the same format as a MAC address. This field uniquely identifies each BSS. The value of this field is the MAC address of the AP.

2.5 Frames

Both the station and AP radiate and gather 802.11 frames as needed. The format of frames is illustrated below. Most of the frames contain IP packets. The other frames are for the management and control of the wireless connection.

Figure 1 An IEEE 802.11 Frame

There are three classes of frames. The management frames establish and maintain communications. These are of Association request, Association response, Reassociation request, Reassociation response, Probe request, Probe response, Beacon, Announcement traffic indication message, Disassociation, Authentication, Deauthentication types. The SSID is part of several of the management frames. Management messages are always sent in the clear, even when link encryption (WEP or WPA) is used, so the SSID is visible to anyone who can intercept these frames.

The control frames help in the delivery of data.

The data frames encapsulate the OSI Network Layer packets. These contain the source and destination MAC address, the BSSID, and the TCP/IP datagram. The payload part of the datagram is WEP-encrypted.

2.6 Authentication

Authentication is the process of proving identity of a station to another station or AP. In the open system authentication, all stations are authenticated without any checking. A station A sends an Authentication management frame that contains the identity of A, to station B. Station B replies with a frame that indicates recognition, addressed to A. In the closed network architecture, the stations must know the SSID of the AP in order to connect to the AP. The shared key authentication uses a standard challenge and response along with a shared secret key.

Figure 2: States and Services

2.7 Association

Data can be exchanged between the station and AP only after a station is associated with an AP in the infrastructure mode or with another station in the ad hoc mode. All the APs transmit Beacon frames a few times each second that contain the SSID, time, capabilities, supported rates, and other information. Stations can chose to associate with an AP based on the signal strength etc. of each AP. Stations can have a null SSID that is considered to match all SSIDs.

The association is a two-step process. A station that is currently unauthenticated and unassociated listens for Beacon frames. The station selects a BSS to join. The station and the AP mutually authenticate themselves by exchanging Authentication management frames. The client is now authenticated, but unassociated. In the second step, the station sends an Association Request frame, to which the AP responds with an Association Response frame that includes an Association ID to the station. The station is now authenticated and associated.

A station can be authenticated with several APs at the same time, but associated with at most one AP at any time. Association implies authentication. There is no state where a station is associated but not authenticated.

3. Wireless Network Sniffing

Sniffing is eavesdropping on the network. A (packet) sniffer is a program that intercepts and decodes network traffic broadcast through a medium. Sniffing is the act by a machine S of making copies of a network packet sent by machine A intended to be received by machine B. Such sniffing, strictly speaking, is not a TCP/IP problem, but it is enabled by the choice of broadcast media, Ethernet and 802.11, as the physical and data link layers.

Sniffing has long been a reconnaissance technique used in wired networks. Attackers sniff the frames necessary to enable the exploits described in later sections. Sniffing is the underlying technique used in tools that monitor the health of a network. Sniffing can also help find the easy kill as in scanning for open access points that allow anyone to connect, or capturing the passwords used in a connection session that does not even use WEP, or in telnet, rlogin and ftp connections.

It is easier to sniff wireless networks than wired ones. It is easy to sniff the wireless traffic of a building by setting shop in a car parked in a lot as far away as a mile, or while driving around the block. In a wired network, the attacker must find a way to install a sniffer on one or more of the hosts in the targeted subnet. Depending on the equipment used in a LAN, a sniffer needs to be run either on the victim machine whose traffic is of interest or on some other host in the same subnet as the victim. An attacker at large on the Internet has other techniques that make it possible to install a sniffer remotely on the victim machine.

3.1 Passive Scanning

Scanning is the act of sniffing by tuning to various radio channels of the devices. A passive network scanner instructs the wireless card to listen to each channel for a few messages. This does not reveal the presence of the scanner.

An attacker can passively scan without transmitting at all. Several modes of a station permit this. There is a mode called RF monitor mode that allows every frame appearing on a channel to be copied as the radio of the station tunes to various channels. This is analogous to placing a wired Ethernet card in promiscuous mode. This mode is not enabled by default. Some wireless cards on the market today have disabled this feature in the default firmware. One can buy wireless cards whose firmware and corresponding driver software together permit reading of all raw 802.11 frames. A station in monitor mode can capture packets without associating with an AP or ad-hoc network. The so-called promiscuous mode allows the capture of all wireless packets of an associated network. In this mode, packets cannot be read until authentication and association are completed.

An example sniffer is Kismet (http://www.kismetwireless.net). An example wireless card that permits RF monitor modes is Cisco Aironet AIR-PCM342.

3.2 Detection of SSID

The attacker can discover the SSID of a network usually by passive scanning because the SSID occurs in the following frame types: Beacon, Probe Requests, Probe Responses, Association Requests, and Reassociation Requests. Recall that management frames are always in the clear, even when WEP is enabled.

On a number of APs, it is possible to configure so that the SSID transmitted in the Beacon frames is masked, or even turn off Beacons altogether. The SSID shown in the Beacon frames is set to null in the hope of making the WLAN invisible unless a client already knows the correct SSID. In such a case, a station wishing to join a WLAN begins the association process by sending Probe Requests since it could not detect any APs via Beacons that match its SSID.

If the Beacons are not turned off, and the SSID in them is not set to null, an attacker obtains the SSID included in the Beacon frame by passive scanning.

When the Beacon displays a null SSID, there are two possibilities. Eventually, an Associate Request may appear from a legitimate station that already has a correct SSID. To such a request, there will be an Associate Response frame from the AP. Both frames will contain the SSID in the clear, and the attacker sniffs these. If the station wishes to join any available AP, it sends Probe Requests on all channels, and listens for Probe Responses that contain the SSIDs of the APs. The station considers all Probe Responses, just as it would have with the non-empty SSID Beacon frames, to select an AP. Normal association then begins. The attacker waits to sniff these Probe Responses and extract the SSIDs.

If Beacon transmission is disabled, the attacker has two choices. The attacker can keep sniffing waiting for a voluntary Associate Request to appear from a legitimate station that already has a correct SSID and sniff the SSID as described above. The attacker can also chose to actively probe by injecting frames that he constructs, and then sniffs the response as described in a later section.

When the above methods fail, SSID discovery is done by active scanning (see Section 5).

3.3 Collecting the MAC Addresses

The attacker gathers legitimate MAC addresses for use later in constructing spoofed frames. The source and destination MAC addresses are always in the clear in all the frames. There are two reasons why an attacker would collect MAC addresses of stations and APs participating in a wireless network. (1) The attacker wishes to use these values in spoofed frames so that his station or AP is not identified. (2) The targeted AP may be controlling access by filtering out frames with MAC addresses that were not registered.

3.4 Collecting the Frames for Cracking WEP

The goal of an attacker is to discover the WEP shared-secret key. Often, the shared key can be discovered by guesswork based on a certain amount of social engineering regarding the administrator who configures the wireless LAN and all its users. Some client software stores the WEP keys in the operating system registry or initialization scripts. In the following, we assume that the attacker was unsuccessful in obtaining the key in this manner. The attacker then employs systematic procedures in cracking the WEP. For this purpose, a large number (millions) of frames need to be collected because of the way WEP works.

The wireless device generates on the fly an Initialization Vector (IV) of 24-bits. Adding these bits to the shared-secret key of either 40 or 104 bits, we often speak of 64-, or 128-bit encryption. WEP generates a pseudo-random key stream from the shared secret key and the IV. The CRC-32 checksum of the plain text, known as the Integrity Check (IC) field, is appended to the data to be sent. It is then exclusive-ORed with the pseudo-random key stream to produce the cipher text. The IV is appended in the clear to the cipher text and transmitted. The receiver extracts the IV, uses the secret key to re-generate the random key stream, and exclusive-ORs the received cipher text to yield the original plaintext.

Certain cards are so simplistic that they start their IV as 0 and increment it by 1 for each frame, resetting in between for some events. Even the better cards generate weak IVs from which the first few bytes of the shared key can be computed after statistical analyses. Some implementations generate fewer mathematically weak vectors than others do.

The attacker sniffs a large number of frames from a single BSS. These frames all use the same key. The mathematics behind the systematic computation of the secret shared key from a collection of cipher text extracted from these frames is described elsewhere in this volume. What is needed however is a collection of frames that were encrypted using “mathematically-weak” IVs. The number of encrypted frames that were mathematically weak is a small percentage of all frames. In a collection of a million frames, there may only be a hundred mathematically weak frames. It is conceivable that the collection may take a few hours to several days depending on how busy the WLAN is.

Given a sufficient number of mathematically weak frames, the systematic computation that exposes the bytes of the secret key is intensive. However, an attacker can employ powerful computers. On an average PC, this may take a few seconds to hours. The storage of the large numbers of frames is in the several hundred-mega bytes to a few giga bytes range.

An example of a WEP cracking tool is AirSnort ( http://airsnort.shmoo.com ).

3.5 Detection of the Sniffers

Detecting the presence of a wireless sniffer, who remains radio-silent, through network security measures is virtually impossible. Once the attacker begins probing (i.e., by injecting packets), the presence and the coordinates of the wireless device can be detected.

4. Wireless Spoofing

There are well-known attack techniques known as spoofing in both wired and wireless networks. The attacker constructs frames by filling selected fields that contain addresses or identifiers with legitimate looking but non-existent values, or with values that belong to others. The attacker would have collected these legitimate values through sniffing.

4.1 MAC Address Spoofing

The attacker generally desires to be hidden. But the probing activity injects frames that are observable by system administrators. The attacker fills the Sender MAC Address field of the injected frames with a spoofed value so that his equipment is not identified.

Typical APs control access by permitting only those stations with known MAC addresses. Either the attacker has to compromise a computer system that has a station, or he spoofs with legitimate MAC addresses in frames that he manufactures. MAC addresses are assigned at the time of manufacture, but setting the MAC address of a wireless card or AP to an arbitrary chosen value is a simple matter of invoking an appropriate software tool that engages in a dialog with the user and accepts values. Such tools are routinely included when a station or AP is purchased. The attacker, however, changes the MAC address programmatically, sends several frames with that address, and repeats this with another MAC address. In a period of a second, this can happen several thousand times.

When an AP is not filtering MAC addresses, there is no need for the attacker to use legitimate MAC addresses. However, in certain attacks, the attacker needs to have a large number of MAC addresses than he could collect by sniffing. Random MAC addresses are generated. However, not every random sequence of six bytes is a MAC address. The IEEE assigns globally the first three bytes, and the manufacturer chooses the last three bytes. The officially assigned numbers are publicly available. The attacker generates a random MAC address by selecting an IEEE-assigned three bytes appended with an additional three random bytes.

4.2 IP spoofing

Replacing the true IP address of the sender (or, in rare cases, the destination) with a different address is known as IP spoofing. This is a necessary operation in many attacks.

The IP layer of the OS simply trusts that the source address, as it appears in an IP packet is valid. It assumes that the packet it received indeed was sent by the host officially assigned that source address. Because the IP layer of the OS normally adds these IP addresses to a data packet, a spoofer must circumvent the IP layer and talk directly to the raw network device. Note that the attacker’s machine cannot simply be assigned the IP address of another host X using ifconfig or a similar configuration tool. Other hosts, as well as X, will discover (through ARP, for example) that there are two machines with the same IP address.

IP spoofing is an integral part of many attacks. For example, an attacker can silence a host A from sending further packets to B by sending a spoofed packet announcing a window size of zero to A as though it originated from B.

4.3 Frame Spoofing

The attacker will inject frames that are valid by 802.11 specifications, but whose content is carefully spoofed as described above.

Frames themselves are not authenticated in 802.11 networks. So when a frame has a spoofed source address, it cannot be detected unless the address is wholly bogus. If the frame to be spoofed is a management or control frame, there is no encryption to deal with. If it is a data frame, perhaps as part of an on-going MITM attack, the data payload must be properly encrypted.

Construction of the byte stream that constitutes a spoofed frame is a programming matter once the attacker has gathered the needed information through sniffing and probing. There are software libraries that ease this task. Examples of such libraries are libpcap (sourceforge.net/projects/libpcap/), libnet (libnet.sourceforge.net/), libdnet (libdnet. sourceforge.net/) and libradiate (www.packetfactory.net/projects/libradiate/ ).

The difficulty here is not in the construction of the contents of the frame, but in getting, it radiated (transmitted) by the station or an AP. This requires control over the firmware and driver of the wireless card that may sanitize certain fields of a frame. Therefore, the attacker selects his equipment carefully. Currently, there are off-the-shelf wireless cards that can be manipulated. In addition, the construction of special purpose wireless cards is within the reach of a resourceful attacker.

5. Wireless Network Probing

Even though the attacker gathers considerable amount of information regarding a wireless network through sniffing, without revealing his wireless presence at all, there are pieces that may still be missing. The attacker then sends artificially constructed packets to a target that trigger useful responses. This activity is known as probing or active scanning.

The target may discover that it is being probed, it might even be a honey pot (www.honeynet.org/) target carefully constructed to trap the attacker. The attacker would try to minimize this risk.

5.1 Detection of SSID

Detection of SSID is often possible by simply sniffing Beacon frames as describe in a previous section.

If Beacon transmission is disabled, and the attacker does not wish to patiently wait for a voluntary Associate Request to appear from a legitimate station that already has a correct SSID, or Probe Requests from legitimate stations, he will resort to probing by injecting a Probe Request frame that contains a spoofed source MAC address. The Probe Response frame from the APs will contain, in the clear, the SSID and other information similar to that in the Beacon frames were they enabled. The attacker sniffs these Probe Responses and extracts the SSIDs.

Some models of APs have an option to disable responding to Probe Requests that do not contain the correct SSID. In this case, the attacker determines a station associated with the AP, and sends the station a forged Disassociation frame where the source MAC address is set to that of the AP. The station will send a Reassociation Request that exposes the SSID.

5.2 Detection of APs and stations

Every AP is a station, so SSIDs, MAC addresses are gathered as described above.

Certain bits in the frames identify that the frame is from an AP. If we assume that WEP is either disabled or cracked, the attacker can also gather the IP addresses of the AP and the stations.

5.3 Detection of Probing

Detection of probing is possible. The frames that an attacker injects can also be heard by the intrusion detection systems (IDS) of hardened wireless LAN. There is GPS-enabled equipment that can identify the physical coordinates of a wireless device through which the probe frames are being transmitted.

6. AP Weaknesses

APs have weaknesses that are both due to design mistakes and user interfaces that promote weak passwords, etc. It has been demonstrated by many publicly conducted war-driving efforts (www.worldwidewardrive.org) in major cities around the world that a large majority of the deployed APs are poorly configured, most with WEP disabled, and configuration defaults, as set up the manufacturer, untouched.

6.1 Configuration

The default WEP keys used are often too trivial. Different APs use different techniques to convert the user’s key board input into a bit vector. Usually 5 or 13 ASCII printable characters are directly mapped by concatenating their ASCII 8-bit codes into a 40-bit or 104-bit WEP key. A stronger key can be constructed from an input of 26 hexadecimal digits. It is possible to form an even stronger104 bit WEP key by truncating the MD5 hash of an arbitrary length pass phrase.

6.2 Defeating MAC Filtering

Typical APs permit access to only those stations with known MAC addresses. This is easily defeated by the attacker who spoofs his frames with a MAC address that is registered with the AP from among the ones that he collected through sniffing. That a MAC address is registered can be detected by observing the frames from the AP to the stations.

6.3 Rogue AP

Access points that are installed without proper authorization and verification that overall security policy is obeyed are called rogue APs. These are installed and used by valid users. Such APs are configured poorly, and attackers will find them.

6.4 Trojan AP

An attacker sets up an AP so that the targeted station receives a stronger signal from it than what it receives from a legitimate AP. If WEP is enabled, the attacker would have already cracked it. A legitimate user selects the Trojan AP because of the stronger signal, authenticates and associates. The Trojan AP is connected to a system that collects the IP traffic for later analyses. It then transmits all the frames to a legitimate AP so that the victim user does not recognize the on-going MITM attack. The attacker can steal the users password, network access, compromise the user’s system to give himself root access. This attack is called the Evil Twin Attack.

It is easy to build a Trojan AP because an AP is a computer system optimized for its intended application. A general purpose PC with a wireless card can be turned into a capable AP. An example of such software is HostAP (http://hostap.epitest.fi/ ). Such a Trojaned AP would be formidable.

6.5 Equipment Flaws

A search on www.securityfocus.com with “access point vulnerabilities” will show that numerous flaws in equipment from well-known manufacturers are known. For example, one such AP crashes when a frame is sent to it that has the spoofed source MAC address of itself. Another AP features an embedded TFTP (Trivial File Transfer Protocol) server. By requesting a file named config.img via TFTP, an attacker receives the binary image of the AP configuration. The image includes the administrator’s password required by the HTTP user interface, the WEP encryption keys, MAC address, and SSID. Yet another AP returns the WEP keys, MAC filter list, administrator’s password when sent a UDP packet to port 27155 containing the string “gstsearch”.

It is not clear how these flaws were discovered. The following is a likely procedure. Most manufacturers design their equipment so that its firmware can be flashed with a new and improved one in the field. The firmware images are downloaded from the manufacturers’ web site. The CPU used in the APs can be easily recognized, and the firmware can be systematically disassembled revealing the flaws at the assembly language level.

Comprehensive lists of such equipment flaws are likely circulating among the attackers.

7. Denial of Service

A denial of service (DoS) occurs when a system is not providing services to authorized clients because of resource exhaustion by unauthorized clients. In wireless networks, DoS attacks are difficult to prevent, difficult to stop an on-going attack and the victim and its clients may not even detect the attacks. The duration of such DoS may range from milliseconds to hours. A DoS attack against an individual station enables session hijacking.

7.1 Jamming the Air Waves

A number of consumer appliances such as microwave ovens, baby monitors, and cordless phones operate on the unregulated 2.4GHz radio frequency. An attacker can unleash large amounts of noise using these devices and jam the airwaves so that the signal to noise drops so low, that the wireless LAN ceases to function. The only solution to this is RF proofing the surrounding environment.

7.2 Flooding with Associations

The AP inserts the data supplied by the station in the Association Request into a table called the association table that the AP maintains in its memory. The IEEE 802.11 specifies a maximum value of 2007 concurrent associations to an AP. The actual size of this table varies among different models of APs. When this table overflows, the AP would refuse further clients.

Having cracked WEP, an attacker authenticates several non-existing stations using legitimate-looking but randomly generated MAC addresses. The attacker then sends a flood of spoofed associate requests so that the association table overflows.

Enabling MAC filtering in the AP will prevent this attack.

7.3 Forged Dissociation

The attacker sends a spoofed Disassociation frame where the source MAC address is set to that of the AP. The station is still authenticated but needs only to reassociate and sends Reassociation Requests to the AP. The AP may send a Reassociation Response accepting the station and the station can then resume sending data. To prevent Reassociation, the attacker continues to send Disassociation frames for a desired period.

7.4 Forged Deauthentication

The attacker monitors all raw frames collecting the source and destination MAC addresses to verify that they are among the targeted victims. When a data or Association Response frame is observed, the attacker sends a spoofed Deauthentication frame where the source MAC address is spoofed to that of the AP. The station is now unassociated and unauthenticated, and needs to reconnect. To prevent a reconnection, the attacker continues to send Deauthentication frames for a desired period. The attacker may even rate limit the Deauthentication frames to avoid overloading an already congested network.

The mischievous packets of Disassociation and Deauthentication are sent directly to the client, so these will not be logged by the AP or IDS, and neither MAC filtering nor WEP protection will prevent it.

7.5 Power Saving

Power conservation is important for typical station laptops, so they frequently enter an 802.11 state called Doze. An attacker can steal packets intended for a station while the station is in the Doze state.

The 802.11 protocol requires a station to inform the AP through a successful frame exchange that it wishes to enter the Doze state from the Active state.

Periodically the station awakens and sends a PS-Poll frame to the AP. The AP will transmit in response the packets that were buffered for the station while it was dozing. This polling frame can be spoofed by an attacker causing the AP to send the collected packets and flush its internal buffers. An attacker can repeat these polling messages so that when the legitimate station periodically awakens and polls, AP will inform that there are no pending packets.

8. Man-in-the-Middle Attacks

Man-in-the-middle (MITM) attack refers to the situation where an attacker on host X inserts X between all communications between hosts B and C, and neither B nor C is aware of the presence of X. All messages sent by B do reach C but via X, and vice versa. The attacker can merely observe the communication or modify it before sending it out. An MITM attack can break connections that are otherwise secure. At the TCP level, SSH and VPN, e.g., are prone to this attack.

8.1 Wireless MITM

Assume that station B was authenticated with C, a legitimate AP. Attacker X is a laptop with two wireless cards. Through one card, he will present X as an AP. Attacker X sends Deauthentication frames to B using the C’s MAC address as the source, and the BSSID he has collected. B gets deauthenticated and begins a scan for an AP and may find X on a channel different from C. There is a race condition between X and C. If B associates with X, the MITM attack succeeded. X will re-transmit the frames it receives from B to C, and the frames it receives from C to B after suitable modifications.

The package of tools called AirJack (http://802.11ninja.net/airjack/) includes a program called monkey_jack that automates the MITM attack. This is programmed well so that the odds of it winning in the race condition mentioned above are improved.

8.2 ARP Poisoning

ARP cache poisoning is an old problem in wired networks. Wired networks have deployed mitigating techniques. But, the ARP poisoning technique is re-enabled in the presence of APs that are connected to a switch/hub along with other wired clients.

ARP is used to determine the MAC address of a device whose IP address is known. The translation is performed with a table look-up. The ARP cache accumulates as the host continues to network. If the ARP cache does not have an entry for an IP address, the outgoing IP packet is queued, and an ARP Request packet that effectively requests “If your IP address matches this target IP address, then please let me know what your Ethernet address is” is broadcast. The host with the target IP is expected to respond with an ARP Reply, which contains the MAC address of the host. Once the table is updated because of receiving this response, all the queued IP packets can now be sent. The entries in the table expire after a set time in order to account for possible hardware address changes for the same IP address. This change may have happened, e.g., due to the NIC being replaced.

Unfortunately, the ARP does not provide for any verification that the responses are from valid hosts or that it is receiving a spurious response as if it has sent an ARP Request. ARP poisoning is an attack technique exploiting this lack of verification. It corrupts the ARP cache that the OS maintains with wrong MAC addresses for some IP addresses. An attacker accomplishes this by sending an ARP Reply packet that is deliberately constructed with a “wrong” MAC address. The ARP is a stateless protocol. Thus, a machine receiving an ARP Reply cannot determine if the response is due to a request it sent or not.

ARP poisoning is one of the techniques that enables the man-in-the-middle attack. An attacker on machine X inserts himself between two hosts B and C by (i) poisoning B so that C’s IP address is associated with X’s MAC address, (ii) poisoning C so that B’s address is associated with X’s MAC address, and (iii) relaying the packets X receives.

The ARP poison attack is applicable to all hosts in a subnet. Most APs act as transparent MAC layer bridges, and so all stations associated with it are vulnerable. If an access point is connected directly to a hub or a switch without an intervening router/firewall, then all hosts connected to that hub or switch are susceptible also. Note that recent devices aimed at the home consumer market combine a network switch with may be four or five ports, an AP, a router and a DSL/cable modem connecting to the Internet at large. Internally, the AP is connected to the switch. As a result, an attacker on a wireless station can become a MITM between two wired hosts, one wired one wireless, or both wireless hosts.

The tool called Ettercap ((http://ettercap.sourceforge.net) is capable of performing ARP poisoning.

8.3 Session Hijacking

Session hijacking occurs in the context of a “user”, whether human or computer. The user has an on-going connection with a server. Hijacking is said to occur when an attacker causes the user to lose his connection, and the attacker assumes his identity and privileges for a period.

An attacker disables temporarily the user’s system, say by a DoS attack or a buffer overflow exploit. The attacker then takes the identity of the user. The attacker now has all the access that the user has. When he is done, he stops the DoS attack, and lets the user resume. The user may not detect the interruption if the disruption lasts no more than a couple of seconds. Such hijacking can be achieved by using forged Disassociation DoS attack.

Corporate wireless networks are often set up so that the user is directed to an authentication server when his station attempts a connection with an AP. After the authentication, the attacker employs the session hijacking described above using spoofed MAC addresses.

9. War Driving

Equipped with wireless devices and related tools, and driving around in a vehicle or parking at interesting places with a goal of discovering easy-to-get-into wireless networks is known as war driving. War-drivers (http://www.wardrive.net/) define war driving as “The benign act of locating and logging wireless access points while in motion.” This benign act is of course useful to the attackers.

9.1 War chalking

War chalking is the practice of marking sidewalks and walls with special symbols to indicate that wireless access is nearby so that others do not need to go through the trouble of the same discovery. A search on www.google.com with key words “war driving maps” will produce a large number of hits. Yahoo! Maps can show "Wi-fi Hotspots" near an address you give.

Figure 3: War Chalking Symbols

9.2 Typical Equipment

The typical war driving equipment consists of a laptop computer system or a PDA with a wireless card, a GPS, and a high-gain antenna. Typical choice of an operating system is Linux or FreeBSD where open source sniffers (e.g., Kismet) and WEP crackers (e.g., AirSnort) are available. Similar tools (e.g., NetStumbler) that run on Windows are available.

War drivers need to be within the range of an AP or station located on the target network. The range depends on the transmit output power of the AP and the card, and the gain of the antenna. Ordinary access point antennae transmit their signals in all directions. Often, these signals reach beyond the physical boundaries of the intended work area, perhaps to adjacent buildings, floors, and parking lots. With the typical 30mW wireless cards intended for laptops, the range is about 300 feet, but there are in 2004 wireless cards for laptops on the market that have 200mW. Directional high-gain antennae and an RF-amplifier can dramatically extend the range.

Figure 4: War Drivers' Equipment

10. Wireless Security Best Practices

This section describes best practices in mitigating the problems described above.

10.1 Location of the APs

APs should be topologically located outside the perimeter firewalls. The wireless network segments should be treated with the same suspicion as that for the public Internet. Additionally, it is important to use directional antennae and physically locate them in such a way that the radio-coverage volume is within the control of the corporation or home.

10.2 Proper Configuration

Statistics collected by www.worldwidewardrive.org show a distressingly large percentage of APs left configured with the defaults.

Before a wireless device is connected to the rest of the existing network, proper configuration of the wireless device is necessary. The APs come with a default SSID, such as “Default SSID”, “WLAN”, “Wireless”, “Compaq”, “intel”, and “linksys”. The default passwords for the administrator accounts that configure the AP via a web browser or SNMP are well known for all manufacturers. A proper configuration should change these to difficult to predict values.

Note that the SSID serves as a simple handle, not as a password, for a wireless network. Unless the default SSID on the AP and stations is changed, SSID broadcasts are disabled, MAC address filtering is enabled, WEP enabled, an attacker can use the wireless LAN resources without even sniffing.

The configuration via web browsing (HTTP) is provided by a simplistic web server built into an AP. Often this configuration interface is provided via both wired connections and wireless connections. The web server embedded in a typical AP does not contain secure HTTP, so the password that the administrator submits to the AP can be sniffed. Web based configuration via wireless connections should be disabled.

WEP is disabled in some organization because the throughput is then higher. Enabling WEP encryption makes it necessary for the attacker intending to WEP-crack to have to sniff a large number of frames. The higher the number of bits in the encryption the larger the number of frames that must be collected is. The physical presence in the radio range of the equipment for long periods increases the odds of his equipment being detected. WEP should be enabled.

The IEEE 802.11 does not describe an automated way of distributing the shared-secret keys. In large installations, the manual distribution of keys every time they are changed is expensive. Nevertheless, the WEP encryption keys should be changed periodically.

10.3 Secure Protocols

If the WEP is disabled, or after the WEP is cracked, the attacker can capture all TCP/IP packets by radio-silent sniffing for later analyses. All the wired network attacks are possible. There are real-time tools that analyze and interpret the TCP/IP data as they arrive.

All protocols that send passwords and data in the clear must be avoided. This includes the rlogin family, telnet, and POP3. Instead one should use SSH and VPN.

In general, when a wireless segment is involved, one should use end-to-end encryption at the application level in addition to enabling WEP.

10.4 Wireless IDS

A wireless intrusion detection system (WIDS) is often a self-contained computer system with specialized hardware and software to detect anomalous behavior. The underlying software techniques are the same hacking techniques described above. The special wireless hardware is more capable than the commodity wireless card, including the RF monitor mode, detection of interference, and keeping track of signal-to-noise ratios. It also includes GPS equipment so that rogue clients and APs can be located. A WIDS includes one or more listening devices that collect MAC addresses, SSIDs, features enabled on the stations, transmit speeds, current channel, encryption status, beacon interval, etc. Its computing engine will be powerful enough that it can dissect frames and WEP-decrypt into IP and TCP components. These can be fed into TCP/IP related intrusion detection systems.

Unknown MAC addresses are detected by maintaining a registry of MAC addresses of known stations and APs. Frequently, a WIDS can detect spoofed known MAC addresses because the attacker could not control the firmware of the wireless card to insert the appropriate sequence numbers into the frame.

10.5 Wireless Auditing

Periodically, every wireless network should be audited. Several audit firms provide this service for a fee. A security audit begins with a well-established security policy. A policy for wireless networks should include a description of the geographical volume of coverage. The main goal of an audit is to verify that there are no violations of the policy. To this end, the typical auditor employs the tools and techniques of an attacker.

10.6 Newer Standards and Protocols

Many improvements in wireless network technology are proposed through proprietary channels (e.g., Cisco Lightweight Extensible Authentication Protocol) as well as through the IEEE. The new IEEE 802.11i (ratified in June 2004) enhances the current 802.11 standard to provide improvements in security. These include Port Based Access Control for authentication, Temporal Key Integrity Protocol for dynamic changing of encryption keys, and Wireless Robust Authentication protocol. An interim solution proposed by vendors is the Wi-Fi Protected Access (WPA), a subset of 802.11i, is only now becoming available in some products. Time will tell if these can withstand future attacks.

10.7 Software Tools

Below we describe a collection of cost-free tools that can be used both as attack tools and as audit tools.

· AirJack (http://802.11ninja.net/airjack/) is a collection of wireless card drivers and related programs. It includes a program called monkey_jack that automates the MITM attack. Wlan_jack is a DoS tool that accepts a target source and BSSID to send continuous deauthenticate frames to a single client or an entire network (broadcast address). Essid_jack sends a disassociate frame to a target client in order to force the client to reassociate with the network, thereby giving up the network SSID.

  • AirSnort (www.airsnort.shmoo.com ) can break WEP by passively monitoring transmissions and computing the encryption key when enough packets have been gathered.
  • Ethereal (www.ethereal.com ) is a LAN analyzer, including wireless. One can interactively browse the capture data, viewing summary and detail information for all observed wireless traffic.
  • FakeAP (ww.blackalchemy.to/project/fakeap) can generate thousands of counterfeit 802.11b access points.
  • HostAP (www.hostap.epitest.fi) converts a station that is based on Intersil's Prism2/2.5/3 chipset to function as an access point.
  • Kismet (www.kismetwireless.net) is a wireless sniffer and monitor. It passively monitors wireless traffic and dissects frames to identify SSIDs, MAC addresses, channels and connection speeds.
  • Netstumbler (www.netstumbler.com) is a wireless access point identifier running on Windows. It listens for SSIDs and sends beacons as probes searching for access points.
  • Prismstumbler (prismstumbler.sourceforge.net/) can find wireless networks. It constantly switches channels and monitors frames received.
  • The Hacker’s Choice organization (www.thc.org) has LEAP Cracker Tool suite that contains tools to break Cisco LEAP. It also has tools for spoofing authentication challenge-packets from an AP. The WarDrive is a tool for mapping a city for wireless networks with a GPS device.
  • StumbVerter (www.sonar-security.com/sv.html) is a tool that reads NetStumbler's collected data files and presents street maps showing the logged WAPs as icons, whose color and shape indicating WEP mode and signal strength.
  • Wellenreiter (http://www.wellenreiter.net/) is a WLAN discovery tool. It uses brute force to identify low traffic access points while hiding the real MAC address of the card it uses. It is integrated with GPS.
  • WEPcrack (www.wepcrack.sourceforge.net) cracks 802.11 WEP encryption keys using weaknesses of RC4 key scheduling.

11. Conclusion

This article is an introduction to the techniques an attacker would use on wireless networks. Regardless of the protocols, wireless networks will remain potentially insecure because an attacker can listen in without gaining physical access. In addition, the protocol designs were security-naïve. We have pointed out several existing tools that implement attack techniques that exploit the weaknesses in the protocol designs. The integration of wireless networks into existing networks also has been carelessly done. We pointed out several best practices that can mitigate the insecurities.

GLOSSARY

AP: Access Point. Any entity that has station functionality and provides access to the distribution services, via the wireless medium for associated stations.

Association Table: The Association table is within an AP and controls the routing of all packets between the Access Point and the wireless devices in a WLAN.

Basic Service Set: BSS is a collection, or set, of stations that are logically associated with each other and controlled by a single AP. Together, they operate as a fully connected wireless network.

Basic Service Set Identifier (BSSID): A 48-bit identifier used by all stations in a Basic Service Set as part of the frame header.

Beacon: A wireless LAN frame broadcast by access points that signals their availability.

Evil Twin Attack. An unauthorized AP whose goal is to masquerade as an existing legitimate/ authorized AP is called an Evil Twin. The evil twin AP is designed and located so that client stations receive stronger signals from it. Legitimate users are lured into the evil twin, and unknowingly give away user IDs and passwords.

Independent BSS: An IBSS is usually an ad-hoc network. In an IBSS, all of the stations are responsible for sending beacons.

IDS: Intrusion detection system.

MITM: Man in the middle. See Section 8.

Service Set Identifier (SSID): All APs and stations within the same wireless network use an identifier that is up to 32-bytes long.

Social Engineering: Social engineering is a term, coined in jest that refers to all non-technical methods of collecting information about a person so that the passwords the person may use can be predicted. The methods of collection range from dumpster diving, analyzing the publicly available information to making phone calls impersonating others.

STA: A wireless station.

WEP: Wired Equivalent Privacy (WEP) is a shared-secret key encryption system used to encrypt packets transmitted between a station and an AP.

Cross References

The following is a list of other articles in the handbook related to wireless networks. Article numbers are as in the Handbook TOC.

26. Radio Frequency and Wireless Communications Security
27. Propagation Characteristics of Wireless Channels
43. Wireless Local Area Networks
44. Security Issues in Wireless Sensor Networks
46. Mobile IP (Internet Protocol)
48. TCP (Transmission Control Protocol) over Wireless Links
50. Wireless Internet
56. PKI (Public Key Infrastructure)
67. Wireless Application Protocol (WAP)
68. Wireless Networks Standards and Protocol (802.11)
74. Wireless Information Warfare
142. Hacking Techniques in Wireless Networks (mine)
150. Wireless Threats and Attacks
151. WEP (Wired Equivalent Privacy) Security
152. Wireless Security
153. Cracking WEP (Wired Equivalent Privacy)

References

  1. John Bellardo and Stefan Savage, “802.11 Denial-of-Service Attacks: Real Vulnerabilities and Practical Solutions”, 2003, Usenix 2003 Proceedings. http://www.cs.ucsd.edu/users/savage/papers/UsenixSec03.pdf Retrieved Jan 20, 2004.
  2. Jon Edney and William A. Arbaugh, Real 802.11 Security: Wi-Fi Protected Access and 802.11i, 480 pages, Addison Wesley, 2003, ISBN: 0-321-13620-9
  3. Jamil Farshchi, Wireless Intrusion Detection Systems, November 5, 2003, http://www.securityfocus.com/infocus/1742 Retrieved Jan 20, 2004
  4. Bob Fleck and Jordan Dimov, "Wireless Access Points and ARP Poisoning: Wireless vulnerabilities that expose the wired network," October 2001. http://www.cigitallabs.com/resources/papers/download/arppoison.pdf. Retrieved on Jan 20, 2004.
  5. Rob Flickenger, Wireless Hacks: 100 Industrial-Strength Tips & Tools, 286 pages, O'Reilly & Associates, September 2003, ISBN: 0-596-00559-8
  6. Matthew S. Gast, 802.11 Wireless Networks: The Definitive Guide, 464 pages, O’Reilly & Associates, April 2002, ISBN: 0596001835.
  7. Vikram Gupta, Srikanth Krishnamurthy, and Michalis Faloutsos, “Denial of Service Attacks at the MAC Layer in Wireless Ad Hoc Networks”, Proceedings of 2002 MILCOM Conference, Anaheim, CA, October 2002.
  8. Chris Hurley, Michael Puchol, Russ Rogers, and Frank Thornton, WarDriving: Drive, Detect, Defend, A Guide to Wireless Security, ISBN: 1931836035, Syngress, 2004.
  9. IEEE, IEEE 802.11 standards documents, http://standards.ieee.org/wireless/ . Retrieved Jan 20, 2004
  10. Tom Karygiannis and Les Owens, Wireless Network Security: 802.11, Bluetooth and Handheld Devices, National Institute of Standards and Technology Special Publication 800-48, November 2002. http://cs-www.ncsl.nist.gov/publications/ nistpubs/800-48/NIST_SP_800-48.pdf . Retrieved Jan 20, 2004
  11. Prabhaker Mateti, TCP/IP Suite, The Internet Encyclopedia, Hossein Bidgoli (Editor), John Wiley 2003, ISBN 0471222011.
  12. Robert Moskowitz, “Debunking the Myth of SSID Hiding”, Retrieved on March 10, 2004. http://www.icsalabs.com/html/communities/WLAN/wp_ssid_hiding. pdf.
  13. Bruce Potter and Bob Fleck, 802.11 Security, O'Reilly & Associates, 2002; ISBN: 0-596-00290-4.
  14. William Stallings, Wireless Communications & Networks, Prentice Hall, 2001, ISBN: 0130408646.
  15. War-chalking, http://www.warchalking.org/. Retrieved Jan 20, 2004.
  16. Joshua Wright, “Detecting Wireless LAN MAC Address Spoofing”, Retrieved on Jan 20, 2004. http://home.jwu.edu/jwright/

Further Reading

Stallings’ book is a broad introduction to wireless communications including electrical signal theory, TCP/IP suite, IEEE 802.11 and Bluetooth. Gast’s book is devoted to 802.11. The report by Karygiannis and Les Owens is a gentle introduction to wireless security. Potter and Fleck's book is about network security in general in spite of its title, and covers several Unix-like OS. The book by Edney and Arbaugh is an advanced technical book aimed at wireless networking professionals and covers 802.11i and WPA.

The website 802.11-security.com/ is a rich collection of links. The site at en.wikipedia. org/wiki/IEEE_802.11 shows promise that it will become a living free encyclopedia on wireless networks.

The research paper by Bellardo and Savage provides an experimental analysis of denial of service attacks at the wireless MAC level. This paper also describes a method of transmitting arbitrary frames even while the wireless card firmware attempts to sanitize the frame content.

Section 8.3 is based on the white paper by Fleck and Dimov.

The article by Farshchi is a non-technical overview of the capabilities of wireless intrusion detection systems.

The book by Hurley et al. is all about war driving.

Thanks to:

http://www.cs.wright.edu/~pmateti/InternetSecurity/Lectures/WirelessHacks/Mateti-WirelessHacks.htm


802.11 Frames





Current 802.11 standards define "frame" types for use in transmission of data as well as management and control of wireless links.

Frames are divided into very specific and standardized sections. Each frame has a MAC header, payload and FCS. Some frames may not have payload portion. First 2 bytes of MAC header is a frame control field that provides detailed information about the frame. The sub fields of the frame control field is presented in order.

* Protocol Version: It is two bits in size and represents the protocol version. Currently used protocol version is zero. Other values are reserved for future use.

* Type: It is two bits in size and helps to identify the type of WLAN frame. Control, Data and Management are various frame types defined in IEEE 802.11.
* Sub Type: It is four bits in size. Type and Sub type are combined together to identify the exact frame.

* ToDS and FromDS: Each is one bit in size. They indicate whether a data frame is headed for a distributed system. Control and management frames set these values to zero. All the data frames will have one of these bits set. However communication within an IBSS network always set these bits to zero.

* More Fragment: The More Fragmentation bit is set most notably when higher level packets have been partitioned and will be set for all non-final sections. Some management frames may require partitioning as well.

* Retry: Sometimes frames require retransmission, and for this there is a Retry bit which is set to one when a frame is resent. This aids in the elimination of duplicate frames.

* Power Management: The Power Management bit indicates the power management state of the sender after the completion of a frame exchange. Access points are required to manage the connection and will never set the power saver bit.

* More Data: The More Data bit is used to buffer frames received in a distributed system. The access point uses this bit to facilitate stations in power saver mode. It indicates that at least one frame is available and addresses all stations connected.

* WEP: The WEP bit is modified after processing a frame. It is toggled to one after a frame has been decrypted or if no encryption is set it will have already been one.

* Order: This bit is only set when the "strict ordering" delivery method is employed. Frames and fragments are not always sent in order as it causes a transmission performance penalty.

The next two bytes are reserved for the Duration ID field. This field can take one of three forms: Duration, Contention-Free Period (CFP), and Association ID (AID).

An 802.11 frame can have up to four address fields. Each field can carry a MAC address. Address 1 is the receiver, Address 2 is the transmitter, Address 3 is used for filtering purposes by the receiver.

* The Sequence Control field is a two-byte section used for identifying message order as well as eliminating duplicate frames. The first 4 bits are used for the fragmentation number and the last 12 bits are the sequence number.
* An optional two-byte Quality of Service control field which was added with 802.11e.
* The Frame Body field is variable in size, from 0 to 2304 bytes plus any overhead from security encapsulation and contains information from higher layers.
* The Frame Check Sequence (FCS) is the last four bytes in the standard 802.11 frame. Often referred to as the Cyclic Redundancy Check (CRC), it allows for integrity check of retrieved frames. As frames are about to be sent the FCS is calculated and appended. When a station receives a frame it can calculate the FCS of the frame and compare it to the one received. If they match, it is assumed that the frame was not distorted during transmission.[18]

Management Frames allow for the maintenance of communication. Some common 802.11 subtypes include:

* Authentication frame: 802.11 authentication begins with the WNIC sending an authentication frame to the access point containing its identity. With an open system authentication the WNIC only sends a single authentication frame and the access point responds with an authentication frame of its own indicating acceptance or rejection. With shared key authentication, after the WNIC sends its initial authentication request it will receive an authentication frame from the access point containing challenge text. The WNIC sends an authentication frame containing the encrypted version of the challenge text to the access point. The access point ensures the text was encrypted with the correct key by decrypting it with its own key. The result of this process determines the WNIC's authentication status.
* Association request frame: sent from a station it enables the access point to allocate resources and synchronize. The frame carries information about the WNIC including supported data rates and the SSID of the network the station wishes to associate with. If the request is accepted, the access point reserves memory and establishes an association ID for the WNIC.
* Association response frame: sent from an access point to a station containing the acceptance or rejection to an association request. If it is an acceptance, the frame will contain information such an association ID and supported data rates.
* Beacon frame: Sent periodically from an access point to announce its presence and provide the SSID, and other parameters for WNICs within range.
* Deauthentication frame: Sent from a station wishing to terminate connection from another station.
* Disassociation frame: Sent from a station wishing to terminate connection. It's an elegant way to allow the access point to relinquish memory allocation and remove the WNIC from the association table.
* Probe request frame: Sent from a station when it requires information from another station.
* Probe response frame: Sent from an access point containing capability information, supported data rates, etc., after receiving a probe request frame.
* Reassociation request frame: A WNIC sends a reassociation request when it drops from range of the currently associated access point and finds another access point with a stronger signal. The new access point coordinates the forwarding of any information that may still be contained in the buffer of the previous access point.
* Reassociation response frame: Sent from an access point containing the acceptance or rejection to a WNIC reassociation request frame. The frame includes information required for association such as the association ID and supported data rates.

Control frames facilitate in the exchange of data frames between stations. Some common 802.11 control frames include:

* Acknowledgement (ACK) frame: After receiving a data frame, the receiving station will send an ACK frame to the sending station if no errors are found. If the sending station doesn't receive an ACK frame within a predetermined period of time, the sending station will resend the frame.
* Request to Send (RTS) frame: The RTS and CTS frames provide an optional collision reduction scheme for access point with hidden stations. A station sends a RTS frame to as the first step in a two-way handshake required before sending data frames.
* Clear to Send (CTS) frame: A station responds to an RTS frame with a CTS frame. It provides clearance for the requesting station to send a data frame. The CTS provides collision control management by including a time value for which all other stations are to hold off transmission while the requesting stations transmits.

----------------------

Management Frames

Management frames establish communications between stations and access points. They support Power Management and Contention Free modes. MAC management frames are also called MAC Management Protocol Data Units (MMPDUs). Management frames provide such services as authentication, association, and reassociation. Management frame bodies are never relayed through an access point. Instead they are “sourced” (generated) and sunk (read and disposed of) at the MAC layer, and therefore are never passed to the distribution system service or LLC. The Address 4 field is never used in an MMPDU. Unicast MMPDUs may be acknowledged, retransmitted, and fragmented[1]. Figure 6.1 depicts the common format of all management frames.

Click To expand Figure 6.1: MMPDU Frame Structure

Association Request Frame

A station will send an Association Request frame to an access point if it wants to associate with that access point. This frame exchange sequence ends successfully with an acknowledgement. A station becomes associated with an access point after the access point responds with an acceptance.

Click To expand Figure 6.2: Association Request Frame Body Contents

Association Response Frame

After an access point receives an Association Request frame and acknowledges it, the access point will send an Association Response frame to indicate whether or not it is accepting the association with the requesting station. This second frame exchange sequence ends successfully with an acknowledgment. The Association Response frame provides the status (acceptance or rejection) and an AID (if the association was accepted).

Click To expand Figure 6.3: Association Response Frame Body Contents

Reassociation Request Frame

A station will send a Reassociation Request frame to an access point if it already associated to the ESS and wants to reassociate to the ESS through another access point. This frame exchange sequence is ended successfully with an acknowledgment. A reassociation may occur if a station moves out of range from one access point and within range of another access point. The station will need to reassociate (not merely associate) with the new access point so that the new access point knows that it will need to negotiate the forwarding of data frames from the old access point and update its association table. Notice in Figure 6.4 that the Current AP Address (old AP address) fixed field is part of the Reassociation Frame.

Click To expand Figure 6.4: Reassociation Request Frame Body Contents

Reassociation Response Frame

After an access point receives a Reassociation Request frame, the access point will send a Reassociation Response frame to indicate whether or not it is accepting the reassociation with the sending station. This frame exchange sequence is ended successfully with an acknowledgment. Reassociation is dependent on authentication with/through the new access point. If the reassociation is successful, the new access point will indicate this status in the status code element and include a unique AID for this station to use if operating in Power Save Poll mode.

Click To expand Figure 6.5: Reassociation Response Frame Body Contents

Probe Request Frame

A station sends a Probe Request frame to obtain information from another station or access point. For example, a station may send a Probe Request frame to determine whether a certain access point is available. Mobile stations use Probe Request frames as part of the active scanning process.

Click To expand Figure 6.6: Probe Request Frame Body Contents

Probe Response Frame

If a station or access point receives a Probe Request frame, the station will respond to the requesting station with a Probe Response frame containing specific parameters about itself. All access points and the station which last generated the beacon frame (if operating as an IBSS) can respond to probe requests with Probe Response frames.

Click To expand Figure 6.7: Probe Response Frame Body Contents

Beacon Frame

An access point (or mobile station in an Ad Hoc network) periodically sends a beacon frame at a rate based on the aBeaconPeriod parameter in the MIB. The beacon provides synchronization among stations of a BSS, and includes a timestamp that all stations within its BSS use to update what 802.11 defines as a timing synchronization function (TSF) timer. The TSF is basically a station’s internal 802.11 clock. The Probe Response frame and beacon frame are identical, except that the beacon also carries the traffic indication map (TIM) information element.

If the access point supports the Point Coordination Function, then it uses a beacon frame to announce the beginning of a contention-free period. If the network is an independent BSS (that is, it has no access points), all stations periodically send beacons for synchronization purposes.

Click To expand Figure 6.8: Beacon Frame Body Contents

ATIM Frame

In an IBSS a station with frames buffered for other stations sends an Announcement Traffic Indication Message (ATIM) frame to each of these stations during the ATIM window, which immediately follows a beacon transmission in Ad Hoc mode. The station that sent the ATIM then transmits the buffered frames to the applicable recipients during a data window. The transmission of the ATIM frame alerts stations in powersave mode to stay awake long enough to solicit and receive their respective frames. The ATIM frame body is null.

Disassociation Frame

If a station or access point wants to terminate an association, it will send a Disassociation frame to the other station that is part of the association. A single Disassociation frame sent to the broadcast address by an access point can terminate associations with more than one station at a time.

Click To expand Figure 6.9: Disassociation Frame Body

Authentication Frame

A station sends an Authentication frame to an access point that it wants to authenticate with. The authentication process consists of the transmission of two or four authentication frames, depending on the type of authentication being implemented, Open System or Shared Key respectively. If Shared Key, the third authentication frame of the four is WEP encrypted. Each authentication frame requires an acknowledgment.

Click To expand Figure 6.10: Authentication Frame Body

Deauthentication Frame

A station sends a Deauthentication frame to a station or access point with which it wants to terminate communications.

Click To expand Figure 6.11: Deauthentication Frame Structure

Management Frame Summary

The chart below provides a quick reference to the contents and sizes (in octets) of each management frame type per the 802.11 series of standards).

Click To expand Figure 6.12: Management Frame Quick Reference Chart


Thanks to :
http://www.sss-mag.com/pdf/802_11tut.pdf
http://en.wikipedia.org/wiki/IEEE_802.11
http://www.wireless-net.org/McGraw.Hill-CWAP.Certified.Wir/8156final/LiB0061.html

Friday, October 22, 2010

shell script for enabling sniffer mode in wire shark

shell script for enabling sniffer mode in wire shark
--------------------------------------------
#! /bin/sh
sudo ifconfig wlan8 down
sudo iwconfig wlan8 mode monitor
echo "Enter Ch no. "
read ch_no
sudo iwconfig wlan8 ch $ch_no
#echo $ch_no
sudo ifconfig wlan8 up
sudo wireshark
----------------------------------------------

Tuesday, October 12, 2010

For personal customization of .emacs file

Missing .emacs file
Missing emacs init file

you can't find your .emacs file anywhere in your system. You've already looked in you home directory and it's nowhere to be found. Could somebody help me out?

So the solution is here.

There are two main versions of emacs - emacs and Xemacs and I don't think that either of them creates a .emacs file automatically - you have to create your own.

So what do you put in your .emacs? There are lots of examples of .emacs's that you can google for on the net, but here's one to start you off...
http://www.dotemacs.de/dotfiles/sample.emacs.html
...just save it to .emacs in your home directory.

If you have Xemacs installed, they don't use a file called .emacs but create a directory called .xemacs. Inside that directory you create a file called custom.el and that functions as your .emacs.

location of .emacs file :
/home/yourname/.emacs

eg: /home/siva/.emacs

Then add according to your need of your choice in emacs and save the file

sample .emacs file
;--------------------------

;displays the time in the status bar
(display-time)

;show paren, brace, and curly brace "partners" at all times
(show-paren-mode t)

;displays the battery power of laptop
(display-battery-mode)

;menu bar mode disable
(menu-bar-mode)

;status bar
(set-face-foreground 'modeline "blue")

;status bar
(set-face-background 'modeline "white")

;-------------------

Monday, October 11, 2010

ADB shell

What is ADB

ADB (Android Debug Bridge) is a tool that comes with the Android SDK that allows you to control and interface with your Android device. It is located in the tools folder when you unpack the SDK.

Source: ADB
Commands

Adb has many built in commands. Some are interactive (meaning they keep running until you stop them) and some just perform a simple task. Below is a list of the commands in the 1.0 SDK version of adb.

Android Debug Bridge version 1.0.20

-d - directs command to the only connected USB device
returns an error if more than one USB device is present.
-e - directs command to the only running emulator.
returns an error if more than one emulator is running.
-s - directs command to the USB device or emulator with
the given serial number
-p - simple product name like 'sooner', or
a relative/absolute path to a product
out directory like 'out/target/product/sooner'.
If -p is not specified, the ANDROID_PRODUCT_OUT
environment variable is used, which must
be an absolute path.
devices - list all connected devices

device commands:
adb push - copy file/dir to device
adb pull - copy file/dir from device
adb sync [ ] - copy host->device only if changed
(see 'adb help all')
adb shell - run remote shell interactively
adb shell - run remote shell command
adb emu - run emulator console command
adb logcat [ ] - View device log
adb forward - forward socket connections
forward specs are one of:
tcp:
localabstract:
localreserved:
localfilesystem:
dev:
jdwp: (remote only)
adb jdwp - list PIDs of processes hosting a JDWP transport
adb install [-l] [-r] - push this package file to the device and install it
('-l' means forward-lock the app)
('-r' means reinstall the app, keeping its data)
adb uninstall [-k] - remove this app package from the device
('-k' means keep the data and cache directories)
adb bugreport - return all information from the device
that should be included in a bug report.

adb help - show this help message
adb version - show version num

DATAOPTS:
(no option) - don't touch the data partition
-w - wipe the data partition
-d - flash the data partition

scripting:
adb wait-for-device - block until device is online
adb start-server - ensure that there is a server running
adb kill-server - kill the server if it is running
adb get-state - prints: offline | bootloader | device
adb get-product - prints:
adb get-serialno - prints:
adb status-window - continuously print device status for a specified device
adb remount - remounts the /system partition on the device read-write

networking:
adb ppp [parameters] - Run PPP over USB.
Note: you should not automatically start a PDP connection.
refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1
[parameters] - Eg. defaultroute debug dump local notty usepeerdns

adb sync notes: adb sync [ ]
can be interpreted in several ways:

- If is not specified, both /system and /data partitions will be updated.

- If it is "system" or "data", only the corresponding partition
is updated.

Common Use

Some of the more common commands in adb are push, pull, shell, install, remount, and logcat.

Push sends a file from your desktop computer to your Android device:

adb push test.txt /sdcard/test.txt

Pull pulls a file from your Android device to your desktop computer:

adb pull /sdcard/test.txt test.txt

Shell lets you run an interactive shell (command prompt) on the Android device:

adb shell

Install lets you install an android APK file to your Android device:

adb install myapp.apk

Remount remounts the /system partition as writable (or readonly if it is already writeable):

adb remount

Logcat lets you view the devices debug logs in real time (must press control+c to exit):

adb logcat


----------------

Through ADB

Pull apps off phone onto computer
Code:

adb pull /system/sd/app app
adb pull /system/sd/app-private app-private

Push apps back to phone from the computer
Code:

adb push app /system/sd/app
adb push app-private /system/sd/app-private

Delete existing apps on SD
Code:

adb shell rm -r /system/sd/app
adb shell rm -r /system/sd/app-private


Through Terminal

Partition SD card - This erases everything on your SD card (*size* being the size of the FAT32 partition)
Code:

$ su
# cd /data
# wget http://64.105.21.209/bin/lib/droid/sdsplit
# chmod 555 sdsplit
# /data/sdsplit -fs *size* (add -nc to the end for JFv1.5ADP)


From the Recovery Screen

Sending an update file to your SD card:
Code:

adb shell mount /sdcard
adb shell rm /sdcard/update.zip
adb push *filename* /sdcard/update.zip


From Fastboot

Restoring a nandroid backup - Start command-prompt/terminal cd to the nandroid folder and enter following commands
Code:

fastboot erase boot
fastboot erase recovery
fastboot flash system system.img
fastboot flash boot boot.img
fastboot flash userdata data.img
fastboot flash recovery recovery.img
fastboot reboot

------------

Basic Android Terminal and ADB Shell Command List

1. How to open a cmd in Android Phone
Method 1: “Start” – “”Program”-” “Accessories” – “” Command Prompt ”
Method 2: “Start” – “” Run “, type cmd ENTER

2. How to restart Android Phone
When the phone and Computer is connected to the data cable, you can enter the following command
view source
print?
1 adb shell reboot === ENTER

3. Restart Android into Recovery Mode
With the data cable connected to your phone and computer, enter the following command
view source
print?
1 adb shell reboot recovery === ENTER

4. Convert back to ext2 partition
Restart the phone into Recovery mode, press “Alt + X” into the console. Open cmd and enter the following command
view source
print?
1 adb shell === ENTER
2 tune2fs-O ^ has_journal / dev/block/mmcblk0p2 === carriage return
3 e2fsck / dev/block/mmcblk0p2 === carriage return (optional, can be a problem area in section 2, when used)

5. Pulling applications from Android phone to computer
view source
print?
1 adb pull /system/sd/app app
2 adb pull /system/sd/app-private app-private

6. Pushing applications back to android phone from the computer
view source
print?
1 adb push app /system/sd/app
2 adb push app-private /system/sd/app-private

7. Delete existing apps on Android SD
view source
print?
1 adb shell rm -r /system/sd/app
2 adb shell rm -r /system/sd/app-private

8. Repair gravity System or switch to screen
Sometimes frequent brushing of phone can cause gravity system or switch to screen failure. Just follow the steps below-
Restart the phone into Recovery mode, press “Alt + X” into the console
Open cmd and enter the following command
view source
print?
1 mount / data === carriage return
2 rm / data / misc / akmd * / data / misc / rild * === ENTER

9. Ext2/ext3/ext4 formatted partition
Enter the following command in the cmd
view source
print?
1 adb remount === ENTER
2 adb shell === ENTER
3 rm-r / system / sd / * === carriage return

10. Remove/ system / app under the application
Under normal circumstances / system / app is not under an application. Use the following methods to remove these applications.
Open cmd and enter the following command
view source
print?
1 adb remount === ENTER
2 adb rm / system / app / Stocks.apk === Enter

11. If the start Time is too Long
Just enter the following command in order to view the boot process.
view source
print?
1 adb logcat === ENTER

12. Through Terminal Partition SD card
It will erase everything on your SD card
view source
print?
1 $ su
2 # cd /data
3 # wget http://64.105.21.209/bin/lib/droid/sdsplit
4 # chmod 555 sdsplit
5 # /data/sdsplit -fs *size* (add -nc to the end for JFv1.5ADP)

13. From the Recovery Screen, send an update file to your SD card.
view source
print?
1 adb shell mount /sdcard
2 adb shell rm /sdcard/update.zip
3 adb push *filename* /sdcard/update.zip

14. Restoring a nandroid backup via Fastboot
Start command-prompt/terminal cd to the nandroid folder and enter following commands
view source
print?
1 fastboot erase boot
2 fastboot erase recovery
3 fastboot flash system system.img
4 fastboot flash boot boot.img
5 fastboot flash userdata data.img
6 fastboot flash recovery recovery.img
7 fastboot reboot

15. Clear Search History in Android

Search History is accounted for Mobile Memory. It can also leak your privacy information as well. Just follow the steps below to clear android history.

Steps are as follows:

1. Make sure your mobile phone has Root authority.
2. Open the super-terminal.
3. Enter the following command
view source
print?
1 su
2 rm / data / data / com.android.vending / databases / suggestions.db

4. Exit Hyper Terminal and restart the phone.


Thanks to :
http://forum.xda-developers.com/showthread.php?t=517874
http://www.gadgetsdna.com/android-terminal-adb-shell-command-list/1168/
http://android-dls.com/wiki/index.php?title=ADB

Monday, September 27, 2010

Get familiar with the VIM editor

Get familiar with the VIM editor

This text will provide you information about the Linux / Unix vi text editor and it's options.


SYNTAX

vi [ -| -s ] [-l] [-L] [-R] [ -r [ filename ] ] [-S] [-t tag] [-v] [-V] [-x] [-w] [-n ] [-C] [+command | -c command ] filename

- | -s Suppress all interactive user feedback. This is useful when processing editor scripts.

-l Set up for editing LISP programs.

-L List the name of all files saved as the result of an editor or system crash.

-R Readonly mode; the readonly flag is set, preventing accidental overwriting of the file.

-r filename Edit filename after an editor or system crash. (Recovers the version of filename that was in the buffer when the crash occurred.)

-S This option is used in conjunction with the -t tag option to tell vi that the tags file may not be sorted and that, if the binary search (which relies on a sorted tags file) for tag fails to find it, the much slower linear search should also be done. Since the linear search is slow, users of large tags files should ensure that the tags files are sorted rather than use this flag. Creation of tags files normally produces sorted tags files. See ctags for more information on tags files.

-t tag Edit the file containing the tag, tag, and position the editor at its definition.

-v Start up in display editing state using vi . You can achieve the same effect by simply typing the vi command itself.

-V Verbose. When ex commands are read by means of standard input, the input will be echoed to standard error. This may be useful when processing ex commands within shell scripts.

-x Encryption option; when used, vi simulates the X command of ex and prompts the user for a key. This key is used to encrypt and decrypt text using the algorithm of the crypt command. The X command makes an educated guess to determine whether text read in is encrypted or not. The temporary buffer file is encrypted also, using a transformed version of the key typed in for the -x option. If an empty encryption key is entered (that is, if the return key is pressed right after the prompt), the file will not be encrypted. This is a good way to decrypt a file erroneously encrypted with a mistyped encryption key, such as a backspace or undo key.

-wn Set the default window size to n. This is useful when using the editor over a slow speed line.

-C Encryption option; same as the -x option, except that vi simulates the C command of ex . The C command is like the X command of ex , except that all text read in is assumed to have been encrypted.

+command | -c command Begin editing by executing the specified editor
command (usually a search or positioning command).
filename The file to be edited.


USER COMMANDS

Arrow keys Move cursor

hjkl Same as arrow keys

itextESC Insert text

cwnewESC Change word to new

easESC pluralize word (end of word; append s; escape from input state)

x delete a character

dw delete a word

dd delete a line

3dd deletes 3 lines

u undo previous change

ZZ exit vi , saving changes

:q!CR quit, discarding changes

/textCR search for text

^U ^D scroll up or down

:cmdCR any ex or ed command

ESC end insert or incomplete command

DEL (delete or rubout) interrupts

:wCR write back changes

:w!CR forced write, if permission originally not valid

:qCR quit

:q!CR quit, discard changes

:e nameCR edit file name

:e!CR reedit, discard changes

:e + nameCR edit, starting at end

:e +nCR edit, starting at line n

:e #CR edit alternate file

:e! #CR edit alternate file, discard changes

:w nameCR write file name

:w! nameCR overwrite file name

:shCR run shell, then return

:!cmdCR run cmd, then return

:nCR edit next file in arglist

:n argsCR specify new arglist

^G show current file and line

:ta tagCR position cursor to tag

F forward screen

^B backward screen

^D scroll down half screen

^U scroll up half screen

nG go to the beginning of the specified line (end default), where n is a line number

/pat next line matching pat

?pat previous line matching pat

n repeat last / or ? command

N reverse last / or ? command

/pat/+n nth line after pat

?pat?-n nth line before pat

]] next section/function

[[ previous section/function

( beginning of sentence

) end of sentence

{ beginning of paragraph

} end of paragraph

% find matching ( ) or { }

^L clear and redraw window

^R clear and redraw window if ^L is -> key

zCR redraw screen with current line at top of window

z-CR redraw screen with current line at bottom of window

z.CR redraw screen with current line at center of window

/pat/z-CR move pat line to bottom of window

zn.CR use n-line window

^E scroll window down one line

^Y scroll window up one line

`` move cursor to previous context

\'\' move cursor to first non-white space in line

mx mark current position with the ASCII lower-case letter x

`x move cursor to mark x

\'x move cursor to first non-white space in line marked by x

H top line on screen

L last line on screen

M middle line on screen

+ next line, at first non-white space character

- previous line, at first non-white space character

CR return, same as +

down-arrow or j next line, same column

up-arrow or k previous line, same column

^ first non-white space character

0 beginning of line

$ end of line

l or -> forward

h or <- backward

^H same as <- (backspace)

space same as -> (space bar)

fx find next x

Fx find next x

tx move to character following the next x

Tx move to character following the previous x

; repeat last f, F, t, or T

, repeat inverse of last f, F, t, or T

n| move to column n

% find matching ( ) or { }

w forward a word

b back a word

e end of word

) to next sentence

} to next paragraph

( back a sentence

{ back a paragraph

W forward a blank-delimited word

B back a blank-delimited word

E end of a blank-delimited word

^H erase last character (backspace)

^W erase last word

erase your erase character, same as ^H (backspace)

kill your kill character, erase this line of input

\\ quotes your erase and kill characters

ESC ends insertion, back to command mode

CTRL-C interrupt, suspends insert mode

^D backtab one character; reset left margin of autoindent

^^D caret (^) followed by control-d (^D); backtab to beginning of line; do not reset left margin of autoindent

0^D backtab to beginning of line; reset left margin of autoindent

^V quote non-printable character

a append after cursor

A append at end of line

i insert before cursor

I insert before first non-blank

o open line below

O open line above

rx replace single character with x

RtextESC replace characters

d delete

c change

y yank lines to buffer

> left shift

< right shift

! filter through command

C change rest of line (c$)

D delete rest of line (d$)

s substitute characters (cl)

S substitute lines (cc)

J join lines

x delete characters (dl)

X delete characters before cursor dh)

Y yank lines (yy)

3yy yank 3 lines

3yl yank 3 characters

p put back text after cursor

P put back text before cursor \" .nr )I xp\"n

put from buffer x \" .nr )I xy\"n

yank to buffer x \" .nr )I xd\"n

delete into buffer x

u undo last change

U restore current line

. repeat last change \" .nr )I dp\"n

retrieve d\'th last delete

Linux: How to check the hardware

Linux: How to check the hardware

I've noticed there are no good tutorials on how to check what hardware you have installed on your machine. In Linux there are many ways doing this so it's not an issue but you have to know the needed commands.

I'll start step by step checking different devices on your computer but there is a tool wich shows all so if you don't want to read much just scroll down to the lshw command.

Check on the CPU:

Here is the command that will help you to see what CPU you have installed:

root@Linux ~# cat /proc/cpuinfo

This will print the whole needed information for your CPU. Here is an example:

processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 2
model name : Intel(R) Celeron(R) CPU 2.40GHz
stepping : 9
cpu MHz : 2400.485
cache size : 128 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe up pebs bts cid xtpr
bogomips : 4805.18
clflush size : 64

Checking VGA, LAN and wireless adapters, chipset etc:

root@Linux ~# lspci

Example result:

00:00.0 Host bridge: Intel Corporation 82865G/PE/P DRAM Controller/Host-Hub Interface (rev 02)
00:02.0 VGA compatible controller: Intel Corporation 82865G Integrated Graphics Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev c2)
00:1f.0 ISA bridge: Intel Corporation 82801EB/ER (ICH5/ICH5R) LPC Interface Bridge (rev 02)
00:1f.1 IDE interface: Intel Corporation 82801EB/ER (ICH5/ICH5R) IDE Controller (rev 02)
00:1f.3 SMBus: Intel Corporation 82801EB/ER (ICH5/ICH5R) SMBus Controller (rev 02)
01:0d.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)

Checking the hard drives:

root@Linux ~# fdisk -l

Example:

isk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x90909090

Device Boot Start End Blocks Id System
/dev/hda1 1 13 104391 83 Linux
/dev/hda2 14 139 1012095 82 Linux swap / Solaris
/dev/hda3 140 9729 77031675 83 Linux

lshw

The easiest way to check all the hardware installed on your box is the lshw command.

Using this command you can see all the hardware. Use the update manager of your distribution to install it if the command line says that the command doesn't exist. The package name is lshw as well.

root@Linux ~# lshw

I won't paste an example for this command since the result is always too huge but it lists everything you need to know.

I hope it was helpful.

How To Check Which Port Is Listening or Open on Linux

How To Check Which Port Is Listening or Open on Linux

For some security reason you may configure SSH or any other protocol using different kind of port number on Linux server. Sometimes it?s important to know which ports are actually listen or open to the system network, it may open for network instruction or hacking.

Basically there are few methods to see which ports are open on Linux.

Option 1:
Check /etc/services file
planetmy:/ # cat /etc/services | grep xxx (xxx = port number)

If the command return no output mean no port configure to listen on the particular port number. For port SSH/22, you should be able to see:
ssh 22/tcp # SSH Remote Login Protocol
ssh 22/udp # SSH Remote Login Protocol

Option 2:
Use netstat command - Print network connections, routing tables, interface statistics, masquerade connections, and multi cast memberships.

planetmy:/ # netstat -nan | grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7110/sshd

If the command output return ?LISTEN?, mean the particular port is open or listen on network.

Option 3:
use lsof command - list open files

planetmy:/ # lsof -i -n -P|grep 631
cupsd 17934 lp 0u IPv4 56540196 TCP *:631 (LISTEN)
cupsd 17934 lp 2u IPv4 56540197 UDP *:631

Option 4:
use nmap command - Network exploration tool and security scanner

planetmy:/ # nmap -sS -O 192.168.1.2
Starting nmap 3.50 ( http://www.insecure.org/nmap/ ) at 2008-09-12 10:13 GMT
Interesting ports on 192.168.1.2:
(The 1655 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE
22/tcp open ssh
111/tcp open rpcbind
427/tcp open svrloc
631/tcp open ipp
Device type: general purpose
Running: Linux 2.4.X|2.5.X
OS details: Linux Kernel 2.4.0 - 2.5.20, Linux Kernel 2.4.18 - 2.5.70 (X86)
Nmap run completed ? 1 IP address (1 host up) scanned in 4.146 seconds

The output show the system is running SSH on port 22.

Option 5:
use telnet command - user interface to the TELNET protocol

planetmy:/ # telnet 192.168.1.2 22
Trying 192.168.1.2?
Connected to 192.168.1.2.
Escape character is ?^]?.
SSH-1.99-OpenSSH_4.2

The output show as above mean SSH port 22 is listening on the network

planetmy:/ # telnet 192.168.1.2 122
Trying 192.168.1.2?
telnet: connect to address 192.168.1.2: Connection refused

The output show as above mean port 122 is closed.

Thanks to:
http://www.freecodeclub.com/

Setting Up Your Own Station: A Free Radio Under Linux HowTo

Setting Up Your Own Station: A Free Radio Under Linux HowTo

1. Introduction

So, you want to create your own radio station, don’t you? This manual will help you become a DJ.

2. System Requirements

Minimal requirements for radio broadcasting through your own computer, most of which you are already aware of:

*

150 MHz processor, or better
*

32 MB RAM
*

cable, DSL, or any other kind of broadband internet

and a little free hard disk space for mp3s (which you are going to play).

OS:

*

Some up-to-date Linux distribution, kernel 2.2 or newer.

Software:

*

XMMS 1.2.x http://www.xmms.org/
*

LAME v3.x http://www.sulaco.org/mp3
*

Icecast 1.3.x http://www.icecast.org/
*

Liveice-XMMS. http://star.arm.ac.uk/~spm/software/liveice.html

If using Debian, you can also use:

apt-get install xmms icecast-server

to install xmms and Icecast server. According to LAME, you can use a program called Alien, to convert RPM pack into Debian pack. All you have to do is:

apt-get install alien

and then, as root:

alien package.rpm

to create .deb which you can install, using

dpkg –i

where the name of the Debian package is.

3. Installation

The installation should be rather right-minded. You already should have all packages you need, in order to make things work. If compiling from source, then you should compile and install the software as it is described in its documentation.

If using RedHat, or any of its relative ones you can search for RPM, and download and install it by

rpm –Uvh

where the name of the RPM, which you use is.

If using Debian, just write

apt-get install xmms

icecast-server

to install xmms and Icecast server. According to LAME, you can use a program called Alien, to convert RPM package into Debian package. Install it:

apt-get install alien

then you can use it as root:

alien package.rpm

and the packages can be installed by using

dpkg –i

followed by the package’s name. For example:

dpkg -i .deb

And don’t forget that you should be root to do most of the above. And now, after the installation of all programs you need we have to set them in order to work properly.

4. Configuration

First of all we should configure the Icecast server. Find the directory which contains the Icecast server configuration files (in my case it was /etc/icecast, and I suppose it’s the same if installed by RPM; if you compiled the program on your own, then you are prepared well enough to know where the settings should be) and there you should have many “.dist”-files. Now rename all that files by deleting the “.dist” part. For example if the file name is “icecast.conf.dist” the new one should be “icecast.conf”. If there are no more “.dist”-files then you are doing well.

Now open icecast.conf with your favorite editor. The configuration is rather right-minded and simple, but anyway I’ll guide you through it. Near the beginning of the file you’ll find location/information fields:

location Just west of Mars

rp_email kirk@enterprise.space

server_url http://www.icecast.org/

fill them with the information, that you want people to see, when visiting your web-radio-station.

The next section you have to look at is the one for the server limit:

max_clients 900

max_clients_per_source 900

max_sources 10

max_admins 5

throttle 10.0

For most of the users this is much more than enough. Just set the parameters according to the speed of your Internet connection. Probably you’ll prefer

max_clients

and

max_clients_per_source

to be set at 10, and the rest you can leave the way it is. Now go down the file while you reach:

encoder_password hackme

admin_password hackme

oper_password hackme

If installed the Icecast server under Debian, or support of encrypted passwords enabled, you should crypt the password in this file using program, called mkpasswd (which probably you already have installed on your system). To do this use:

mkpasswd --crypt

Then copy and paste the result in the file. It should look like this:

encoder_passwd --WZKu0fXj3bQ

admin_passwd --WZKu0fXj3bQ

oper_passwd --WZKu0fXj3bQ

No matter which way of installation you made, you should change the password into something else than “hackme”. In the common case the three passwords should be the same. Remember the password you use, because you will use it latter during the configuration of the Liveice-XMMS.

Go down the file again and find:

console_mode 0

change the value at 3, that way the loading will be in text mode.

Usually you don’t have to change the rest of the configuration file. The advanced users can look through the rest of the settings.

Now, let’s configure the Liveice-XMMS:

Restart the XMMS, in order to make it possible to notice that there is another plugin. Make right click on the XMMS and choose Preferences. Go to Effect/General Plugins. In the list under Effect Plugins you should find Liveince. In case you can’t find it check out the Liveice-XMMS installation. After choosing Liveince, click on Configure.

Most of these audio format settings are standard, so you won’t have to change them much. Change the “Encoder type” to ‘Lame’, and the “executable name” to ‘Lame’. If already have any version of Lame on your machine, then set the path to it. Under “Description” you can consider the exact changes by yourself.

Go to Server and change the “Encoder Password” into the one that’s written in the Icecast configuration (and I told you to remember). You shouldn't type the password in encrypted mode if you have encrypted it.

Now everything is set and ready. Click OK. Check “Use Plugins” in the dialog “Preferences”, which should still be in front of you, and click OK again.

In terminal window type ‘icecast’ and press Enter. You should see how it’s getting started and proceeds into text mode.

If you are listening to a song, stop it and play it again.

Nothing went wrong…? There wasn’t big BANG!!! I hope so!

Ask a friend to connect to your IP through XMMS or any other mp3-player at http://yourcomputer:8000 … there should be music playing! If this is not happening, check out the FAQ to solve the problem.

If everything is OK, congratulations – you are now a DJ!

5. FAQ

Make sure that Icecast works. If the problems are still there, go to the conf file, at the place where you changed console_mode to 3, and change it back to 0 (that way you can receive some debug messages). You should be connecting as source, other ways check the Liveice settings. If you are connected as ‘source’, or as ‘encoder’, and your friend is trying to connect, but you don’t receive a message for this, then the problem is not in you!

Linux advanced commands

Linux advanced commands

Command Description

apropos whatis Show commands pertinent to string. See also threadsafe

man -t man | ps2pdf - > man.pdf make a pdf of a manual page

which command Show full path name of command

time command See how long a command takes

time cat Start stopwatch. Ctrl-d to stop. See also sw

nice info Run a low priority command (The "info" reader in this case)

renice 19 -p $$ Make shell (script) low priority. Use for non interactive tasks
dir navigation

cd - Go to previous directory

cd Go to $HOME directory

(cd dir && command) Go to dir, execute command and return to current dir

pushd . Put current dir on stack so you can popd back to it

alias l='ls -l --color=auto' quick dir listing

ls -lrt List files by date. See also newest and find_mm_yyyy

ls /usr/bin | pr -T9 -W$COLUMNS Print in 9 columns to width of terminal

find -name '*.[ch]' | xargs grep -E 'expr' Search 'expr' in this dir and below. See also findrepo

find -type f -print0 | xargs -r0 grep -F 'example' Search all regular files for 'example' in this dir and below

find -maxdepth 1 -type f | xargs grep -F 'example' Search all regular files for 'example' in this dir

find -maxdepth 1 -type d | while read dir; do echo $dir; echo cmd2; done Process each item with multiple commands (in while loop)

find -type f ! -perm -444 Find files not readable by all (useful for web site)

find -type d ! -perm -111 Find dirs not accessible by all (useful for web site)

locate -r 'file[^/]*\.txt' Search cached index for names. This re is like glob *file*.txt

look reference Quickly search (sorted) dictionary for prefix

grep --color reference /usr/share/dict/words Highlight occurances of regular expression in dictionary
archives and compression

gpg -c file Encrypt file

gpg file.gpg Decrypt file

tar -c dir/ | bzip2 > dir.tar.bz2 Make compressed archive of dir/

bzip2 -dc dir.tar.bz2 | tar -x Extract archive (use gzip instead of bzip2 for tar.gz files)

tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg' Make encrypted archive of dir/ on remote machine

find dir/ -name '*.txt' | tar -c --files-from=- | bzip2 > dir_txt.tar.bz2 Make archive of subset of dir/ and below

find dir/ -name '*.txt' | xargs cp -a --target-directory=dir_txt/ --parents Make copy of subset of dir/ and below

( tar -c /dir/to/copy ) | ( cd /where/to/ && tar -x -p ) Copy (with permissions) copy/ dir to /where/to/ dir

( cd /dir/to/copy && tar -c . ) | ( cd /where/to/ && tar -x -p ) Copy (with permissions) contents of copy/ dir to /where/to/

( tar -c /dir/to/copy ) | ssh -C user@remote 'cd /where/to/ && tar -x -p' Copy (with permissions) copy/ dir to remote:/where/to/ dir

dd bs=1M if=/dev/sda | gzip | ssh user@remote 'dd of=sda.gz' Backup harddisk to remote machine
rsync (Use the --dry-run option for testing)

rsync -P rsync://rsync.server.com/path/to/file file Only get diffs. Do multiple times for troublesome downloads

rsync --bwlimit=1000 fromfile tofile Locally copy with rate limit. It's like nice for I/O

rsync -az -e ssh --delete ~/public_html/ remote.com:'~/public_html' Mirror web site (using compression and encryption)

rsync -auz -e ssh remote:/dir/ . && rsync -auz -e ssh . remote:/dir/ Synchronize current directory with remote one
ssh (Secure SHell)

ssh $USER@$HOST command Run command on $HOST as $USER (default command=shell)

ssh -f -Y $USER@$HOSTNAME xeyes Run GUI command on $HOSTNAME as $USER

scp -p -r $USER@$HOST: file dir/ Copy with permissions to $USER's home directory on $HOST

ssh -g -L 8080:localhost:80 root@$HOST Forward connections to $HOSTNAME:8080 out to $HOST:80

ssh -R 1434:imap:143 root@$HOST Forward connections from $HOST:1434 in to imap:143
wget (multi purpose download tool)

(cd cmdline && wget -nd -pHEKk http://www.pixelbeat.org/cmdline.html) Store local browsable version of a page to the current dir

wget -c http://www.example.com/large.file Continue downloading a partially downloaded file

wget -r -nd -np -l1 -A '*.jpg' http://www.example.com/dir/ Download a set of files to the current directory

wget ftp://remote/file[1-9].iso/ FTP supports globbing directly

wget -q -O- http://www.pixelbeat.org/timeline.html | grep 'a href' | head Process output directly

echo 'wget url' | at 01:00 Download url at 1AM to current dir

wget --limit-rate=20k url Do a low priority download (limit to 20KB/s in this case)

wget -nv --spider --force-html -i bookmarks.html Check links in a file

wget --mirror http://www.example.com/ Efficiently update a local copy of a site (handy from cron)
networking (Note ifconfig, route, mii-tool, nslookup commands are obsolete)

ethtool eth0 Show status of ethernet interface eth0

ethtool --change eth0 autoneg off speed 100 duplex full Manually set ethernet interface speed

iwconfig eth1 Show status of wireless interface eth1

iwconfig eth1 rate 1Mb/s fixed Manually set wireless interface speed

iwlist scan List wireless networks in range

ip link show List network interfaces

ip link set dev eth0 name wan Rename interface eth0 to wan

ip link set dev eth0 up Bring interface eth0 up (or down)

ip addr show List addresses for interfaces

ip addr add 1.2.3.4/24 brd + dev eth0 Add (or del) ip and mask (255.255.255.0)

ip route show List routing table

ip route add default via 1.2.3.254 Set default gateway to 1.2.3.254

tc qdisc add dev lo root handle 1:0 netem delay 20msec Add 20ms latency to loopback device (for testing)

tc qdisc del dev lo root Remove latency added above

host pixelbeat.org Lookup DNS ip address for name or vice versa

hostname -i Lookup local ip address (equivalent to host `hostname`)

whois pixelbeat.org Lookup whois info for hostname or ip address

netstat -tupl List internet services on a system

netstat -tup List active connections to/from system
windows networking (Note samba is the package that provides all this windows specific networking support)

smbtree Find windows machines. See also findsmb

nmblookup -A 1.2.3.4 Find the windows (netbios) name associated with ip address

smbclient -L windows_box List shares on windows machine or samba server

mount -t smbfs -o fmask=666,guest //windows_box/share /mnt/share Mount a windows share

echo 'message' | smbclient -M windows_box Send popup to windows machine (off by default in XP sp2)
text manipulation (Note sed uses stdin and stdout, so if you want to edit files, append newfile)

sed 's/string1/string2/g' Replace string1 with string2

sed 's/\(.*\)1/\12/g' Modify anystring1 to anystring2

sed '/ *#/d; /^ *$/d' Remove comments and blank lines

sed ':a; /\\$/N; s/\\\n//; ta' Concatenate lines with trailing \

sed 's/[ \t]*$//' Remove trailing spaces from lines

sed 's/\([\\`\\"$\\\\]\)/\\\1/g' Escape shell metacharacters active within double quotes

seq 10 | sed "s/^/ /; s/ *\(.\{7,\}\)/\1/" Right align numbers

sed -n '1000p;1000q' Print 1000th line

sed -n '10,20p;20q' Print lines 10 to 20

sed -n 's/.*\(.*\)<\/title>.*/\1/ip;<acronym title="quit after match">T;q</acronym>'</td> <td>Extract title from HTML web page</td> </tr> <tr> <td> <br /></td> <td class="nw">sort -t. -k1,1n -k2,2n -k3,3n -k4,4n</td> <td>Sort IPV4 ip addresses</td> </tr> <tr> <td> <br /></td> <td class="nw">echo 'Test' | tr '[:lower:]' '[:upper:]'</td> <td>Case conversion</td> </tr> <tr> <td> <br /></td> <td class="nw">tr -dc '[:print:]' < /dev/urandom</td> <td>Filter non printable characters</td> </tr> <tr> <td> <br /></td> <td class="nw">history | wc -l</td> <td>Count lines</td> </tr> <tr id="sets" class="pbtitle"> <td colspan="3"><strong>set operations</strong> (Note you can export LANG=C for speed. Also these assume no duplicate lines within a file)</td> </tr> <tr> <td> <br /></td> <td class="nw">sort file1 file2 | uniq</td> <td><acronym title="Items in either file1 or file2">Union</acronym> of unsorted files</td> </tr> <tr> <td> <br /></td> <td class="nw">sort file1 file2 | uniq -d</td> <td><acronym title="Items both in file1 and file2">Intersection</acronym> of unsorted files</td> </tr> <tr> <td> <br /></td> <td class="nw">sort file1 file1 file2 | uniq -u</td> <td><acronym title="Items in file2 not in file1">Difference</acronym> of unsorted files</td> </tr> <tr> <td> <br /></td> <td class="nw">sort file1 file2 | uniq -u</td> <td><acronym title="Items in only one file">Symmetric Difference</acronym> of unsorted files</td> </tr> <tr> <td> <br /></td> <td class="nw">join -a1 -a2 file1 file2</td> <td>Union of sorted files</td> </tr> <tr> <td> <br /></td> <td class="nw">join file1 file2</td> <td>Intersection of sorted files</td> </tr> <tr> <td> <br /></td> <td class="nw">join -v2 file1 file2</td> <td>Difference of sorted files</td> </tr> <tr> <td> <br /></td> <td class="nw">join -v1 -v2 file1 file2</td> <td>Symmetric Difference of sorted files</td> </tr> <tr id="math" class="pbtitle"> <td colspan="3"><strong>math</strong></td> </tr> <tr> <td> <br /></td> <td class="nw">echo '(1 + sqrt(5))/2' | bc -l</td> <td>Quick math (Calculate f). See also bc</td> </tr> <tr> <td> <br /></td> <td class="nw">echo 'pad=20; min=64; (100*10^6)/((pad+min)*8)' | bc</td> <td>More complex (int) e.g. This shows max FastE packet rate</td> </tr> <tr> <td> <br /></td> <td class="nw">echo 'pad=20; min=64; print (100E6)/((pad+min)*8)' | python</td> <td>Python handles scientific notation</td> </tr> <tr> <td> <br /></td> <td class="nw">echo 'pad=20; plot [64:1518] (100*10**6)/((pad+x)*8)' | gnuplot -persist</td> <td>Plot FastE packet rate vs packet size</td> </tr> <tr> <td> <br /></td> <td class="nw">echo 'obase=16; ibase=10; 64206' | bc</td> <td>Base conversion (decimal to hexadecimal)</td> </tr> <tr> <td> <br /></td> <td class="nw">echo $((0x2dec))</td> <td>Base conversion (hex to dec) ((shell arithmetic expansion))</td> </tr> <tr> <td> <br /></td> <td class="nw">units -t '100m/9.74s' 'miles/hour'</td> <td>Unit conversion (metric to imperial)</td> </tr> <tr> <td> <br /></td> <td class="nw">units -t '500GB' 'GiB'</td> <td>Unit conversion (<acronym title="powers of 10">SI</acronym> to <acronym title="powers of 2">IEC</acronym> prefixes)</td> </tr> <tr> <td> <br /></td> <td class="nw">units -t '1 googol'</td> <td>Definition lookup</td> </tr> <tr> <td> <br /></td> <td class="nw">seq 100 | (tr '\n' +; echo 0) | bc</td> <td>Add a column of numbers. See also add and funcpy</td> </tr> <tr id="dates" class="pbtitle"> <td colspan="3"><strong>calendar</strong></td> </tr> <tr> <td> <br /></td> <td class="nw">cal -3</td> <td>Display a calendar</td> </tr> <tr> <td> <br /></td> <td class="nw">cal 9 1752</td> <td>Display a calendar for a particular month year</td> </tr> <tr> <td> <br /></td> <td class="nw">date -d fri</td> <td>What date is it this friday. See also day</td> </tr> <tr> <td> <br /></td> <td class="nw">date --date='25 Dec' +%A</td> <td>What day does xmas fall on, this year</td> </tr> <tr> <td> <br /></td> <td class="nw">date --date '1970-01-01 UTC 2147483647 seconds'</td> <td>Convert number of seconds since the epoch to a date</td> </tr> <tr> <td> <br /></td> <td class="nw">TZ=':America/Los_Angeles' date</td> <td>What time is it on West coast of US (use tzselect to find TZ)</td> </tr> <tr> <td> <br /></td> <td class="nw">echo "mail -s 'get the train' P@draigBrady.com < /dev/null" | at 17:45</td> <td>Email reminder</td> </tr> <tr> <td> <br /></td> <td class="nw">echo "DISPLAY=$DISPLAY xmessage cooker" | at "NOW + 30 minutes"</td> <td>Popup reminder</td> </tr> <tr id="locale" class="pbtitle"> <td colspan="3"><strong>locales</strong></td> </tr> <tr> <td> <br /></td> <td class="nw">printf "%'d\n" 1234</td> <td>Print number with thousands grouping appropriate to locale</td> </tr> <tr> <td> <br /></td> <td class="nw">BLOCK_SIZE=\'1 ls -l</td> <td>get ls to do thousands grouping appropriate to locale</td> </tr> <tr> <td> <br /></td> <td class="nw">echo "I live in `locale territory`"</td> <td>Extract info from locale database</td> </tr> <tr> <td> <br /></td> <td class="nw">LANG=en_IE.utf8 locale int_prefix</td> <td>Lookup locale info for specific country. See also ccodes</td> </tr> <tr> <td> <br /></td> <td class="nw">locale | cut -d= -f1 | xargs locale -kc | less</td> <td>List fields available in locale database</td> </tr> <tr id="recode" class="pbtitle"> <td colspan="3"><strong>recode</strong> (Obsoletes iconv, dos2unix, unix2dos)</td> </tr> <tr> <td> <br /></td> <td class="nw">recode -l | less</td> <td>Show available conversions (aliases on each line)</td> </tr> <tr> <td> <br /></td> <td class="nw">recode windows-1252.. file_to_change.txt</td> <td>Windows "ansi" to local charset (auto does CRLF conversion)</td> </tr> <tr> <td> <br /></td> <td class="nw">recode utf-8/CRLF.. file_to_change.txt</td> <td>Windows utf8 to local charset</td> </tr> <tr> <td> <br /></td> <td class="nw">recode iso-8859-15..utf8 file_to_change.txt</td> <td>Latin9 (western europe) to utf8</td> </tr> <tr> <td> <br /></td> <td class="nw">recode ../b64 <> file.b64</td> <td>Base64 encode</td> </tr> <tr> <td> <br /></td> <td class="nw">recode /qp.. <> file.qp</td> <td>Quoted printable decode</td> </tr> <tr> <td> <br /></td> <td class="nw">recode ..HTML <> file.html</td> <td>Text to HTML</td> </tr> <tr> <td> <br /></td> <td class="nw">recode -lf windows-1252 | grep euro</td> <td>Lookup table of characters</td> </tr> <tr> <td> <br /></td> <td class="nw">echo -n 0x80 | recode latin-9/x1..dump</td> <td>Show what a code represents in latin-9 charmap</td> </tr> <tr> <td> <br /></td> <td class="nw">echo -n 0x20AC | recode ucs-2/x2..latin-9/x</td> <td>Show latin-9 encoding</td> </tr> <tr> <td> <br /></td> <td class="nw">echo -n 0x20AC | recode ucs-2/x2..utf-8/x</td> <td>Show utf-8 encoding</td> </tr> <tr id="CDs" class="pbtitle"> <td colspan="3"><strong><acronym title="Compact Disks">CDs</acronym></strong></td> </tr> <tr> <td> <br /></td> <td class="nw">gzip < /dev/cdrom > cdrom.iso.gz</td> <td>Save copy of data cdrom</td> </tr> <tr> <td> <br /></td> <td class="nw">mkisofs -V LABEL -r dir | gzip > cdrom.iso.gz</td> <td>Create cdrom image from contents of dir</td> </tr> <tr> <td> <br /></td> <td class="nw">mount -o loop cdrom.iso /mnt/dir</td> <td>Mount the cdrom image at /mnt/dir (read only)</td> </tr> <tr> <td> <br /></td> <td class="nw">cdrecord -v dev=/dev/cdrom blank=fast</td> <td>Clear a CDRW</td> </tr> <tr> <td> <br /></td> <td class="nw">gzip -dc cdrom.iso.gz | cdrecord -v dev=/dev/cdrom -</td> <td>Burn cdrom image (use dev=ATAPI -scanbus to confirm dev)</td> </tr> <tr> <td> <br /></td> <td class="nw">cdparanoia -B</td> <td>Rip audio tracks from CD to wav files in current dir</td> </tr> <tr> <td> <br /></td> <td class="nw">cdrecord -v dev=/dev/cdrom -audio *.wav</td> <td>Make audio CD from all wavs in current dir (see also cdrdao)</td> </tr> <tr> <td> <br /></td> <td class="nw">oggenc --tracknum='track' track.cdda.wav -o 'track.ogg'</td> <td>Make ogg file from wav file</td> </tr> <tr id="disk_space" class="pbtitle"> <td colspan="3"><strong>disk space</strong> (See also FSlint)</td> </tr> <tr> <td> <br /></td> <td class="nw">ls -lSr</td> <td>Show files by size, biggest last</td> </tr> <tr> <td> <br /></td> <td class="nw">du -s * | sort -k1,1rn | head</td> <td>Show top disk users in current dir. See also dutop</td> </tr> <tr> <td> <br /></td> <td class="nw">df -h</td> <td>Show free space on mounted filesystems</td> </tr> <tr> <td> <br /></td> <td class="nw">df -i</td> <td>Show free inodes on mounted filesystems</td> </tr> <tr> <td> <br /></td> <td class="nw"><acronym title="usually in /sbin/">fdisk</acronym> -l</td> <td>Show disks partitions sizes and types (run as root)</td> </tr> <tr> <td> <br /></td> <td class="nw">rpm -q -a --qf '%10{SIZE}\t%{NAME}\n' | sort -k1,1n</td> <td>List all packages by installed size (Bytes) on rpm distros</td> </tr> <tr> <td> <br /></td> <td class="nw">dpkg-query -W -f='${Installed-Size;10}\t${Package}\n' | sort -k1,1n</td> <td>List all packages by installed size (KBytes) on deb distros</td> </tr> <tr> <td> <br /></td> <td class="nw">dd bs=1 seek=2TB if=/dev/null of=ext3.test</td> <td>Create a large test file (taking no space). See also truncate</td> </tr> <tr id="monitor" class="pbtitle"> <td colspan="3"><strong>monitoring/debugging</strong></td> </tr> <tr> <td> <br /></td> <td class="nw">tail -f /var/log/messages</td> <td>Monitor messages in a log file</td> </tr> <tr> <td> <br /></td> <td class="nw">strace -c ls >/dev/null</td> <td>Summarise/profile system calls made by command</td> </tr> <tr> <td> <br /></td> <td class="nw">strace -f -e open ls >/dev/null</td> <td>List system calls made by command</td> </tr> <tr> <td> <br /></td> <td class="nw">ltrace -f -e getenv ls >/dev/null</td> <td>List library calls made by command</td> </tr> <tr> <td> <br /></td> <td class="nw"><acronym title="usually in /usr/sbin/">lsof</acronym> -p <acronym title="process id of current shell">$$</acronym></td> <td>List paths that process id has open</td> </tr> <tr> <td> <br /></td> <td class="nw">lsof ~</td> <td>List processes that have specified path open</td> </tr> <tr> <td> <br /></td> <td class="nw">tcpdump not port 22</td> <td>Show network traffic except ssh. See also tcpdump_not_me</td> </tr> <tr> <td> <br /></td> <td class="nw">ps -e -o pid,args --forest</td> <td>List processes in a hierarchy</td> </tr> <tr> <td> <br /></td> <td class="nw">ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed '/^ 0.0 /d'</td> <td>List processes by % cpu usage</td> </tr> <tr> <td> <br /></td> <td class="nw">ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS</td> <td>List processes by mem usage. See also ps_mem.py</td> </tr> <tr> <td> <br /></td> <td class="nw">ps -C firefox-bin -L -o pid,tid,pcpu,state</td> <td>List all threads for a particular process</td> </tr> <tr> <td> <br /></td> <td class="nw">ps -p 1,2</td> <td>List info for particular process IDs</td> </tr> <tr> <td> <br /></td> <td class="nw">last reboot</td> <td>Show system reboot history</td> </tr> <tr> <td> <br /></td> <td class="nw">free -m</td> <td>Show amount of (remaining) RAM (-m displays in MB)</td> </tr> <tr> <td> <br /></td> <td class="nw">watch -n1 'cat /proc/interrupts'</td> <td>Watch changeable data continuously</td> </tr> <tr id="sysinfo" class="pbtitle"> <td colspan="3"><strong>system information</strong> (see also sysinfo) ('#' means root access is required)</td> </tr> <tr> <td> <br /></td> <td class="nw">uname -a</td> <td>Show kernel version and system architecture</td> </tr> <tr> <td> <br /></td> <td class="nw">head -n1 /etc/issue</td> <td>Show name and version of distribution</td> </tr> <tr> <td> <br /></td> <td class="nw">cat /proc/partitions</td> <td>Show all partitions registered on the system</td> </tr> <tr> <td> <br /></td> <td class="nw">grep MemTotal /proc/meminfo</td> <td>Show RAM total seen by the system</td> </tr> <tr> <td> <br /></td> <td class="nw">grep "model name" /proc/cpuinfo</td> <td>Show CPU(s) info</td> </tr> <tr> <td> <br /></td> <td class="nw"><acronym title="usually in /sbin/">lspci</acronym> -tv</td> <td>Show PCI info</td> </tr> <tr> <td> <br /></td> <td class="nw"><acronym title="usually in /sbin/">lsusb</acronym> -tv</td> <td>Show USB info</td> </tr> <tr> <td> <br /></td> <td class="nw">mount | column -t</td> <td>List mounted filesystems on the system (and align output)</td> </tr> <tr> <td>#</td> <td class="nw">dmidecode -q | less</td> <td>Display SMBIOS/DMI information</td> </tr> <tr> <td>#</td> <td class="nw">smartctl -A /dev/sda | grep Power_On_Hours</td> <td>How long has this disk (system) been powered on in total</td> </tr> <tr> <td>#</td> <td class="nw">hdparm -i /dev/sda</td> <td>Show info about disk sda</td> </tr> <tr> <td>#</td> <td class="nw">hdparm -tT /dev/sda</td> <td>Do a read speed test on disk sda</td> </tr> <tr> <td>#</td> <td class="nw">badblocks -s /dev/sda</td> <td>Test for unreadable blocks on disk sda</td> </tr> <tr id="interactive" class="pbtitle"> <td colspan="3"><strong>interactive</strong> (see also linux keyboard shortcuts)</td> </tr> <tr> <td> <br /></td> <td class="nw">readline</td> <td>Line editor used by bash, python, bc, gnuplot, ...</td> </tr> <tr> <td> <br /></td> <td class="nw">screen</td> <td>Virtual terminals with detach capability, ...</td> </tr> <tr> <td> <br /></td> <td class="nw">mc</td> <td>Powerful file manager that can browse rpm, tar, ftp, ssh, ...</td> </tr> <tr> <td> <br /></td> <td class="nw">gnuplot</td> <td>Interactive/scriptable graphing</td> </tr> <tr> <td> <br /></td> <td class="nw">links</td> <td>Web browser</td> </tr> <tr id="misc" class="pbtitle"> <td colspan="3"><strong>miscellaneous</strong></td> </tr> <tr> <td> <br /></td> <td class="nw">alias hd='od -Ax -tx1z -v'</td> <td>Handy hexdump. (usage e.g.: hd /proc/self/cmdline | less)</td> </tr> <tr> <td> <br /></td> <td class="nw">alias realpath='readlink -f'</td> <td>Canonicalize path. (usage e.g.: realpath ~/../$USER)</td> </tr> <tr> <td> <br /></td> <td class="nw">set | grep $USER</td> <td>Search current environment</td> </tr> <tr> <td> <br /></td> <td class="nw">touch -c -t 0304050607 file</td> <td>Set file timestamp (YYMMDDhhmm)</td></tr></tbody></table> <br />Thanks to : <br /><span style="color: rgb(255, 0, 0);">http://www.freecodeclub.com/art-Linux_advanced_commands.php</span> <br /> <br /> <br /> <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <span itemprop='name'>Sivakumar</span> </span> </span> <span class='post-timestamp'> at <meta content='http://sivanihonjin.blogspot.com/2010/09/linux-advanced-commands.html' itemprop='url'/> <a class='timestamp-link' href='https://sivanihonjin.blogspot.com/2010/09/linux-advanced-commands.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2010-09-27T20:40:00-07:00'>9/27/2010 08:40:00 PM</abbr></a> </span> <span class='post-comment-link'> <a class='comment-link' href='https://sivanihonjin.blogspot.com/2010/09/linux-advanced-commands.html#comment-form' onclick=''> No comments: </a> </span> <span class='post-icons'> <span class='item-action'> <a href='https://www.blogger.com/email-post/2916662426460066736/5356671157302713903' title='Email Post'> <img alt='' class='icon-action' height='13' src='https://resources.blogblog.com/img/icon18_email.gif' width='18'/> </a> </span> <span class='item-control blog-admin pid-1067355270'> <a href='https://www.blogger.com/post-edit.g?blogID=2916662426460066736&postID=5356671157302713903&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> </div> </div></div> <div class="date-outer"> <h2 class='date-header'><span>Thursday, September 23, 2010</span></h2> <div class="date-posts"> <div class='post-outer'> <div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='2916662426460066736' itemprop='blogId'/> <meta content='9030460699697503562' itemprop='postId'/> <a name='9030460699697503562'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='https://sivanihonjin.blogspot.com/2010/09/emacs-shorcuts.html'>Emacs shorcuts</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-9030460699697503562' itemprop='description articleBody'> C-spacebar start copying a region<br /><br />M-x end copying a region <br />C-w cut a region<br /><br /><br />C-M-\ indent-region<br /><br />Emacs keyboard shortcuts<br />FILE<br />Open Ctrl-X, Ctrl-F <br />Save Ctrl-X, Ctrl-S <br />Save As Ctrl-X, Ctrl-W <br />Save All Ctrl-X, S <br />Revert to File Ctrl-X, Ctrl-V <br />Revert Buffer Meta-X, revert-buffer <br />Close Window/Buffer Ctrl-X, K <br />Quit Ctrl-X, Ctrl-C <br /><br />EDIT<br />Undo Ctrl-_ <br />Begin Selection Ctrl-SPC <br />Cancel Selection Ctrl-G <br />Cut Selection Ctrl-W <br />Cut Line Ctrl-K <br />Paste Ctrl-Y <br />Copy Selection to Numbered Clipboard Ctrl-X R S [#] <br />Paste from Numbered Clipboard Ctrl-X R I [#] <br />Delete DEL <br />Fwd Delete Ctrl-D <br />Delete Word Meta-DEL <br />Fwd Delete Word Meta-D <br />Delete Line Ctrl-K <br /><br /><br />CURSOR MOVEMENT<br /> FORWARD BACKWARD<br />Word Meta-F Meta-B<br />Line Ctrl-A Ctrl-E<br />Paragraph Meta-{ Meta-}<br />Page Ctrl-V Meta-V<br />Document Meta-<><br />C Function Meta-Ctrl-A Meta-Control-E<br /><br /><br />SEARCH<br />Incremental Search Ctrl-S <br />Incremental Search Reverse Ctrl-R <br />Regexp Inc Search Meta-Ctrl-S <br />Regexp Inc Search Reverse Meta-Ctrl-R <br />Interactive Search and Replace Meta-% <br />Goto Line Number Meta-X goto-line <br />Previous Matching Bracket Meta-Ctrl-B (or ESC Ctrl-B) <br />Next Matching Bracket Meta-Ctrl-F (or ESC Ctrl-F) <br /><br /><br />WINDOW<br />Close Ctrl-X, K <br />Next Window Ctrl-X, B <br />Choose Window Ctrl-X, Ctrl-B <br />Maximize Ctrl-X, 1 <br />Split Horizontal Ctrl-X, 2 <br />Split Vertical Ctrl-X, 3 <br />Switch Focus Between Windows Ctrl-X, O <br />Activate Menu Bar Meta-` <br /><br /><br />REGISTERS<br />Copy Selection to Numbered Clipboard Ctrl-X R S [#] <br />Paste from Numbered Clipboard Ctrl-X R I [#] <br />Set Numbered Bookmark Ctrl-X R SPC [#] <br />Jump to Numbered Bookmark Ctrl-X R J [#] <br /><br />FORMATTING<br />Re-flow Paragraph Meta-Q <br />Indent Selection Meta-Control-\ <br />Uppercase Word Meta-U <br />Lowercase Word Meta-L <br />Capitalize Word Meta-C <br />Uppercase Selection Ctrl-X, Ctrl-U <br />Lowercase Selection Ctrl-X, Ctrl-L <br /><br />MACROS<br />Start Recording Ctrl-X, ( <br />Stop Recording Ctrl-X, ) <br />Play Macro Ctrl-X, E <br />Repeat command # times Meta-[#] [command] <br />Repeat command # times Ctrl-U [#] [command] <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <span itemprop='name'>Sivakumar</span> </span> </span> <span class='post-timestamp'> at <meta content='http://sivanihonjin.blogspot.com/2010/09/emacs-shorcuts.html' itemprop='url'/> <a class='timestamp-link' href='https://sivanihonjin.blogspot.com/2010/09/emacs-shorcuts.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2010-09-23T04:15:00-07:00'>9/23/2010 04:15:00 AM</abbr></a> </span> <span class='post-comment-link'> <a class='comment-link' href='https://sivanihonjin.blogspot.com/2010/09/emacs-shorcuts.html#comment-form' onclick=''> No comments: </a> </span> <span class='post-icons'> <span class='item-action'> <a href='https://www.blogger.com/email-post/2916662426460066736/9030460699697503562' title='Email Post'> <img alt='' class='icon-action' height='13' src='https://resources.blogblog.com/img/icon18_email.gif' width='18'/> </a> </span> <span class='item-control blog-admin pid-1067355270'> <a href='https://www.blogger.com/post-edit.g?blogID=2916662426460066736&postID=9030460699697503562&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> </div> </div></div> <div class="date-outer"> <h2 class='date-header'><span>Friday, September 10, 2010</span></h2> <div class="date-posts"> <div class='post-outer'> <div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='2916662426460066736' itemprop='blogId'/> <meta content='3547929577463962932' itemprop='postId'/> <a name='3547929577463962932'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='https://sivanihonjin.blogspot.com/2010/09/how-to-write-batch-file.html'>How to Write a Batch File</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-3547929577463962932' itemprop='description articleBody'> <span style="font-weight: bold; color: rgb(255, 0, 0);">How to Write a Batch File:</span><br />OS used : Windows<br />Writing a batch file is used to automate daily and often mundane tasks. Instead of typing the same commands day after day, you would simply double click the batch file to run said commands. These instructions will show you how to do so.<br />For Windows<br />1. <br />Open up Notepad in Windows. You can do this by navigating to Start > Programs > Accessories > Notepad, or simply by entering notepad under Start > Run.<br />2. <br />Or open up notepad by keying C:\WINDOWS\system32\notepad.exe<br />3. <br />Save your file before anything, so be sure to follow the instructions closely.<br /><br /><br />1. Go to File > Save As... and chose a file name.<br />2. Choose your desktop as the location to save.<br />3. Click on the dropdown box "Save as type:" and select "All files" instead of Text (*.txt).<br />4. Add .bat to the end of your file name before you save. For example, you would type wikihow.bat.<br />5. Click on Save. If you did this correctly, you should see your file name in the title bar of Windows Notepad. Make sure that it reads as wikihow.bat—not wikihow.bat.txt. Now you are ready to create your batch file.<br />4. <br />Type "@echo off" on the first line of your batch file. This will prevent any commands in the batch file to be sent to the screen when executed.<br />5. <br />Enter your commands. The following examples show you how to create a batch file that will automatically load wikiHow.com using Internet Explorer.<br />1. <br />First example:<br />1. <br />o @echo off.<br />o REM The following will open wikiHow.com in a new Internet Explorer window.<br />o start iexplore.exe www.sivab.org<br /> or, second example:<br />1. <br />o @echo off.<br />o REM The following will open wikiHow.com in your default browser, if it is IE and you have another IE window open, then it will hijack that window or open a new tab.<br />o start www.sivab.org<br />2. <br />Save the file.<br />3. <br />Run the file by double clicking the file on your desktop.<br /><br /><span style="color: rgb(153, 0, 0);">Ex1:</span><br />Save the following as “siva.bat” and double click the file.<br /><br /><span style="color: rgb(102, 0, 204);">@echo off</span><br /><span style="color: rgb(102, 0, 204);">start iexplore.exe www.wikihow.com</span><br /><br /><br /><br /><span style="color: rgb(153, 0, 0);">Ex2:</span><br />Save the following as “siva.bat” and double click the file.<br /><br /><span style="color: rgb(102, 0, 204);">@echo off</span><br /><span style="color: rgb(102, 0, 204);">start www.wikihow.com</span><br /><br />Thanks to :<br />http://www.wikihow.com/Write-a-Batch-File <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <span itemprop='name'>Sivakumar</span> </span> </span> <span class='post-timestamp'> at <meta content='http://sivanihonjin.blogspot.com/2010/09/how-to-write-batch-file.html' itemprop='url'/> <a class='timestamp-link' href='https://sivanihonjin.blogspot.com/2010/09/how-to-write-batch-file.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2010-09-10T00:23:00-07:00'>9/10/2010 12:23:00 AM</abbr></a> </span> <span class='post-comment-link'> <a class='comment-link' href='https://sivanihonjin.blogspot.com/2010/09/how-to-write-batch-file.html#comment-form' onclick=''> No comments: </a> </span> <span class='post-icons'> <span class='item-action'> <a href='https://www.blogger.com/email-post/2916662426460066736/3547929577463962932' title='Email Post'> <img alt='' class='icon-action' height='13' src='https://resources.blogblog.com/img/icon18_email.gif' width='18'/> </a> </span> <span class='item-control blog-admin pid-1067355270'> <a href='https://www.blogger.com/post-edit.g?blogID=2916662426460066736&postID=3547929577463962932&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> </div> </div></div> </div> <div class='blog-pager' id='blog-pager'> <span id='blog-pager-newer-link'> <a class='blog-pager-newer-link' href='https://sivanihonjin.blogspot.com/search?updated-max=2012-04-08T20:30:00-07:00&max-results=100&reverse-paginate=true' id='Blog1_blog-pager-newer-link' title='Newer Posts'>Newer Posts</a> </span> <span id='blog-pager-older-link'> <a class='blog-pager-older-link' href='https://sivanihonjin.blogspot.com/search?updated-max=2010-09-10T00:23:00-07:00&max-results=100&reverse-paginate=true&start=12&by-date=false' id='Blog1_blog-pager-older-link' title='Older Posts'>Older Posts</a> </span> <a class='home-link' href='https://sivanihonjin.blogspot.com/'>Home</a> </div> <div class='clear'></div> <div class='blog-feeds'> <div class='feed-links'> Subscribe to: <a class='feed-link' href='https://sivanihonjin.blogspot.com/feeds/posts/default' target='_blank' type='application/atom+xml'>Posts (Atom)</a> </div> </div> </div></div> </div> </div> <div class='column-left-outer'> <div class='column-left-inner'> <aside> <div class='sidebar section' id='sidebar-left-1'><div class='widget Poll' data-version='1' id='Poll1'> <h2 class='title'>What is the aXb:c refers to in 802.11n protocols specifying the no of antennaes ? for eg: 2x3:2 means </h2> <div class='widget-content'> <iframe allowtransparency='true' frameborder='0' height='260' name='poll-widget-6504448491053621198' style='border:none; width:100%;'></iframe> <div class='clear'></div> </div> </div><div class='widget Image' data-version='1' id='Image1'> <h2>Renault's Twizy - Small Electric car</h2> <div class='widget-content'> <a href='http://www.renault.com/en/innovation/vehicule-electrique/pages/twizy-ze-concept.aspx'> <img alt='Renault's Twizy - Small Electric car' height='149' id='Image1_img' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS-SGE0it-Pcs3Lq1Zv2_GcO0Q1nVpn-KASSKRhOk0deng_hU7zALghN1EX9JKltkbqnwR5ooyWPFfk8WupccTIfHm20A5fGhbIze2ZuVbpcP1J5RzQROUbhvzGV3IZMmoYEm5mMeU3vk/s250/5048465160_46bde58c51.jpg' width='250'/> </a> <br/> <span class='caption'>Future car</span> </div> <div class='clear'></div> </div><div class='widget Followers' data-version='1' id='Followers1'> <h2 class='title'>Followers</h2> <div class='widget-content'> <div id='Followers1-wrapper'> <div style='margin-right:2px;'> <div><script type="text/javascript" src="https://apis.google.com/js/platform.js"></script> <div id="followers-iframe-container"></div> <script type="text/javascript"> window.followersIframe = null; function followersIframeOpen(url) { gapi.load("gapi.iframes", function() { if (gapi.iframes && gapi.iframes.getContext) { window.followersIframe = gapi.iframes.getContext().openChild({ url: url, where: document.getElementById("followers-iframe-container"), messageHandlersFilter: gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER, messageHandlers: { '_ready': function(obj) { window.followersIframe.getIframeEl().height = obj.height; }, 'reset': function() { window.followersIframe.close(); followersIframeOpen("https://www.blogger.com/followers/frame/2916662426460066736?colors\x3dCgt0cmFuc3BhcmVudBILdHJhbnNwYXJlbnQaByMyMjIyMjIiByMyNDlmYTMqByNmZmZmZmYyByMwMDAwMDA6ByMyMjIyMjJCByMyNDlmYTNKByM5OTk5OTlSByMyNDlmYTNaC3RyYW5zcGFyZW50\x26pageSize\x3d21\x26hl\x3den\x26origin\x3dhttps://sivanihonjin.blogspot.com"); }, 'open': function(url) { window.followersIframe.close(); followersIframeOpen(url); } } }); } }); } followersIframeOpen("https://www.blogger.com/followers/frame/2916662426460066736?colors\x3dCgt0cmFuc3BhcmVudBILdHJhbnNwYXJlbnQaByMyMjIyMjIiByMyNDlmYTMqByNmZmZmZmYyByMwMDAwMDA6ByMyMjIyMjJCByMyNDlmYTNKByM5OTk5OTlSByMyNDlmYTNaC3RyYW5zcGFyZW50\x26pageSize\x3d21\x26hl\x3den\x26origin\x3dhttps://sivanihonjin.blogspot.com"); </script></div> </div> </div> <div class='clear'></div> </div> </div><div class='widget HTML' data-version='1' id='HTML2'> <h2 class='title'>Wireless Car Driving - By Fadii</h2> <div class='widget-content'> <object width="500" height="405"><param name="movie" value="http://www.youtube.com/v/-CmuYCq7lnM&hl=en_US&fs=1&border=1" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed src="http://www.youtube.com/v/-CmuYCq7lnM&hl=en_US&fs=1&border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="250" height="250"></embed></object> </div> <div class='clear'></div> </div><div class='widget BlogArchive' data-version='1' id='BlogArchive1'> <h2>Blog Archive</h2> <div class='widget-content'> <div id='ArchiveList'> <div id='BlogArchive1_ArchiveList'> <ul class='hierarchy'> <li class='archivedate expanded'> <a class='toggle' href='javascript:void(0)'> <span class='zippy toggle-open'> ▼  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2018/'> 2018 </a> <span class='post-count' dir='ltr'>(1)</span> <ul class='hierarchy'> <li class='archivedate expanded'> <a class='toggle' href='javascript:void(0)'> <span class='zippy toggle-open'> ▼  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2018/05/'> May </a> <span class='post-count' dir='ltr'>(1)</span> <ul class='posts'> <li><a href='https://sivanihonjin.blogspot.com/2018/05/how-to-easily-make-ntfs-partitions-read.html'>How to Easily make ‘NTFS’ Partitions read-only in ...</a></li> </ul> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2016/'> 2016 </a> <span class='post-count' dir='ltr'>(3)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2016/07/'> July </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2016/01/'> January </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2015/'> 2015 </a> <span class='post-count' dir='ltr'>(6)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2015/12/'> December </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2015/11/'> November </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2015/07/'> July </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2015/04/'> April </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2014/'> 2014 </a> <span class='post-count' dir='ltr'>(7)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2014/12/'> December </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2014/07/'> July </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2014/06/'> June </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2014/05/'> May </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2014/01/'> January </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2013/'> 2013 </a> <span class='post-count' dir='ltr'>(19)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2013/12/'> December </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2013/09/'> September </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2013/08/'> August </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2013/07/'> July </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2013/06/'> June </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2013/05/'> May </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2013/04/'> April </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2013/03/'> March </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2013/02/'> February </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2013/01/'> January </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2012/'> 2012 </a> <span class='post-count' dir='ltr'>(39)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2012/12/'> December </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2012/11/'> November </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2012/10/'> October </a> <span class='post-count' dir='ltr'>(8)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2012/09/'> September </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2012/07/'> July </a> <span class='post-count' dir='ltr'>(6)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2012/06/'> June </a> <span class='post-count' dir='ltr'>(6)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2012/05/'> May </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2012/04/'> April </a> <span class='post-count' dir='ltr'>(8)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2012/03/'> March </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2011/'> 2011 </a> <span class='post-count' dir='ltr'>(62)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2011/12/'> December </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2011/11/'> November </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2011/10/'> October </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2011/08/'> August </a> <span class='post-count' dir='ltr'>(7)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2011/07/'> July </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2011/06/'> June </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2011/05/'> May </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2011/04/'> April </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2011/03/'> March </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2011/02/'> February </a> <span class='post-count' dir='ltr'>(11)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2011/01/'> January </a> <span class='post-count' dir='ltr'>(16)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2010/'> 2010 </a> <span class='post-count' dir='ltr'>(110)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2010/12/'> December </a> <span class='post-count' dir='ltr'>(19)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2010/11/'> November </a> <span class='post-count' dir='ltr'>(13)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2010/10/'> October </a> <span class='post-count' dir='ltr'>(7)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2010/09/'> September </a> <span class='post-count' dir='ltr'>(7)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2010/07/'> July </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2010/06/'> June </a> <span class='post-count' dir='ltr'>(10)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2010/05/'> May </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2010/04/'> April </a> <span class='post-count' dir='ltr'>(15)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2010/03/'> March </a> <span class='post-count' dir='ltr'>(7)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2010/02/'> February </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://sivanihonjin.blogspot.com/2010/01/'> January </a> <span class='post-count' dir='ltr'>(21)</span> </li> </ul> </li> </ul> </div> </div> <div class='clear'></div> </div> </div> </div> </aside> </div> </div> <div class='column-right-outer'> <div class='column-right-inner'> <aside> </aside> </div> </div> </div> <div style='clear: both'></div> <!-- columns --> </div> <!-- main --> </div> </div> <div class='main-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> <footer> <div class='footer-outer'> <div class='footer-cap-top cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left footer-fauxborder-left'> <div class='fauxborder-right footer-fauxborder-right'></div> <div class='region-inner footer-inner'> <div class='foot no-items section' id='footer-1'></div> <table border='0' cellpadding='0' cellspacing='0' class='section-columns columns-2'> <tbody> <tr> <td class='first columns-cell'> <div class='foot no-items section' id='footer-2-1'></div> </td> <td class='columns-cell'> <div class='foot no-items section' id='footer-2-2'></div> </td> </tr> </tbody> </table> <!-- outside of the include in order to lock Attribution widget --> <div class='foot section' id='footer-3' name='Footer'><div class='widget Attribution' data-version='1' id='Attribution1'> <div class='widget-content' style='text-align: center;'> Sivakumar. Simple theme. Theme images by <a href='http://www.istockphoto.com/googleimages.php?id=4072573&platform=blogger&langregion=en' target='_blank'>gaffera</a>. Powered by <a href='https://www.blogger.com' target='_blank'>Blogger</a>. </div> <div class='clear'></div> </div></div> </div> </div> <div class='footer-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> </footer> <!-- content --> </div> </div> <div class='content-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> </div> <script type='text/javascript'> window.setTimeout(function() { document.body.className = document.body.className.replace('loading', ''); }, 10); </script> <script type="text/javascript" src="https://www.blogger.com/static/v1/widgets/3432011497-widgets.js"></script> <script type='text/javascript'> window['__wavt'] = 'AEUoTZrjFm_akh1rGnQGnRY5uRMA:1784647325908';_WidgetManager._Init('//www.blogger.com/rearrange?blogID\x3d2916662426460066736','//sivanihonjin.blogspot.com/search?updated-max\x3d2011-10-25T04:06:00-07:00\x26max-results\x3d100\x26reverse-paginate\x3dtrue','2916662426460066736'); _WidgetManager._SetDataContext([{'name': 'blog', 'data': {'blogId': '2916662426460066736', 'title': 'Nihonjin \u30b7\u30ef\u30af\u30de\u30eb Sivakumar\x27s Blog', 'url': 'https://sivanihonjin.blogspot.com/search?updated-max\x3d2011-10-25T04:06:00-07:00\x26max-results\x3d100\x26reverse-paginate\x3dtrue', 'canonicalUrl': 'http://sivanihonjin.blogspot.com/search?updated-max\x3d2011-10-25T04:06:00-07:00\x26max-results\x3d100\x26reverse-paginate\x3dtrue', 'homepageUrl': 'https://sivanihonjin.blogspot.com/', 'searchUrl': 'https://sivanihonjin.blogspot.com/search', 'canonicalHomepageUrl': 'http://sivanihonjin.blogspot.com/', 'blogspotFaviconUrl': 'https://sivanihonjin.blogspot.com/favicon.ico', 'bloggerUrl': 'https://www.blogger.com', 'hasCustomDomain': false, 'httpsEnabled': true, 'enabledCommentProfileImages': true, 'gPlusViewType': 'FILTERED_POSTMOD', 'adultContent': false, 'analyticsAccountNumber': '', 'encoding': 'UTF-8', 'locale': 'en', 'localeUnderscoreDelimited': 'en', 'languageDirection': 'ltr', 'isPrivate': false, 'isMobile': false, 'isMobileRequest': false, 'mobileClass': '', 'isPrivateBlog': false, 'isDynamicViewsAvailable': true, 'feedLinks': '\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Nihonjin \u30b7\u30ef\u30af\u30de\u30eb Sivakumar\x26#39;s Blog - Atom\x22 href\x3d\x22https://sivanihonjin.blogspot.com/feeds/posts/default\x22 /\x3e\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/rss+xml\x22 title\x3d\x22Nihonjin \u30b7\u30ef\u30af\u30de\u30eb Sivakumar\x26#39;s Blog - RSS\x22 href\x3d\x22https://sivanihonjin.blogspot.com/feeds/posts/default?alt\x3drss\x22 /\x3e\n\x3clink rel\x3d\x22service.post\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Nihonjin \u30b7\u30ef\u30af\u30de\u30eb Sivakumar\x26#39;s Blog - Atom\x22 href\x3d\x22https://www.blogger.com/feeds/2916662426460066736/posts/default\x22 /\x3e\n', 'meTag': '', 'adsenseHostId': 'ca-host-pub-1556223355139109', 'adsenseHasAds': false, 'adsenseAutoAds': false, 'boqCommentIframeForm': true, 'loginRedirectParam': '', 'view': '', 'dynamicViewsCommentsSrc': '//www.blogblog.com/dynamicviews/4224c15c4e7c9321/js/comments.js', 'dynamicViewsScriptSrc': '//www.blogblog.com/dynamicviews/1ffab022afe7beb1', 'plusOneApiSrc': 'https://apis.google.com/js/platform.js', 'disableGComments': true, 'interstitialAccepted': false, 'sharing': {'platforms': [{'name': 'Get link', 'key': 'link', 'shareMessage': 'Get link', 'target': ''}, {'name': 'Facebook', 'key': 'facebook', 'shareMessage': 'Share to Facebook', 'target': 'facebook'}, {'name': 'BlogThis!', 'key': 'blogThis', 'shareMessage': 'BlogThis!', 'target': 'blog'}, {'name': 'X', 'key': 'twitter', 'shareMessage': 'Share to X', 'target': 'twitter'}, {'name': 'Pinterest', 'key': 'pinterest', 'shareMessage': 'Share to Pinterest', 'target': 'pinterest'}, {'name': 'Email', 'key': 'email', 'shareMessage': 'Email', 'target': 'email'}], 'disableGooglePlus': true, 'googlePlusShareButtonWidth': 0, 'googlePlusBootstrap': '\x3cscript type\x3d\x22text/javascript\x22\x3ewindow.___gcfg \x3d {\x27lang\x27: \x27en\x27};\x3c/script\x3e'}, 'hasCustomJumpLinkMessage': false, 'jumpLinkMessage': 'Read more', 'pageType': 'index', 'pageName': '', 'pageTitle': 'Nihonjin \u30b7\u30ef\u30af\u30de\u30eb Sivakumar\x27s Blog'}}, {'name': 'features', 'data': {}}, {'name': 'messages', 'data': {'edit': 'Edit', 'linkCopiedToClipboard': 'Link copied to clipboard!', 'ok': 'Ok', 'postLink': 'Post Link'}}, {'name': 'template', 'data': {'name': 'Simple', 'localizedName': 'Simple', 'isResponsive': false, 'isAlternateRendering': false, 'isCustom': false, 'variant': 'wide', 'variantId': 'wide'}}, {'name': 'view', 'data': {'classic': {'name': 'classic', 'url': '?view\x3dclassic'}, 'flipcard': {'name': 'flipcard', 'url': '?view\x3dflipcard'}, 'magazine': {'name': 'magazine', 'url': '?view\x3dmagazine'}, 'mosaic': {'name': 'mosaic', 'url': '?view\x3dmosaic'}, 'sidebar': {'name': 'sidebar', 'url': '?view\x3dsidebar'}, 'snapshot': {'name': 'snapshot', 'url': '?view\x3dsnapshot'}, 'timeslide': {'name': 'timeslide', 'url': '?view\x3dtimeslide'}, 'isMobile': false, 'title': 'Nihonjin \u30b7\u30ef\u30af\u30de\u30eb Sivakumar\x27s Blog', 'description': 'This blog is made for Expressing My Ideas, Views, and to put some technical datas.', 'url': 'https://sivanihonjin.blogspot.com/search?updated-max\x3d2011-10-25T04:06:00-07:00\x26max-results\x3d100\x26reverse-paginate\x3dtrue', 'type': 'feed', 'isSingleItem': false, 'isMultipleItems': true, 'isError': false, 'isPage': false, 'isPost': false, 'isHomepage': false, 'isArchive': false, 'isSearch': true, 'isLabelSearch': false, 'search': {}}}]); _WidgetManager._RegisterWidget('_NavbarView', new _WidgetInfo('Navbar1', 'navbar', document.getElementById('Navbar1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HeaderView', new _WidgetInfo('Header1', 'header', document.getElementById('Header1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogView', new _WidgetInfo('Blog1', 'main', document.getElementById('Blog1'), {'cmtInteractionsEnabled': false, 'lightboxEnabled': true, 'lightboxModuleUrl': 'https://www.blogger.com/static/v1/jsbin/3899201366-lbx.js', 'lightboxCssUrl': 'https://www.blogger.com/static/v1/v-css/828616780-lightbox_bundle.css'}, 'displayModeFull')); _WidgetManager._RegisterWidget('_PollView', new _WidgetInfo('Poll1', 'sidebar-left-1', document.getElementById('Poll1'), {'pollid': '-6504448491053621198', 'iframeurl': '/b/poll-results?pollWidget\x3dPoll1\x26txtclr\x3d%23222222\x26lnkclr\x3d%23249fa3\x26chrtclr\x3d%23249fa3\x26font\x3dnormal+normal+12px+Arial,+Tahoma,+Helvetica,+FreeSans,+sans-serif\x26hideq\x3dtrue\x26purl\x3dhttps://sivanihonjin.blogspot.com/'}, 'displayModeFull')); _WidgetManager._RegisterWidget('_ImageView', new _WidgetInfo('Image1', 'sidebar-left-1', document.getElementById('Image1'), {'resize': false}, 'displayModeFull')); _WidgetManager._RegisterWidget('_FollowersView', new _WidgetInfo('Followers1', 'sidebar-left-1', document.getElementById('Followers1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML2', 'sidebar-left-1', document.getElementById('HTML2'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogArchiveView', new _WidgetInfo('BlogArchive1', 'sidebar-left-1', document.getElementById('BlogArchive1'), {'languageDirection': 'ltr', 'loadingMessage': 'Loading\x26hellip;'}, 'displayModeFull')); _WidgetManager._RegisterWidget('_AttributionView', new _WidgetInfo('Attribution1', 'footer-3', document.getElementById('Attribution1'), {}, 'displayModeFull')); </script> </body> </html>