ورود

View Full Version : شمارنده ی 64 بیتی



p3m4ni
چهارشنبه 06 شهریور 1392, 00:19 صبح
سلام
من یه آرایه از جنس unsigned char با 8 عضو دارم که میخوام به کل این 64 بیت از 0 تا انتها مرحله به مرحله اضافه بشه یعنی تمام حالات یک عدد 64 بیتی
اگه کمک کنید ممنون میشم

FastCode
چهارشنبه 06 شهریور 1392, 00:39 صبح
اگر هدف اصلی رو مشخص کنید خیلی بهتره.
درضمن امیدوارم اطلاع داشته باشید که دارید راجع به چه عددی صحبت میکنید و من و بقیه افرادی که پاسخ میدهند رو سر کار نگذاشته باشید.

Ananas
چهارشنبه 06 شهریور 1392, 01:52 صبح
سلام.
تعداد حالات ممکن برابر 2 به توان 64 هست که میشه :18446744073709551616
این تعداد حالت مختلف برای یک عدد 64 بیتی وجود داره.

p3m4ni
چهارشنبه 06 شهریور 1392, 09:29 صبح
سر کار کدومه دیگه...
میخوام از 0 تا 18446744073709551616 رو بشمارم...همین!

omidshaman
چهارشنبه 06 شهریور 1392, 09:35 صبح
خب الان مشکلت چیه؟ سوالتو واضح بپرس؟!

p3m4ni
چهارشنبه 06 شهریور 1392, 13:54 عصر
مشکلم اینه که نمیدونم چه جوری این شمارنده رو کدنویسی کنم
یه راهش اینه ک ی متغییر int64 رو افزایش بدم ولی نمیدونم چه جوری در هر مرحله به آرایه 8 عضوی از char تبدیلش کنم

مصطفی ساتکی
چهارشنبه 06 شهریور 1392, 16:07 عصر
به این صورت می تونید عمل کنید.

#include <iostream>
#include <limits>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
union type1
{
unsigned __int64 a;
unsigned char b[8];
};

type1 k;


for (__int64 i =0; i < numeric_limits<__int64>::max();i++)
{
k.a = i;
for (int j=7;j >= 0;j--)
cout << (int)k.b[j];

cout << endl;
}


return 0;
}

FastCode
چهارشنبه 06 شهریور 1392, 17:16 عصر
در جریان که هستید این حلقه هیچ موقع تموم نمیشه؟
برای همین پرسیدم هدف چیه.
ممکن بود بشه multi-thread ش کرد یا حتی روی GPU نوشتش.

p3m4ni
چهارشنبه 06 شهریور 1392, 22:56 عصر
نه متوجه نیستم ممنون میشم توضیح بدید
و اینکه اون دوتا COUT چی کار میکنن/.
راستی...
هدفم بروتال فورس اتک به یه سیستم هست.

FastCode
چهارشنبه 06 شهریور 1392, 23:22 عصر
1.brute با brutal فرق داره.
2.سیستمتون چیه؟
چرا با محصولات آماده مثل jtr کار نمیکنید؟

مهرداد صفا
پنج شنبه 07 شهریور 1392, 00:58 صبح
با سلام.
اگر تابع CopyMemory را درک کنید می توانید به راحتی روشی که در اینجا (http://barnamenevis.org/showthread.php?416363-%D8%B4%D9%85%D8%A7%D8%B1%D9%86%D8%AF%D9%87-%DB%8C-64-%D8%A8%DB%8C%D8%AA%DB%8C) گفتم را در C++‎ هم پیاده کنید. C++‎ برای چنین عملیاتی (چه از نظر سرعت و چه از نظر پیاده سازی) مناسب تر است.
به هر حال این نمونه C++‎:

//in the name of god
//اللهم صل علی محمد و آل محمد
// UINT64ToBuffer.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdlib.h>
#include <iostream>
#include <Windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
char* buffer=new char[8];
for(UINT64 i=0;i<=2^64;i++)
{
CopyMemory(buffer,&i,8);
//do your task
//show the generated string
std::cout<<buffer<<"\n";
//رحمی به ram و cpu
if(i%255*255==0)
{
system("cls");
Sleep(100);
}

}
return 0;
}



صدایی بیپی که احیانا زمان اجرای کد می شنوید به دلیل چاپ کاراکتر شماره 7 (bell) توسط تابع cout است.

FastCode
پنج شنبه 07 شهریور 1392, 01:13 صبح
ظاهرا شما هنوز در جریان موضوع قرار نگرفتی.
ایشون این کار رو برای بروتفورس میخواد.و
۱.هنوز نگفته چه الگوریتمی.
۲.هنوز نمیدونه بروت فورس رو چطوری مینویسن.یعنی فکر میکنه باید به بایتها دسترسی داشته باشه.در صورتی که نیاز نداره.
۳. یک عدد ۶۴ بیتی چیزی نیست که بخواهید به ازای همه ی بایت های permutation هاش صدا بشنوید
۴.اگر یک مقدار فکر کنید متوجه میشید هیچ سیستمی حتی اگر یک بایت memory leak هم نداشته باشه نمیتونه زیر این تعداد fork دوام بیاره.
۵.این کار حتی با gpu هم یک مدت طول میکشه.با GPU من تقریبا ۱۴ ماه.با cpu خیلی میشه.(فقط loop)

p3m4ni
پنج شنبه 07 شهریور 1392, 08:48 صبح
۳. یک عدد ۶۴ بیتی چیزی نیست که بخواهید به ازای همه ی بایت های permutation هاش صدا بشنوید
۴.اگر یک مقدار فکر کنید متوجه میشید هیچ سیستمی حتی اگر یک بایت memory leak هم نداشته باشه نمیتونه زیر این تعداد fork دوام بیاره
میشه این 2 مورد رو بیشتر توضیح بدید
من این کارو بعداز خوندن چندتا مقاله میخوام انجام بدم تو مقاله گفته بود 2 3 روز طول میکشه...و اینکه اتک ی جورایی پسیو هست از نوع side-channel .
این jtr اسم کاملش چیه؟

FastCode
پنج شنبه 07 شهریور 1392, 20:24 عصر
میشه این 2 مورد رو بیشتر توضیح بدید
من این کارو بعداز خوندن چندتا مقاله میخوام انجام بدم تو مقاله گفته بود 2 3 روز طول میکشه...و اینکه اتک ی جورایی پسیو هست از نوع side-channel .
این jtr اسم کاملش چیه؟
john the ripper
اگر side channel هست پس چرا میخواهی کل ۶۴ بیت رو بچرخی؟
WEP یا RC4 که نیست تصادفا؟

darknes666
جمعه 08 شهریور 1392, 21:04 عصر
من میتونم یه حلقه بنویسم که از 0 تا 18446744073709551616
رو بشماره ولی به اسمبلی و نمیدونم که تو اینلاین اسمبلی جواب میده یا نه.(که به احتمال زیاد میده)
درضمن بهتر واسه شمارش از 0 تا 18446744073709551616 از یه ابر رایانه بهره ببری :قهقهه:
چون با این سیستم های ما خیلی خیلی خیلی خیلی (ادامه دارد :بامزه:) زمان میبره.

STACKSG SEGMENT STACK 'STACK'

DB 64H DUP(0)

STACKSG ENDS

DATASG SEGMENT 'DATA'


DATASG ENDS

CODESG SEGMENT 'CODE'
ASSUME SS:STACKSG,DS:DATASG,CS:CODESG
MAIN PROC NEAR
MOV AX,DATASG
MOV DS,AX
XOR EAX,EAX
XOR EBX,EBX
XOR ECX,ECX
LABEL1:
ADC EAX,1
ADC EBX,0
ADC ECX,0
CMP ECX,1
JNE LABEL1
MOV AX,4C00H
INT 21H
MAIN ENDP
CODESG ENDS
END MAIN


تو VC++‎ هم یه همچین چیزی میشه:

__ASM{
XOR EAX,EAX
XOR EBX,EBX
XOR ECX,ECX
LABEL1:
ADC EAX,1
ADC EBX,0
ADC ECX,0
CMP ECX,1
JNE LABEL1

}

FastCode
جمعه 08 شهریور 1392, 21:53 عصر
من میتونم یه حلقه بنویسم که از 0 تا 18446744073709551616
رو بشماره ولی به اسمبلی و نمیدونم که تو اینلاین اسمبلی جواب میده یا نه.(که به احتمال زیاد میده)
درضمن بهتر واسه شمارش از 0 تا 18446744073709551616 از یه ابر رایانه بهره ببری :قهقهه:
چون با این سیستم های ما خیلی خیلی خیلی خیلی (ادامه دارد :بامزه:) زمان میبره.

STACKSG SEGMENT STACK 'STACK'

DB 64H DUP(0)

STACKSG ENDS

DATASG SEGMENT 'DATA'


DATASG ENDS

CODESG SEGMENT 'CODE'
ASSUME SS:STACKSG,DS:DATASG,CS:CODESG
MAIN PROC NEAR
MOV AX,DATASG
MOV DS,AX
XOR EAX,EAX
XOR EBX,EBX
XOR ECX,ECX
LABEL1:
ADC EAX,1
ADC EBX,0
ADC ECX,0
CMP ECX,1
JNE LABEL1
MOV AX,4C00H
INT 21H
MAIN ENDP
CODESG ENDS
END MAIN


تو VC++‎ هم یه همچین چیزی میشه:

__ASM{
XOR EAX,EAX
XOR EBX,EBX
XOR ECX,ECX
LABEL1:
ADC EAX,1
ADC EBX,0
ADC ECX,0
CMP ECX,1
JNE LABEL1

}
آبروی هر چی اسمبلی بود رو بردی.


XOR RCX, RCX
DEC RCX
LABEL1:

DEC RCX
CMP RCX, 0
JNZ LABEL1

مصطفی ساتکی
جمعه 08 شهریور 1392, 22:10 عصر
@darkness عزیز با این سبک اسمبلی نوشتن آدم به خودشم شک می کنه چیزه سختیم نیستا !!!!!!

darknes666
جمعه 08 شهریور 1392, 22:23 عصر
آبروی هر چی اسمبلی بود رو بردی.


XOR RCX, RCX
DEC RCX
LABEL1:

DEC RCX
CMP RCX, 0
JNZ LABEL1

اتفاقا شما ابروی هرچی اسمبلی هست رو بردی.
عزیزم اگر میخواستم از xmm استفاده میکردم دیگه.
کلا میخوام رک باشم.
شما که این هم ادعات میشه هنوز یاد نگرفتی برو جلوی کرکر ها رو بگیر. شاید یک ثانیه دیرتر فهمیدیم داش :شیطان:

دیگه x64 نوشتی خیلی شاخی؟

بیا اینم Xmm

MOV XMM0,0
LABEL1:
INC XMM0
CMP XMM0,18446744073709551616;
JNE LABEL1

مصطفی ساتکی
جمعه 08 شهریور 1392, 22:24 عصر
اشکالش کجاست؟

darknes666
جمعه 08 شهریور 1392, 22:34 عصر
این fastcod خیلی شاخ بازی در میاره(شرمنده ولی دیگه حقیقته)

شما دوتا ثبات x64 نوشتی فک کردی دیگه چی هستی؟
فک میکنی این به عقل بقیه نمیرسه؟

کد شما از اون ور کلا مشکل داره.
(مشکلاتشم خواستی بگو تا بگم بلکه یاد گرفتی)
کد بنده کاملا کار میکنه و بهینه تر هم هست.

بهروز عباسی
جمعه 08 شهریور 1392, 23:23 عصر
درود به همه
لطفاً اگه قصد ادامه دادن دارید ، شرط ادب هم رعایت کنید و بیشتر به هم احترام بگذارید !

:لبخند:

darknes666
جمعه 08 شهریور 1392, 23:31 عصر
درود به همه
لطفاً اگه قصد ادامه دادن دارید ، شرط ادب هم رعایت کنید و بیشتر به هم احترام بگذارید !

:لبخند:
معذرت از همه ی دوستان اما اینم بگم چون احساس میکنم جاش خالیه.با معذرت از همه.
من یک مقدار از همون ابتدا با fastcode مشکل داشتم.
الان fastcode اینجا نیست تا جوابمو بده ولی من یه سری حرف ها رو میخوام بگم.
الان از این همه جواب تو به جواب همه گیر دادی.و خودت یه جواب درست ندادی.
خوب فکر میکنی بقیه هیچی بلد نیستن؟
من که فکر نمیکنم.
اولا من کد اقای مصطفی ساتکی رو تحلیل نکردم و نمیدونم قضیش چیه.
ولی حد اقل در مورد کد خودم بگم:
بنده یه عالمه سخت افزار خوندم(ادعایی ندارم تازه میفهمم چقدر دیگه باید بخونم) و از اسمبلی x64 بیت هم به اندازه ای بلدم که برنامه های نسبتا سخت رو بنویسم و اگر فکر میکنی کدت خیلی بهتر از واسه منه باید بگم در اشتباهی.دلیلشم یه متن کوتاه نیست بنویسم برات تموم بشه دلیلش یه فصل از کتاب سخت افزار میشه.(خیلی اسرار داشتی جوابشم مینیویسم)
درضمن فکر میکنی تو اسمبلی خیلی حرفه ای هستی؟
وقتی از طریق c میشه یه سوالو از 10000 راه حل کرد تو اسمبلی از 1000000000 راه میشه حلش کرد.
پس کم من رو مسخره کن.
مگه داری بوت لودر مینیویسی که توی هر خط باید بحث و جدل کنی؟
یا داری bios مینیویسی.
پست هات رو نگاه کن.پر از کلمات اینگیلیسی و اصطلاحه تا بگی من خیلی میدونم.(من اینجوری برداشت میکنم اگر اشتباه میکنم معذرت)
گرچه هیچ کدوم از کلماتتم خیلی سطح بالا نیست.فقط باید اینگیلیسی بلد باشی تا در عرض 5دقیقه معنی شو در بیاری.
شرط میبندم این حرفام نه تنها قانعت نمیکنه بلکه دلیلی میشه که برای حفظ غرورت بدتر به من حمله کنی.
از دوستان معذرت میخوام ولی گیر کرده بود تو دلم.بازم معذرت مخصوصا از آقای بهروز عباسی. (http://barnamenevis.org/member.php?231262-%D8%A8%D9%87%D8%B1%D9%88%D8%B2-%D8%B9%D8%A8%D8%A7%D8%B3%DB%8C)

p3m4ni
جمعه 08 شهریور 1392, 23:52 عصر
john the ripper
اگر side channel هست پس چرا میخواهی کل ۶۴ بیت رو بچرخی؟
WEP یا RC4 که نیست تصادفا؟
نه این دوتا نیس یعنی اصلا سیستم عامی به حساب نمیاد خیلی محدوده بعدشم اینکه اگه 64 تا رو نچرخم پس چیکار کنم؟

darknes666
جمعه 08 شهریور 1392, 23:56 عصر
میشه این 2 مورد رو بیشتر توضیح بدید
من این کارو بعداز خوندن چندتا مقاله میخوام انجام بدم تو مقاله گفته بود 2 3 روز طول میکشه...و اینکه اتک ی جورایی پسیو هست از نوع side-channel .
این jtr اسم کاملش چیه؟

دوست عزیز (قصد توهین ندارم) جناب آقای fast از این کلمات زیاد استفاده میکنه که شما مجبوری یکم بیشتر تحقیق کنی.

اول بگم permutation همون جایگشت ریاضیات خودمونه (استاد ما هم همش میگه permutation) خب یعنی ممکنه شما نتونی خونه ای از حافظه ی کامپیوتر رو پیدا کنی که عددی که بهش اشاره میکنه 64 بیتی باشه.

و دومی memory leak که خیلی سادس یعنی این که برنامه اشتباهی حافظه ی پویا تخصیص کنه.

omidshaman
شنبه 09 شهریور 1392, 00:22 صبح
سر کار کدومه دیگه...
میخوام از 0 تا 18446744073709551616 رو بشمارم...همین!
همچین کاری شدنی نیست اصلا کم کمش چند سال طول می کشه حالا میخواد با اسمبلی باشه یا هرچیز دیگه ای
من نمیدونم چرا همچین سوال ساده ای رو این قدر کش میدین؟! یک for که بیشتر نیست!
واسه این کار روش های دیگه ای هم هست که با سیرچ کردن راحت پیدا می کنی
مثلا http://en.wikipedia.org/wiki/Dictionary_attack
در ضمن شما که می خوای همچین کارایی بکنی اصولش اینه که اول c++ و اسمبلی رو درست یاد بگیری!

darknes666
شنبه 09 شهریور 1392, 00:29 صبح
همچین کاری شدنی نیست اصلا کم کمش چند سال طول می کشه حالا میخواد با اسمبلی باشه یا هرچیز دیگه ای
من نمیدونم چرا همچین سوال ساده ای رو این قدر کش میدین؟! یک for که بیشتر نیست!
واسه این کار روش های دیگه ای هم هست که با سیرچ کردن راحت پیدا می کنی
مثلا http://en.wikipedia.org/wiki/Dictionary_attack
در ضمن شما که می خوای همچین کارایی بکنی اصولش اینه که اول C++‎‎‎‎ و اسمبلی رو درست یاد بگیری!

حرف شما منطقی.
fastcode هم همینو گفت.
من هم همینو میگم.

مشکل الگوریتم نیست مشکل تجهیزاته.
وگر نه شما اگر تجهیزاتشو داشتی و جریان برقو خیلی خوب کنترل میکردی از رجیستر zmm میتونستی استفاده کنی(فعلا خیالی بیش نیست) که غمی دیگه نداشتی.شما باید سخت افزار خیلی قویی تهیه کنی.
با همین رجیستر های zmm راحت میشه این کار رو کرد

XOR ZMM0,ZMM0
LABEL1:
INC ZMM0
CMP ZMM0,18446744073709551616;
JNE LABEL1



و حتی بیشتر تا 2 به توان 512.
ولی لازمش کنترل جریان برق و اورکلاک کردن و داشتن چندین هزارتا از cpu مورد نیازه.( Intel Xeon Phi (https://en.wikipedia.org/wiki/Xeon_Phi))

FastCode
شنبه 09 شهریور 1392, 01:41 صبح
MOV XMM0,0
LABEL1:
INC XMM0
CMP XMM0,18446744073709551616;
JNE LABEL1




من شاخ بازی در میارم چون تنها کسی هستم که وقتی به کدت نگاه میکنم میفهمم عددی که نوشتی توی ۶۴ بیت جا نمیشه

FastCode
شنبه 09 شهریور 1392, 01:42 صبح
در ضمن ۳ خط اول پستت رو هم بیشتر نخوندم چون میتونستم حدث بزنم توش چی نوشتی.

darknes666
شنبه 09 شهریور 1392, 01:45 صبح
در ضمن ۳ خط اول پستت رو هم بیشتر نخوندم چون میتونستم حدث بزنم توش چی نوشتی.


من شاخ بازی در میارم چون تنها کسی هستم که وقتی به کدت نگاه میکنم میفهمم عددی که نوشتی توی ۶۴ بیت جا نمیشه



برام مهم نیست.در ضمن تنها کسی نیستی که میفهمه.
بچه هم برم ویکی پدیا رو بخونه میفهمه افتاد؟
http://en.wikipedia.org/wiki/Streaming_SIMD_Extensions#Registers
درضمن فکر نکردی که چرا این کد رو اول قرار ندادم؟
چون خودمم میدونستم جا نمیشه.

ادم شاخیم نیستی همچین.

FastCode
شنبه 09 شهریور 1392, 02:13 صبح
ببین عزیزم.الان ساعت نزدیک ۳ صبحه.من تا ۸ صبح بیدارم چون کار دارم.اگر هم وسطش یک سر به این سایت میزنم برای اینه که خستگیم در بره.الان هم واقعا وقت و از اون مهمتر اعصاب کل کل ندارم که چرا کدت دیرتر اجرا میشه یا چرا pipeline-hicup داره یا چرا بهتره حلقه رو از آخر به اول بیایی.

اگر OP میخواد بحث رو ادامه بده من هستم.در غیر این صورت واقعا دوست دارم تاپیک قفل بشه.

darknes666
شنبه 09 شهریور 1392, 02:16 صبح
ببین عزیزم.الان ساعت نزدیک ۳ صبحه.من تا ۸ صبح بیدارم چون کار دارم.اگر هم وسطش یک سر به این سایت میزنم برای اینه که خستگیم در بره.الان هم واقعا وقت و از اون مهمتر اعصاب کل کل ندارم که چرا کدت دیرتر اجرا میشه یا چرا pipeline-hicup داره یا چرا بهتره حلقه رو از آخر به اول بیایی.

اگر OP میخواد بحث رو ادامه بده من هستم.در غیر این صورت واقعا دوست دارم تاپیک قفل بشه.
اتفاقا کد شما کند تره.

شما هنوز یاد نگرفتی رجیستر های 64 بیتی کند ترن و وسط راه مقادیری رو از دست میدن مگر این که جریان برق دقیق باشه؟
معلومه که نه.
در ضمن کد من کاملا بهینس و راندمانش بیشتر از ماله شماست.

FastCode
شنبه 09 شهریور 1392, 05:57 صبح
اتفاقا کد شما کند تره.

شما هنوز یاد نگرفتی رجیستر های 64 بیتی کند ترن و وسط راه مقادیری رو از دست میدن مگر این که جریان برق دقیق باشه؟
معلومه که نه.
در ضمن کد من کاملا بهینس و راندمانش بیشتر از ماله شماست.
خوش به حال تو که اینقدر میفهمی branching و data bandwidth چیه.
برای اینکه ببینی خطا چقدره بد نیست یه سری به این مقاله بزنی:
http://en.wikipedia.org/wiki/Gambler%27s_fallacy
هر چیزی که تو بخواهی فکرش رو بکنی رو من قبلا کدش رو نوشتم.

UfnCod3r
شنبه 09 شهریور 1392, 10:39 صبح
بچه اخه این چیه نوشتی


MOV XMM0,0
LABEL1:
INC XMM0
CMP XMM0,18446744073709551616;
JNE LABEL1




انصافا ابروی اسمبل رو بردی
دقت کردین هرجا ایشون میاد جنگ میشه :متفکر:
حالا ی سوال اصلا برا چی می خوین چنین کاری کنید ؟:متفکر:

darknes666
شنبه 09 شهریور 1392, 10:46 صبح
بچه اخه این چیه نوشتی


MOV XMM0,0
LABEL1:
INC XMM0
CMP XMM0,18446744073709551616;
JNE LABEL1




انصافا ابروی اسمبل رو بردی
دقت کردین هرجا ایشون میاد جنگ میشه :متفکر:
حالا ی سوال اصلا برا چی می خوین چنین کاری کنید ؟:متفکر:
این کد اشتباهی به جر این که مقدارش تو xmm نمیتونه قرار بگیره نداره.
پس چرا اینقدر بزرگش میکنی در حالی که خودمم گفتم مشکل داره؟
درضمن شما که تاپیکو کامل نخوندی چرا پست میدی؟

برام مهم نیست.در ضمن تنها کسی نیستی که میفهمه.
بچه هم بره ویکی پدیا رو بخونه میفهمه افتاد؟
http://en.wikipedia.org/wiki/Streaming_SIMD_Extensions#Registers
درضمن فکر نکردی که چرا این کد رو اول قرار ندادم؟
چون خودمم میدونستم جا نمیشه.


ایشون میخوان بریتال فورس اتک انجام بده.

UfnCod3r
شنبه 09 شهریور 1392, 11:02 صبح
این کد اشتباهی به جر این که مقدارش تو xmm نمیتونه قرار بگیره نداره.


MOV XMM0,0 اشتباهه
INC XMM0 اشتباهه
CMP XMM0,18446744073709551616 اشتباهه

فقط دستوراخرت درسته :قهقهه: افرین :تشویق:

darknes666
شنبه 09 شهریور 1392, 11:03 صبح
MOV XMM0,0 اشتباهه
INC XMM0 اشتباهه
CMP XMM0,18446744073709551616 اشتباهه

فقط دستوراخرت درسته :قهقهه: افرین :تشویق:

اگر اشتباه بود nasm بهش گیر میداد.
دلیل احتمالی این که فکر میکنی اشتباهه اینه:
به جای MOVSS یا MOVAPS, MOVUPS, MOVLPS, MOVHPS, MOVLHPS, MOVHLPS از MOV استفاده کردم که کاملا درسته و مشکلی نداره.(میتونی تو nASM خودت امتحان کنی البته اگر بلدی)

به جای CMPSS, COMISS, UCOMISS,CMPPS از CMP استفاده کردم که مشابه بالاست.
INC هم مشکلی نداره شما فک کردی حتما باید مینوشتم
ADDS XMM0,1

FastCode
شنبه 09 شهریور 1392, 13:49 عصر
من دیگه فقط به OP پاسخ میدم.
۱۰ تا نکته توی کدها رو نوشته هاتون بود که واقعا دوست ندارم سرشون دعوا کنم چون آقای ساتکی شخصا ازم خواستن.لطفا ادامه ندید.