Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2016-04-29 04:05:21

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

[SOLVED] Generowanie losowego i do tego poprawnego MAC

[url=https://forum.dug.net.pl/viewtopic.php?pid=299496#p299496]W tym wątku[/url] został poruszony ciekawy temat dotyczący generowania losowego adresu MAC. W skrócie, generowanie losowego MAC sprowadza się do wpisania w terminalu tego poniższego:

Kod:

macaddr=$(dd if=/dev/random bs=1024 count=1 2>/dev/null|md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4:\5:\6/')
echo $macaddr

Problem z tym losowym MAC jest taki, że jest on "zbyt losowy". xD I czasem przy przypisywaniu go dostaje się taki komunikat:

Kod:

# echo $macaddr
07:d4:51:9f:50:6c

# ip link set dev wlan0 address $macaddr
RTNETLINK answers: Cannot assign requested address

Chodzi generalnie o to, że:

MAC addresses have two special bits in the first byte:

    Bit 0 is the "multicast" bit, noting that the address is a multicast or broadcast address
    Bit 1 is the "local" bit, indicating that the MAC address was not assigned by the vendor and might not be entirely unique.

You are trying to set an address that has the multicast bit set, which does not work because any reply to your host would be interpreted as a multicast packet.

-- http://superuser.com/questions/725467/set-mac-address-fails-rtnetlink-answers-cannot-assign-requested-address[/quote]
[img]http://i.stack.imgur.com/IxQEB.png[/img]


Zatem, jak powinno się tę powyższą linijkę od generowania adresu przepisać, by MAC zawsze był poprawny? xD

Ostatnio edytowany przez morfik (2016-05-02 10:24:24)

Offline

 

#2  2016-04-29 06:54:02

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Generowanie losowego i do tego poprawnego MAC

Ok mam: xD

Kod:

#! /bin/sh

macaddr=$(dd if=/dev/urandom bs=1024 count=1 2>/dev/null|md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4:\5:\6/')

lastfive=$( echo "$macaddr" | cut -d: -f 2-6 )
firstbyte=$( echo "$macaddr" | cut -d: -f 1 )

# make sure bit 0 (broadcast) of $firstbyte is not set,
# and bit 1 (local) is set.
# i.e. via bitwise AND with 254 and bitwise OR with 2.

firstbyte=$( printf '%02x' $(( 0x$firstbyte & 254 | 2)) )

newmac="$firstbyte:$lastfive"

ip link set dev wlan0 address $newmac

Offline

 

#3  2016-04-29 17:45:22

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: [SOLVED] Generowanie losowego i do tego poprawnego MAC

Ale gimnastyka u Cieb xD

Kod:

perl -e 'for ($i=0;$i<6;$i++){@m[$i]=int(rand(256));} printf "%X:%X:%X:%X:%X:%X\n",@m;'

Przy okazji, /dev/urandom nie generuje liczb losowych, tylko ujawnia tajne dane o ruchach myszki na monitorze. :DDD

Ostatnio edytowany przez Jacekalex (2016-04-29 17:46:50)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#4  2016-04-29 19:44:11

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Generowanie losowego i do tego poprawnego MAC

MAC nie jest żadnym krytycznym punktem, by generować go z /dev/random . Jest o wiele większe prawdopodobieństwo, że dopasują ruch sieciowy do ciebie właśnie po tych losowych adresach, bo sporo z nich nigdy nie miało przypisanego vendorID. Teraz taki ty się loguje 20 razy i co za problem powiązać takie adresy albo skutecznie okroić poszczególnych użytkowników? xD Jest w debianie macchanger, on ma kilka ciekawych ficzerów, min. potrafi generować losowy adres tego samego vendora. Może także generować MAC z tej samej klasy urządzeń, np. masz kartę wifi, to przydzieli ci vendorów, którzy produkują wifi i inne takie ciekawe rzeczy, które w o wiele lepszym stopniu nadają się do wykorzystania przy darmowych sieciach wifi. Także znowu sam losowy MAC czasem może tylko więcej szkody narobić niż pożytku. xD

Poza tym, przetestował ten twój nowy tasiemiec:

Kod:

for i in `seq 1 10`
do

macaddr=$(perl -e 'for ($i=0;$i<6;$i++){@m[$i]=int(rand(256));} printf "%X:%X:%X:%X:%X:%X\n",@m;')
ip link set dev wlan0 address $macaddr
done

exit 0

I co? xD

Kod:

# /opt/skrypty/genmac
RTNETLINK answers: Cannot assign requested address
RTNETLINK answers: Cannot assign requested address
RTNETLINK answers: Cannot assign requested address
RTNETLINK answers: Cannot assign requested address
RTNETLINK answers: Cannot assign requested address
RTNETLINK answers: Cannot assign requested address

6 adresów z 10 jest nieprawidłowych. Ja wolę poćwiczyć jednak wygibasy xD

Offline

 

#5  2016-04-29 19:54:55

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: [SOLVED] Generowanie losowego i do tego poprawnego MAC

Fakt, ale to nie problem:

[b]cat `which genmac`[/b]

Kod:

#!/bin/bash

for i in `seq 1 10`; 
do 
macaddr=$(perl -e 'for ($i=0;$i<6;$i++){@m[$i]=int(rand(256));} printf "%X:%X:%X:%X:%X:%X\n",@m;');
ip link set dev lan address $macaddr 2>/dev/null && exit 0;
 done;

Kod:

time genmac

real    0m0.042s
user    0m0.008s
sys    0m0.012s

Chyba, że <0.1 sekundy to jakiś straszny problem.  XD

SOA#1

Ostatnio edytowany przez Jacekalex (2016-04-29 19:55:14)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#6  2016-04-29 20:03:00

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Generowanie losowego i do tego poprawnego MAC

To nie lepiej już jechać na tym moim? xD

Offline

 

#7  2016-04-29 20:09:30

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: [SOLVED] Generowanie losowego i do tego poprawnego MAC

Na jedno wychodzi.

Przewaga mojego nad macchanger jest taka, że mac-addres jest całkowicie z dupy wzięty.
Odchodzi ryzyko, że przez pomyłkę ustawisz macchangera na vendora, który wyprodukował w swojej historii tylko jedną kartę wifi. xD


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#8  2016-04-29 20:16:31

  Yampress - Imperator

Yampress
Imperator
Zarejestrowany: 2007-10-18

Re: [SOLVED] Generowanie losowego i do tego poprawnego MAC

http://www.debian.pl/viewtopic.php?f=28&t=33748

apt-get install macchanger


polecenie które ustawią nam losowy adres MAC dla interfejsu eth0


ifdown eth0
macchanger -r eth0
ifup eth0[/quote]

Offline

 

#9  2016-04-29 20:38:22

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: [SOLVED] Generowanie losowego i do tego poprawnego MAC

tak z ciekawości - to generujecie maki losowo, potem czytacie dokumentację...

typowe przypadki studentów uczelni prywatnych...

do cholery, ja bym się nie tyle nie przyznawał co raczej wstydził... ale jak wam pasuje bycie głąbem co trzech literek typu rfc nie rozumie to życzę powodzenia.


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
[i]Zespół Adwokacki Dyskrecja[/i]

Offline

 

#10  2016-04-29 20:53:04

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Generowanie losowego i do tego poprawnego MAC

@ethanak, no ale z czym masz problem? xD Ja tylko się zainteresowaniem tym tematem generowania losowych MAC, bo się przydaje. A, że na necie było szereg linijek generujących adresy, to ja to postanowiłem zweryfikować sobie. Okazało się, co się okazało, czyli wszystkie są do dupy. To próbowałem wymyślić jakieś rozwiązanie alternatywne. Wyszedł skrypt, potem zastąpiłem go przez macchanger i w sumie tylko dla interfejsów, które są dla publicznych sieci, np. ten wwan0. W sumie mam już coś takiego.

Kod:

allow-hotplug wwan0
iface wwan0 inet dhcp
    dns-nameservers 127.0.0.1
    pre-up macchanger -a $IFACE
    pre-up sleep 1
    pre-up echo -e "AT+CFUN=1\r" > /dev/huawei-E3372-0
    pre-up sleep 1
    pre-up echo -e "AT^SYSCFGEX=\"03\",3FFFFFFF,1,2,800C5,,\r" > /dev/huawei-E3372-0
    pre-up sleep 1
    pre-up echo -e "AT^NDISDUP=1,1,\"internet\"\r" > /dev/huawei-E3372-0
    pre-down echo -e "AT^NDISDUP=1,0\r" > /dev/huawei-E3372-0
    pre-down sleep 1
    pre-down echo -e "AT^SYSCFGEX=\"030201\",3FFFFFFF,1,2,800C5,,\r" > /dev/huawei-E3372-0
    pre-down sleep 1
    post-down echo -e "AT+CFUN=0\r" > /dev/huawei-E3372-0
    post-down macchanger -p $IFACE

Także, kokodżambo i do przodu, nie ma się znowu co dąsać. xD

A i jeszcze, kluczowe [b]macchanger -a[/b] , a nie [b]macchanger -r[/b] .

Ostatnio edytowany przez morfik (2016-04-29 20:55:02)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)

[ Generated in 0.011 seconds, 12 queries executed ]

Informacje debugowania

Time (s) Query
0.00009 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00106 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.144.47.115' WHERE u.id=1
0.00080 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.144.47.115', 1732997601)
0.00055 SELECT * FROM punbb_online WHERE logged<1732997301
0.00071 DELETE FROM punbb_online WHERE ident='185.191.171.13'
0.00082 SELECT topic_id FROM punbb_posts WHERE id=301065
0.00097 SELECT id FROM punbb_posts WHERE topic_id=28577 ORDER BY posted
0.00102 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=28577 AND t.moved_to IS NULL
0.00007 SELECT search_for, replace_with FROM punbb_censoring
0.00129 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=28577 ORDER BY p.id LIMIT 0,25
0.00083 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=28577
Total query time: 0.00825 s