Toon posts:

Mac Address

Pagina: 1
Acties:
  • 219 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb misschien een niet "allerdaagse" vraag, maar ik wil dit graag weten door nieuwsgierigheid.

Ik ben bezig met ICND1 examen van Cisco en leer nu "achter de schermen" hoe een pakketje word verstuurd op basis van een IP Address en een MAC Address. Het MAC Address zit in de ROM van de NIC gebakken en ik wil graag weten of dit ook in het geheugen van het OS word geladen.

Als ik b.v. ipconfig in een cmd intyp, leest de applicatie op dat moment de ROM van de NIC uit? Of haald hij dit uit het geheugen? Ik kan me indenken dat deze gegevens bij het opstarten van een OS word ingelezen in het geheugen.

Met de applicatie SMAC ( te vinden op http://www.klcconsulting.net/smac ) is het mogelijk om het MAC Address te spoofen. Ik neem dan aan dat dit niet via de NIC word gedaan?

Ik kan me dan alleen voorstellen als het MAC Address niet word ingelezen door het OS dat er per pakket de Source Mac Address word veranderd in datgene wat je in SMAC invult?

Ik kan dit nergens terug vinden op internet :|

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Stop AI Slop

Interessante vraag, waarop ik je ook niet zo 1-2-3 het antwoord kan geven.

Ik weet wel dat je in Windows bij de meeste netwerkkaarten het MAC-adres handmatig kunt wijzigen in Apparaatbeheer, bij de eigenschappen van de kaart. Of het dan ook in de NIC zelf gewijzigd wordt, of dat Windows (c.q. de NIC-driver) dat zelf bijhoudt kan ik je helaas niet vertellen.

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Verwijderd

Topicstarter
CodeCaster schreef op donderdag 13 december 2007 @ 13:07:
Interessante vraag, waarop ik je ook niet zo 1-2-3 het antwoord kan geven.

Ik weet wel dat je in Windows bij de meeste netwerkkaarten het MAC-adres handmatig kunt wijzigen in Apparaatbeheer, bij de eigenschappen van de kaart. Of het dan ook in de NIC zelf gewijzigd wordt, of dat Windows (c.q. de NIC-driver) dat zelf bijhoudt kan ik je helaas niet vertellen.
Het aanpassen van een MAC Address verschilt per manufactures toch? Niet elke manufactures laat dit toe volgens mijn.

Verwijderd

Het MAC adres is idd ingebakken in het ROM van je NIC. Het is echter mogelijk om zelf data op de lijn te zetten, met je eigen MAC adressen. Met LibPCap in Linux en WinPCap voor Windows is dit bijvoorbeeld mogelijk. Je bypassed dan het MAC van de ROM.

Het OS leest inderdaad het MAC uit bij het opstarten van je netwerkkaart. Dit doet hij dmv. de NIC driver. Sommige NICs stellen je idd in staat om dit adres te wijzigen. Een MAC is trouwens alleen relevant binnen het Broadcast domain. Buiten het Broadcast domain is wordt de MAC immers veranderd door de gateway. Het is dus niet mogelijk om een MAC te spoofen naar het internet toe.

  • elTigro
  • Registratie: November 2000
  • Laatst online: 20-02 06:15

elTigro

Es un Gringo!

de Data link layer, bestaat uit de LLC en de MAC layer, LLC is de software component daarvan.
ik kan me voorstellen dat die tooltjes daar op ingrijpen.
Wellicht dat het een default is voor een ethernetkaart driver om als src mac adres het burnedin adres te nemen, maar dat je (de software dan) daar gewoon van af kunt wijken als je dat zou willen...

okay... spuit 11 enzo... :)

[ Voor 6% gewijzigd door elTigro op 13-12-2007 13:59 ]

Lazlo's Chinese Relativity Axiom:No matter how great your triumphs or how tragic your defeats --approximately one billion Chinese couldn't care less.


Verwijderd

Topicstarter
Verwijderd schreef op donderdag 13 december 2007 @ 13:53:
Het MAC adres is idd ingebakken in het ROM van je NIC. Het is echter mogelijk om zelf data op de lijn te zetten, met je eigen MAC adressen. Met LibPCap in Linux en WinPCap voor Windows is dit bijvoorbeeld mogelijk. Je bypassed dan het MAC van de ROM.

Het OS leest inderdaad het MAC uit bij het opstarten van je netwerkkaart. Dit doet hij dmv. de NIC driver. Sommige NICs stellen je idd in staat om dit adres te wijzigen. Een MAC is trouwens alleen relevant binnen het Broadcast domain. Buiten het Broadcast domain is wordt de MAC immers veranderd door de gateway. Het is dus niet mogelijk om een MAC te spoofen naar het internet toe.
Bedankt!

Ik heb gekeken met een debugger door de applicatie te attachen of er iets word geschreven of gelezen in het geheugen bij het inlezen of wegschrijven van een MAC Address. Dit is niet het geval. Er staat dus niets in het geheugen zelf. Dus bij het laden van het OS word er niets in geheugen geplaatst vermoed ik.

Omdat de applicatie geen gebruik maakt van het geheugen om het MAC Address in te lezen of weg te schrijven hoeft het niet zo te zijn dat het niet door het OS word ingeladen natuurlijk, maar ik ga er van uit dat dit zo is en het door de driver word geregelt.

Toch vraag ik me af waar...

Ik kan inderdaad alleen bedenken dat wanneer het pakketje de kabel op gaat er door de applicatie de source MAC Address word herschreven?

  • Bergen
  • Registratie: Maart 2001
  • Laatst online: 13-03 00:29

Bergen

Spellingscontroleur

Het MAC-adres van je netwerkkaart kun je altijd veranderen. Als het niet dmv de geavanceerde instellingen van je netwerkkaart kan ("netwerkadres" heet het daar, invullen zonder streepjes/dubbele punten/etc, gewoon alles aanelkaar vast), dan kan het wel via het register: http://www.klcconsulting.net/Change_MAC_w2k.htm

Of Windows hem laadt weet ik niet, maar Linux laadt wel degelijk het MAC-adres uit de netwerkkaart. Het lijkt mij dat elk OS dat moet doen, hoe moet het OS anders pakketjes opbouwen? Hij zal daarvoor toch zijn eigen MAC moeten weten.

De functie voor het starten van een Realtek 8139 kaart, Linux kernel driver:
(linux-2.6.23/drivers/net/8139too.c)
C:
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
/* Start the hardware at open or resume. */
static void rtl8139_hw_start (struct net_device *dev)
{
    struct rtl8139_private *tp = netdev_priv(dev);
    void __iomem *ioaddr = tp->mmio_addr;
    u32 i;
    u8 tmp;

    /* Bring old chips out of low-power mode. */
    if (rtl_chip_info[tp->chipset].flags & HasHltClk)
        RTL_W8 (HltClk, 'R');

    rtl8139_chip_reset (ioaddr);

    /* unlock Config[01234] and BMCR register writes */
    RTL_W8_F (Cfg9346, Cfg9346_Unlock);
    /* Restore our idea of the MAC address. */
    RTL_W32_F (MAC0 + 0, cpu_to_le32 (*(u32 *) (dev->dev_addr + 0)));
    RTL_W32_F (MAC0 + 4, cpu_to_le32 (*(u32 *) (dev->dev_addr + 4)));

    /* Must enable Tx/Rx before setting transfer thresholds! */
    RTL_W8 (ChipCmd, CmdRxEnb | CmdTxEnb);

    tp->rx_config = rtl8139_rx_config | AcceptBroadcast | AcceptMyPhys;
    RTL_W32 (RxConfig, tp->rx_config);
    RTL_W32 (TxConfig, rtl8139_tx_config);

    tp->cur_rx = 0;

    rtl_check_media (dev, 1);

    if (tp->chipset >= CH_8139B) {
        /* Disable magic packet scanning, which is enabled
         * when PM is enabled in Config1.  It can be reenabled
         * via ETHTOOL_SWOL if desired.  */
        RTL_W8 (Config3, RTL_R8 (Config3) & ~Cfg3_Magic);
    }

    DPRINTK("init buffer addresses\n");

    /* Lock Config[01234] and BMCR register writes */
    RTL_W8 (Cfg9346, Cfg9346_Lock);

    /* init Rx ring buffer DMA address */
    RTL_W32_F (RxBuf, tp->rx_ring_dma);

    /* init Tx buffer DMA addresses */
    for (i = 0; i < NUM_TX_DESC; i++)
        RTL_W32_F (TxAddr0 + (i * 4), tp->tx_bufs_dma + (tp->tx_buf[i] - tp->tx_bufs));

    RTL_W32 (RxMissed, 0);

    rtl8139_set_rx_mode (dev);

    /* no early-rx interrupts */
    RTL_W16 (MultiIntr, RTL_R16 (MultiIntr) & MultiIntrClear);

    /* make sure RxTx has started */
    tmp = RTL_R8 (ChipCmd);
    if ((!(tmp & CmdRxEnb)) || (!(tmp & CmdTxEnb)))
        RTL_W8 (ChipCmd, CmdRxEnb | CmdTxEnb);

    /* Enable all known interrupts by setting the interrupt mask. */
    RTL_W16 (IntrMask, rtl8139_intr_mask);
}

In regel 18 en 19 wordt het MAC-adres uit het geheugen van de kaart gehaald.

[ Voor 78% gewijzigd door Bergen op 13-12-2007 14:20 ]

Pagina: 1