Innehållsförteckning:

NLDWRTG ULTIMATE WRT54G Expansionskort: 8 steg (med bilder)
NLDWRTG ULTIMATE WRT54G Expansionskort: 8 steg (med bilder)

Video: NLDWRTG ULTIMATE WRT54G Expansionskort: 8 steg (med bilder)

Video: NLDWRTG ULTIMATE WRT54G Expansionskort: 8 steg (med bilder)
Video: Linksys WRT54G Ultimate Hacking 2024, Juli
Anonim
NLDWRTG ULTIMATE WRT54G Expansionskort
NLDWRTG ULTIMATE WRT54G Expansionskort
NLDWRTG ULTIMATE WRT54G Expansionskort
NLDWRTG ULTIMATE WRT54G Expansionskort

Jag har modifierat WRT54G -routrar sedan 2006 men har aldrig haft tid att faktiskt utforma en dedikerad styrelse för den förrän förra året. Denna hårdvara är fortfarande en av de mest hackbara wifi -routrarna i skrivande stund och förtjänar att hållas vid liv.

Steg 1: Kort översikt över Linksys WRT54G -serien

Kort översikt över Linksys WRT54G -serien
Kort översikt över Linksys WRT54G -serien

en.wikipedia.org/wiki/Linksys_WRT54G_serie…

Det finns många olika versioner på marknaden så låt oss ta en titt som kan ändras:

-WRT54G 2.0/2.1/2.2 -> Även om alla mods är möjliga tar det stora gamla moderkortet all plats i fodralet, om du ändrar denna serie måste du flytta din krets utanför lådan eller skapa ett helt nytt hölje (srsly inte värt besväret)

-WRT54G 4.0 Bytt till ny SoC -> Detta var det första kortet där det L -formade moderkortet introducerades så det här är den första versionen där du kan dra nytta av min sköld och sätta in den i fodralet

-WRT54GL 1.0/1.1-> Linksys släppte WRT54GL (den mest sålda routern genom tiderna) 2005 för att stödja tredjeparts firmware baserad på Linux, efter att den ursprungliga WRT54G-linjen byttes från Linux till VxWorks, med början med version 5. WRT54GL är tekniskt sett en nyutgåva av version 4 WRT54G. Denna modell är kungen av WRTG. Det finns många begagnade routrar runt om på marknaden, så om du har ett val om vilken typ du vill köpa, köp ALLTID WRT54GL.

-WRT54G 5.0 och högre -> Använder VxWorks OS och reducerat flashminne; inte kompatibel med de flesta tredjeparts firmware, även om "VxWorks killer" -verktyget tillåter att vissa tredjeparts firmware med öppen källkod kan laddas på denna och framtida versioner. Linksys gjorde en dålig vändning här och förstörde i huvudsak en helt bra produkt. Även om det är möjligt att ändra dessa, är utrymmet på routern så litet (2MB) att det bara passar DD-WRT-mikroprogramvaran som i stort sett inte kan göra något utöver vanlig routingfunktion (ingen VPN, inga smbfs/cifs, ingen NFS, ingen mmc, ingen ext2). Jag har lyckats skapa kärnor för denna serie och pressa in 1-1 nödvändig modul på kostnaden för att ta ut andra. Det är INTE värt din tid och ansträngning, köp INTE dessa routrar.

Med den senare WRT-serien kopplade Linksys till ARM-arkitektur, till exempel har WRT1200 AC 1,3 GHz ARM-processor med två kärnor. Jag har dock dålig erfarenhet av dessa routrar även efter att ha testat flera OpenWRT -versioner (nu LEDE) kan routrarna frysa slumpmässigt. Jag förväntar mig 300+ dagars drifttid från Unix -enheter.

Steg 2: Utöka funktionaliteten

Förlängning av funktionaliteten
Förlängning av funktionaliteten

Ok, vad kan du göra med den här routern:

1, lägg till 2x seriella portar -> vilket kan vara praktiskt om du har andra servrar på en avlägsen plats och du vill ansluta till deras bios via seriell linje eller andra routrar, swtiches som tillåter detta

2, Lägg till 1 USB1.0 -port -> kan användas för att ansluta skrivare, extern hårddisk etc (jag har aldrig gjort den här moden, så det kommer inte att vara en del av skrivandet)

3, Lägg till externt SD -kort för lagring, detta kan utöka din routers lilla 16 MB flashminne till 16/32/…+GB. Jag hade inga problem med att använda den här storleken på SD -kort och inte heller några problem med att använda helt nya hållbara CLASS 10 -kort. Om du har experimenterat med vad som är begränsningen av kort per WRTG -modeller, lämna en kommentar nedan.

4, Lägg till en arduino för att styra ditt hem, reläer, växelbrytare

Att lägga till en arduino öppnar i princip en obegränsad mängd alternativ: robotstyrning, kontroll av infraröda enheter i sikte (TV -apparater, videobandspelare, DVD -skivor, projektorer, luftkonditionering), anslutning av massor av enheter till billiga 433Mhz trådlösa switchar, kommunikation med andra arduinos, raspis, lägga till en Xbee etc etc.

Även om allt detta kan göras med en Raspberry PI + Arduino och tillägg, anser jag att WRT54G -routern är mer pålitlig än raspis. Jag har dessa routrar i liknande konfigurationer med över 1 års (!) Drifttid, jag kunde inte säga detsamma om raspis där min högsta drifttid var cirka 240 dagar på en raspi 1 då ger SD -kortet upp systemet, även om C Arduino -kontrollkoden laddades in i minnet så jag behövde inte skynda mig med bytet eftersom kontrollnoden fortfarande var perfekt funktionell:))

Steg 3: Hårdvarulista

Maskinvarulista
Maskinvarulista

Jag bifogar brädlayouten i både SVG- och EasyEda -format. Om du vill bygga projektet behöver du följande komponenter: 1x LM7805 Spänningsregulator

2x lock för vreg 1uF 10uF (10PCS elektrolytkondensatorer 25V 35V 50V 1uF ~ 1000uF olika värden och spänningar)

1x 4 -polig kabel från SDcar till kortet (10st Jumper Wire 2/3/4/5/6/7Pin Female to Female Dupont Cable 20cm for Arduino)

2x DIP051A7212D Reed -reläer

1x RS232 hanuttag (20 st 9-stifts D-Sub DB9 hane, rätvinklig PCB-kontakt WT7n)

1x MAX 233 (10st Max233 Max233cpp Rs232 Rs-232 Driver/Mottagare Ic Ny X)

1x 10 -polig anslutningskabel (5st 2mm Pitch 2x5 Pin 10 Pin 10 Wire IDC Flat Ribbon Cable Length 10CM)

1x 10 -stiftsuttag (20st 2,54mm 2x5 -stift 10 -stift Rakt hanskyddad kretskortslåda IDC -kontakt)

1x kontakthuvuden (10st 1*40Pin enkel rad hona 2,54 mm brytbar huvudkontakt från Arduino 2017)

1x SD -kort (kan vara gammalt stort SD eller nytt microsd med omvandlare, under 32 GB i storlek borde de fungera, förutom att jag inte testade kort)

1x 3v5v TTL-omvandlare (5x Logic Level Converter 3.3V till 5V TTL Bi-Directional för Arduino Raspberry pi)

1x 4n35 optokopplare

1x SD -kortmodulplats Socket Reader för Arduino ARM MCU Läs och skriv

1x Arduino Promicro (5st Leonardo Pro Micro ATmega32U4 16MHz 5V Ersätt ATmega328 Arduino Pro Mini)

1x RX- och TX -moduler köper dem som ett kombinationspaket (5st 433Mhz RF -sändare och mottagarsats för Arduino trådlös fjärrkontroll)

Steg 4: Hårdvarudesign

Hårdvarudesign
Hårdvarudesign
Hårdvarudesign
Hårdvarudesign
Hårdvarudesign
Hårdvarudesign

-Kortet skruvas fast i den huvudsakliga svarta plastbottenplattan

-MAX233 valdes framför MAX232 så inga extra lock krävs för PC-> WRTG -seriekonverteraren -Alla komponenter finns på 1 rad så en enkel rektangel kan skäras fram istället för att borra flera hål, alternativt en fin täckplatta (eller ett helt nytt WRTG -fodral) kan designas med makerbot

-Arduino promicros mikro -USB -uttag som vetter mot frontpanelen för extern programmering.

-Baserat på Arduino Promicro (arduino matas från 12V -ingången på WRT54G -routern (via en spänningsregulator), adapterens öppna kretsspänning är cirka 16V!)

-Promicro har äkta usb, inte delat skräp så att WRTG: s/dev/tts/1 kan kopplas till Promicros hårdvara UART

-Seriell kommunikation via/dev/tts/0 mellan PC WRTG

-RF 433Mhz mottagare + sändare (sändare kan ta 12V för högre räckvidd)

-IR -sändare och mottagare kan läggas till på frontpanelen

-Ytterligare lysdioder kan läggas till på frontpanelen (ange Rx/Tx för RF, IR, router/ardu comm indikator)

Jag hade kunnat designa kortet med en mini -buck -omvandlare men tog det linjära spänningsregulatorns tillvägagångssätt sedan jag hade det i handen. Jag har hittat 5V någon punkt i kretsen men när jag knackade på den gjorde routern oanvändbar (förmodligen kunde jag inte ge den ström som arduino -kortet behövde), därför gick jag med en extra vreg -metod.

3v5v TTL -omvandlaren är där för att ge rätt volatage -omvandling (jag använder en 5V arduino promicro -modell, som använder 5V på dess maskinvaru UART -port, därför krävs spänningsnivåomvandling). Men jag har tidigare modifierat routrar och lagt till Arduino Nanos, Micros utan omvandlare och hade inget problem eftersom WRTG: s TTY -port är 5V -tolerant, men det betyder inte att du ska använda den från denna spänning.

4n35 introducerades också för att bli av med lite ljud från den externa PC -sidan, jag använde inte denna komponent tidigare men det kan också bero på att den bärbara datorn jag har använt under testerna var felaktig.

10 -stifts kontaktkabeln tar hand om de flesta anslutningarna men du måste se till att du installerar uttagen korrekt.

Som det visas på bilden vid serieporten

Pin 1: 3.3V + Pin 2: 3.3V <= De två längst till höger stiften (närmare lysdioderna) är POSITIVE ansluter till höger sida av kontakten på NLDWRTG skärmen (nära LM7805 spänningsregulator)

Pin 9: GND + Pin 10: GND <= Motsatt sida är NEGATIVE ansluter till vänster sida av kontakten på NLDWRTG -skärmen

För anslutning av ledningarna mellan SDCARD -läsaren och WRTG:

www.jbprojects.net/articles/wrt54gl_mods/

De relevanta stiften:

  • CS -> Punkt 1
  • MOSI -> Punkt 2
  • SCK -> Punkt 5
  • MISO -> Punkt 7

Steg 5: Begränsningar

Begränsningar
Begränsningar

WRT54GL: s CPU är inte den starkaste (Broadcom BCM5352 @ 200 MHz), kan överklockas till 250Mhz (rekommenderas inte:)) så förvänta dig inte att köra SETI @ HOME på den. Routern - bara - har 100mbit/s gränssnitt och till skillnad från vad du kan hitta på många ställen stöder denna hårdvara *INTE 802.1q VLAN *. Det är bara en enkel portbaserad VLAN, snälla lägg inte WRTG i ett nätverk som transporterar VLAN, det kan inte göra det.

En särskilt användbar applikation är att använda routern som VPN -klient för att ansluta till en central plats. Även om det är perfekt att använda för VPN -server så förvänta dig inte mycket prestanda av det.

Här är några av mina resultat med en WRT54GL v1.1 som använder OpenVPN som en klient.

Maximal tunneldragning: 500kbit/s ner 50 kbit/s upp

Maximal routingprestanda utan VPN från WAN -> LAN 28 mbit/s

Maximal NAT -prestanda (Masquerade) utan VPN från WAN -> LAN 27 mbit/s

Det finns fortfarande många platser med lägre total bandbredd än dessa (ISDN, Adsl, kabelnät, satellit etc) som den här routern helt kan tillfredsställa.

Vanligtvis kommer problemen från att sätta alltför många trådlösa klienter på dessa routrar. Jag såg många inställningar genom åren i kaffe, hotell, restauranger där de kastar en wifi -router på disken och kallar den en dag, och förväntar mig att den ska kunna servera 10+ personer. Allt de får är en helt oanvändbar wifi -upplevelse i slutet eftersom den totala teoretiska bandbredden för denna 802.11G -router är 51 mbit/s och det är för alla, låt oss säga att den verkliga är cirka 30 mbit/s. För 10 personer som är 3mbit/s per användare i bästa fall, vilket inte är tillräckligt för dagens bandbredd hungriga (video/ljud -streaming, web 2.0 -sidor fulla av stora bilder etc) applikationer.

Som jag sa tidigare är poängen med detta hack fjärrkontroll och det skulle inte använda mer än ett par kbit/s -trafik via en VPN.

Steg 6: WRTG -programvara

WRTG -programvara
WRTG -programvara

Firmwaren är byggd på den bästa versionen: DD-WRT v24-sp2 (08/12/10) std-nokaid (SVN version 14929) Det finns andra bilder som VPN som offrar ext2-modulen för att spara utrymme medan den fortfarande har mmc kernelmodul (LoL). Optware 2 är ett avvecklat men fortfarande användbart verktygspaket som utökar den grundläggande DD-WRT-funktionen:

-Det gör en grundläggande linux distro från den förlamade ner upptagen box installationen.

-Ger bash och andra skal.

-Ger många gudar som: htop, netcat, tcpdump, ngrep, mc

-Tillhandahåller servertjänster som: samba, asterisk, vsftpd, jabber server

Men mjukvarupaket är gamla, ridd med buggar och sårbarheter. Publicering och bild här skulle vara detsamma som att tillhandahålla en Window $ 98 -installation, därför kommer jag inte att publicera någonting än utan skriva ner det steg för steg hur du konfigurerar ditt OptWare 2 SDCard.

I framtiden planerar jag att göra en ny Linux distro (SnowGlobe Linux) med färska paket för den här enheten och publicera den.

1, JFFS2 måste vara aktiverad, det spelar ingen roll att det inte har något ledigt utrymme på det:

/dev/mtdblock/4 128K 128K 0 100%/jffs

2, SDCARD -partitionering. Här är ett smart trick:

14 GB eller vad vi än vill ha för den första datapartitionen för ddwrt 100-500mb andra partition (EXT2) för återställning

Till exempel:

Disk /dev /sde: 14,5 GiB, 15523119104 byte, 30318592 sektorer

Enheter: sektorer på 1 * 512 = 512 byte Sektorstorlek (logisk/fysisk): 512 bytes/512 bytes I/O -storlek (minimum/optimal): 512 byte/512 byte Diskmärkningstyp: dos Diskidentifierare: 0x6ad48986 Enhetsstart Start slut Sektorer Storlek Id Typ /dev /sde1 2048 29362175 29360128 14G 83 Linux /dev /sde2 29362176 30318591 956416 467M 83 Linux

Skapa filsystem:

mkfs.ext2 -L SnowGlobe -data /dev /sde1

mkfs.ext2 -L SnowGlobe -recovery /dev /sde2

Stämma filsystem:

tune2fs -c0 -i0 -m0 /dev /sde1

tune2fs -c0 -i0 -m0 /dev /sde2

Endast den första partitionen kommer att automatiseras av systemet vid start! Tanken bakom återställningspartitionen är att WRT54G inte har plats för en fdisk någon annanstans. Så om det är en oren avstängning och det finns inkonsekvenser i filsystemet är det enda sättet att reparera det att ha en kopia av fdisk (och krävs libs för att starta) på en andra partition som bara kommer att monteras ibland som skrivskyddad för att köra fsck om behövs. Annars skulle kortet behöva tas ut och sättas i en dator för reparation …

3, Montering

Om du sätter i ett redan partitionerat, formaterat kort och wrtg -stövlar korrekt är det troligt att den första partitionen kommer att automatiseras:

/dev/mmc/disc0/part1 13,8G 59,6M 13,7G 0%/mmc

Opt måste bindas monterat nu:

montera -o bind /mmc / /opt /

4, OWRT2 installeringsskript

Innan du börjar kontrollera om defgw, dns allt bra.

wget https://www.3iii.dk/linux/optware/optware-install-… -O -| tr -d '\ r'> /tmp/optware-install.sh

sh /tmp/optware-install.sh

Om det inte kan få skriptet beror det på att busybox wget misslyckas. Det fungerar med owrts wget men hej du vill installera owrt …

Utdata ska se ut så här:

Kontrollerar systemkonfiguration …

Använda 192.168.1.1 som standardgateway. Använda följande namnserver: namnserver 192.168.1.30 Varning: lokal namnserver är annorlunda än gateway! Kontrollera config eller ange: sed -i s/192.168.*/192.168.1.1/ /tmp/resolv.conf för att rätta till detta. Installerar paketet uclibc-opt_0.9.28-13_mipsel.ipk… Ansluter till ipkg.struction2-linux.org [140.211.166.82]: 80 uclibc-opt_0.9.28-12 100% | ************* ************************************ | 832 KB 00:00:00 ETA Uppdaterar /opt/etc/ld.so.cache/opt/sbin/ldconfig: kan inte skapa /opt/etc/ld.so.cache~ (Ingen sådan fil eller katalog) Installera paket ipkg-opt_0.99.163-9_mipsel.ipk… Ansluter till ipkg.struction2-linux.org [140.211.166.82]: 80 ipkg-opt_0.99.163-9_ 100% | *************** ********************************* | 75896 00:00:00 ETA Nedladdning https://ipkg.struction2-linux.org/feeds/optware/ddwrt/c… Uppblåsning https://ipkg.struction2-linux.org/feeds/optware/ddwrt/c… Uppdaterad lista över tillgängliga paket i/opt/lib/ipkg/lists/optware Avslutat. Installera uclibc-opt (0.9.28-12) till/opt/… Ladda ner https://ipkg.struction2-linux.org/feeds/optware/ddwrt/c… paket uclibc-opt föreslår att du installerar ipkg-opt Konfigurerar uclibc-opt Uppdaterar /opt/etc/ld.so.cache Avslutad. Installerar ipkg-opt (0.99.163-9) till/opt/… Hämtar https://ipkg.struction2-linux.org/feeds/optware/ddwrt/c… Konfigurerar ipkg-opt Avslutades.

5, Path bug:

Du MÅSTE exportera sökvägen med:

export PATH = "/opt/bin:/opt/sbin:/opt/usr/bin:/opt/usr/sbin:/bin:/usr/bin:/sbin:/usr/sbin:/jffs/sbin:/ jffs/bin:/jffs/usr/sbin:/jffs/usr/bin:/mmc/sbin:/mmc/bin:/mmc/usr/sbin:/mmc/usr/bin"

annars gör ipkg ingenting!

6, Verifiera ipkg:

ipkg uppdatering

Ska mata ut:

Hämtar

Uppblåsning av https://ipkg.struction2-linux.org/feeds/optware/ddwrt/c… Uppdaterad lista över tillgängliga paket i/opt/lib/ipkg/lists/optware Avslutat.

7, installera paket:

ipkg install bash htop mc openvpn tcpdump vim bzip2 bc e2fsprogs findutils gawk grep gzip mindre make ntfs-3g openssl perl php psmisc psutils

samba36 sed tar unrar unzip vnstat vsftpd wget whois zip ncftp

8, lista installerade paket:

ipkg-opt list_installed

Det rekommenderas inte att bygga paket på routern på grund av bristen på resurser. Ställ in separat mips crosscompiling miljö i Vmware/Vbox/KVM för detta ändamål.

Saker som behövs:

-Debian 7 väsande 64 -bitars värd -operativsystem

-OpenWrt-SDK-Linux-x86_64-1.tar.bz2->

openwrt.org/docs/guide-developer/obtain.fi…

Slösa inte tid på att försöka kompilera SDK på egen hand, den medföljande binära SDK: n är tillräckligt bra.

Skapa en enkel helloworld -app

#include int main (void) {printf ("Helvete! O 'världen, varför kompilerar inte min kod? / n / n"); returnera 0; }

./staging_dir_mipsel/mipsel-linux-uclibc/bin/gcc -lpthread hello.c -o hej

Om allt går rätt bör du ha en mips körbar nu:

hej: ELF 32-bitars LSB körbar, MIPS, MIPS32 version 1 (SYSV), dynamiskt länkad (använder delade libs), inte avskalad

Steg 7: Arduino -programvara

Du kan ladda ner hela källkoden nedan. Det är ganska enkelt, det kan styra de 2 reläerna och några RC -kontakter via 433Mhz -radio. Du kan enkelt förlänga den t.ex.: lägg till fler rc -switchar.

Steg 8: Avslutning och att göra -lista

Avslutning och att göra -lista
Avslutning och att göra -lista

WRT54G är en utmärkt hårdvara så allt arbete som investeras i detta projekt är väl värt det, förutom NLD Wrtg -skölden kan vara användbar med framtida hårdvaruversioner.

Eftersom energiförbrukningen för en WRTG är lägre än Raspberry PI: er kan solcellsdrivning av routern också vara en bra uppgradering och med Arduino kan vi övervaka varje detalj i solens laddningsprocess (batterispänning, panelspänning, förbrukning). Jag kommer att fortsätta WRTG -serien med solhack senare.

Att hitta ett sätt att programmera Arduino direkt från WRTG skulle vara bra (detta skulle kräva en metod för att återställa Arduino).

Personer med 3D, Makerbot -färdigheter är mer än välkomna att designa en anpassad täckplatta (med kontakterna på mitt kort) för fronten eller omforma hela plastens främre del av routern.

UPPDATERING: För att fira att MIPS -arkitekturen blir öppen källkod har jag uppdaterat självstudien med hur man kan bygga enkla C -program till WRTG.

Länge leve MIPS!:)

systemtyp: Broadcom BCM5352 chip rev 0processor: 0 cpu -modell: BCM3302 V0.8 BogoMIPS: 199,47 väntanvisning: inga mikrosekundtimers: ja tlb_entries: 32 extra avbrottsvektor: ingen hårdvaruövervakning: inga VCED -undantag: inte tillgängliga VCEI -undantag: inte tillgängligt

Rekommenderad: