Կարգերով պահոցներ՝ Տեք

Վատ միգրացիայի մասին

մօտ մէկ տարի առաջ խօստացել էի, որ կրկին գրելու եմ մատեանում։ Սակայն կեանքը նենց բան ա, որ մի օր խօստանում ես, ու յաջորդ օրը արդէն սկսում ես գործերով խառը լինել։

Միւս պատճառներից մէկը, որ չէի գրառում, այն էր, որ Հուգո գաղթ անելուց յետոյ, մատեանում ահագին խնդիրներ կային, մանաւանդ մեդիաների հետ, նկարները ցոյց չէր տալիս, իսկ վիդեոները չկան։

մի փոքր պատմեմ, թէ ինչպէս յունիքսի գործիքները օգտագործելով աւտոմատ հետ բերեցի նկարները։

Նախ պէտք է հասկանալ թէ ինչումն է խնդիրը։ MarkDown նիշերը բացելուց յետոյ, տեսայ որ նկարների պիտակն էր սխալ։ ՄարքԴաունում պէտք է լինի

![alt text](image.jpg)

Սակայն իմ մօտ WordPressից Hugo convert անելու ժամանակ այսպէս էր փոխուել՝

[<img src="հասցէ" ալտ="ինֆո"/>](հասցէ)

շատ լաւ, ուրեմն պէտք էր բոլոր ֆայլերի մէջ աւելացնել ! նշանը։
Բացի դրանից, պէտք էր հաստատ իմանալ, որ նկար ա, ու քանի որ converterը հենց [<img>](src) ֆորմատով էր սարքում, կարելի է ենթադրել, որ եթէ ունենք [<img ուրեմն դա նկար է, ու կարող ենք աւելացնել ! տառը։

պէտք է ընդամէնը մի հատ հրաման աշխատեցնել։

sed -i ''  's/\[<img/![<img/g' *

Եւ ահա, բոլոր նկարները հետ յայտնուեցին ։) օր՝ Լեգգի տառատեսակ

յաջորդ քայլը պէտք է լինի, թէ ինչպէս հետ բերել վիդէոների լինքերը։

ասանկ բաներ

Պատասխանել մեյլով

Ասք տաս տարեկան լինուքս հեռախօսով հաղորդագրութիւն ուղարկել եւ ստանալու մասին

նախաբան

Շաբաթ իրիկուն էր։ Գնացել էի ISTC մի քանի հատ սպասարկիչ թարմացնելու համար։ Ընկերներս այնտեղ էին, ու պարզւում է, որ հաքաթոն էր։ Թեման՝ Օփըն Գավըրնմընթ։

Ընկերներիս հարցրեցի «ինչո՞վ կարող եմ օգնել»։ ասեցին «արի փորձի Twilio-ի կամ այլ հաղորդագրութիւն ուղարկող/ստացող ծառայութիւն տրամադրող ընկերութեան հետ կպնել»։

դէ լաւ։ ինչքա՞ն բարդ կարող է լինել։ ունեն հաւանաբար մի հատ HTTP API, նայեցի, սիրուն ԱՊԻ-ներ ունէին։

դէ լաւ, գրանցուեցի մէկն ու մէկի մօտ, բայց արի ու տես, որ Հայաստանին ոչ մէկ բանի տեղ չի դնում (յետոյ էլ ասում են թէ մեր մօտ ՏՏ-ն զարգացած ա)։

ստանալ

իհարկէ, ես սիրում եմ ամէն ինչ իմ ձեռքերով անել։ ու ես ունեմ Նոկիա Ն900։ ու ինքը աշխատում ա լինուքսով, աւելի կոնկրետ՝ Մաեմոյով։

Շատ լաւ, մի քիչ research արեցի, ու պարզուեց, որ կարող եմ հաղորդագրութիւնները կարդալ D-Bus-ից օգտուելով։ Ինչ-որ փոքր փայթն ծրագիր էր, սակայն չէր աշխատում։ ու քանի որ հաքաթոն էր, ինձ պէտք էր ուղղակի աշխատեցնել այն շատ արագ, մի քանի րոպէ աչքով դիբագ արեցի ու վերջում ստացայ այս կոդը

#!/usr/bin/env python2.5
import sched, time
import dbus
import gobject
from dbus.mainloop.glib import DBusGMainLoop
import subprocess
import httplib, urllib

def octify(str):
        '''
        Returns a list of octet bytes representing
        each char of the input str.
        '''

        bytes = map(ord, str)
        bitsconsumed = 0
        referencebit = 7
        octets = []

        while len(bytes):
                byte = bytes.pop(0)
                byte = byte >> bitsconsumed

                try:
                        nextbyte = bytes[0]
                        bitstocopy = (nextbyte & (0xff >> referencebit)) << referencebit
                        octet = (byte | bitstocopy)

                except:
                        octet = (byte | 0x00)

                if bitsconsumed != 7:
                        octets.append(byte | bitstocopy)
                        bitsconsumed += 1
                        referencebit -= 1
                else:
                        bitsconsumed = 0
                        referencebit = 7

        return octets

def semi_octify(str):
        '''
        Expects a string containing two digits.
        Returns an octet -
        first nibble in the octect is the first
        digit and the second nibble represents
        the second digit.
        '''
        try:
                digit_1 = int(str[0])
                digit_2 = int(str[1])
                octet = (digit_2 << 4) | digit_1
        except:
                octet = (1 << 4) | digit_1

        return octet


def deoctify(arr):

        referencebit = 1
        doctect = []
        bnext = 0x00

        for i in arr:

                bcurr = ((i & (0xff >> referencebit)) << referencebit) >> 1
                bcurr = bcurr | bnext

                if referencebit != 7:
                        doctect.append( bcurr )
                        bnext = (i & (0xff << (8 - referencebit)) ) >> 8 - referencebit
                        referencebit += 1
                else:
                        doctect.append( bcurr )
                        bnext = (i & (0xff << (8 - referencebit)) ) >> 8 - referencebit
                        doctect.append( bnext )
                        bnext = 0x00
                        referencebit = 1

        return ''.join([chr(i) for i in doctect])


def createPDUmessage(number, msg):
        '''
        Returns a list of bytes to represent a valid PDU message
        '''
        numlength = len(number)
        if (numlength % 2) == 0:
                rangelength = numlength
        else:
                number = number + 'F'
                rangelength = len(number)

        octifiednumber = [ semi_octify(number[i:i+2]) for i in range(0,rangelength,2) ]
        octifiedmsg = octify(msg)
        HEADER = 1
        FIRSTOCTETOFSMSDELIVERMSG = 10
        ADDR_TYPE = 129 #unknown format
        number_length = len(number)
        msg_length = len(msg)
        pdu_message = [HEADER, FIRSTOCTETOFSMSDELIVERMSG, number_length, ADDR_TYPE]
        pdu_message.extend(octifiednumber)
        pdu_message.append(0)
        pdu_message.append(0)
        pdu_message.append(msg_length)
        pdu_message.extend(octifiedmsg)
        return pdu_message


def sendmessage(number, message):

        bus = dbus.SystemBus()
        smsobject = bus.get_object('com.nokia.phone.SMS', '/com/nokia/phone/SMS/ba212ae1')
        smsiface = dbus.Interface(smsobject, 'com.nokia.csd.SMS.Outgoing')
        arr = dbus.Array(createPDUmessage(number.replace('+', '00'), message))

        msg = dbus.Array([arr])
        smsiface.Send(msg,'')


def callback(pdumsg, msgcenter, somestring, sendernumber):

        msglength = int(pdumsg[18])
        msgarray = pdumsg[19:len(pdumsg)]

        msg = deoctify(msgarray)

        if msg > 0:
               print 'New message received from %s' % sendernumber
               print 'Message length %d' % msglength
               print 'Message: %s' % msg
               params = urllib.urlencode({'answer': msg})
               headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
               conn = httplib.HTTPConnection("sms.myserver.am:80")
               conn.request("POST", "/sms", params, headers)
               conn.close()


def listen():
        DBusGMainLoop(set_as_default=True)
        bus = dbus.SystemBus() #should connect to system bus instead of session because the former is where the incoming signals come from
        bus.add_signal_receiver(callback, path='/com/nokia/phone/SMS', dbus_interface='Phone.SMS', signal_name='IncomingSegment')
        gobject.MainLoop().run()


if __name__ == '__main__':
  import time

  def schedule_task(schedule, fn, *args):
      import sched
      s = sched.scheduler(time.time, time.sleep)
      startTime = time.mktime(time.strptime(schedule, '%b %d %H:%M %Y'))
      s.enterabs(startTime, 0, fn, args)
      s.run()

  import getopt, sys
  try:
    opts, args = getopt.getopt(sys.argv[1:],"hlt:", ["help","listen","time="])

  except getopt.GetoptError, err:
    # print help information and exit:
    print str(err) # will print something like "option -a not recognized"
    usage()
    sys.exit(2)
  listening = False
  timeofday = ''
  for opt, arg in opts:
    if opt in ("-h", "--help"):
      usage()
      sys.exit()
    elif opt in ("-l", "--listen"):
      listening = True
    elif opt in ("-t", "--time"):
      timeofday = arg
    else:
      assert False, "unhandled option"

  listen()

Հետաքրքիր բաները կատարւում են listen() եւ callback() ֆունկցիաների մէջ։ listen()-ը լսում ա SMS-ներին, օգտագործելով D-Bus, ու SMS ստանալուց կանչում է callback() ֆունկցիան, որտեղ փոփոխութիւններ եմ կատարել։

Օգտագործելով urllib եւ httplib աւանդական գրադանները, POST հարցում եմ ուղարկում ոմն sms.myserver.am-ին։

ուղարկել

Հաղորդագրութիւն ուղարկելու համար, ես վստահ էի, որ ինչ-որ մէկը, հաստատ մի ծրագիր գրել է, ապա ման եկայ Մաեմոյի շտեմարանում ու գտայ smssend ծրագիրը։

Շատ լաւ, հեռախօսի վրայ աշխատեցնում եմ

apt-get update # հազարի տարի է update չեմ արել
apt-get install smssend

շաաաատ լաւ, հիմա արդէն, պէտք է աւտոմատ ձեւով սպասարկչից ստանամ թէ որ հեռախօսահամարին ինչ պէտք է ուղարկեմ, եւ վերջ, ապա մի քանի րոպէում գրում եմ polling անող ծրագիր HTTP-ի համար։ ջահելները սրան ասում են ծիպը բզող տեխնոլոգիա։

ահա եւ կոդը։

#!/usr/bin/env python2.5
import subprocess
import httplib, urllib
import simplejson as json
import time


def send_sms(num, text):
    print "sending sms"
    subprocess.Popen(["smssend", "-s", "-n", num, "-m", text])


def loop_fetch():
    conn = httplib.HTTPConnection("sms.myserver.am:80")
    conn.request("GET", "/sms")
    s = conn.getresponse().read()
    if s != 'false':
        j = json.loads(s)
        send_sms(j['number'], j['text'])
    time.sleep(10)
    print "waking up"
    loop_fetch()

def loop():
    loop_fetch()

if __name__ == '__main__':
    print "hello!"
    loop()

վերջաբան

ահա, հիմա բացում եմ երկու հատ տերմինալ, ու երկու ծրագրերն էլ աշխատեցնում եմ։

$ chmod +x sms.py
$ ./sms.py
$ chmod +x poll.py
$ ./poll.py

Գնում եմ տղաների մօտ եւ ուրախանալով ասում «տղանե՜ր, չscalable Twilio եմ սարքել»։

ասանկ բաներ…

Պատասխանել մեյլով

Ասք կրկին բլոգելու մասին

Մի քիչ ուզում եմ խօսել եւ անկեղծանալ։

Արդէն մի տարուց աւել է նորմալ չեմ գրառել։ խառն էի, շատ խառն էի։ Կը ներես եթէ երկար ժամանակ է չեմ գրել այստեղ։ ես չեմ մոռացել քո մասին, սիրելի՛ս։

Պատմեմ մի քիչ, թէ ինչեր եմ արել, ինչեր են եղել։ հա՞։

Նախ, մի քանի տեղ դասաւանդել եմ, վատ չէր, ասեմ աւելին՝ ահագին սովորեցի երբ դաս էի տալիս։ որ կարողանաս շատ լաւ բացատրել ուրիշին, պէտք է նախ շատ լաւ հասկանաս։ արդիւնքում տեսական գիտելիքներս սարսափելի լաւացան։

Մի ֆեյլ փորձ ունեցայ ստարտափ վարելու։ Ինձ թւում էր թէ ֆեյլը ես էի, բայց դէ ես տեխնիկական ղեկավարն էի, արի ու տես, որ բիզնեսը շուռ գնաց։ ես նոյնիսկ ամէն բան անում էի, որ տեխնիկապէս կարողանայի բիզնեսին արագ բրդել առաջ։

Ինչեւէ։ անցած բաներ են ։Ճ եկուր ներկայից ու ապագայից խօսենք։ հա՞

Հիմա կեանքումս երկու գլխաւոր բան է կատարւում։

Առաջին. վերջապէս, հիմնեցի իմ սեփական ստարտ-ափը։ անունը՝ illuria security։ արտադրանքը՝ հաքերների թակարդների աւտոմատացման համակարգ։

Երկրորդ. Ուզում եմ գրառել այստեղ, ու շատ, ու միշտ կիսուեմ հետդ։ գիտեմ, հեռուացել ենք, բայց իրար մասին չենք մոռացել, վստահ եմ։

Մինչ յաջորդ հանդիպում։

Ասանկ բաներ…

Պատասխանել մեյլով

Գաղթ դէպի Հուգօ

Մի քանի տարի WordPress օգտագործելուց յետոյ, ամէն անգամ նոր գրառում գրելուց մտածում էի դէպի ստատիկ համակարգ տեղափոխուել։ Մի քանի օր առաջ Անգլերէն վեբլոգս սկսելուց յետոյ վերջապէս որոշեցի Հայերէն օրագիրս էլ տանել Հուգօ։ Լիքը բան հաստատ կոտրուել է, յղումներ, նկարներ, եւ այլն, բայց գոնէ ամէն ինչ ստատիկ կը լինի եւ չեմ մտածի սերվեր սայդ աշխատող ծրագրերի մասին։

Ու տենց

Պատասխանել մեյլով

Ասք BSD֊ում CARP֊ով ծանրաբեռնուածութեան հաւասարակշռող կարգաւորելու մասին

CARP֊ի մասին

CARP֊ը, նոյն ինքը Common Address Redundancy Protocol-ը, ցանցային հաղորդակարգ է, որը թոյլ է տալիս մի քանի հանգոյց նոյն ցանցում ունենան նոյն ԱյՓին 🙂 CARP-ի գլխաւոր նպատակն է ֆեյլօվերների ժամանակ ապահովել կապը։ ճիշտ կարգաւորումով այն կարող է օգտագործուել որպէս ծանրաբեռնուածութեան հաւասարակշռող (Load Balancer)։

CARP-ը ստեղծուել OpenBSD֊ի կողմից է որպէս Ցիսկոյի VRRP֊ի ու HSRP֊ի ազատ եւ անպատենտ տարբերակ 🙂

Ինչու (Free|Open)BSD֊ի վրայ։

ահաւոր յարմար է, հեշտ, տեղակայումը տեւում է չորս րոպէ ։պ

Օկ, հիմա կարգաւորենք։

Այս փորձարկման համար սարքել եմ երկու վիրտուալ մեքենայ, hosta եւ hostb, որտեղ, hosta-ն լինելու է գլխաւոր մեքենան, իսկ hostb-ն լինելու է backup-ը։

օքեյ, հիմա։ CARP-ի համար պէտք են հետեւեալ բաները՝ Մեքենաներ, ամէն մէկն ունենում է իր իրական ԱյՓին (Real IP), եւ բոլորը միասին սպասարկում են Shared IP որն ունի իր Virtual Host ID :))

օկ, նախ կարգաւորենք իրական այփիները, եւ տեսնենք որ մէկը միւսին հասանելի է։

hosta.carp:

ifconfig em1 inet 192.168.69.10/24

ապա hostb.carp:

ifconfig em1 inet 192.168.69.20/24

եւ իրար պինգենք (։

ահա, հիմա երկուսն էլ իրար հասանելի են։ հիմա արդէն կարգաւորենք VHID-ն եւ shared IP-ն (։

hosta.carp:

ifconfig em1 inet vhid advskew 100 pass mypassword alias 192.168.69.50/24

hostb.carp:

ifconfig em1 inet vhid advskew 200 pass mypassword alias 192.168.69.50/24

advskew-ն որն աւելի ցածր է, դա աւելի բարձր priority ունի։

ես չուզեցի հրաման աշխատեցնել, նախընտրում եմ սկրիպտ գրել, ահա եւ դա։

յուշում, չմոռանալ միացնել միջուկի մոդուլը՝ kldload carp

ահա եւ երկու մեքենաները, ոնց տեսնում էք, մէկը master իսկ միւսը backup 🙂

լաւ, հիմա արդէն փորձարկում անենք։

դրա համար ես կը քաշեմ երկուսի վրայ էլ վեբ սերվեր, ապա ամէն մէկի մէջ գրենք թէ ինքը ով է ։)

հիմա, մաաաարդ ես, եթէ HostA-ին ինչ որ բան լինի, (էս դէպքում ես Reboot արեցի) ապա HostB-ն է արդէն պատասխանում 🙂

լաւ, հիմա միքիչ աւելի հետաքրքիր բան։ շատ ժամանակ ուզում ենք մեր միջավայրը փոխել, ասենք Dev վերսիան release անել, բայց երբէք downtime չենք ուզում։

հիմա ունեմ HostDev, որը ունի Dev վերսիան, հիմա դա պէտք է Release անել։

նախ իհարկէ դա կարգաւորում ենք CARP-ով (իհարկէ իր իրական այփին կարգաւորելուց յետոյ)։

ifconfig em1 inet 192.168.69.32/24
ifconfig em1 inet vhid 1 advskew 99 pass mypassword alias 192.168.69.50/25

ապա իրեն դնում ենք MASTER

ifconfig em1 vhid 1 state master

ու ֆսյո (։

ասանկ բաներ 🙂

Պատասխանել մեյլով

ասք ինտերֆեյսի աւանդական անուան մասին

լինուքս բաշխումների նոր վարկածներում (արդէն քանի տարի է) անցել են ոչ-աւանդական դրայւերի հիման վրայ ինտերֆեյսների անուանմանը, օրինակ՝ wlan0-ի փոխարէն wlp8s0 կամ eth0-ի փոխարէն ens3s0, եւ այլն։ որը ինձ դուր չի գալիս։ դէ եթէ նոյն բանը լինէր ԲՍԴ-ում, կասէի օկ է, ԲՍԴ-ական է, բայց լինուքսի քսան տարի մշակոյթը փոխելը (անհիմն) այդքան ալ սիրուն չէ (։

ցոյց տամ թէ ինչպէս հետ փոխել աւանդական անուններին։

այս մեթոդը կ’աշխատի կամայական լինուքսում, եթէ բութլոդերը գրաբն է (շատ քիչ հաւանական է, որ Լիլո էք օգտագործում, ու այս գրածս կարդում էք ։պ)

Գրաբը գեներացնում է իր կարգաւորումները grub-mkconfig հրամանով, սակայն մինչ այդ այն ունի նաեւ իր default եւ user-default կարգաւորումները որի հետ «հաշուի է նստում»։

/etc/default/grub ֆայլում գոյութիւն ունի GRUB_CMDLINE_LINUX_DEFAULT փոփոխականը, որտեղ պէտք է աւելացնել հետեւեալ արժէքը՝ net.ifnames=0

այսինքն հիմա պէտք է լինի այսպէս՝

GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0"

ահա, հիմա էլ պէտք է նոր քոնֆիկ ֆայլը գեներացնել՝

grub-mkconfig -o /boot/grub/grub.cfg

ըհը, յաջորդ բութի ժամանակ կ՚ունենանք ինտերֆեյսներ աւանդական անուններով 😀

Պատասխանել մեյլով

Յունիքսում ստանդարտ գաղտնագրելու մասին

ուզում եմ խօսել ֆայլերի գաղտնագրման մասին։ բայց ոչ GnuPG-ով եւ/կամ EncFS-ով ինչպէս միշտ առաջարկում եմ։

խօսքս գնում է միանգամեայ գաղտնագրման մասին, այս անգամ OpenSSL-ով։

գաղտնագրում ենք mytext.txt ֆայլն այսպէս՝

openssl enc -aes-256-cbc -in mytext.txt -out encrypted.asc

ապա մուտքագրում ենք գաղտնագիր։ չմոռանաք գաղտնագիրը, եւ չգրէք ոչ մէկ տեղ ։Ճ

հիմա ապագաղգտնագրում ենք՝

openssl enc -d -aes-256-cbc -in encrypted.asc -out hertext.txt

ահա եւ ջիֆ (։

Պատասխանել մեյլով

Ասք ՔիւԷՄԻւ-ի, հիւրերի, տանտէրի ու իրենց կամուրջի մասին

ընկերներիս մեծ մասը օգտագործում են Վիրտուալ Բոքս, սակայն ես չեմ սիրում դա։ նախ ահաւոր երկար է քոմփայլ արւում, յետոյ էլ քոմանդ լայնից մի քիչ բարդ է։

ՔիւԷՄԻւ֊ն աւելի պարզ է, համ էլ նորմալ աշխատում է KVM֊ի հետ։ նորմալը որն է, հենց իրար համար են ստեղծուած ։Ճ

ամէն դէպքում։ էսօր արագի մէջ ցոյց եմ տալու, թէ ինչպէս սարքել կամուրջ, որ կարողանան հիւր մեքենաները շփուել միասին, ինչպէս նաեւ տանտէր մեքենայի հետ (։

նախ, ես ունեմ հետեւեալ ինտերֆեյսները՝

հիմա, պէտք է անել հետեւեալը. նախ սարքել երկու հատ TUN/TAP ինտերֆեյս, որը թոյլ կը տայ մեր հիւր մեքենաներին կպնեն, ապա այդ երկու ինտերֆեյսները միացնում ենք իրար, սարքելով br0 կամուրջ ինտերֆեյս։

ու այդ br0-ն նաեւ լինում է մեր տանտէր մեքենայի ինտերֆեյը։

նախ ստուգենք եթէ մեր միջուկը սպասարկում է TUN/TAP ինտերֆեյսը։ գրեփում ենք կարգաւորումները.

antranigv@zvartnots ~ $ grep CONFIG_TUN /boot/config-`uname -r`
CONFIG_TUN=y

ահա, ինձ մօտ այդ հնարաւորութիւնը կայ, ձեր մօտ հաւանաբար y-ի փոխարէն կը լինի m։ այսինքն որպէս մոդուլ։

հիմա պէտք է սարքել երկու TAP ինտերֆեյս, ամէն մէկը մի հիւր մեքենայի համար։ դրա համար պէտք է լինել ռութ (։

antranigv@zvartnots ~ $ sudo tunctl -t tap0 -u antranigv -g kvm
Set 'tap0' persistent and owned by uid 1000 gid 78
antranigv@zvartnots ~ $ sudo tunctl -t tap1 -u antranigv -g kvm
Set 'tap1' persistent and owned by uid 1000 gid 78

իհարկէ antranigv-ն պէտք է փոխէք ձեր յուզերնեյմով, որ կարողանաք օգտագործել ինտերֆեյսը որպէս յուզեր (։

ահա, հիմա արդէն ունենք երկուսն էլ (։

հիմա պէտք է կամուրջ սարքել, ու երկուսը միացնել իրար ։Ճ

antranigv@zvartnots ~ $ sudo brctl addbr br0
antranigv@zvartnots ~ $ sudo ifconfig br0 192.168.70.1
antranigv@zvartnots ~ $ sudo brctl addif br0 tap0
antranigv@zvartnots ~ $ sudo brctl addif br0 tap1

ու վերջում պէտք է sysctl-ով միացնել IP forwarding-ը որ մեր սարքը աշխատի որպէս ռաութեր։

net.ipv4.ip_forward = 1

թոյն ^^ հիմա արդէն պէտք է մեքենաները միացնել։ ես ուզում եմ միացնել իմ երկու մեքենաները։ մէկը իմ ամենաառաջին յունիքսն է եղել, իսկ միւսը էքսփլոյթ էքսերսայզի նեբուլա մեքենան է, անպայման խորհուրդ եմ տալիս սովորել դրա վրայ (։

նախ նեբուլան՝

antranigv@zvartnots ~/exploit-exercise $ qemu-system-x86_64 -enable-kvm \
> -cdrom exploit-exercises-nebula-5.iso \
> -m 512M \
> -monitor stdio \
> -name nebula \
> -net nic,model=e1000,macaddr=52:54:00:00:1F:EC -net user,hostname=nebula \
> -net nic,model=e1000,macaddr=52:54:00:00:35:FE -net tap,ifname=tap0,script=no,downscript=no \
> 

ահա, մեր նեբուլայում երեւում են երկու ինտերֆեյս։ դրել եմ մակ հասցէնէերը որ կարողանամ տարբերել, մէկը սովորական յուզեր ինտերֆեյս է, որը թոյլ է տալս մտնել համացանց, իսկ միւսը որ միանայ մեր ներքին ցանցին։ հիմա պէտք է ներքին ցանցի ինտերֆեյսին տալ ներքին այփի։ ինչպէս որ վերեւում էինք նախատեսել (։

հիւր ՕՀ-ում անում ենք

ifconfig eth1 inet 192.168.70.10

ու արդէն նոյն ցանցի մէջ ենք, հիմա էլ կպնում ենք իրար (։

հիմա նոյնը պէտք է անել միւս հիւրի հետ։ ահա

antranigv@zvartnots ~/oldlinux $ qemu-system-x86_64 -enable-kvm \
> -m 512M \
> -name wirelesscracker \
> -cdrom wirelesscracker.iso \
> -net nic,model=e1000,macaddr=52:54:00:00:30:FE -net tap,ifname=tap1,script=no,downscript=no \
> -monitor stdio

ահա եւ միացաւ (։

հիմա այստեղ էլ ենք կարգաւորում.

ifconfig eth0 inet 192.168.70.11

հիմա փորձենք ամէն տեղ պինգել ։Ճ

ահա, ամէն ինչ աշխատում է (։

ու տենց։

Պատասխանել մեյլով