Witam serdecznie kolegow .
A odpowiedz kieruje na zapytanie kol. michal_dydycz.
Pamiec flash mialem z NanoStation M2 LOCO, bo specjalnie wylutowalem aby sprawdzic czy tak faktycznie sie stanie, ze po zaprogramowaniu flash sprzet sie zglosi jak oryginalny.
Do flash wgralem cala zawartosc flash, ktory dziala ok z softem UB a kiedy wlozylem flash z  NanoStation M2 LOCO do sprzetu UNIFI AP to juz sie pojawil komunikat o tym ze sprzrt podrobiony.
Taka sama podmiane zrobilem w NS M2 P i tez sie komunikat pojawil.
A co do source ubnt  czyli SDK, to w sieci sa polokowane i mozna je pobrac .
Pamietaj abys SDK max pobral wersje XM V 5.5.6 bo sie zmieni U-Boot .
Teraz sie zastanawia, ze musi byc jakis program w katalogu BIN lub SBIN ktory cos odczytuje z flash.
Ale to tlko moje przypuszczenie. Ale moze Ty cos nowego wniesiesz do tematu.
Ja juz juz nie testuje bo sprzet oddam i bede mial to z glowy a pozostanie doswiadczenie.
Pozdrawiam serdecznie .

Feedhorn

Witam serdecznie kolegow czytajacych .
Po kolejnym dniu walki w koncu UNIFI AP LR  jest legalnym urzadzeniem.
Udalo sie to po wielu godzinach podmiany poszczeglonych blokow mtd0 do mtd5 wydzielonych ze zgranego uszkodzonego softu, ktory zgralem po wylutowaniu flash.
Dopiero kolejna podmiana zakonczyla sie sukcesow po zaprogramiu flash . Tym zmieniajacym  urzadzenie UNIFI na legalne byl blok mtd5 ze starego softu uszkodzonego. Poszczegolne podmiany blokow robilem w HEXEDIT co bylo troche uciazliwe i musialem dokladnie wyszukiwac adresy.
Blok mtd5 zaczyna sie od adresu 00F0000  a konczy 00FFFFF  i jest to jednoczesnie koniec pliku wgrywanego do flash.
Poczatek to adres MAC, ktory wystepjue kilka razy.
Te operacje robilem ciagle na oryginalmej kosci flash wylutowanej z UNIFI.
Dla ciekawosci,  kiedy juz wszystko poszlo ok i urzadzenie sie odezwalo jako legalne juz sprawdzony wsad zgralem do pliku z tej kosci oryginalnej i zaprogramowalem inna kosc 8MB i po wlozeniu do sprzetu i uruchmieniu pojawil sie komuikat ze urzadzenie jest pdrobione.
Po wymianie flash na oryginalny wszystko bylo ok.
Wszystkie te prace szly bardzo sprawnie dzieki temu, ze flash byl na podstawce.

Konczac mam pytanie do pepek2 i Cezarego jak rowniez do innych kolegow, czy w pamiec flah jest zapisany  unikatowy numer nadawany przez producenta lub jakis inne znaki, ktore sie jedynie odczytuje?
Bo to by swiadczylo, ze wsad jest przypisany do kosci.

To co wczesniej opisalem nie mam pewnosci na 100% ze tak jest.

Temat ozywienia UNIFI AP uwazam za zakonczony, a jak beda jakies pytania to zawsze jestem gotow odpowiedziec.
Gdy bym to mial robic za pieniadze to by sie tego nigdy nie podjal, ale ze jestem pasjonatem jak wielu z nas to przesiedzialem wiele godzin aby temat zakonczyc pomyslnie.
Dziekuje wiele Wam za udzielone informacje i wsparcie.

Feedhorn

Witam serdecznie kolegow zainteresowanych temate,
Co ja na tym etapie stwierdzlem co moze zainteresuje pepek2. jest to sprawa numeru seryjnego pamieci flash. Mnie sie to pojawia kiedy przygotowuje flash do zaprogramowania.
Uzywam prostego programatora z LTP i paru rezystow.

Tu link do fotki jak to wyglada na moim programatorze.

http://www.fotosik.pl/zdjecie/a804faf39385e4c9

To moze byc porownywane z tym co jest zapisane w pamieci flash a odpowiedni skrypt w sofcie odczytuje i  porownuje a kiedy wystepuje roznica  to sifte nie uruchamia sie do konca i  daje komunikat jaki wczesniej opisalem.
Ni nic dalej sie nie dzieje.

Mysle, ze gdzies to ludzie w sieci byc moze opisali jak to obejsc lub co zmienic w kodzie bin przed wgraniem do pmieci flash.
Ale caly czas sie uczymy.
Mysle, ze ktos z kolegow czytajacych ma  wiedze o tym i cos nam napisze jakies informacje pomocne.

Feedhorn

Witam ponownie kolegow.
Majac sprzet juz ozywiony, postanowilem potestowac pare roznych wersji softu a chodzilo mi o to czy ruszy na sofcie firmy.  Ale cos UBIQUITI wymyslio, ze po wgraniu softu formowego pojawia sie komunkat jak na obrazu z linku ponizej.
Tu link do obrazka.

http://www.fotosik.pl/zdjecie/3c0d8d44638632a0

Jedyny soft co dziala to wszystkie wersje OpenWRT lacznie z softem Cezarego.

Feedhorn

Witam serdecznie kolegow.
Dzieki wszelkie informacje, oraz za ostatnia rade dla kol mar_w.
Jednak zedcydowalem sie na wylutowanie pamieci flash i zaprogramowalem ja na zewnatrz zapisujac caly kod skopiowany z innego tego samego typu sprzetu i jedynie zmienilem adres MAC na ten zgodny z naklejka na sprzecie.
Sprzet dziala i mysle ze bedzie jeszcze sluzyl.

Jak kolejno robilem i jak  to wyszlo.
Tu link do fotek.

http://www.fotosik.pl/u/feedhorn/album/2282391

feedhorn

Witam ponownie kolegow .

Juz mam kolejne pliki mtd0 do mtd5 z flash UNIFI AP. ze starsza wersja U-Boot  tzn versja

U-Boot 1.1.4.2-s594

Zwraca sie do kolegow z prsba o info jak teraz wgrac kolejne pliki  aby nie uwalic do reszty sprzetu  bo zalogowac sie moge PuTTy i WinSCP .

Bo wtedy pozostaje mi wylutowanie pamieci flash i zaprogramowanie jej  po za urzadzeniem . Nigdy takiej operacji nie robilem bez wylutowania

A to mi pozwolilo by uniknac dodatkowej roboty i czasu.


feedhorn

Przepraszam Peek2 bo nie zdazylem przeczytac to co napisales.

A w takim razie jak to nadpisanie zmienic bez wyniamy U-bot ?

Wgrac czesc plikow zgranych mtd0 ,  do ktorego a potem dolaczyc puste po wyczyszczeniu  wpisanymi sami ff.
Probowalem ratowac sprawe starszym softem ale U-Bot sie juz nie zmienia na strsza wersje.

Feedhorn

Temat  walkowany o ponad roku ale dla nas juz tez nie jest teraz  nowy bo sie juz na nim przewiozlem chcac pomoc koledze.

Popek2 ale to trzeba umiec zrobic to polatanie.

A jak nie zrobie tego bo sie na tym nie znam jedynie moge skorzystac z pomocy kolegow.

A co do zgrania full flash to przed zgraniem mozna zrobic restet sprzetu do ustawien fabrycznych a adres MAC to sie zniemia trzy ostanie oktety,  jak by zgrany plik mial nazwe  np :  NanoBridgeM5_00_27_20_3f_35_22.bin  to juz bedzie wiadomo co zmienic HEX EDIT aby pasowalo z ratowanym sprzetem.

Feedhorn

Kolega sam wgral nanowszy soft na UNFI AP a po paru dniach zabawy poprosil mnie o wgranie Twego softu Cezary a ja sie meczylem pare godzin z tym, ze nie moge wlaczyc  WIFI i zaczolem szperac i wyszukalem wyzej  podane opisy.
Wgranie softu firmowego strszej wersji nie dokonuje zmiany,  a tryb RECOVERY dziala i port  lan tez  wiec moglem przesledzic co sie dzieje.


Feedhorn

W.g mnie to jest zaprotestowanie w imieniu radiomatorow  bo my tez uzywamy sfotu OpenWRT  dla naszych celow w dozwolnych pasmach a tak nas zablkowali.

Tu kolejna informacja


http://eur-lex.europa.eu/legal-content/ … mp;from=EN

A tu jakie mamy pasmo z moca w.g licencji.

http://iaru-r1.org/index.php/spectrum-a … centimeter


Feedhorn

Witam peke2 i Cazary.
Ja mam juz ten nowy U-Boot 1.1.4.2-s956. i jest poprostu puste miejsce bo go zgralem calego flash, moge go wam wyslac do sprawdzenia.


Feedhorn

Witam serdecznie kolegow zainteresowanych tematem.
Chcial bym sie podzielic informacja, ze firma UBIQUITI dla swojego sprzetu wprowadzila zmieniony   U-Boot 1.1.4.2-s956 .
Urzadzenia z softem  XM5.6.x   -  wyzej nie wgrywac najnowszych softow firmowych pozwej  XM5.5.6 bo zmieniaja U-Boot na wersje 1.1.4.2-s956.

Objawy polegaja to  na tym, ze wgranie softu innego niz firmowy blokuje port WIFI przy wersji U-Boot 1.1.4.2-s956.

Tu wiecej szcsgolow

https://wiki.openwrt.org/toh/ubiquiti/airmaxm

A tu link do protestu.

http://apps.fcc.gov/ecfs/comment/view;E … 0001097391

Ja juz wlasnie przeciczylem na UNFI AP chcac uszczesliwic kolege wgrywaja soft Cezarego.

Mysle, ze podobne problemy moga sie przydazyc innym kolega posiadajacym sprzety firmy UBIQUITI

Przy okazji mam prosbe o zganie wsadu z UNIFI AP
Ta metoda  co ponizej opisuje ale z urzadzenia UNIFI starszego jak 2 lata .

cat /dev/mtd0 > /tmp/mtd0.bin
cat /dev/mtd1 > /tmp/mtd1.bin
cat /dev/mtd2 > /tmp/mtd2.bin
cat /dev/mtd3 > /tmp/mtd3.bin
cat /dev/mtd4 > /tmp/mtd4.bin
cat /dev/mtd5 > /tmp/mtd5.bin
cat /dev/mtd6 > /tmp/mtd6.bin

Calosc spakowac i podac link do pobrania.
Mysle, ze dobra propozycja bylo by aby koledzy posiadajacy sprzety firmy UBUITI pozgrwali full flash powyzsza metada bo moga sie przydac do ratowania sprzetow.
A Cezary je umiesci na serwerze.

Z gory dziekuje za pomoc.

FEEDHORN

88

(8 odpowiedzi, napisanych Oprogramowanie / Software)

Witam.
Jak taki podobny problem mialem po wgraniu OpenWRT i potem jak wrocilem do firmowego softu UBIQUITI to nie zapamietywal ustawien po wylaczenie.
Calkiem przypadkiem wgralem starsza wersje softu formowego z przed 3 lat i zapamietal ustawienia.
Potem przeciwyczylem to na innych sprzetsah i jest podobnie.
Maksymalnie zautualizowalem do jednej nowszej ale do wersji  XW 5.5.6 bo jak wgrasz nowsze to Ci sie zablokuje wybor kraju "compilnce test"

A jak wgrasz jeszcze nowsze wersje to co zmieni caly wsad we flash i nie wgrasz juz zadnej starszej wersji  bo Ci sie zablokuje port WIFI - jak by go nie bylo.

feedhorn

Witam serdecznie kolegow.
Chce ulepszyc WA5210G, ktory jest przerobiony programowo na NanoStation2 aby wgrac lepszy soft to potrzeba zwiekszyc pamiec flash z 4MB na 8MB a taki soft z odpowiednim bootloaderam  posiada  PICOSTATION2 HP lub PICOSTATION2  ( bez literki M ) bo maja pamiec flash 8MB.
W zwiazku z tym zwracam sie do kolegow posiadajacych dostep do w/w sprzetu z prosba o zgranie calej zwartosc pamieci
FLASH z PICOSTATION2 HP lub PICOSTATION2.

Zgranie zawartosci pamieci flash mozna zrobic  uzywajac programu WinSC lub innego  bez rozbierania sprzetu.
Dajac nastepujace komendy z poziomu terminala jak ponizej,  beda powstawaly kolejne fragmenty  wkatalogu /tmp  tego co jest w flash zapisane.
Wczesniej mozna zrestowac sprzet aby nie wyslac swych ustawien konfiguracyjnych:

cat /dev/mtd0 > /tmp/backup_fullflash0.bin
cat /dev/mtd1 > /tmp/backup_fullflash1.bin
cat /dev/mtd2 > /tmp/backup_fullflash2.bin
cat /dev/mtd3 > /tmp/backup_fullflash3.bin
cat /dev/mtd4 > /tmp/backup_fullflash4.bin
cat /dev/mtd5 > /tmp/backup_fullflash5.bin
cat /dev/mtd6 > /tmp/backup_fullflash6.bin
cat /dev/mtd7 > /tmp/backup_fullflash7.bin

Kolejnie komendy mozna dawac z wiersza polecen w WinSCP a powstale pliki beda w katalogu /tmp  i nalezy je przenosic z urzadzenia do katalogu na PC i kasowac z katalogu /tmp aby nie przepelnic pamieci RAM w urzadzeniu.
Lacznie bedzie tego okolo 8MB.
Ja majac juz te  pliki zrobie z nich bootloader lub je odpowiedno polacze  w calosc i zaprogramuje flash 8MB i po zamontowaniu  do sprzetu powinno byc wszystko ok.
Przed wgraniem do flash zmienie adres MAC na ten zgodny z mojej obudowy za  pomoca HEXEDIT-em.
Dla kolegow  znajacych temat, to moze ten opis jest zbedny, ale moze sie przydac innym.

Temat wczesniej opisalem jako  "  BOOTLOADER z 4MB na 8MB flash ..."

http://eko.one.pl/forum/viewtopic.php?id=12634

Pozdrawiam serdecznie i licze na pomoc.

feedhorn

90

(12 odpowiedzi, napisanych Oprogramowanie / Software)

UNREAL
Dzieki za ostatnie info.
Powoli chyba zblizamy sie do rozwiazania problemu.
To stwierdzilem szukajac w sieci roznych informacji o sofcie firmowym UBIQUITI na sprzety z 8MB flash to sa dwa typy z Ar2316  a sa to Ubiquiti PicoStation 2   i  Ubiquiti PicoStation 2 HP

http://www.cyberbajt.pl/produkt/2808/ub … y_produktu
http://www.cyberbajt.pl/produkt/2808/ub … y_produktu

https://dl.ubnt.com/pico2_datasheet.pdf
https://dl.ubnt.com/pico2hp_ds.pdf

Bo jak by sie udalo wyszukac full flash do w/w sprzetow bylo by po problemie.

feedhorn

91

(12 odpowiedzi, napisanych Oprogramowanie / Software)

Zrobilem troche wiecej aby bylo bardziej jasno w temacie.
Moze to bedzie bedzie pomocne:


RedBoot(tm) bootstrap and debug environment [ROMRAM]
Ubiquiti Networks certified release, version 0.9.00483.1103151313 - built 13:14:44, Mar 15 2011

Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.

Board: Ubiquiti Ubiquiti AR2315/6/7/8 based board (Ubiquiti NanoStation2 detected)

Arch: ar2316
RAM: 0x80000000-0x81000000, [0x80040b80-0x80fe1000] available
Flash: 0xbfc00000-0xbfff0000, in 64 blocks of 0x00010000 bytes each
== Executing boot script in 1.000 seconds - enter ^C to abort
RedBoot> cache off
RedBoot> fis load -d -e kernel
Trying LZMA decompression...
Image loaded from 0x80041000-0x801df25c
Entry point: 0x80196040, address range: 0x80042000-0x801bf000
RedBoot> go
[ 0.000000] CPU revision is: 00019064
[ 0.000000] Primary instruction cache 16kB, physically tagged, 4-way, linesize 16 bytes.
[ 0.000000] Primary data cache 16kB 4-way, linesize 16 bytes.
[ 0.000000] Linux version 2.4.27-ubnt0 (buildd@builder) (gcc version 3.3.3) #2 Tue Aug 23 17:28:37 EEST 2011
[ 0.000000] Determined physical RAM map:
[ 0.000000] memory: 01000000 @ 00000000 (usable)
[ 0.000000] On node 0 totalpages: 4096
[ 0.000000] zone(0): 4096 pages.
[ 0.000000] zone(1): 0 pages.
[ 0.000000] zone(2): 0 pages.
[ 0.000000] Kernel command line: console=ttyS0,9600 console=ttyS0,9600 root=/dev/mtdblock2 rootfstype=squashfs init=/linuxrc ro
[ 0.000000] Using 92.000 MHz high precision timer.
[ 0.010000] Calibrating delay loop... 181.45 BogoMIPS
[ 0.290000] Memory: 14228k/16384k available (1351k kernel code, 2156k reserved, 88k data, 68k init, 0k highmem)
[ 0.410000] Dentry cache hash table entries: 2048 (order: 2, 16384 bytes)
[ 0.490000] Inode cache hash table entries: 1024 (order: 1, 8192 bytes)
[ 0.570000] Mount cache hash table entries: 512 (order: 0, 4096 bytes)
[ 0.650000] Buffer cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.730000] Page-cache hash table entries: 4096 (order: 2, 16384 bytes)
[ 0.810000] Checking for 'wait' instruction... unavailable.
[ 0.870000] POSIX conformance testing by UNIFIX
[ 0.930000] Linux NET4.0 for Linux 2.4
[ 0.970000] Based upon Swansea University Computer Society NET3.039
[ 1.050000] Initializing RT netlink socket
[ 1.100000] Starting kswapd
[ 1.130000] Squashfs 2.2-r2 (released 2005/09/08) (C) 2002-2005 Phillip Lougher
[ 1.220000] pty: 256 Unix98 ptys configured
[ 1.270000] Serial driver version 5.05c (2001-07-08) with no serial options enabled
[ 1.360000] ttyS00 at 0xb1100003 (irq = 37) is a 16550A
[ 1.430000] PPP generic driver version 2.4.2
[ 1.480000] PPP Deflate Compression module registered
[ 1.540000] MPPE/MPPC encryption/compression module registered
[ 1.610000] spiflash: JEDEC compatible device detected (Manufacturer: 0xEF; device: 0x4016)
[ 1.710000] spiflash: JEDEC device (Manufacturer: 0xEF; device: 0x4016) not recognized, trying STM signature...
[ 1.830000] mtd: adjusted dev mtd2 size from 61440 to 65536 bytes
[ 1.910000] Creating 8 MTD partitions on "spiflash":
[ 1.970000] 0x00000000-0x00030000 : "RedBoot"
[ 2.020000] 0x00030000-0x00100000 : "kernel"
[ 2.070000] 0x00100000-0x003c0000 : "cramfs"
[ 2.120000] 0x003c0000-0x003e0000 : "cfg"
[ 2.170000] 0x003e0000-0x003f0000 : "FIS directory"
[ 2.230000] 0x003ef000-0x003f0000 : "RedBoot config"
[ 2.290000] mtd: partition "RedBoot config" doesn't start on an erase block boundary -- force read-only
[ 2.400000] 0x003f0000-0x00400000 : "EEPROM"
[ 2.450000] 0x00030000-0x003e0000 : "Working flash"
[ 2.510000] Initializing Cryptographic API
[ 2.560000] NET4: Linux TCP/IP 1.0 for NET4.0
[ 2.610000] IP: routing cache hash table of 512 buckets, 4Kbytes
[ 2.680000] TCP: Hash tables configured (established 1024 bind 2048)
[ 2.760000] IPv4 over IPv4 tunneling driver
[ 2.810000] GRE over IPv4 tunneling driver
[ 2.860000] Linux IP multicast router 0.06 plus PIM-SM
[ 2.920000] NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
[ 2.990000] Ebtables v2.0 registered
[ 3.030000] NET4: Ethernet Bridge 008 for NET4.0
[ 3.090000] Bridge firewalling registered
[ 3.140000] 802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
[ 3.220000] All bugs added by David S. Miller <davem@redhat.com>
[ 3.300000] VFS: Mounted root (squashfs filesystem) readonly.
[ 3.370000] Freeing unused kernel memory: 68k freed
[ 3.440000] Warning: unable to open an initial console.
[ 3.910000] Algorithmics/MIPS FPU Emulator v1.5

UBNT login:


Nie czuje za bardzo tematu z tymi zmianami , musze sie z opisem przespac.
UNREAL, dziekuje za chec pomocy ale moze na dzis damy sobie luz.
Pozdrawiam
feedhorn

92

(12 odpowiedzi, napisanych Oprogramowanie / Software)

Witam UNREAL.
Sprawa tak wyglada, ze jak wgram caly full flash z 4MB do flash 8MB  to sie uruchami ale sie zawiesza. To nie jest juz tak bardzo zle.
Ale, ze jest to WA5210G przerobiony na NanoStation2  to posiada tryb RECOVERY i ten tryb udaje sie  wywolac z flash 8MB  jak dla kazdego urzadzenia UBIQUITI.
Ale wgranie softu  przez TFTP  nie jest zakonczone powodzeniem, urzadzenie nie uruchamia sie.
Nie mialem nigdy do czynienia z bootloadrem na urzadzeniach UBIQUITI i innych to nie wiem jak sobie z tym poradzic. 
Aby sprawy szly szybciej z wymiana flash to na PCB WA5210G zamontowalem podstawke 8pin a flash przylotowalem na scalku 8pin i flash jest wyjmowany i mam dwa na podmiane.

http://www.fotosik.pl/u/feedhorn/album/2274600

A tak wyglada z uruchomienie z konsoli

http://www.fotosik.pl/zdjecie/962bc945a21fa3a0


WAZNE !!
Aby moc do scalaka przylutowac flsah  to nalezy od gory w scalaku wywiercic otwor  aby uszkodzic strukture aby nie bylo polaczen pomiedzy pinami i zalac diure kropelka aby sie ewentualnie wilgosc nie dostala.

feedhorn

93

(12 odpowiedzi, napisanych Oprogramowanie / Software)

Cezary, dzieki temu, ze jest nas tu na forum tak wielu dobrych fachowcow z roznych dziedzin to bylo to mozliwe do zrobienie. Nie bylo latwo bo wiele wieczorow przesiedzanianych na kolejnych probach softu az sie udalo i teraz NS2 i WA5210G ladnie pracuja na duzych doleglosciach.
W leganym pasmie 2.4GHz w wycinku dla radioamatorow.
Cezary. siec sie rozwija i coraz lepiej dziala ale ciagle poszukujemy lepszych szprzetow aby sie polaczyc na dluzszych odcinkach nawet w pasmie 3GHz i  5GHz  . I to tez zgodnie z prawem.

http://iaru-r1.org/index.php/spectrum-a … centimeter

http://iaru-r1.org/index.php/spectrum-a … centimeter

Ale teraz mamy problem, ze jest troche za malo flash w WA5210G aby zrobic lepszy soft.
I pierwsze prby wgrania softu po zmianie flash nie byly udane, ale licze ze sie to uda dzieki pomocy kolegow bo nie robimy tego dla pieniedzy lecz jest to poprostu hobby dla przyjemnosci.

Kolejna sprawa to dzieki temu, ze coraz wiecej miejscowosci jest oplatane swiatlowodem w technologii GPON to dostepne sa z demontarzu sprzety firmy UBIQUITI i MIKROTIK z pasma 2.4Ghz i 5GHz za symboliczne pieniadze a to daje juz duze zasoby sprzetowe i mozliwosci polaczen.
A dla zainteresowanych GPON  to link ponizej jakie to daje mozliwosci.

https://pl.wikipedia.org/wiki/Pasywna_s … 7_optyczna

Mysle, ze sa koledzy co sie moze tym tez zainteresuja jak wykorzystac radia z odzysku.

feedhorn

94

(12 odpowiedzi, napisanych Oprogramowanie / Software)

Witam serdecznie Cezary.
To jest legalne i nawet wiecej jak sie ma licencje radioamatora.
Tu jest wiecej info.

http://iaru-r1.org/index.php/spectrum-a … centimeter

I SDK jest juz zmodyfikowane jak rowniez OpenWRT i  zejdzie na pasmo od 2305MHz do 2450 MHz to mozesz nawet miec 100Wat aby bylo zgodne z licencja.
Polecam artykol o sieci HamNET w Swiat Radio nr 08/2015r.

Nawet wykonalem prosty miernik do pomiaru mocy wcz na to pasmo.
Wystarczy dokanac drobne modyfikacje w mierniku do szukania sygnalu TVSAT za 22 zl
http://www.eltrox.pl/tv-i-multimedia/te … inder.html
I dodaniu baterii 9V    - 6F22, mamy dobry miernik mocy WCZ nawet do komorek bo dziala nawet do 3000MHz.

Cezary, dzieki Twej wiedzy i wielu kolegow z tego forum  i pomocy innych kolegow programistow moglismy z kolegami radioamatorami dokonac tych zmian w sofcie SDK jak i OpenWRT.
Bylo troche siedzenia i liczenia bo trzeba bylo dolozyc liczby w kodzie 16 ale sie udalo.
Bo elektronika jest wypasiona a szczegolnie w WA5210G.

https://forum.openwrt.org/viewtopic.php?id=26261

A tu fotki jak wyglada w srodku

http://www.petyamuvek.hu/wa5210g.htm


Ale to bylo mozliwe po przerobieniu programowym WA5210G na NanoStation2.


feedhorn

95

(12 odpowiedzi, napisanych Oprogramowanie / Software)

Witam serdecznie .
Dzieki za podpowiedz UNREAL, to faktycznie jest stary AR2316, ale zdecydowalem sie na ten sprzet tzn WA5210G bo ma sporo mocy bo po wgraniu OpenWRT w wersji zmodyfikowanej mozna miec 30dB mocy i antena panelowa 12dB to ladnie pokrywa teren wokol budynku.
A nawet jak sie wgra soft SDK po przerobieniu na NanoStatnion2 to jest 26dB mocy.
To dla czytajacych ewentualnie kolegow.
Przerobienie programowane na NS2 jest juz nie odwracalne.
Zapoznam sie z podanym linkiem.
Ale dodam informacje, ze po przerobieniu na NS2 Bootloader jest taki jak w NS2 bo w sieci znalazlem full flash na NS2 i wgralem programatprem do flash to jest tak samo.
Ale sprobuje.
A terz mi przyszedl pomysl bo moze poprostu wgrac bootloader z innego sprzeu UBIQUITI  co ma flach 8MB to to moze zadziala.
Ale mala watpliwosc, ze te sprzety z flash 8MB sa juz oparte na lepszym procesorze.
Napisze info jak sprawy wyjda.

feedhorn

96

(12 odpowiedzi, napisanych Oprogramowanie / Software)

Witam serdecznie kolegow.
Mam taki problem,.
Chcial bym - wymienic flash w WA5210G z 4MB na 8MB.
Zrobilem pierwsze zgranie calosci flash z 4MB i wgralem programetorem do flash 8MB. Ale to nie chce dzialac po wlozeniu pamieci do WA5210G.
WA5210g jest przerobiony programowowo na NanoStation2, tak jak to opisane na linku ponizej.

http://planetzone00.blogspot.com/2014_0 … chive.html

WA5210G jest jak NanoStation2 i uruchamia sie soft firmy UBIQUITI  i sa wersje SDK, ktore mozna sobie wgrac z roznymi mozliwosciami.

Poszukiwalem i czytalem rozne opisy jak to mozna zrobic ale nic nie znalazlem co moglo by mi pomoc aby przeniec BOOTLOADER z flash 4MB do flash 8MB i aby wszystko dzialalo.

W zwiazku z powyzszym zwracam sie do kolegow z prosba o informacje jak to zrobic aby grac poprawiony bootloader z flash 4MB na 8MB i aby roouter WA5210G sie uruchamial.
Planuje wgrac soft SDK ktory sie nie miesci po dodaniu paru opcji.

Z gory dziekuje za pomoc.

feedhorn

Witam serdecznie kolegow.
Pare dni temu wgrywajac kolejna wersje OpenWRT cos poszlo nie tak.
I NS2 sie juz nie nie uruchomil. Robilem wiele razy zmiane nie bylo problemu.
Wgrywanie softu na NS2 odbywa sie przez tryb RECOVERY.
Teraz jedynie moge sie polaczyc po RS232 ( z uzyciem konvertora  USB/RS232 ) a wynik ekranu z terminala jest taki jak ponizej.

+Reading JEDEC MFID from flash failed. Trying RD_SIG.
Unsupported flash - MFID=0x0016311C, DEVID=0x0000
FLASH: driver init failed: Driver does not support device
Sorry, FLASH config exceeds available space in FIS directory
ar531x_find_bdata called BEFORE flash was initialized!
Couldn't find valid MAC address for enet0. Using default!
Unknown PHY: FFFF:FFFF
Ethernet eth0: MAC address 00:03:7f:e0:02:bf
IP: 0.0.0.0/255.255.255.0, Gateway: 0.0.0.0
Default server: 0.0.0.0

RedBoot(tm) bootstrap and debug environment [ROMRAM]
Ubiquiti Networks certified release, version 0.9.8.06 - built 10:58:08, Dec 23 2
008

Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.
ŕ

Dalej juz nic nie ma - p.p brak znaku zachety >

Mam tez inne sprzety UBIQUITU uszkodzone maja radia moze jest jakas opcja cos odzyskac.

Moze ktos ma pomysl lub zna link z opisem jak uratowac NS2.



Feedhorn.

98

(0 odpowiedzi, napisanych Oprogramowanie / Software)

Witam serdecznie kolegow czytajacych temat.
Temat moze nie jest zbyt zwiazay z OpenWRT ale moga byc rzeczy bardzo zbiezne.
To tez zwracam sie do Was z prosba o pomoc w edycji pliku   ' netathuw.inf ' ktory jest w zestawie seterownikow w moim przypadku pod WIN XP .
Wersja sterownikow  7.7.0.75.
On odpowiada jak odbedzie sie konfiguracja i potem  jak pracuje radio w WN722N  bo to co odczytane  zostanie z pliku  ' netathuw.inf ' potem wykona ' athuw.sys ' i tak ustawi WN722N .
Tyle wstepu, ktory zapewne wielu wie o co chodzi.
Ale mnie interesuje mnie opis lini dotyczacych konfiguracji kanalow radiowych - konkretnie, chce zmiejszyc szerokosc kanalu z 20Mhz do 10Mhz aby zwiekszyc zasieg  karty z najblizszym routerem bo w routerze z wgranym OpenWRT moge zmieniac szerkosc kanalu w pliku wireless  5, MHz, 10MHz .

Moze sie juz ktos tym zajmowal i zna objasnienie uzytych kodow uzytych w tym pliku -  ' netathuw.inf '
Wiele lini posiada kody z ktorych mozna wnioskowac ze odpowiadaja za konkretne parametry konfiguracji radia ale trzeba bylo by zrobic pare testow ze zmiana tych parametrow aby miec pewnosc ze to poprawne dziala.

Moze juz ktos z Was, sie tym zajmowal lub posiada informacje to prosze o wsparcie.
Sprawa dotyczy WN722N V1  USB   pod WINDOWSA XP , w LINUX-sie nie ma problemow.
Czesc parametrow mozna sobie zmieniac w paramterach sterownika w okienku 'ZAAWANSOWANE ' a jak by sie dolozylo szerkosc kanalu to mozna bylo by to tez zmieniac.

A moze to tez zainteresuje innych kolegow.

Pozdrawiam serdecznie.

FEEDHORN

Witam serdecznie kolegow zainteresowanych tematem.
Po wielu dniach udalo mi przygotowac i przekazac do pobrania kod "skaner"  pokazujacego z terminala analize pasma WIFI.

Bedzie pracowal na kazdym routerku z Gargoyle, BB1407 lub  OpenWRT. !!!
Nalezy sprawdzic czy jest zainstalowany pakiet " wireless-tools "

Skaner daje wynik kolorowy w trybie tekstowym terminala i nie wymaga instalacji dodatkow.

Do przygotowania tego kodu korzystalem z wielu publikacji w internecie tych nowych i tych z przed wielu lat.
Kto go uruchomi to mysle, ze  latwo bedzie mogl odczytac co sie dzieje na WIFI.
Proponuje ponizszy kod skopiowac do utworzonego pliku " skaner " w  katalogu /bin/  i nadac mu  wlasciwosci 0755 aby mozna bylo go uruchomic z terminala wpisujac  komende skaner.
Skaner robi 20 petli ale zawsze mozna to zwiekszyc zmieniajac  w lini " inf = 20 " liczbe 20 na wieksza . 

Sa drobne jeszcze niedorobki ale nie maja wplywu na prace skanera.
Ja bede mial wiecej czasu to pouzupelniam a moze to bedzie cos w/g Waszych sugestii.
Skrypt mozna uruchmic z opcja  -h hlep

Wazne!! prosze pamietac, ze skanujemy przy szerkosci kanalu 20MHz.



#!/usr/bin/lua
--{{{ constants
name = "skaner"
version = "v1.4"
-- wersja z 05.02.2015r
text_attributes = {
none=0, bold=1, underline=4, blink=5, reverse=7, conceal=8,
black=30, red=31, green=32, yellow=33, blue=34, magenta=35, cyan=36, white=37,
bblack=40, bred=41, bgreen=42, byellow=43, bblue=44, bmagenta=45, bcyan=46, bwhite=47
}
--}}}
--{{{ config
iface = "wlan0"
inf = 20
reps = inf
keys = { "ch", "sig", "essid" }
delay = 0
leave = reps
obscure = false
row_highlights = { "enc", "s" }
column_spacing = 1
buff = 1
colors = {
def = "none",
sort = "bold,white",
highlight = {
bssid = { [ '.'] = "green" },
ch = { [ '.'] = "cyan,bold" },
s = { ["N"] = "yellow", ["g"] = "cyan", ["r"] = "red",
["+"] = "green", ["-"] = "red", ["="] = "white" }, 
graph = { ["N"] = "yellow", ["g"] = "cyan", ["r"] = "red",
["+"] = "green", ["-"] = "red", ["="] = "white" },
essid = { [ '.'] = "green" },
noise = { [ '.'] = "green" },
snr = { [ '.'] = "green" },
sig = { [ '.'] = "green" },
min = { [ '.'] = "green" },
avg = { [ '.'] = "green" },
max = { [ '.'] = "green" },
loss = { [ "0"] = "green" },
enc = { ["WPA*"] = "cyan", ["WEP"] = "red", ["OPN"] = "green" },
},
}
column_order = {"bssid", "ch", "s", "graph", "essid", "noise", "snr", "sig", "min", "avg", "max", "loss", "enc"}
columns = {
bssid = { format = "%-17s", },
ch = { format = "%3s", },
s = { format = "%1s", },
essid   = { format = "%-15s", },
sig     = { format = "%4s",reverse = 1 },
noise   = { format = "%5s", },
snr     = { format = "%3s",reverse = 1 },
min     = { format = "%4s", reverse = 1 },
avg     = { format = "%4s", reverse = 1 },
max     = { format = "%4s", reverse = 1 },
loss    = { format = "%4s%%", },
enc     = { format = "%-4s", },
vendor  = { format = "%-10s", },
tsf     = { format = "%14s", },
graph   = { format = "%-22s", },
ciph    = { format = "%-10s", },
auth    = { format = "%-4s", },
last_seen = { format = "%13s", },
first_seen = { format = "%13s", },
}
vendors = {
{ files = { "/etc/manuf", "/usr/share/wireshark/manuf" },
pattern = "# (.*)\n", sep = ":" },
{ files = { "/etc/manuf", "/usr/share/wireshark/manuf" },
pattern = "%w%w:%w%w:%w%w%s-([%w%p]+)", sep = ":" },
{ files = { "oui.txt" }, pattern = "%(hex%)[\t%s]+(.*)\n", sep = "-" },
{ files = { "/usr/share/macchanger/wireless.list", "/usr/share/macchanger/OUI.list" },
pattern = "%w%w %w%w %w%w (.*)\n", sep = " " },
}
--}}}
--{{{ functions
--{{{ getopt
function getopt( arg, options )
local tab = {}
for k, v in ipairs(arg) do
if string.sub( v, 1, 2) == "--" then
local x = string.find( v, "=", 1, true )
if x then tab[ string.sub( v, 3, x-1 ) ] = string.sub( v, x+1 )
else  tab[ string.sub( v, 3 ) ] = true
end
elseif string.sub( v, 1, 1 ) == "-" then
local y = 2
local l = string.len(v)
local jopt
while ( y <= l ) do
jopt = string.sub( v, y, y )
if string.find( options, jopt, 1, true ) then
if y < l then
tab[ jopt ] = string.sub( v, y+1 )
y = l
else
tab[ jopt ] = arg[ k + 1 ]
end
else
tab[ jopt ] = true
end
y = y + 1
end
end
end
return tab
end
--}}}
--{{{ sleep
function sleep(n)
if posix then posix.sleep(n)
elseif socket then socket.select(nil, nil, n)
else os.execute("sleep " .. n) end
end
--}}}
--{{{ split
function split(str, pat)
local t = {}  -- NOTE: use {n = 0} in Lua-5.0
local fpat = "(.-)" .. pat
local last_end = 1
local s, e, cap = str:find(fpat, 1)
while s do
if s ~= 1 or cap ~= "" then
table.insert(t,cap)
end
last_end = e+1
s, e, cap = str:find(fpat, last_end)
end
if last_end <= #str then
cap = str:sub(last_end)
table.insert(t, cap)
end
return t
end
--}}}
--{{{ usage
help=name .. " " .. version .. " - - Program do sknowania WIFI\n\nUsage: "..arg[0].." <options>\
\
 -i <iface>     interface to use [wlan0]\
 -d <delay>     delay between scan cycles [0]\
 -r <repeat>    number of scan cycles [0 = forever]\
 -b <buffer>    number of scans in a cycle [1]\
 -m <method>    scan method [iw, iwinfo, iwlist ]\
\
 -k <c1,c2,...> show columns [bssid,ch,s,essid,sig,min,avg,max,loss,enc]\
 -s <c1,c2,...> sort by columns [sig,essid]\
 -f <filter>    filter by string [none]\
 -c <channel>   show only channel <num> [none]\
 -l <leave>     show out-of-range APs for <leave> of cycles [f = forever]\
 -g <c1,c2,...> highlight rows by field [enc,s]\
 -o             obfuscate bssid and essid columns\
\
 -C <cfgfile>   use settings from <cfgfile>\
 -h             help yourself\
"
function usage()
print(help)
os.exit(0)
end
--}}}
--{{{ sec2time
function sec2time(s, fmt)
local dd, hh, mm, ss
dd = math.floor(s / (3600*24))
hh = math.floor((s - dd*24*3600) / 3600)
mm = math.floor((s - dd*24*3600 - hh*3600) / 60)
ss = math.floor((s - dd*24*3600 - hh*3600 - mm*60))
return string.format(fmt, dd, hh, mm, ss)
end
--}}}
--{{{ header
function line_layout(left_fmt, left_list, right_fmt, right_list)
local left = string.format(left_fmt, unpack(left_list))
local right = string.format(right_fmt, unpack(right_list))
local space = string.rep(" ", width - #left - #right)
return left .. space .. right
end
function header()
local l1 = line_layout("[ Port: %s   %s-%s]", { iface, name, version },
"[ Petla: %s%s  Czas: %s ]", { state.iter, (reps == inf and "") or "/"..reps, sec2time(now-start, "%dd %02d:%02d:%02d") })
local l2 = line_layout("[ %-"..(#tostring(buff) * 2 + 6).."s ][ results: %2s  avg: %2s ]", { state.action, last_result_num, avg_result_num },
"[ Pokazane:    %s   Stacje:  %s ]", { len(state.filtered), len(state.seen) })
io.stdout:write("\27[0;0f")
io.stdout:write("\27[K"..l1.."\n")
io.stdout:write("\27[K"..l2.."\n")
io.stdout:write("\27[K")
end
--}}}
--{{{ parse
function parse(method, res, survey)
local ap = parsers[method](res, survey)
if not ap.noise then
ap.noise = (-113 + (math.floor ((110 + ap.sig)^(0.5)))*3)
end
if ap.noise and ap.sig then
if ap.sig < ap.noise then
ap.sig = math.floor(ap.sig / 10)
end
ap.snr = math.abs(ap.noise -ap.sig)
end
return ap
end
--}}}
--{{{ parse_iw
parsers = {}
parsers.iw = function(res, survey)
local ap = {}
ap.bssid = res:match("(..:..:..:..:..:..) ")
ap.essid = res:match("SSID: (.-)\n")
ap.ch = tonumber(res:match("channel (.-)\n"))
ap.sig = tonumber(res:match("signal: ([%w%p]-)[ /]"))
ap.freq = tonumber(res:match("freq: (.-)\n"))
ap.tsf = tonumber(res:match("TSF: (%d-) usec"))
ap.tsf = ap.tsf and sec2time(ap.tsf/(1000*1000),"%3dd %02d:%02d:%02d")
ap.auth = res:match("Authentication suites: (.-)\n")
ap.ciph = res:match("Pairwise ciphers: (.-)\n")
if not res:find("Privacy") then
ap.enc = "OPN"
else
local wpa = res:find("WPA")
local rsn = res:find("RSN")
if wpa and rsn then ap.enc = "WPA*"
elseif rsn then ap.enc = "WPA2"
elseif wpa then ap.enc = "WPA"
else ap.enc = "WEP" end
end
for _, chan in ipairs(survey) do
if chan:match("frequency:.*" .. tostring(ap.freq) .. " MHz") then
ap.noise = chan:match("noise:.-(...) dBm")
break
end
end
return ap
end
--}}}
--{{{ parse_iwlist
parsers.iwlist = function(res)
local ap = {}
ap.bssid=res:match("Address: (.-)\n")
ap.essid=res:match("ESSID:\"(.-)\"")
ap.ch=tonumber(res:match("Channel:(.-)\n"))
ap.sig=tonumber(res:match("Signal level[:=](.-)[ /]"))
ap.noise=tonumber(res:match("Noise level[:=](.-) dBm"))
ap.tsf=res:match("tsf=(%w-)\n")
ap.tsf=ap.tsf and sec2time(tonumber('0x'..ap.tsf)/(1000*1000), "%3dd %02d:%02d:%02d")
ap.auth = res:match("Authentication Suites.- : (.-)\n")
ap.ciph = res:match("Pairwise Ciphers.- : (.-)\n")
if not res:find("Encryption key:on") then
ap.enc = "OPN"
else
local wpa = res:find("WPA Version 1")
local rsn = res:find("WPA2 Version 1")
if wpa and rsn then ap.enc = "WPA*"
elseif rsn then ap.enc = "WPA2"
elseif wpa then ap.enc = "WPA"
else ap.enc = "WEP" end
end
return ap
end
--}}}
--{{{ parse_iwinfo
parsers.iwinfo = function(res)
local ap = {}
local noise = read("/usr/bin/iwinfo", "popen")
ap.noise = tonumber(noise:match("Noise: (.-) dBm"))
ap.bssid = res.bssid
ap.essid = res.ssid or ""
ap.ch = res.channel
ap.sig = res.signal
ap.auth = table.concat(res.encryption.auth_suites, " ")
ap.ciph = table.concat(res.encryption.pair_ciphers, " ")
if res.encryption.enabled then
if res.encryption.wep then
ap.enc = "WEP"
elseif res.encryption.wpa == 1 then
ap.enc = "WPA"
elseif res.encryption.wpa == 2 then
ap.enc = "WPA2"
elseif res.encryption.wpa == 3 then
ap.enc = "WPA*"
end
else
ap.enc = "OPN"
end
return ap
end
--}}}
--{{{ len
function len(t)
local count = 0
for k, v in pairs(t) do count = count + 1 end
return count
end
--}}}
--{{{ file_readable
function readable(filename)
local file = io.open(filename)
if file then
io.close(file)
return true
end
return false
end
--}}}
--{{{ read 
function read(cmd, src)
local f = io[src](cmd)
local v = f:read("*a")
f:close()
return v
end
--}}}
--{{{ get_vendor
function get_vendor(mac)
if not mac then return end
for i, list in ipairs(vendors) do
for j, file in ipairs(list.files) do
if readable(file) then
local fmac = string.gsub(mac:sub(1,8),":",list.sep)
local str = read(string.format("grep -i ^'%s' %s", fmac, file), "popen")
if #str > 0 then return str:match(list.pattern) end
end
end
end
return ""
end
--}}}
--{{{ chomp
function chomp(str)
return str:sub(1,#str-1)
end
--}}}
--{{{ scanners
scanners = {}
scanners.iw = function(iface)
local res = split(read(iw_bin.." "..iface.." scan", "popen"), "\nBSS ")
local survey = split(read(iw_bin.." "..iface.." survey dump", "popen"), "Survey data")
return res, survey
end
scanners.iwlist = function(iface)
local res = split(read(iwlist_bin.." "..iface.." scan", "popen"), "Cell %d%d")
table.remove(res, 1)
return res
end
scanners.iwinfo = function(iface)
local type = iwinfo.type(iface)
return iwinfo[type].scanlist(iface)
end
--}}}
--{{{ update_graph
function update_graph(g, s)
return g:sub(2,#g) .. s
end
--}}}
--{{{ update_buffer
function update_buffer(bssid)
local result = state.results[bssid]
local buffer = state.buffer[bssid] or {}
local ap = result
ap.sig_sum = (buffer.sig_sum or 0) + result.sig
ap.noise_sum = result.noise and (buffer.noise_sum or 0) + result.noise
ap.seen = (buffer.seen or 0) + 1
ap.sig = math.floor(ap.sig_sum / ap.seen)
ap.noise = ap.noise_sum and math.floor(ap.noise_sum / ap.seen)
state.buffer[bssid] = ap
end
--}}}
--{{{ update_ap
function update_ap(bssid)
local result = state.buffer[bssid]
local record = state.seen[bssid]
local ap = result or record
if not record and result then
ap.s = "N"
ap.graph = string.rep(" ", column_width(columns.graph.format))
ap.seen = 1
ap.sum = result.sig
ap.first_seen_i = state.iter
ap.first_seen_t = now
ap.last_seen_i = state.iter
ap.vendor = get_vendor(bssid) or ""
state.seen[bssid] = {}
end
if record and not result then
ap.s = "g"
ap.sig = false
ap.snr = false
ap.noise = false
ap.last_seen = os.date("!%H:%M:%S ago", now - (ap.last_seen_t or record.last_seen_t))
end
if result then
record = record or {}
ap.last_seen_i = state.iter
ap.last_seen_t = now
ap.seen = (record.seen or 0) + 1
ap.sum = (record.sum or 0 ) + result.sig
ap.avg = math.floor(ap.sum / ap.seen)
ap.max = math.max((record.max or -100), result.sig)
ap.min = math.min((record.min or 0), result.sig)
ap.last_seen = "now"
ap.dev_sum = (record.dev_sum or 0) + math.abs(ap.avg - result.sig)
ap.mdev = ap.dev_sum / ap.seen
if record.bssid then
if record.tsf and result.tsf and record.tsf > result.tsf then ap.s = "R"
elseif record.s == "g" then ap.s = "r"
elseif result.sig > ap.avg + math.ceil(ap.mdev) then ap.s = "+"
elseif result.sig < ap.avg - math.ceil(ap.mdev) then ap.s = "-"
else ap.s = "=" end
end
end
if record then
local total = state.iter - (ap.first_seen_i or record.first_seen_i) + 1
ap.loss = math.floor((total - ap.seen) * 100 / total)
ap.graph = update_graph(record.graph or ap.graph, ap.s)
ap.first_seen = os.date("!%H:%M:%S ago", now - (ap.first_seen_t or record.first_seen_t))
end
for k, v in pairs(ap) do
state.seen[bssid][k] = v
end
end
--}}}
--{{{ sortf
function sortf(a,b)
for i, key in ipairs(keys) do
local ta, tb = type(a[key]), type(b[key])
if ta ~= tb then return ta < tb end
if a[key] ~= b[key] then
if columns[key].reverse then
return (a[key] or -100) > (b[key] or -100)
else
return (a[key] or -100) < (b[key] or -100)
end
end
end
end
--}}}
--{{{ obfuscate
function obfuscate(ap)
if not obscure then return ap end
local obf_ap = {}; for k,v in pairs(ap) do obf_ap[k] = v end
obf_ap.bssid = ap.bssid:gsub("%w%w:%w%w:%w%w$","xx:xx:xx")
obf_ap.essid = string.rep('x', #(ap.essid or ""))
return obf_ap
end
--}}}
--{{{ column_width
function column_width(fmt)
return #string.format(fmt,"")
end
--}}}
--{{{ column_fmt
function column_fmt(cname, old_attr, ap)
local column = columns[cname]
local width = column_width(column.format)
local value
local highlights = {}
if ap then
value = tostring(ap[cname] or ""):sub(1, width)
highlights = colors.highlight[cname] or {}
else
value = (column.title or cname):sub(1, width)
for i, key in ipairs(keys) do
if key == cname then highlights[cname] = colors.sort end
end
end
value = string.format(column.format, value)
for pattern, color in pairs(highlights) do
value = value:gsub(pattern, attr(color) .. "%1" .. old_attr)
end
return value .. string.rep(" ", column_spacing)
end
--}}}
--{{{ row_attr
function row_attr(ap)
local a = ""
for i, highlight in ipairs(row_highlights) do
local hcolors = colors.highlight[highlight] or {}
for pattern, hcolor in pairs(hcolors) do
if ap[highlight]:match(pattern) then
a = attr(hcolor)
break
end
end
end
return a
end
--}}}
--{{{ attr
function attr(def)
local r = ""
for i, s in ipairs(split(def,",")) do
r = r .. string.format("\27[%sm", text_attributes[s] or "")
end
return r
end
--}}}
--}}}
--{{{ init
state = {
action = "",
seen = {},
results = {},
filtered = {},
buffer = {},
iter = 0,
}
opts = getopt( arg, "dfirslckmgbC" )
for k, v in pairs(opts) do
if k == "C" then if readable(v) then dofile(v) end end
if k == "h" then usage() end
if k == "r" then reps = tonumber(v) end
if k == "s" then keys = split(v,",") end
if k == "i" then iface = v end
if k == "d" then delay = tonumber(v) end
if k == "f" then filter = v end
if k == "c" then channel = v end
if k == "l" then leave = tonumber(v) or reps end
if k == "m" then method = v end
if k == "g" then row_highlights = split(v,",") end
if k == "k" then column_order = split(v,",") end
if k == "o" then obscure = true end
if k == "b" then buff = tonumber(v) end
end
start = os.date("%s")
iw_bin = chomp(read("which iw", "popen"))
iwlist_bin = chomp(read("which iwlist", "popen"))
local res, err = pcall(require, "socket")
local res, err = pcall(require, "posix")
width = -column_spacing
for i, c in ipairs(column_order) do
if columns[c] then
width = width + column_width(columns[c].format) + column_spacing
end
end
local res, err = pcall(require, "iwinfo")
if not method then
if res then
method = "iwinfo"
elseif #iw_bin > 0 then
method = "iw"
elseif #iwlist_bin > 0 then
method = "iwlist"
else
io.stderr:write("No scanning method available")
os.exit(1)
end
end
io.stdout:write("\27[2J")
--}}}
--{{{ main loop
avg_result_num = 0
last_result_num = 0
while state.iter < reps do
--{{{ scan and parse
now = os.date("%s")
counter = (counter or 0) + 1
if buff > 1 then
state.action = string.format("scan %s/%s", counter, buff)
else
state.action = "scan"
end
header()
local res, survey = scanners[method](iface)
state.results = {}
for i = 1, #res do
local ap = parse(method, res[i], survey)
if ap.bssid and ap.sig then
state.results[ap.bssid] = ap
update_buffer(ap.bssid)
end
end
last_result_num = len(state.buffer)
--}}}
if counter == buff then
--{{{ update APs
if len(state.buffer) == 0 then sleep(1) else state.iter = state.iter + 1 end
sum_result_num = (sum_result_num or 0) + len(state.buffer)
avg_result_num = math.floor(sum_result_num / state.iter)
for _, ap in pairs(state.buffer) do
update_ap(ap.bssid)
end
for _, ap in pairs(state.seen) do
if not state.buffer[ap.bssid] then update_ap(ap.bssid) end
end
state.buffer = {}
counter = 0
--}}}
--{{{ filter for display
state.filtered = {}
for _, ap in pairs(state.seen) do
if ((not channel) or (channel and ap.ch == tonumber(channel))) and
state.iter - ap.last_seen_i < leave and
((not filter) or
string.lower(ap.essid):find(string.lower(filter)) or
string.lower(ap.bssid):find(string.lower(filter)) or
string.lower(ap.enc):find(string.lower(filter)) or
string.lower(ap.vendor):find(string.lower(filter)))
then
state.filtered[ap.bssid] = ap
end
end
--}}}
--{{{ prepare and sort list for display
local list = {}
for _, ap in pairs(state.filtered) do table.insert(list, obfuscate(ap)) end
table.sort(list, sortf)
--}}}
--{{{ output
header()
local output = ""
io.stdout:write("\27[4;0f\27[K")
for i, cname in ipairs(column_order) do
output = output .. column_fmt(cname, attr(colors.def))
end
io.stdout:write(output .. "\n\27[K\n")
for i, ap in ipairs(list) do
local rattr = attr(colors.def) .. row_attr(ap)
local cols = ""
for i, cname in ipairs(column_order) do
cols = cols .. column_fmt(cname, rattr, ap)
end
local output = "\27[K" .. rattr .. cols .. attr(colors.def) .. "\n"
io.stdout:write(output)
end
for i=1,1000 do io.stdout:write("\27[K\27[1B") end
--}}}
end
--{{{ sleep
if delay > 0 then
state.action = "sleep"
header()
sleep(delay)
end
if not (buff == 1 and delay == 0) and counter == 0 then
last_result_num = 0
end
--}}}    
end
--}}}
-- koniec skryptu

Chce na koniec podziekowac kol. Cezaremu i innym kolega za cierpliowsc i wszelkie rady.
Prosze o ewetualne uwagi i sugestie.

FEEDHORN

Panie Cezary.
To temat wypada mi zakonczyc.
Byla to  ostatnia szansa, ze skaner bedzie dzialal.
Dziekuje za wsparcie i cierpliwosc.
Ale jak co do tematu powroce po czasie.

Pozdrawiam.

FEEDHORN