Sunday, December 26, 2010

mstsc /console

In addition to the various desktop and laptop computers in my household, I also manage a couple servers, one of which runs Windows Small Business Server 2003, which is located in my garage. Typically I connect to it using Remote Desktop Connection using the /console switch so that I can manage it as if I was at the console.

For the past week or two (maybe longer, I’m not sure) I’ve been frustrated that when I try to connect to the console from my Windows Vista desktop I get a new Terminal Services session rather than connecting to the console. Today I finally decided to figure this out.

It turns out that, due to some changes in Windows Server 2008 and to some ambiguity in the /console switch, Microsoft has made some changes to the mstsc command. The change that relates to my problem is that they’ve renamed the /console switch to /admin.

Thursday, December 23, 2010

Thay đổi password bằng lệnh linux

echo -e "script\nscript" | (passwd --stdin username)

Thursday, December 9, 2010

Web software cho phép upload nhé

3. Các chiêu khai thác chiến đấu với anh em :

a. Không thấy cấm loại file nào, thế thì cho nguyên cái gì vào cũng được
b. Thử upload các loại file thông dụng: asp, aspx, php, php3, php5, cgi, pl, py, jsp.
c. Nếu nó cấm hết ở mục b thì ta thử các file pro hơn: exe, bat <— đừng hỏi run cái loại này thế nào nhé . d. Nếu cho upload mỗi file image (bmp, gif, jpg, jpeg) thì sao ?
+ Thử thay đuôi cá xem : shell.php.jpg
+ Thử chơi NULL byte: shell.php.jpg
+ Thử mấy HEX byte chơi trội: shell.php%25%30%30.jpg
+ Thử mấy Unicode Byte shell.phpU+0025U+0030.jpg
+ Kiếm một file ảnh JPG, nhét nguyên code con shell vào trong comment của photo
+ Chèn code shell vào header của photo

Trích dẫn


+ Trường hợp chuối: nó kiểm tra file type bằng cách soi ngay cái đuôi liền ví dụ: photo.jpg <– được, nhưng photo.x.jpg <— cái này không được … tự hiểu cách xử lý củ chuối này nha + Cao cấp: upload qua SQL Injection , ví dụ với MySQL thì loadfile() <— tuy nhiên chỉ cắn được nếu user là root@localhost; MSSQL hay Oracle thì chuối hơn … + Cao cấp: upload bừa một file html lên xem có được hay không

4. Tìm vị trí file đã upload lên:
+ Up xong nó cho cái link file đã upload
+ Dùng scanner để tìm các folder rồi lần mò vị trí file uploaded
+ Nhìn loanh quanh xem mấy vị trí nó để photo hay tài liệu gì đó xem link nó thế nào rồi kiểm tra thử
+ Phán đoán & suy luận & kinh nghiệm

Và cuối cùng, tự tìm hiểu nha bạn

Sunday, November 7, 2010

Script to read Oracle's alert log

The following script creates two tables: read_alert and read_alert_disk.
read_alert_disk is an external table and contains the content of the alert log.
read_alert will be empty after this script has been executed. It is used by the update_alert_log script, shown further below.
define alert_length="2000"

drop table alert_log;

create table alert_log (
alert_date date,
alert_text varchar2(&&alert_length)
storage (initial 512k next 512K pctincrease 0);

create index alert_log_idx on alert_log(alert_date)
storage (initial 512k next 512K pctincrease 0);

column db new_value _DB noprint;
column bdump new_value _bdump noprint;

select instance_name db from v$instance;

select value bdump from v$parameter
where name ='background_dump_dest';

drop directory BDUMP;
create directory BDUMP as '&&_bdump';

drop table alert_log_disk;

create table alert_log_disk ( text varchar2(&&alert_length) )
organization external (
type oracle_loader
default directory BDUMP
access parameters (
records delimited by newline nologfile nobadfile
fields terminated by "&" ltrim
reject limit unlimited;


Now, after the two tables are created, the alert_log table can be filled with the following script. It only loads those records that are greater than the last time it loaded. And it loads the date/time on every line for convienance. It also helps when the alertlogs get rotated. You still keep the history within an Oracle table. Finally, it also strips out all the «crap» that is really not needed to see if you are looking for errors.
set serveroutput on


isdate number := 0;
start_updating number := 0;
rows_inserted number := 0;

alert_date date;
max_date date;

alert_text alert_log_disk.text%type;


/* find a starting date */
select max(alert_date) into max_date from alert_log;

if (max_date is null) then
max_date := to_date('01-jan-1980', 'dd-mon-yyyy');
end if;

for r in (
select substr(text,1,180) text from alert_log_disk
where text not like '%offlining%'
and text not like 'ARC_:%'
and text not like '%LOG_ARCHIVE_DEST_1%'
and text not like '%Thread 1 advanced to log sequence%'
and text not like '%Current log#%seq#%mem#%'
and text not like '%Undo Segment%lined%'
and text not like '%alter tablespace%back%'
and text not like '%Log actively being archived by another process%'
and text not like '%alter database backup controlfile to trace%'
and text not like '%Created Undo Segment%'
and text not like '%started with pid%'
and text not like '%ORA-12012%'
and text not like '%ORA-06512%'
and text not like '%ORA-000060:%'
and text not like '%coalesce%'
and text not like '%Beginning log switch checkpoint up to RBA%'
and text not like '%Completed checkpoint up to RBA%'
and text not like '%specifies an obsolete parameter%'
and text not like '%BEGIN BACKUP%'
and text not like '%END BACKUP%'

isdate := 0;
alert_text := null;

select count(*) into isdate
from dual
where substr(r.text, 21) in ('2003','2004','2005','2006','2007')
and r.text not like '%cycle_run_year%';

if (isdate = 1) then

select to_date(substr(r.text, 5),'Mon dd hh24:mi:ss rrrr')
into alert_date
from dual;

if (alert_date > max_date) then
start_updating := 1;
end if;

alert_text := r.text;
end if;

if (alert_text is not null) and (start_updating = 1) then

insert into alert_log values (alert_date, substr(alert_text, 1, 180));
rows_inserted := rows_inserted + 1;

end if;

end loop;

sys.dbms_output.put_line('Inserting after date '||to_char(max_date, 'MM/DD/RR HH24:MI:SS'));
sys.dbms_output.put_line('Rows Inserted: '||rows_inserted);



Let's execute the script:
SQL> @update_alert_log

Inserting after date 01/01/80 00:00:00
Rows Inserted: 17361

PL/SQL procedure successfully completed.
The alert_log table now contains the errors as recorded in the alert.log file:
select alert_date, substr(alert_text,1, 69)
from alert_log;

12-JUL-06 Error stack returned to user:
12-JUL-06 ORA-02049: timeout: distributed transaction waiting for lock
16-JUL-06 Errors in file /usr/local/opt/oracle/admin/P2BL36A/udump/p2bl36a_ora_
18-JUL-06 ORACLE Instance P2BL36A - Can not allocate log, archival required
18-JUL-06 Thread 1 cannot allocate new log, sequence 265396
18-JUL-06 All online logs needed archiving
18-JUL-06 ORACLE Instance P2BL36A - Can not allocate log, archival required
18-JUL-06 Thread 1 cannot allocate new log, sequence 265397
18-JUL-06 All online logs needed archiving
18-JUL-06 ORACLE Instance P2BL36A - Can not allocate log, archival required
18-JUL-06 Thread 1 cannot allocate new log, sequence 265398
18-JUL-06 All online logs needed archiving
23-JUL-06 Errors in file /usr/local/opt/oracle/admin/P2BL36A/udump/p2bl36a_ora_
25-JUL-06 Errors in file /usr/local/opt/oracle/admin/P2BL36A/bdump/p2bl36a_s001
25-JUL-06 ORA-07445: exception encountered: core dump [kpnrls()+148] [SIGBUS] [
25-JUL-06 ORA-03113: end-of-file on communication channel
25-JUL-06 ORA-02063: preceding line from FRD01
25-JUL-06 found dead shared server 'S001', pid = (21, 1)
27-JUL-06 alter tablespace TBS01
27-JUL-06 add datafile '/ora106/ORACLE/P2BL36A/dbf/tbs01P2BL36A_32.dbf' size 20
27-JUL-06 ORA-1119 signalled during: alter tablespace TBS01
27-JUL-06 add datafile '/ora106/ORACL...
27-JUL-06 alter tablespace TBS01
27-JUL-06 add datafile '/ora106/ORACLE/P2BL36A/dbf/tbs01P2BL36A_32.dbf' size 20
27-JUL-06 Completed: alter tablespace TBS01
27-JUL-06 add datafile '/ora106/ORACL
28-JUL-06 ORA-01555 caused by SQL statement below (Query Duration=59968 sec, SC


The scripts above are provided by Shawn M Ellinger.

Đồng bộ ngày tháng trên server

ntpdate –q <địa chỉ time_server>


rdate -s <địa chỉ time_server>

Wednesday, October 20, 2010

Starting NFS quotas: Cannot register service

I would like to start using NFS on the server, but the service refuses to start:
[root@Meg root]# /etc/init.d/nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: Cannot register service:
RPC: Unable to receive; errno = Connection refused
rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS, udp).
Starting NFS daemon:
(at this point it does nothing for several minutes,
and I have to press Ctrl+C to stop it)

Each time that you start the NFS service, a dynamic port number is assigned to nfsd. This assignment is made through the 'Portmapper' daemon. So, before starting NFS, you need to switch on the portmapper service...In Red Hat 8/9, you can do that with

service portmap start

and If you want portmapper to start everytime at startup then as root

chkconfig portmap on

Now once portmapper gets running, you can start your NFS server

service nfs start

To start NFS at system startup, as root, give the command -

chkconfig nfs on

Please note that for SUSE, you may need to use

/etc/rc.d/init.d/portmap start
/etc/rc.d/init.d/nfs start

Hope that helps..

Tuesday, September 28, 2010

Create symlink

A symlink can be created like:

ln -s /path/ linkname

from the ln man pages:

ln [OPTION]… [-T] TARGET LINK_NAME (1st form)

-s, –symbolic
make symbolic links instead of hard links

to remove a symlink

rm linkname

What is important here is to note that the command doesn’t have the trailing slash

$ rm linkname/

will output the error:
rm: cannot remove `linkname/': Is a directory

$ rmdir linkname/
will output:
rmdir: linkname/: Not a directory

So it’s a directory or not?? i guess different tools have different ways of looking at this. Isn’t GNU/Linux great?! :D

Monday, September 6, 2010

Remove segment error

Kiểm tra xem có tableSpace nào offline không !
select tablespace_name,status from dba_tablespaces;

-- Tạo mới 1 Tablespce Undu mới undotbs02
create undo tablespace undotbs2 datafile
'E:\Oracle\product\10.2.0\oradata\CPWEB\undotbs02. dbf' size 50M reuse autoextend on;
-- Set là default = undotbs2
alter system set undo_tablespace=undotbs2;

SQL> select segment_name, status, tablespace_name from dba_rollback_segs where status='NEEDS RECOVERY';

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

10 rows selected.

SQL> show parameter undo;

------------------------------------ ----------- ---------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS2

-- Tạo pfile để startup
SQL> create pfile='init20_01_2010.ora' from spfile;
File created.
-- Sửa lại và thêm vào pfile "E:\Oracle\product\10.2.0\db_1\database\init20_01_ 2010.ora"
*._corrupted_rollback_segments=('_SYSSMU1$','_SYSS MU2$','_SYSSMU3$','_SYSSMU4$',
'_SYSSMU4$','_SYSSMU5$','_SYSSMU6$','_SYSSMU7$','_ SYSSMU8$','_SYSSMU9$','_SYSSMU10$')

-- Shutdown database
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

-- Startup với Pfile
SQL> startup restrict mount pfile="E:\Oracle\product\10.2.0\db_1\database\init 20_01_2010.ora"
ORACLE instance started.
Total System Global Area 612368384 bytes
Fixed Size 1298160 bytes
Variable Size 314573072 bytes
Database Buffers 289406976 bytes
Redo Buffers 7090176 bytes
Database mounted.

--- Kiểm tra xem có đúng làm tablespace Undo có phải là UNDOTBS1
SQL> show parameter undo;
------------------------------------ ----------- ---------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1

-- Mở DB
SQL> alter database open;
Database altered.

drop rollback segment "_SYSSMU1$";
drop rollback segment "_SYSSMU2$";
drop rollback segment "_SYSSMU3$";
drop rollback segment "_SYSSMU4$";
drop rollback segment "_SYSSMU5$";
drop rollback segment "_SYSSMU6$";
drop rollback segment "_SYSSMU7$";
drop rollback segment "_SYSSMU8$";
drop rollback segment "_SYSSMU9$";
drop rollback segment "_SYSSMU10$";
drop rollback segment "_SYSSMU21$";
drop rollback segment "_SYSSMU22$";

-- Kiểm tra lại.
SQL> select segment_name, tablespace_name,status from dba_rollback_segs;
------------------------------ ------------------------------ ----------------

11 rows selected.

-- Nếu không còn thấy UNDOTBS1 là có thề xóa được.
SQL> drop tablespace undotbs1;
Tablespace dropped.

-- Tạo lại UNDOTBS1
SQL> create undo tablespace undotbs1 datafile
2 'E:\Oracle\product\10.2.0\oradata\CPWEB\undotbs01. dbf' size 50M reuse autoextend on;
Tablespace created.

SQL> alter system set undo_tablespace=undotbs1;
System altered.

-- Shutdown và startup lại !

Monday, August 23, 2010

Ora-01536 space quota exceed

I am facing problem of ora-01536 problem.

The error says that ORA-01536:
space quota exceed for tablespace 'TBS_AC_INDX' but it has 100 MB space and only using 3 MB.

What is the problem.


Though I am not an expert in this area, I would advise you to try this out


(where username is your schema name which is using this tablespace)

Hope this helps you.

Wednesday, August 11, 2010

ORA-14086: a partitioned index may not be rebuilt as a whole

ORA-14086: a partitioned index may not be rebuilt as a whole

Rebuilding a partitioned index is slightly different then rebuilding a normal (non-partitioned) index. So you should do this in the following way


Flash CS4 - Bài 17: sử dụng Motion presets để tạo slideshow (Phần lý thuyết bổ sung cho thực hành)

TTO - Xử lý ảnh bằng Photoshop trước khi import vào Flash.

Thông thường, các ảnh chụp có kích thước lớn. Nếu bạn import trực tiếp vào Flash để tạo slideshow sẽ làm tác phẩm của bạn có kích thước lớn, gây khó khăn cho người xem vì phải chờ trình duyệt tải về.

Có nhiều cách để làm giảm kích thước ảnh. Trong bài 16 bạn sử dụng Photoshop CS4 để thực hiện theo cách thủ công áp dụng cho từng tấm ảnh. Trong bài này bạn sẽ tạo một droplet để thực hiện tự động cho hàng loạt ảnh.

Droplet là một file exe do Photoshop tạo ra. Droplet giúp bạn thực hiện hàng loạt các thao tác đã được ghi lại thành Action trong Photoshop. Các bước thực hiện như sau:

Sau khi đã chạy chương trình Photoshop CS4, bạn chọn File > Open… từ menu để mở ảnh cần xử lý:

Hộp thoại Open xuất hiện. Bạn chuyển đến vị trí file ảnh cần xử lý, bấm chọn file (ví dụ Blue hills.jpg) và bấm nút Open:

Phần tiếp theo, bạn sẽ sử dụng Action để lưu lại các bước thực hiện. Sau đó thực hiện tự động việc làm giảm kích thước và tối ưu hóa hàng loạt ảnh cho một folder.

Chọn Window > Actions từ menu (Hoặc phím tắt Alt+F9):

Actions Panel xuất hiện. Bấm vào nút Create new action:

Hộp thoại New Action xuất hiện với tên mặc định là Action 1:

Bạn gõ tên Resize and optimize vào ô Name và bấm nút Record để bắt đầu ghi lại các thao tác:

Trên Actions Panel xuất hiện action mới có tên Resize and optimize đang được chiếu sáng và nút Record màu đỏ đang hoạt động:

Bạn bắt đầu thực hiện các thao tác như sau:

Để làm giảm kích thước file, bạn chọn Image > Image Size… từ menu:

Hộp thoại Image Size xuất hiện:

Bạn chỉnh lại thông số như sau: gõ giá trị 320 vào ô Width, lúc này giá trị ô Height sẽ thay đổi theo vì mục Constrain Proportions đang được chọn. Nếu muốn thay đổi độc lập các giá trị này, bạn bỏ chọn mục Constrain Proportions. Ở mục Resample Image, bạn bấm cho menu xổ xuống và chọn Bicubic Sharper (best for reduction) (Bạn chọn mục này để giúp ảnh sắc nét hơn khi giảm kích thước):

Bạn thiết lập thông số mới cho ảnh xong và bấm OK để đóng hộp thoại:

Trên Actions Panel, thao tác của bạn đã được ghi lại với tên gọi là Image Size:

Tiếp theo, bạn sẽ tối ưu hóa và lưu ảnh. Bạn chọn File > Save for Web & Devices từ menu:

Hộp thoại Save for Web & Devices xuất hiện:

Thẻ 2-up và các thông số bên phải là JPEG High đang được chọn do Photoshop ghi nhớ tùy chọn này trước đó:

Hoặc một thẻ khác được chọn tùy theo thông số thiết lập trước đó:

Bạn chọn thẻ 2 up để thiết lập chế độ xem 2 ảnh một lúc: một ảnh gốc và một ảnh được tối ưu hóa:

Bạn thu được chế độ xem hai ảnh: ảnh trên là ảnh gốc với kích thước 225K, ảnh dưới được tối ưu hóa dạng file GIF với kích thước 42.13K

Bạn thay đổi dạng file bằng cách bấm vào menu xổ xuống bên phải, chọn dạng mới là JPEG:

Dạng mới được chọn là JPEG với chất lượng thiết lập là High, Quality là 60. Ô Optimized được chọn như hình bên dưới.

(Bạn có thể thử thay đổi các thông số và xem ảnh được cập nhật trước khi chọn các thông số bạn ưng ý)

Để lưu ảnh với các thông số được thiết lập. Bạn bấm nút Save:

Hộp thoại Save Optimized As xuất hiện. Di chuyển đến folder cần lưu ảnh (ví dụ folder có tên là save for flash), đặt tên file là Blue-hills, ở mục Save as type bạn chọn Images Only (*.jpg) và bấm nút Save để đóng hộp thoại lại:

Trên Actions Panel, thao tác của bạn đã được ghi lại với tên gọi là Export:

Tiếp theo bạn thực hiện thao tác đóng file lại.

Chọn File > Close từ menu (Hoặc phím tắt Ctrl+W):

Photoshop hỏi bạn có muốn lưu trước khi đóng file lại không. Bạn chọn No để giữ nguyên bản gốc của ảnh.

Trên Actions Panel, thao tác của bạn đã được ghi lại với tên gọi là Close:

Các thao tác đã được thực hiện xong. Bấm nút Stop để ngưng việc ghi lại các thao tác.

Bấm chọn lại action Resize and optimize ở Actions Panel:

Chọn File > Automate > Create Droplet… từ menu:

Hộp thoại Create Droplet xuất hiện:

Photoshop đề nghị tạo droplet có tên gọi resize and optimize.exe và lưu ở Destop. Bạn bấm nút OK để chấp nhận hoặc bấm nút Choose… để lưu ở nơi khác.

Khi đó hộp thoại Save xuất hiện. Bạn di chuyển đến nơi cần lưu droplet, đặt tên mới và bấm nút Save.

Trong bài thực hành này bạn sẽ lưu droplet ở Destop. Photoshop tạo droplet với biểu tượng mũi tên xanh có chữ Ps như hình minh họa:

Giả sử bộ sưu tập ảnh của bạn được lưu ở folder my images đang để sẵn trên Destop. Bạn dùng chuột kéo folder này thả lên droplet vừa được Photoshop tạo ra:

Photoshop sẽ được kích hoạt, từng tấm ảnh trong folder my images sẽ được xử lý. Nếu để ý, bạn sẽ thấy Actions Panel xuất hiện thông tin về Droplet đang hoạt động:

Sau vài giây bạn thu được một bộ sưu tập ảnh đã được xử lý chứa trong folder save for flash đã được tạo trước đó, sẵn sàng đưa vào Flash để tạo slideshow:

Công ty TNHH Khải Thiên (KTC Co., Ltd)

Thursday, May 20, 2010

This is a linux command line reference for common operations

This is a linux command line reference for common operations.
Examples marked with • are valid/safe to paste without modification into a terminal, so
you may want to keep a terminal window open while reading this so you can
All these commands have been tested both on Fedora and Ubuntu.

apropos whatisShow commands pertinent to string. See also threadsafe
man -t man | ps2pdf - > man.pdfmake a pdf of a manual page

which commandShow full path name of command

time commandSee how long a command takes
time catStart stopwatch. Ctrl-d to stop. See also sw
nice infoRun a low priority command (The "info" reader in this case)
renice 19 -p $$Make shell (script) low priority. Use for non interactive tasks
dir navigation
cd -Go to previous directory
cdGo to $HOME directory

(cd dir && command)Go to dir, execute command and return to current dir
pushd .Put current dir on stack so you can popd back to it
alias l='ls -l --color=auto'quick dir listing
ls -lrtList files by date. See also newest and find_mm_yyyy
ls /usr/bin | pr -T9 -W$COLUMNSPrint in 9 columns to width of terminal

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

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

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

find -maxdepth 1 -type d | while read dir; do echo $dir; echo cmd2; doneProcess each item with multiple commands (in while loop)
find -type f ! -perm -444Find files not readable by all (useful for web site)
find -type d ! -perm -111Find dirs not accessible by all (useful for web site)
locate -r 'file[^/]*\.txt'Search cached index for names. This re is like glob *file*.txt
look referenceQuickly search (sorted) dictionary for prefix
grep --color reference /usr/share/dict/wordsHighlight occurances of regular expression in dictionary
archives and compression

gpg -c fileEncrypt file

gpg file.gpgDecrypt file

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

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

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

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

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

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

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

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

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

rsync -P rsync:// fileOnly get diffs. Do multiple times for troublesome downloads

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

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

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

ssh $USER@$HOST commandRun command on $HOST as $USER (default command=shell)
ssh -f -Y $USER@$HOSTNAME xeyesRun GUI command on $HOSTNAME as $USER

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

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

ssh -R 1434:imap:143 root@$HOSTForward connections from $HOST:1434 in to imap:143
wget (multi purpose download tool)
(cd dir/ && wget -nd -pHEKk local browsable version of a page to the current dir

wget -c downloading a partially downloaded file

wget -r -nd -np -l1 -A '*.jpg' a set of files to the current directory

wget ftp://remote/file[1-9].iso/FTP supports globbing directly
wget -q -O- | grep 'a href' | headProcess output directly

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

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

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

wget --mirror update a local copy of a site (handy from cron)
networking (Note ifconfig, route, mii-tool, nslookup commands are obsolete)

ethtool eth0Show status of ethernet interface eth0

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

iwconfig eth1Show status of wireless interface eth1

iwconfig eth1 rate 1Mb/s fixedManually set wireless interface speed
iwlist scanList wireless networks in range
ip link showList network interfaces

ip link set dev eth0 name wanRename interface eth0 to wan

ip link set dev eth0 upBring interface eth0 up (or down)
ip addr showList addresses for interfaces

ip addr add brd + dev eth0Add (or del) ip and mask (
ip route showList routing table

ip route add default via default gateway to
tc qdisc add dev lo root handle 1:0 netem delay 20msecAdd 20ms latency to loopback device (for testing)
tc qdisc del dev lo rootRemove latency added above
host pixelbeat.orgLookup DNS ip address for name or vice versa
hostname -iLookup local ip address (equivalent to host `hostname`)
whois pixelbeat.orgLookup whois info for hostname or ip address
netstat -tuplList internet services on a system
netstat -tupList active connections to/from system
windows networking (Note samba is the package that provides all this windows specific networking support)
smbtreeFind windows machines. See also findsmb

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

smbclient -L windows_boxList shares on windows machine or samba server

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

echo 'message' | smbclient -M windows_boxSend popup to windows machine (off by default in XP sp2)
text manipulation (Note sed uses stdin and stdout. Newer versions support inplace editing with the -i option)

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

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

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

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

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

sed 's/\([`"$\]\)/\\\1/g'Escape shell metacharacters active within double quotes
seq 10 | sed "s/^/ /; s/ *\(.\{7,\}\)/\1/"Right align numbers

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

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

sed -n 's/.*\(.*\)<\/title>.*/\1/ip;T;q'Extract title from HTML web page

sed -i 42d ~/.ssh/known_hostsDelete a particular line

sort -t. -k1,1n -k2,2n -k3,3n -k4,4nSort IPV4 ip addresses
echo 'Test' | tr '[:lower:]' '[:upper:]'Case conversion
tr -dc '[:print:]' < /dev/urandomFilter non printable characters
history | wc -lCount lines
set operations (Note you can export LANG=C for speed. Also these assume no duplicate lines within a file)

sort file1 file2 | uniqUnion of unsorted files

sort file1 file2 | uniq -dIntersection of unsorted files

sort file1 file1 file2 | uniq -uDifference of unsorted files

sort file1 file2 | uniq -uSymmetric Difference of unsorted files

join -t'\0' -a1 -a2 file1 file2Union of sorted files

join -t'\0' file1 file2Intersection of sorted files

join -t'\0' -v2 file1 file2Difference of sorted files

join -t'\0' -v1 -v2 file1 file2Symmetric Difference of sorted files
echo '(1 + sqrt(5))/2' | bc -lQuick math (Calculate φ). See also bc
echo 'pad=20; min=64; (100*10^6)/((pad+min)*8)' | bcMore complex (int) e.g. This shows max FastE packet rate
echo 'pad=20; min=64; print (100E6)/((pad+min)*8)' | pythonPython handles scientific notation
echo 'pad=20; plot [64:1518] (100*10**6)/((pad+x)*8)' | gnuplot -persistPlot FastE packet rate vs packet size
echo 'obase=16; ibase=10; 64206' | bcBase conversion (decimal to hexadecimal)
echo $((0x2dec))Base conversion (hex to dec) ((shell arithmetic expansion))
units -t '100m/9.58s' 'miles/hour'Unit conversion (metric to imperial)
units -t '500GB' 'GiB'Unit conversion (SI to IEC prefixes)
units -t '1 googol'Definition lookup
seq 100 | (tr '\n' +; echo 0) | bcAdd a column of numbers. See also add and funcpy
cal -3Display a calendar
cal 9 1752Display a calendar for a particular month year
date -d friWhat date is it this friday. See also day
[ $(date -d "tomorrow" +%d) = "01" ] || exitexit a script unless it's the last day of the month
date --date='25 Dec' +%AWhat day does xmas fall on, this year
date --date='@2147483647'Convert seconds since the epoch (1970-01-01 UTC) to date
TZ='America/Los_Angeles' dateWhat time is it on west coast of US (use tzselect to find TZ)
date --date='TZ="America/Los_Angeles" 09:00 next Fri'What's the local time for 9AM next Friday on west coast US

echo "mail -s 'get the train' < /dev/null" | at 17:45Email reminder
echo "DISPLAY=$DISPLAY xmessage cooker" | at "NOW + 30 minutes"Popup reminder
printf "%'d\n" 1234Print number with thousands grouping appropriate to locale
BLOCK_SIZE=\'1 ls -lget ls to do thousands grouping appropriate to locale
echo "I live in `locale territory`"Extract info from locale database
LANG=en_IE.utf8 locale int_prefixLookup locale info for specific country. See also ccodes
locale | cut -d= -f1 | xargs locale -kc | lessList fields available in locale database
recode (Obsoletes iconv, dos2unix, unix2dos)
recode -l | lessShow available conversions (aliases on each line)

recode windows-1252.. file_to_change.txtWindows "ansi" to local charset (auto does CRLF conversion)

recode utf-8/CRLF.. file_to_change.txtWindows utf8 to local charset

recode iso-8859-15..utf8 file_to_change.txtLatin9 (western europe) to utf8

recode ../b64 <> file.b64Base64 encode

recode /qp.. <> file.txtQuoted printable decode

recode ..HTML <> file.htmlText to HTML
recode -lf windows-1252 | grep euroLookup table of characters
echo -n 0x80 | recode latin-9/x1..dumpShow what a code represents in latin-9 charmap
echo -n 0x20AC | recode ucs-2/x2..latin-9/xShow latin-9 encoding
echo -n 0x20AC | recode ucs-2/x2..utf-8/xShow utf-8 encoding

gzip < /dev/cdrom > cdrom.iso.gzSave copy of data cdrom

mkisofs -V LABEL -r dir | gzip > cdrom.iso.gzCreate cdrom image from contents of dir

mount -o loop cdrom.iso /mnt/dirMount the cdrom image at /mnt/dir (read only)

cdrecord -v dev=/dev/cdrom blank=fastClear a CDRW

gzip -dc cdrom.iso.gz | cdrecord -v dev=/dev/cdrom -Burn cdrom image (use dev=ATAPI -scanbus to confirm dev)

cdparanoia -BRip audio tracks from CD to wav files in current dir

cdrecord -v dev=/dev/cdrom -audio -pad *.wavMake audio CD from all wavs in current dir (see also cdrdao)

oggenc --tracknum='track' track.cdda.wav -o 'track.ogg'Make ogg file from wav file
disk space (See also FSlint)
ls -lSrShow files by size, biggest last
du -s * | sort -k1,1rn | headShow top disk users in current dir. See also dutop
df -hShow free space on mounted filesystems
df -iShow free inodes on mounted filesystems
fdisk -lShow disks partitions sizes and types (run as root)
rpm -q -a --qf '%10{SIZE}\t%{NAME}\n' | sort -k1,1nList all packages by installed size (Bytes) on rpm distros
dpkg-query -W -f='${Installed-Size;10}\t${Package}\n' | sort -k1,1nList all packages by installed size (KBytes) on deb distros
dd bs=1 seek=2TB if=/dev/null of=ext3.testCreate a large test file (taking no space). See also truncate
> filetruncate data of file or create an empty file
tail -f /var/log/messagesMonitor messages in a log file
strace -c ls >/dev/nullSummarise/profile system calls made by command
strace -f -e open ls >/dev/nullList system calls made by command
ltrace -f -e getenv ls >/dev/nullList library calls made by command
lsof -p $$List paths that process id has open
lsof ~List processes that have specified path open
tcpdump not port 22Show network traffic except ssh. See also tcpdump_not_me
ps -e -o pid,args --forestList processes in a hierarchy
ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed '/^ 0.0 /d'List processes by % cpu usage
ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNSList processes by mem (KB) usage. See also
ps -C firefox-bin -L -o pid,tid,pcpu,stateList all threads for a particular process
ps -p 1,2List info for particular process IDs
last rebootShow system reboot history
free -mShow amount of (remaining) RAM (-m displays in MB)
watch -n.1 'cat /proc/interrupts'Watch changeable data continuously
system information (see also sysinfo) ('#' means root access is required)
uname -aShow kernel version and system architecture
head -n1 /etc/issueShow name and version of distribution
cat /proc/partitionsShow all partitions registered on the system
grep MemTotal /proc/meminfoShow RAM total seen by the system
grep "model name" /proc/cpuinfoShow CPU(s) info
lspci -tvShow PCI info
lsusb -tvShow USB info
mount | column -tList mounted filesystems on the system (and align output)
grep -F capacity: /proc/acpi/battery/BAT0/infoShow state of cells in laptop battery
#dmidecode -q | lessDisplay SMBIOS/DMI information
#smartctl -A /dev/sda | grep Power_On_HoursHow long has this disk (system) been powered on in total
#hdparm -i /dev/sdaShow info about disk sda
#hdparm -tT /dev/sdaDo a read speed test on disk sda
#badblocks -s /dev/sdaTest for unreadable blocks on disk sda
interactive (see also linux keyboard shortcuts)
readlineLine editor used by bash, python, bc, gnuplot, ...
screenVirtual terminals with detach capability, ...
mcPowerful file manager that can browse rpm, tar, ftp, ssh, ...
gnuplotInteractive/scriptable graphing
linksWeb browser
xdg-open .open a file or url with the registered desktop application
alias hd='od -Ax -tx1z -v'Handy hexdump. (usage e.g.: • hd /proc/self/cmdline | less)
alias realpath='readlink -f'Canonicalize path. (usage e.g.: • realpath ~/../$USER)
set | grep $USERSearch current environment

touch -c -t 0304050607 fileSet file timestamp (YYMMDDhhmm)
python -m SimpleHTTPServerServe current directory tree at http://$HOSTNAME:8000/

Tuesday, April 20, 2010

Linux Boot/Shutdown


The Linux system performs the boot process automatically when the system is turned on. There a series of messages that display during this process. If there are problems, error messages will display.

The scripts used to control how the system will work are stored in the /etc directory. Mainly /etc/inittab and /etc/rc.d. You can view these files but we strongly recommend that you not attempt to change them unless you are an experienced Linux administrator.


Linux, like any server operating system, does not like it if you just turn the power off. You risk the possibilities of damaging the operating system. Before turning the power off, you must execute the 'shutdown' command.

Options What it does
now shutdown immediately
+n n is the number of minutes to wait
-h actually halt system, ready for power off
-r shutdown and automatically perform a re-boot
-c cancel the shutdown
Examples What it does
shutdown now -h To shutdown the system immediately, ready for power off
shutdown +10 -h To shutdown the system in 10 minutes and ready for power off
shutdown now -r or reboot To shutdown and automatically reboot


If the system is already up and running, you can use the init command to start/stop the status of the system.

Options What it does
0 halt system
1 single user mode (for maintenance purposes, won't allow others to login)
3 multi-user mode (normal mode)
5 multi-user mode with GUI started (normal level for workstations using Xwindows)
6 reboot
Examples What it does
init 1 To set single user mode
init 6 reboot

Cleaning the File System

fsck is automatically run every time the system boots. Occasionally you may have to run fsck manually to fix a damaged file system. Because the results and options can vary greater, it is recommended to only run this utility with the advice of an Linux administrator. Must be run from the root account.

Saturday, February 27, 2010

Cài đặt lậu vBulletin gặp nhiều rủi ro

Một tập tin nhỏ có trong diễn đàn sử dụng nền tảng vBulletin lậu có thể bị khai thác để đánh cắp thông tin nhạy cảm.

Trong các phiên bản vBulletin lậu đã xóa bỏ mã kiểm tra bản quyền thường được gọi là "null version" chứa một tập tin có thể bị khai thác để xem toàn bộ danh sách các tin tập và thư mục trong thư mục cài đặt.

vBulletin là phần mềm diễn đàn (forum) thương mại được phát triển trên ngôn ngữ PHP và cơ sở dữ liệu MySQL. Kể từ năm 2000, nền tảng vBulletin đã trở nên phổ biến hơn các nền tảng forum khác như phpBB và SMF (miễn phí) hay Invision Board (thương mại) nhờ vào chế độ hỗ trợ chuyên nghiệp, nhiều tính năng tích hợp sẵn và cộng đồng sử dụng cũng như phát triển các tiện ích mở rộng (mod, hack) khá đông đảo.

Hiện số lượng diễn đàn sử dụng vBulletin vượt hơn 1,6 triệu (qua kết quả tìm kiếm từ Google), trong đó phần lớn là các diễn đàn sử dụng vBulletin lậu (phiên bản Null).

Một trong các nhóm bẻ khóa thuật toán bảo vệ bản quyền vBulletin nổi tiếng nhất là DGT. Nhóm này thường xuyên phát hành các phiên bản "Nulled" chỉ sau vài ngày khi vBulletin chính thức có phiên bản mới.

Trong các gói "Nulled" được DGT phát hành rộng rãi trên mạng chứa một tập tin validator.php vốn dùng để kiểm tra lại toàn bộ dữ liệu trong gói phát hành có bị thay đổi bởi một "bàn tay thứ ba" nào hay không. Việc kiểm tra này của DGT nhằm giúp người dùng lậu tránh những tin tặc chèn thêm các tập tin chứa cửa hậu (backdoor) để hack diễn đàn.

Điều quan trọng ở đây là DGT khuyến cáo xóa đi validator.php ngay sau khi cài đặt forum thành công nhưng một số người dùng lậu "tay mơ" không đọc chỉ dẫn này và lưu lại tập tin trên máy chủ web cùng thư mục cài đặt.

Tập tin validator.php có thể truy xuất và thực thi qua trình duyệt khi có bất kỳ người dùng nào gõ đúng đường dẫn đến nó mà việc này có thể "nhờ cậy Google" khá dễ dàng và thế là toàn bộ đường dẫn của tất cả các tập tin trong thư mục cài đặt forum đều hiện ra. Tin tặc dày dạn kinh nghiệm có thể khai thác khá nhiểu thông tin nhạy cảm nếu một số thư mục quan trọng chưa được xóa mà chỉ đổi tên hoặc nắm rõ tên của tập tin sao lưu cơ sở dữ liệu (thường có dạng *.sql hay *.tar.gz) để tải về máy.

Validator và DGT không lạ với giới sử dụng vBulletin lậu. Tuy nhiên, khi sử dụng lậu bản quyền vBulletin, bạn có thể sẽ mất quyền điều khiển diễn đàn của mình kèm theo cả tài khoản lưu trữ web (hosting).

Monday, February 1, 2010

Solaris interview questions

1. List the files in current directory sorted by size ? - ls -l | grep ^- | sort -nr

2. List the hidden files in current directory ? - ls -a1 | grep "^\."

3. Delete blank lines in a file ? - cat sample.txt | grep -v ‘^$’ > new_sample.txt

4. Search for a sample string in particular files ? - grep .Debug. *.confHere grep uses the string .Debug. to search in all files with extension..conf. under current directory.

5. Display the last newly appending lines of a file during appendingdata to the same file by some processes ? - tail .f Debug.logHere tail shows the newly appended data into Debug.log by some processes/user.

6. Display the Disk Usage of file sizes under each directory in currentDirectory ? - du -k * | sort .nr (or) du .k . | sort -nr

7. Change to a directory, which is having very long name ? - cd CDMA_3X_GEN*Here original directory name is . .CDMA_3X_GENERATION_DATA..

8. Display the all files recursively with path under current directory ? - find . -depth -print

9. Set the Display automatically for the current new user ? - export DISPLAY=`eval ‘who am i | cut -d"(" -f2 | cut -d")" -f1′`Here in above command, see single quote, double quote, grave ascent is used. Observe carefully.

10. Display the processes, which are running under yourusername ? - ps .aef | grep MaheshvjHere, Maheshvj is the username.

11. List some Hot Keys for bash shell ? - Ctrl+l . Clears the Screen. Ctrl+r . Does a search in previously given commands in shell. Ctrl+u - Clears the typing before the hotkey. Ctrl+a . Places cursor at the beginning of the command at shell. Ctrl+e . Places cursor at the end of the command at shell. Ctrl+d . Kills the shell. Ctrl+z . Places the currently running process into background.

12. Display the files in the directory by file size ? - ls .ltr | sort .nr .k 5

13. How to save man pages to a file ? - man | col .b > Example : man top | col .b > top_help.txt

14. How to know the date & time for . when script is executed ? - Add the following script line in shell script.eval echo "Script is executed at `date`" >> timeinfo.infHere, .timeinfo.inf. contains date & time details ie., when script is executed and history related to execution.

15. How do you find out drive statistics ? - iostat -E

16. Display disk usage in Kilobytes ? - du -k

17. Display top ten largest files/directories ? - du -sk * | sort -nr | head

18. How much space is used for users in kilobytes ? - quot -af

19. How to create null file ? - cat /dev/null > filename1

20. Access common commands quicker ? - ps -ef | grep -i $@

21. Display the page size of memory ? - pagesize -a

22. Display Ethernet Address arp table ? - arp -a

23. Display the no.of active established connections to localhost ? - netstat -a | grep EST

24. Display the state of interfaces used for TCP/IP traffice ? - netstat -i

25. Display the parent/child tree of a process ? - ptree Example: ptree 1267

26. Show the working directory of a process ? - pwdx Example: pwdx 1267

27. Display the processes current open files ? - pfiles Example: pfiles 1267

28. Display the inter-process communication facility status ? - ipcs

29. Display the top most process utilizing most CPU ? - top .b 1

30. Alternative for top command ? - prstat -a

What is Linux du Command? - ví dụ lệnh du

  1. du -a images
    12      images/daisy.jpg
    20 images/flo.gif
    76 images/CHILD.gif
    12 images/indigo.gif
    152 images/flower.gif
    12 images/sunflower.jpg
    12 images/tulip-flower-clipart5.gif
    12 images/flower.jpg
    8 images/thumbnail.aspx
    8 images/baby.jpg
    12 images/woodpecker.gif
    168 images/baby.gif
    8 images/thumbnail.jpg
    1012 images/house.bmp
    12 images/peacock.gif
    1544 images

    Displays the size of each file in the specified directory.

  2. du -s images
    1544    images

    Displays the total disk space used by the specified directory.

  3. du -h

    Displays the current folder capacity.

  4. du -h file1.php
    8.0K file1.php

    Displays the storage capacity of file1.php.