|
|
jcisio wrote:
Chắc là mấy bác giỏi giỏi không thích tốn thời gian vào cái này nên chẳng có ai tham gia. Thôi, để nói luôn, kết quả là "CrB1T@h;", để đỡ nhận mấy câu phàn nàn kiểu "làm đi, nói nhiều quá".
Bạn freakmind nếu không nhầm thì ở trên ra vẻ lắm, quăng code ra lung tung. Còn không thực tiễn? Bài toán này là một thí dụ thực tế đó, chứ cùng 1 chuỗi lúc nào cũng ra thời gian như nhau thì chỉ tốt khi giải thích cho trẻ con thôi. Vài tháng trước mình cũng giải thích cho trẻ con như vậy (phép + thì hiện mức năng lượng cao, * thì hiện mức năng lượng thấp, nhưng năng lượng đo được là năng lượng để làm chuyện khác, chứ không phải năng lượng thực khi tính + hay *, vì nó rất khó đo, và trẻ con nó không quan tâm phép nhân tốn gấp mấy lần phép cộng...). Trẻ con ở đây là đám nhóc tầm 6-7 tuổi gì đó.
Mình đưa cái kết quả lên là để chứng minh rằng việc giải mã là khả thi. Các bạn cứ suy nghĩ tiếp đi, cách làm đã nói ở trên mấy lần rồi. Còn kêu gào crazyboy không hiểu có lợi gì? Code đưa ra rồi, còn thiếu gì nữa đâu. Đây là thách đố mở, crazyboy không chắc sẽ có lời giải. Hay muốn crazyboy gõ lệnh:
Code:
echo "print ori_pass;" >> checkpass.py
yeah, yeah . đọc đến đây thì biết ai nói nhiều vô ích rồi )
|
|
|
jcisio wrote:
Ngay cả code exploit khi chạy ở localhost, server load < 0.1 mà cũng chưa ai đưa lên, mấy bác còn đòi code exploit trang web kia. Có code để làm gì, trong khi không chịu thảo luận về ý tưởng, mà cứ chăm chăm đọc bài giải.
Làm bài đơn giản này trước đi: "có phải password bắt đầu bằng chuỗi CrB1T" không. Nếu đúng, thì thời gian tính chuỗi CrB1Taaa và aaaaaaaa có độ cách biệt lớn, không thì thời gian chỉ xấp xỉ nhau. Mấy bác có đủ khả năng đo thời gian này không?
pass đúng rồi đó bạn, thêm vài ký tự nữa là xong, cho chạy hết asscii luôn nha.
p/s : mình reply bữa trước kia, mà mạng dis nên h mới lên reply lại
|
|
|
, pass có 8 ký tự thôi, mình check tay cũng ra mà . Mới xuống xe, mệt vãi lúa =]]
|
|
|
với side channel attack, có 3 yếu tố chính : kẻ tấn công, đối tượng để khai thác thông tin, và thông tin (bao gồm cách thức khai thác, lỗi khai thác và loại thông tin bị lộ) . trong đó, việc gián tiếp, trực tiếp là nói đến cách thức lấy thông tin và thông tin bị lộ.
Với side channel attack, với cách thức lấy thông tin nhất định, thông tin bị lộ là bất đắt dĩ và nằm ngoài tầm kiểm soát của "hoạt động" ấy . Còn với Social engineering thì khác, cách thức lấy thông tin và thông tin bị lộ là trực tiếp, kẻ tấn công , bằng các biện pháp khác nhau mà khai thác thông tin từ người bị tấn công (người bị tấn công chủ động đưa các thông tin đó ra)
mà thấy tự nhiên bàn chuyện social engineering, nhạt quá . có bạn nào break cái password mình chưa :-"
|
|
|
freakmind wrote:
cr4zyb0y wrote:
bây giờ thì rỏ thèn nào thích tỏ vẻ rồi nhé )
Tớ vốn không thích tranh cãi nhưng tớ muốn trình bày rõ một cái là tớ không có thói quen tỏ vẻ trên 4rum , tỏ vẻ ngoài đời thích hơn nhiều chứ, 4rum có ai biết mình là ai đâu.
Tớ bỏ thời gian ra phân tích, tìm tài liệu, mục đích cuối cùng là chia sẻ cái tớ biết, còn bạn xem bạn làm cái gì nhé :vứt lên đoạn code rồi cười khẩy, phân tích thì không phân tích, mục đích bạn tham gia topic này làm gì vậy, tự bạn nghĩ nhé???
phân tích thì ở trên mấy bạn đã phân tích rồi ,còn trước khi post code là mình hỏi rồi nhé, và chủ topic bảo có code thì post lên, mình post lên thôi, việc gì phải xoắn nhỉ
@g4mm4 : code đây anh
Code:
#!/usr/bin/python
from datetime import datetime
import cgi
ori_pass = "xxxxxxxxxxxxxx"
def get_param(form, param,default=None):
if form.has_key(param):
return form.getvalue(param)
return default
def check_pass(input):
i = 0
for c in ori_pass :
if(c != input[i]):
return False
else :
i = i + 1
return True
def check_secure(input):
result = True
i = 0
if len(input) == 0 :
return False
if (len(input) > len(ori_pass)) or (len(input) < len(ori_pass)):
input = ori_pass
result = False
for c in ori_pass :
result = result & (input[i] == c)
i = i + 1
return result
if __name__ == '__main__':
print "Content-Type: text/html" # header
print # blank line
print """<html>
<head>
<title>Got the pass, bitch !</title>
</head>
<body>
<h1><font color="red"> Got the pass , win the game !</font> </h1>
<form action="?" method="POST">
<table >
<tr>
<td style="text-align:right">Password : </td>
<td><input type="text" value="" size="10" name="pass" /></td>
</tr>
</table>
<input type="submit" value="Check normal" name="checkpass">
<input type="submit" value="Check secure" name="checkpass">
</form>
</body>
</html>
"""
form = cgi.FieldStorage()
command = get_param(form,"checkpass")
if command == "Check normal" :
input_pass = get_param(form,"pass")
start = datetime.now().microsecond
if (len(input_pass) == len(ori_pass)) and check_pass(input_pass):
print "<p>You got it!</p>"
times = datetime.now().microsecond - start
print "<script>alert(\' spent "+ str(times) +" microseconds\')</script>"
elif command == "Check secure" :
input_pass = get_param(form,"pass")
start = datetime.now().microsecond
if check_secure(input_pass):
print "<p>You got it!</p>"
times = datetime.now().microsecond - start
print "<script>alert(\' spent "+ str(times) +" microseconds\')</script>"
p/s : theo mình social engingeering đánh trực tiếp vào đối tượng, nên không thể nói "side-channel" đc
|
|
|
freakmind wrote:
cr4zyb0y wrote:
tỏ vẻ với bạn làm mẹ gì, rách việc .
Còn thích source à, đây :
Code:
/* Copyright (c) Microsoft Corporation. All rights reserved. */
#include <mmlite.h>
#include <tchar.h>
#if defined(_MSC_VER) && !defined(_DEBUG)
#pragma function(strcmp)
#endif
#if defined(_MSC_VER) && (_MSC_VER != 1400 || !defined(ppc)) && (_MSC_VER != 1310) && (_MSC_VER != 1200) && defined(_UNICODE)
#pragma function(wcscmp)
#endif
/* Compare strings pointed by pSrt1, pSrt2. Return 0 if same, < 0 if pStr1
* less then pStr2, > 0 otherwise.
*/
int _tcscmp(const _TCHAR *pStr1, const _TCHAR *pStr2)
{
_TCHAR c1, c2;
INT v;
do {
c1 = *pStr1++;
c2 = *pStr2++;
/* the casts are necessary when pStr1 is shorter & char is signed */
v = (UINT)c1 - (UINT)c2;
} while ((v == 0) && (c1 != '\0'));
return v;
}
copyright @ Mircosoft nhá =]]
@g4mm4 : em hông có host, mà cái time link trên nó trả về khá ổn định đó anh, thử đi nhé
Những người trình độ chưa ra đâu vào đâu mà có cách nói năng như bạn chắc khó mà tiến được, khuyên chân thành
Trở lại vấn đề chính, cái mình muốn nói khi mình nói bạn show code của strcmp là vì strcmp trong glibc nó được implemented bằng assembly code nên mới bảo bạn show và thử phân tích thôi, ai dè bạn lại code bằng window làm mất cái để phân tích
P/S: gamma có bảo bạn có host không hay đâu, gamma bảo bạn đưa cái python code của bạn để test trên localhost cơ mà?? Em hok có host là em hok có localhost à
bây giờ thì rỏ thèn nào thích tỏ vẻ rồi nhé )
|
|
|
freakmind wrote:
@lamer: Srry vì em không vứt đầy đủ code lên, em chỉ đưa cái cần để chứng minh thôi.
cr4zyb0y wrote:
Đó chỉ là một đoạn code check password thôi, không có yêu cầu code này không bị lỗi nha. Nên mình thích viết vậy đấy, chủ topic muốn có một ví dụ để thử nghiệm mà ) . Và nếu không biết strcmp hoạt động thế nào, thì mình đã chẳng viết như trên
Bạn biết thì bày tỏ luôn, nếu muốn chủ topic thử nghiệm thì nói rõ ra là đoạn code này để thử nghiệm, còn nếu bạn muốn tỏ vẻ thì mình chịu
Btw: Bạn biết strcmp hoạt động thế nào bạn thử nói xem, vứt cả source trong thư viện string.h lên để chứng minh cho chủ topic nữa nhé .
P/S: cũng phải cám ơn bạn mình mới biết trang bzshell, trước đó không biết trang này
@chủ topic: cái lỗi mà thảo luận từ đầu topic là một cái lỗi quá đơn giản, trong cái link mình đưa ở trên có thêm lỗi để crack rsa đó, có lẽ đọc cái đó cũng hiểu ra đc tg đối.
tỏ vẻ với bạn làm mẹ gì, rách việc .
Còn thích source à, đây :
Code:
/* Copyright (c) Microsoft Corporation. All rights reserved. */
#include <mmlite.h>
#include <tchar.h>
#if defined(_MSC_VER) && !defined(_DEBUG)
#pragma function(strcmp)
#endif
#if defined(_MSC_VER) && (_MSC_VER != 1400 || !defined(ppc)) && (_MSC_VER != 1310) && (_MSC_VER != 1200) && defined(_UNICODE)
#pragma function(wcscmp)
#endif
/* Compare strings pointed by pSrt1, pSrt2. Return 0 if same, < 0 if pStr1
* less then pStr2, > 0 otherwise.
*/
int _tcscmp(const _TCHAR *pStr1, const _TCHAR *pStr2)
{
_TCHAR c1, c2;
INT v;
do {
c1 = *pStr1++;
c2 = *pStr2++;
/* the casts are necessary when pStr1 is shorter & char is signed */
v = (UINT)c1 - (UINT)c2;
} while ((v == 0) && (c1 != '\0'));
return v;
}
copyright @ Mircosoft nhá =]]
@g4mm4 : em hông có host, mà cái time link trên nó trả về khá ổn định đó anh, thử đi nhé
|
|
|
Code:
http://crazyboy.bshellz.net/cgi-bin/checkpass.py
đây, cụ thể lun, lấy pass đi nào
|
|
|
freakmind wrote:
cr4zyb0y wrote:
truyennxt wrote:
to cr4zyb0y: Rất vui nếu bạn đã viết xong thì hãy gửi cho mọi người xem.
To lamer: Em thực sự không phải dân chuyên cntt . Em đang theo học Banking và đang muốn học thêm cntt. Vì thế anh bảo em viết code thì em ko thể viết ngay mà phải "đọc hiểu" đã anh ạ .
Code:
ori_pass = "AAA"
def check_pass(input):
i = 0
for c in ori_pass :
if(c != input[i]):
return False
else :
i = i + 1
return True
if __name__ == '__main__':
input = str(raw_input())
if (len(input) == len(ori_pass)) and check_pass(input):
print "You got it !"
Code đây, ai thử attack đi
Bạn biết strcmp hoạt động theo cơ chế nào không?
Về mặt cơ bản thì strcmp nó cho thời gian tính toán "linear" với từng cụm password khác nhau, hay nói cách khác là strcmp nó làm thời gian tính toán của cụm password đúng và cụm password không đúng là khác nhau.
Cái code của bạn về mặt cơ bản là cũng "linear" như cái strcmp vậy, đơn giản vì khi cái dòng if của bạn gặp password đúng thì nó return luôn, chả hiểu bạn sướng gì ở cái dòng màu đỏ nữa
Lối timing attack của strcmp đơn giản chỉ cần implement một cái hàm đại loại như sau thì có thể "san bằng" thời gian tính của mọi chuỗi nhập vào
Code:
for (i = 0; i < sizeof(secret_passwd); i++) {
result &= (s[i] == secret_passwd[i]);
}
return result;
P/S: chủ topic có thể tham khảo thêm cái file này mình google được, cảm thấy khá là dễ hiểu
http://www.google.com/url?sa=t&source=web&cd=1&sqi=2&ved=0CBIQFjAA&url=http%3A%2F%2Fwww.cs.hmc.edu%2F~mike%2Fpublic_html%2Fcourses%2Fsecurity%2Fs06%2Fprojects%2Fdan.pdf&rct=j&q=strcmp%20timing%20attack&ei=YXM8T>ZSRK4fRcYzfjYUH&usg=AFQjCNHLiXklpwCCRE-epwd8eoDcxVNyuQ&sig2=Bp7URzX2Ara94a4Gqg5u1Q&cad=rja
Đó chỉ là một đoạn code check password thôi, không có yêu cầu code này không bị lỗi nha. Nên mình thích viết vậy đấy, chủ topic muốn có một ví dụ để thử nghiệm mà ) . Và nếu không biết strcmp hoạt động thế nào, thì mình đã chẳng viết như trên
|
|
|
truyennxt wrote:
to cr4zyb0y: Rất vui nếu bạn đã viết xong thì hãy gửi cho mọi người xem.
To lamer: Em thực sự không phải dân chuyên cntt . Em đang theo học Banking và đang muốn học thêm cntt. Vì thế anh bảo em viết code thì em ko thể viết ngay mà phải "đọc hiểu" đã anh ạ .
Code:
ori_pass = "AAA"
def check_pass(input):
i = 0
for c in ori_pass :
if(c != input[i]):
return False
else :
i = i + 1
return True
if __name__ == '__main__':
input = str(raw_input())
if (len(input) == len(ori_pass)) and check_pass(input):
print "You got it !"
Code đây, ai thử attack đi
|
|
|
lamer wrote:
Chủ thớt viết thử đoạn mã so sánh hai chuỗi đi.
Em gửi một đoạn được không, anh lamer ? chủ topic ?
|
|
|
disable cái này thì dùng cái khác, khi mà cái muốn đọc vẫn cho đọc, lolz
|
|
|
vinhanit wrote:
Cái thông báo hiện lên là code HTML.
Chắc bạn thử đổi sang trình duyệt Firefox hay IE xem sao.
hì hì, nói chuyện ngoài lề với cậu một tí. giải quyết vấn đề bằng cách dùng cái gì đó thay thế cái bị lỗi thay vì tìm hiểu nguyên nhân lỗi ở đâu để khắc phục là cách giải quyết không tối ưu, chả ích gì .
nếu ai cũng dùng phương án của bạn, thì lỗi sẽ không bao giờ được sửa, và sự lãng phí sẽ tăng gấp bội.
|
|
|
Giống con Acer của mình, mới mua vài ngày mà bây giờ đã về lại nhà nó để bảo hành ổ cứng. tình trạng tương tự.
Nếu DVD win 7 của bạn tốt, quy trình cài đặt đúng thì bạn mang ra tiệm là vừa rồi . (Nhớ chép dữ liệu quan trọng ra nhé, mấy phù thuỷ ngoài tiệm có nhiều chiêu quái lắm )
|
|
|
Mấy anh xem lại thử, cái lỗi khi "Xem trước" khi post reply :
khuyến mãi thêm tấm nữa :
Windows XP SP2
Trình duyệt : Google Chrome 8.x
Post reply hai bài khác nhau , "Xem trước" đều bị.
Post bài mới mà xem trước cũng bị .
Bấm gửi đi thì gửi cái èo !
|
|
|
bắt đầu với "Thinking in C" đi mấy bác .
|
|
|
phone phreaking !
|
|
|
Đã là mã hóa rồi mà không cần khóa cũng giải mã được thì gọi là mật mã làm gì :/ .
|
|
|
cậu có thể tham khảo slides từ chương trình dạy của khoa máy tính , bk hcm
Chương trình chi tiết : http://cse.hcmut.edu.vn/vi/subject/503001
tài liệu tham khảo : http://cse.hcmut.edu.vn/~tran/CTDL2009/
|
|
|
Mình nghĩ cái gì có ích và khả dụng hơn thì được dùng nhiều thôi.
Ví dụ : Khi hướng dấn ai đó xử lý một vấn đề, thì thay vì "click vô cái này, chọn cái kia, bấm ok ... này nọ " thì "cậu bật terminal lên, gõ vào xyzabc gì gì đó rồi enter -> done" .
Mặt khác, khi chạy chương trình từ giao diện dòng lệnh thì các thông báo lỗi của chương trình sẽ có thể được xuất ra. Lúc đó nó sẽ rất có ích cho việc debug, sửa lỗi ...
|
|
|
zjm_zjm wrote:
Bạn nào có biết những trang wed hay diễn đàn nào nói về python không. có ít diễn đàn về cái này quá
http://vithon.org đó bạn .
|
|
|
|
|
|
|