Archive Page 2

ჩემი ჰიპოთეზა:დრო მიდის დანაყოფებით!

ჰმ, ესეიგი მინდა შემოგთავაზოთ ჩემი ჰიპოთეზა დროის სვლის შესახებ :დ.
მინდა დაგიმტკიცოთ რომ დრო მიდის დანაყოფებით :)

ავიღოთ რომელიმე დრო მაგალითად ღამის 11საათი 59 წუთი და 59 წამი(არ აქვს არსებითი მნიშვნელობა), დავაკვირდეთ, დრო მიდის… მიდის… მიდის და უახლოვდება 12 საათს, მივიდა 12:59:59.999–მდე,აგრძელებს რათქმაუნდა(ცხრების მარჯვნივ მდგომი ნოლები,რომლებიც არ იწერება, ხომ უნდა შეიცვალოს 9ით?–დიახ) სვლას და ჯერჯერობით ისევ აკლია თორმეტს.
მიდის დრო, მიჰქრის კიდევაც მაგრამ…მაგრამ მაინც ვერ გახდა 12,მაგრამ მიაღწია ახლა უკვე 12:59:59.999999,შემდეგ ისევ ის მეორდება წეღან რაც ვთქვი. ხომ მეთანხმებით რაც ვთქი ყველაფერში? რა, არა? მიდის ჯერ 0.1 ერთეულით მერე 0.01 მერე 0.001 და ასე შემდეგ. ძალიან რომ დაპატარავდება მერე კიდე მოიკლებს(ხომ ვიცით რომ არ არსებობს რიცხვი რომელზე ნაკლებიც არ არსებობს:). და პირიქით:)) მაგრამ თორმეტი ჯერ კიდევ არაა!!, მერე კიდე,მერე კიდე და ასე შემდეგ.
ანუ შევთანხმდით რომ ‘დრო’ ფაქტიურად ვერ აღწევს 12 საათს. :)
მაგრამ როგორც ვიცით დრო მიდის კიდევაც 12მდე და ასწრებს კიდევაც(იმ სვანისა არ იყოს ცოლს რო გადაასწრო :დ). ანუ გამოგვაქ დასკვნა : არსებობს ზღვარი(სტატიკური, არც მეტი არც ნაკლები) რომლითაც დრო მიიწევს წინ,რაღაც მცირე დანაყოფებით. და 12 საათს ახტება იმიტო რო წეღან ვნახეთ რო 12 ვერ ხდება .. :)

ჰა, ხო მაგარი ვარ?:დ

მერე კიდევ უფრო დამაჯერებელს გავხდი ჩემს ჰიპოთეზას :გივიკო:…

Advertisements

First Steps With Python_Hello World

პითონზე მე უკვე შეგიქმენით წარმოდგენა წინა ამ პოსტში.

ახლა დავიწყოთ სწავლა…

პირველ რიგში რითიც ყველა იწყებს არის ბძანება კონსოლში ‘hello world’–ის გამოტანის :). პითონში ეს ასე ხდება :
print "hello world"
აქ ბრჭყალები შეიძლება იყყოს ორმაგიც(“) ან უბრალოდ აპოსტროფიც(‘).

ასე მარტივადაა ყველაფერი. ეს ბრძანება შეგვიძლია ორნაირად გავუშვათ:
1)ვაკეთებთ ახალ ფაილს .py გაფართოებით ვწერთ მოცემულ კოდს ვინახავთ და ფაილს ორჯერ ვაკლიკებთ. რადგან პითონი ინტერპრეტატორული ენაა ეგრევე გახსნის და გაუშვებს.
2)ვხსნით run-ს და ვწერთ შიგნით python-ს , იმიტომ რომ გაიხსნას პითონის კონსოლი,გახსნილ კონსოლშიც ვწერთ იგივე კოდს და Enter

მეორე შემთხვევაში ყველაფერს დავინახავთ და გაგვიხარდება(:დ) მაგრამ პირველ შემთხვევაში გაშვებისას დავინახავთ კონსოლს, რომელიც მალევე დაიხურება ეს იმიტომ რომ ჰელლო ვორლდის გამოტანის შემდეგ პროგას საქმე აღარ ‘დარჩა’,ასეთ დროს პროგა იხურება…
გავაკეთოთ ისე რომ პროგა მაშინ დაიხუროს როცა ჩვენ გვინდა, ამიტომ ვამატებთ
raw_input(“press Enter to close”). სინამდვილეში ეს არის ინფუთის(შეტანის ფუნქცია),შეგყავს სიმბოლოები აწვები ენთერს და პროგა ცვლადს ანიჭებს მიღებულ ინფორმაციას და დაიხურება. დეტალურად განვიხილავ მომდენო პოსტში.

ანუ გამოდის ასე:
print "hello world"
raw_input("press Enter to close")

BeatBoxing

Beatboxing არის სპორტი (ნუ სუნთქვის ვარჯიში უკვე სპორტია:D) სადაც პირის და ენის (ზოგჯერ ყელისაც) სწრაფი და მოქნილი მოძრაობით თითქმის ყველანაირი მუსიკალური ინსტრუმენტის ხმას გამოსცემენ ინსტრუმენტის გარეშე. მაგალითად: დრამის,სკრეტჩები(ვინილის არასწორად ბრუნვისას მიღებული ხმები) ,კლარნეტი(ც :დ), რიტმის პონტში რამე ხმა და ასე შემდეგ…რათქმაუნდა შეიძლება, ჩვეულებრივი, ადამიანური ხმების გამოცემაც:დ.
ბითბოქსი დაკავშირებულია ჰიპ–ჰოპ კულტურასთან და არა მარტო.

ისტორია:
ამბობენ რომ პირველად ეს ტექნიკა ინდოეთში აღმოცენდა რამოდენიმე ათასი საუკუნის წინ, შემდეგ ჩინეთში განავითარეს როგორც Kouji, მაგრამ იმ მუსიკას რომელსაც ისინი ქმნიდნენ, ცოტა ან საერთოდ არ ჰქონდა კავშირი აღმოსავლურ ჰიპ-ჰოპთან
შემდეგ კი აფრიკის ზოგმა კულტურამ დაიხმარა ხელები(ტაში,სრესა და ასე შემდეგ) , რომ მუსიკისთვის მრავალფეროვნება მიეცათ, ძალიან სამწუხაროა მაგის მერე მათში ცვლილება არ მომხდარა,დარჩნენ და დარჩნენ :D :D :D
მათ ასევე პირველად დაიხმარეს პირი, ღრმად ამოსუნთქვა და ჩასუნთქვა, რომელიც ახლანდელ ბითბოქწსში გამოიყენება.

1980წელს ბითბოქსი შეერია ჰიპ ჰპოს. პირველი რეპერ/ბითბოქსერები:Doug E. Fresh, Buffy

თანამედროვე ბითბოქსი
თანამედროვე ბითბოქსერებში გახდა საჭიროება ცოტა არტისტიზმი, რაც მოხდა კიდევაც(ნათელი მაგალითია ბერდიმენი).

2005წელს მსოფლიო ჩემპიონათში რომელიც ტარდებოდა გერმაიანაში,ჩამოვიდნენ მთელი მსოფლიოდან:Tom Thumb ,Joel Turner (ავსტრალია), White Noise (ირლანდია), Roxorloops (ბელგია), Poizunus (კანადა), Faith SFX (ინგლისი)
რამოდენიმე მტანჯველი გამოსვლის შემდგომ ფინალში დარჩნენ:Roxorloops და Joel Turner. მსაჯულებმა ვერ გადაწყვიტეს და ამიტომ დანიშნეს ორი დამატებითი ტური სადაც ტურნერმა გაიმარჯვა, ალბათ მაშინ როქსორლუუპი დამწყები იყო ჯერ კიდე.:))
ბოლო 2009 წლის ჩემპში სუსტი სქესის წარმომადგენლებიც მონაწილეობდნენ, ძლიერი იოგებით ოღონდ :D:D. 52 ბითბოქსერიდან ქალებში გაიმარჯვა: Bellatrix, კაცებში: ZeDe, რომლებიც ფლობენ ბითბოქსინგის ყველაზე დიდ ჯილდოს.
როგორც ყველა მუს. დისციპლინას ბითბოქსსაც აქვს ჩაწერის ხერხები რომელსაც იშვიათად მაგრამ მაინც(მაგალითად სწავლისას) იყენებენ. მაგალითები:
http://www.humanbeatbox.com/tips/p2_articleid/231
ეს ზემოთაღნიშნული საიტი და დიდი საქმე შექმნეს Mark Splinter და Gavin Tyte–მა. მადლობა მათ და თქვენ ყურადღებისთვის. :))

ახლა კი ჩემი ფავორიტი ბითბოქსერები და მათი პერფორმანსი. :) :
http://www.youtube.com/watch?v=sMr2cn04wKA _ Roxorloops part.1 _best
http://www.youtube.com/watch?v=4P7sdo_Aj0o _ Roxorloops part.2 ¯best

http://www.youtube.com/watch?v=Ikkx6a8WzOM&feature=related – ნუ ეს კაცი ლეგენდაა :დ
http://www.youtube.com/watch?v=tQc30kqq1y8 – Felix Zenger
http://www.youtube.com/watch?v=Ta-ATEOOo8M – 2005წელს რო გაიმარჯვა

როგორც ყოველთვის ქალებმაც მოჯნდომეს :D და აჰათ(ეს ისე თორე არ მევასება ქალების):

და ბოლოს ბერდიმანი(ინგლისის ჩემპიონი[2008]) თავი კლაუს ფედით, ისც ბითბოქსერია ოღონდ ლუუპზე ატრიალებს ხოლმე ხმებს და ნუ მოკლედ ცოტა dj toolz-ს იყენებს.:

მათემატიკური ლოგიკის ელემენტები-ბულის ალგებრა[Part 1/2]

მასალა აღებულია დილის ენციკლოპედიის XIII ტომიდან.
–>გამონათქვამი
გამონათქვამი არის მათემატიკური ლოგიკის ტერმინი,რომლითაც აღინიშნება მხოლოდ მისი ჭეშმარიტობის თვალსაზრისით განსახილველი წინადადება, ესეიგი , გამონათქვამი არის ისეთი წინადადება, რომლის მიმართაც შეგვიძლია ვთქვათ,ჭეშმარიტია იგი თუ მცდარი.
ასეთ შემთხვევაში, ცხადია, გამონათქვამი არ იქნება კითხვითი ან ძახილის წინადადება, ან ისეთი თხრობითი წინადადება სადაც მთხრობელის განცდებიია წარმოდგენილი:D. წინადადებას რომელიც ცვლადს შეცავს, საგამონათქვამო ფორმა ეწოდება.
მასში ცვლადის ჩასმითმიიღება გამონათქვამი– ან მცდარი ან ჭეშმარიტი…
–>გამონათქვამთა ტიპები
––>გამონათქვამთა უარყოფა(Not)
ყოველი A გამონათქვამისაგან შეიძლება ახალი გამონათქვამის მიღება მისი უარყოფით. მაგალითად ,ვთქვათ, A არის გამონათქვამი ‘მართკუთხედის დიაგონალები ტოლია’, მისი უარყოფის მიღება შეიძლ;ება მრავალი გზით:
1)A გამონათქვამის წინ დასვით სიტყვები ‘არ არი სწორი, რომ’
2)A გამონათქვამში ზმნის წინ დასვით ნაწილაკი ‘არ’. მოცემულ შემთხვევაში A გამონათქვამი ჭეშმარიტია, ხოლო მისი უარყოფა მცდარი. მცდარი გამონათქვამის უარყოფა ჭეშმარიტია. მაშასადამე, მოცემული გამონათქვამის უარყოფა ეწოდება ისეთ გამონათქვამს ,რომელიც ჭეშმარიტია, როცა მოცემული განათვამი მცდარია და მცდარია როცა მოცემული გამონათქვამი ჭეშმარიტია.
A გამონათქვამის უაყოფა აღინიშნება სიმბოლოთი: ¬A და კიდე A–ზედახაზით(სამწუხაროდ აქ ვერ ვწერ :დ). იკითხება:’არა A’, ან ‘არ არის სწორი, რომ A’.
A-სა და ¬A-ს შორის კავშირი შეიძლება გამოვსახოთ შემდეგი ცხრილის სახით:

ვთქვათ, A ნებისმიერი გამონათქვამია. რადგან მისი უარყოფა ასევე, გამონათქვამია, შეიძლება ¬A–ის უარყოფაც. მას ეწოდება A-ს ორმაგი უარყოფა. და აღინიშება A(ორი ხაზით ზევით) საზოგადოდ ეს უკანასკნელი და A ერთიდაიგივეა(ტოლძალოვანია).

––>გამონათქვამთა დიზიუნქცია(Or)
ეს არის ბინარული(ორობითი) ოპერაცია,რომელიც გამონათქვამებზე სრულდება. თუ A და B ნებისმიერი გამონათქვამებია, მაშინ მათი დიზიუნქცია(ლათ.disjuctio გაცალკევება,განსხვავება) ეწოდება ახალ A٧B გამონათქვამს(ნიშანი ٧ დიზიუნქციას აღნიშნავს),
რომლის ჭეშმარიტობაც დამოკიდებულია A და B გამონათქვამის ჭეშმარიტობაზე. ეს დამოკიდებულება დიზიუნქციისთვის გამოიხატება ამ ცხრილით:

მაშასადამე, დიზიუნქცია მცდარია იმ და მხოლოდ იმ შემთხვევაში, როცა მცდარია ორივე გამონათქვამი. ანუ თუ ერთ ერთი წევრი მაინც ჭეშმარიტია ესეიგი დიზიუნქცია ჭეშმარიტია. დიზიუნქცია ხასიათდბა შემდეგი თვისებებით:
A٧B=B٧A
(A٧B)٧C=A٧(B٧C)
A٧(¬A)=ჭ (ჭეშმარიტი). დიზიუნქცია აღმოცენდა , როგორც ‘ან’ კავშირის ფორმალიზაცია და ანალოგი იმ განსხვავებით, რომ ენაში ‘ან’ კავშირი მაცალკევებელია მათემატიკაში/ინფორმატიკაში–არა.

–>გამონათქვამთა კონიუნქცია(and)
ესაც არის ბინარული ოპერაცია, რომელიც სრულდება გამონათქვამებზე. თუ A და B ნებისმიერი გამონათქვამებია,მაშინ ახალ A^B გამონათქვამს(ნიშანი ^ კონიუნქციას აღნიშნვს) მათი კონიუნქცია ეწოდება,რომლის ჭეშმარიტობა დამოკიდებულია A და B–ს ჭეშმარიტობაზე.
ეს დამოკიდებულება კონიუნქციისთვის გამოიხატება ასეთი ცხრილით:

მაშასადამე,კონიუნქცია ჭეშმარიტია იმ და მხოლოდ იმ შემთხვევაში ,როცა ჭეშმარიტია მისი შემადგენელი ორივე წევრი. ე.ი. თუ კონიუნქცია მცდარია მაშინ იგი შეიცავს ერთ მცდარ წევრს მაინც.
კონიუნქცია ხასიათდება შემდეგი თვისებებით:
A^B=B^A (კომუტატიურობა)
(A^B)^C=A^(B^C) (ასოციაციურობა)
A^(¬A)=მ (მცდარი).
ჭეშმარიტობის ცხრილის დახმარებით ადვილად შეიძლება დავრწმუნდეთ,აგრეთვე,კონიუნქციის შემდეგ თვისებებში:
(A٧B)^C=(A^C)٧(B^C)
(A^B)٧C=(A٧C)^(B٧C)
პირველი ტოლობას ეწოდება კონიუნქციის დისტრიბუტოლობის თვისება დიზიუნქციის მიმართ,ხოლო მეორეს–დიზიუნქციის დისტრიბუტოლობის კანონი კონიუნქციის მიმართ. ძნელი აღარ არის შემდეგ ტოლობათა დამტკიცება:
¬(A^B)=¬A٧¬B
¬(A٧B)=¬A^¬B
რომელთაც შოტლანდიელი მათემატიკოსის დე მორგანის სახელი ჰქვია.
კონიუნქცია აღმოცენდა,როგორც ‘და’ კავშირის ფორმალიზაცია და ანალოგი.
––>გამონათქვამთა იმპლიკაცია
ესაც არის ორობითი ოპერაცია, რომელიც სრულდება გამონათქვამებზე. თუ A და B ნებისმიერი გამონათქვამებია, მაშინ მათი იმპლიკაცია ეწოდება ახალ A=>B გამონათქვამს (ნიშანი => აქ იმპლიკაციას აღნიშნავს), რომლის ჭეშმარიტობაც დამოკიდებულია A და B გამონათქვამების ჭეშმარიტობაზე.
ეს დამოკიდებულება იმპლიკაციისთვის გამოიხატება შემდეგი ცხრილით,რომელშიც ჭეშმარიტობა აღნიშნულია ჭ ასოთი ხოლო მცდარობა მ ასოთი.

მაშასადამე, იმპლიკაცია მცდარია მხოლოდ იმ შემთხვევაში, როცა A–ჭეშმარიტია და B-მცდარი. ყველა სხვა შემთხვევაში იმპლიკაცია ჭეშმარიტია.
იმპლიკაცია აღმოცენდა ,გამონათქვამის – ‘თუ A,მაშინ B’ ანუ უფრო გასაგებად:’A-დან გამომდინარეობს B’-ს ფორმალიზაცია და ანალოგი. ამასთან, ცხადია, რომ A და B გამონათქვამების როლი იმპლიკაციაში სხვადასხვაა. A-ს ჰქვია პირობა,ანუ ანტეცედენტი, ხოლო B-ს – დასკვნა ანუ კონსეკვენტი.
––>გამონათქვამთა ეკვივალენცია(nxor)
ბინარული ოპერაცია,რომელიც გამონათქვამებზე სრულდება. თუ A და B ნებისმიერი გამონათქვამებია, მაშინ მათი ეკვივალენცია ეწოდება ახალ A<=>B გამონათქვამს (ნიშანი <=> ეკვივალენციას აღნიშნავს), რომლის ჭეშმარიტობა დამოკიდებულია A და B–ს ჭეშმარიტობაზე.
ეს დამოკიდებულება კონიუნქციისთვის გამოიხატება ასეთი ცხრილით,რომელშიც ჭეშმარიტობა აღნიშნულია ჭ ასოთი ხოლო მცდარობა მ ასოთი.:

მაშასადამე,ეკვივალენცია ჭეშმარიტია მხოლოდ მაშინ,როცა A–სა და B–ს ერთნაირი მნიშვნელობა აქვს. სხვა შემთხვევაში იგი მცდარია.
ეკვივალენცია აღმოცენდა, როგორც გამონათქვამის ‘მაშინ და მხოლოდ მაშინ’–ის ფორმალიზაცია და ანალოგი.

Desktop Mover

კიდე ერთი ჩემი პროგრამა რომელიც დესკტოპის ფოლდერს გადაგიტანთ სადაც გინდათ :)

ანუ მაგალითად ეხლა ხომ გაქვთ

DriveName:/documents and settings/all user/desktop ან რაღაც ეგეთი, ამიერიდან სადაც გინდათ იქ გადაიტანთ, მაგალითად მე მაქ E დისკზე გადატანილი, ანუ ყველა ფოლდერი და ფაილი E-ზე არის ჩემ დესკტოპზე… ;)

გამოყენებას მიხვდებით პროგრამის გაშვებისას დაიწერება.

code:

#Desktop MOVER.py v_1.2
#BY Dixtosa
#Enjoy this C001 Release
#08.01.2OO9
# |\/| /-\ | |_: Gio-white@posta.ge
# dix.ini.ge
import os,time
print "Desktop M0VER By Dixtosa"
#############
print "sad ginda ro iyos desktopi?\n"
print "ExamPle: D:\\suratebi\n"
des=raw_input("Enter Path:")
des=des.replace("/","\\")
F='reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /V Desktop /T REG_SZ /D '+des+' /F'
S='reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /V Desktop /T REG_SZ /D '+des+' /F'
os.system(F)
time.sleep(0.8)
os.system(S)
time.sleep(0.8)
os.system("taskkill /f /im explorer.exe")
print "GMADLOBT ROM IYENEBT CHEM PROGRAMAS. \n gtxovt daicadot manam bolomde chaitvirteba:)"
os.system("explorer.exe")
print "finished. but dont close me , i'll do that :)"
time.sleep(1.2)
import sys;sys.Exit()

CS Favour v1.5

ვინ არ თამაშობს ქუნთერს :D

ხოდა აგერ იგროკებს საჩუქრად , სკრიპტი რომელიც აკოპირებს მხოლოდ ქართულ აიპებს,CS-ის ფავორიტებში http://www.gametracker.com–იდან, ნუ ეს ყველაზე პოპულარულია და თითქმის ყველა სერვერია მანდ დარეგისტრირებული.

კოდი.

ყველაფერი MD5-ის შესახებ

კრიპტოგრაფიაში (MD5 Message-Digest algorithm 5) არის ხშირად გამოყენებადი, ლოგიკური ოპერატორებისგან აწყობილი რთული, 128 ბიტიანი ჰეშ დაშიფრვაა.

წინასწარ მოდით შევთანხმდეთ ტერმინებზე:
`ჰეში/hash` დავარქვათ ენკოდირებულ მონაცემს.
`პასვორდი` სიყტვას(მონაცემს) რომელიც გვინდა რომ დაიკრიპტოს.
`ვორდლისტი` ვუწოდოთ იმ სიას სადაც სავარაუდო პასვორდებია ჩაწერილი.

ჰეში ხშირად გამოისახება 32 HEX რიცხვებით(0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f). მაგ.:

A კონვერტირტება ასე: 7fc56270e7a70fa81a5935b72eacbe29
Gio კონვერტირდება ასე: f4e1d215f2df0639c0bdbd37bb54c68d
Dixtosa კონვერტირდება ასე: 2eaef0637ebc9cd83057b5123f75590f

Online Crypters
http://md5.gromweb.com/
http://www.iwebtool.com/md5
http://md5-hash-online.waraxe.us/

Online DeCrypters
http://www.md5decrypter.co.uk/
http://milw0rm.com/cracker/insert.php

დეკრიპტი მხოლოდ შეიძლება ორი გზით:
1)Rainbow Table
2)BruteForce

არცერთი ამ ორთაგან ვერ გაშიფრავს ერთი კლიკით ერთ წამში,ვინაიდან და რადგანაც მდ5 გაუშიფრავია დღესდღეისობით.

პირველი ხერხი იყენებს მონაცემთა ბაზას სადაც უკვე დაკრიპტული ჰეშებია. მარა ადვილი მისახვედრია მათი ზომები საოცრად დიდია.(GB-დან TB-მდე), მიუხედვად ამისა ის უფრო სწრაფი საშუალებაა პასვორდის დასაკრეკათ.

მეორე ხერხი ბრუტერია ანუ (პროგა/სკრიპტი) დაიწყებს ვორდლისტის თითოეულ ხაზზე მყოფ პასვორდის დაკრიპტვას და რომელიც დასაკრეკი ჰეშის იდენტური იქნება იმაზე გაჩერდება და გამოიტანს შედეგს.

MD5 გამოიყენება ისევე როგორც ინტერნეტში განსაკუთრებით ფორუმებზე, ასევე (ფასიან) პროგრამებზე.

როგორც ამბობენ MD5 არის Collision resistance, რაც ნიშნავს იმას, რომ ორი(ან მეტი) განსხვავებული პასვორდი, ვერ მიიგებს ერთიდაიგივე ჰეში.

Ronald Linn Rivest (დაიბადა 1947, Schenectady, ნიუ ორკი)–<<კაცი რომელმაც ეს ალგორითმი შექმნა უფრო სწორედ გაანახლა MD4-დან 1991წელს.
სხვათაშორის მდ5-ის აგმოაჩნდა(ადრეულ ხანებში) რაგაც ნაკლი და მანამ ბოლომდე დაუძლურდებოდა ეს ალგორითმი კრიპტოგრაფერებმა რეკომენდაცია მისცეს რომ გამოეყენებინა სხვა ალგორითმები როგორიცაა SHA-1.

ეს ალგორითმი, შეუქცევადობის გამო გამოიყენება ესე ხშირად და მასიურად.

სალტიანი ჰეშ
ზოგიერთ ფორუმებზე(და არა მარტო) ასევე გამოიყენება ორმაგი დაკრიპტვა.

იმისთვის რომ წარმოიდგინოთ რას ნინნავს სალტიანი ჰეშ, მივიჩნიოთ რომ ეს ფუნქცია: md5(“a”)-აბრუნებს a-ს md5 ჰეშს(ამ შემთხვევაში ეს ტოლია:0cc175b9c0f1b6a831c399e269772661-ის.).

სალტიანი ჰეშ გენერირდება ასე:
md5(md5(SaltCode)+md5(password))
სადაც:
SaltCode არის რაღაც კოდი რომელსაც სერვერი რეგისტრაციის(მაგალითად ფორუმზე) დროს შემთხვევით აიგებს და ინახავს ბაზაში. ეს შეიძლება იყოს რაგაც ასეთი: Li6#Ga
password არის ის პაროლი რომელსაც მომხმარებელი რეგისტრაციის დროს წერს.

+ ნისაჰნავს მიმატებას ანუ გამოდის რომ md5(SaltCode)+md5(password) არის 64 სიმბოლოიანი.
ანუ ბოლოს 64 სიმბოლოიან პასვორდის დაკრიპტავს და შეინახავს ბაზაში.

ლოგინ-ის დროს ხდება ასეთი რამ: სერვერი გამოიძახებს იმ კოდს(SaltCode) რომელიც მითითებულ მომხმარებელზეა მინიჭებული, დაკრიპტავს მას და მითითებულ პასვორდს მიამაგრებს ამ ორ ჰეშს ერთმანნეთთან, ამ შედეგსაც დაკრიპტავს და თუ ბაზაში არსებულ ჰეშს დაემთხვა მაშინ მომხმარებელი წარმატებით შევა ფორუმში. აღსანიშნავია ის ფაქტი რომ Rainbow table salt-თან უძლურია.

უსალტო ფორუმზე განსხვავებით სალტიანისგან შეიდზლება მომხმარებლის პაროლის შეცვლა, რატომ? იმიტომ რომ არავინ არ იცის(‘დაჟე’ არც ადმინმა) რომელ იუზერს რომელი SaltCode შეესაბამება, ‘იცის’  მხოლოდ ფორუმმა. ხშირად ადმინებს ეშლებათ ხოლმე ეს და უაზროდ უცვლიან იუზერს პაროლს …

აქვე გთავაზობთ python script-ს, რომელიც კრიპტავს პასვორდს. :)

import sys,math,structS=[[7,12,17,22],
[5,9,14,20],
[4,11,16,23],
[6,10,15,21]]

O=[0,1,5,0]
M=[1,5,3,7]

T = map(lambda i: long(4294967296.0*abs(math.sin(i))), range(1,65))

A,B,C,D=struct.unpack(“<IIII”,”\x01\x23\x45\x67\x89\xab\xcd\xef\xfe\xdc\xba\x98\x76\x54\x32\x10″)

F = lambda x,y,z: x&y | (~x)&z
G = lambda x,y,z: x&z | y&(~z)
H = lambda x,y,z: x^y^z
I = lambda x,y,z: y^(x|(~z))

def K(f,a,b,c,d,xk,s,i):
a += f(b,c,d)+xk+T[i]
a &= (2**32-1)
a = (a << s) | (a >> (32-s))
return (a+b) & (2**32-1)

FF = lambda *args: K(F,*args)
GG = lambda *args: K(G,*args)
HH = lambda *args: K(H,*args)
II = lambda *args: K(I,*args)

Func=[FF,GG,HH,II]

finished=0
l=0
while 1==1:

if finished:
chunk = chunk[64:]
if len(chunk) < 64:
break
else:
chunk = raw_input(“PassWord”)
l += len(chunk)
if len(chunk) < 64:
# Padding is always added :
# \x80+some \x00+bitlen (on 8 bytes, little endian)
# so that the input length is a multiple of 64 bytes.
chunk += “\x80”
chunk += “\x00″*( (64+56-(l+1))%64 )
chunk += struct.pack(“<II”,(l*8)&(2**32-1),((l*8)>>32)&(2**32-1))
finished = 1

L=[A,B,C,D]
for round in range(4):
for j in range(4):
for k in range(4):
ofs= ((j*4+k)*M[round]+O[round]) % 16
L[-k]=Func[round](L[-k],L[1-k],L[2-k],L[3-k],
struct.unpack(“<I”,chunk[4*ofs:4*ofs+4])[0],
S[round][k], round*16+j*4+k)
A+=L[0]
B+=L[1]
C+=L[2]
D+=L[3]

def pr(x):
return “%02x%02x%02x%02x” % (x&0xff, (x>>8)&0xff, (x>>16)&0xff,(x>>24)&0xff)

print pr(A)+pr(B)+pr(C)+pr(D)


სტატისტიკა:

  • 30,068 hits

free counters

აბირჟავებენ

Advertisements