MAC Address: 00:13:xx:xx:xx:xx (Cisco-Linksys)
Device type: broadband router
Running: Linksys embedded
-OS details: Linksys WRT54GS v4 running OpenWrt w/Linux kernel 2.4.30
+OS details: Linksys WRT54GS v4 running LibreWRT w/Linux kernel 2.4.30
Network Distance: 1 hop
\end{Verbatim}
nmap is able to report whether your device uses a Linux TCP/IP stack, and if so,
-will show you which Linux kernel version is probably runs. This report is quite
+will show you which Linux kernel version it probably runs. This report is quite
reliable and it can make the distinction between BSD and Linux TCP/IP stacks and others.
Using the same tool, you can also do port scanning and service version discovery.
22/tcp open ssh Dropbear sshd 0.48 (protocol 2.0)
23/tcp open telnet Busybox telnetd
53/tcp open domain ISC Bind dnsmasq-2.35
-80/tcp open http OpenWrt BusyBox httpd
+80/tcp open http LibreWRT BusyBox httpd
MAC Address: 00:13:xx:xx:xx:xx (Cisco-Linksys)
Service Info: Device: WAP
\end{verbatim}
Although this method is not really known and widespread, using a wireless scanner
to discover which OS your router or Access Point run can be used. We do not have
a clear example of how this could be achieved, but you will have to monitor raw
-802.11 frames and compare them to a very similar device running a Linux based firmware.
+802.11 frames and compare them to a very similar device running a GNU+Linux based firmware.
\subsubsection{Web server security exploits}
your flash chip is a 2MB or less device, your device is most likely to run a
proprietary OS such as WindRiver VxWorks, or a custom manufacturer OS like Zyxel ZynOS.
-OpenWrt does not currently run on devices which have 2MB or less of flash memory.
+LibreWRT does not currently run on devices which have 2MB or less of flash memory.
This limitation will probably not be worked around since those devices are most
of the time micro-routers, or Wireless Access Points, which are not the main
-OpenWrt target.
+LibreWRT target.
\subsubsection{Pluging a serial port}
\subsection{Finding and using the manufacturer SDK}
-Once you are sure your device run a Linux based firmware, you will be able to start
+Once you are sure your device run a GNU+Linux based firmware, you will be able to start
hacking on it. If the manufacturer respected the GPL, it will have released a Sample
Development Kit with the device.
\subsubsection{GPL violations}
-Some manufacturers do release a Linux based binary firmware, with no sources at all.
+Some manufacturers do release a GNU+Linux based binary firmware, with no sources at all.
The first step before doing anything is to read the license coming with your device,
then write them about this lack of Open Source code. If the manufacturer answers
you they do not have to release a SDK containing Open Source software, then we
a good start to make a vanilla kernel work your hardware.
Some directories are very likely to have local modifications needed to make your
-hardware be recognized and used under Linux. First of all, you need to find out
+hardware be recognized and used under GNU+Linux. First of all, you need to find out
the linux kernel version that is used by your hardware, this can be found by
editing the \textbf{linux/Makefile} file.
MODULE_AUTHOR("Me, myself and I <memyselfandi@domain.tld");
\end{verbatim}
-\subsection{Adding your target in OpenWrt}
+\subsection{Adding your target in LibreWRT}
Once you spotted the key changes that were made to the Linux kernel
-to support your target, you will want to create a target in OpenWrt
+to support your target, you will want to create a target in LibreWRT
for your hardware. This can be useful to benefit from the toolchain
-that OpenWrt builds as well as the resulting user-space and kernel
+that LibreWRT builds as well as the resulting user-space and kernel
configuration options.
-Provided that your target is already known to OpenWrt, it will be
+Provided that your target is already known to LibreWRT, it will be
as simple as creating a \texttt{target/linux/board} directory
where you will be creating the following directories and files.
include $(INCLUDE_DIR)/image.mk
define Image/BuildKernel
- cp $(KDIR)/vmlinux.elf $(BIN_DIR)/openwrt-$(BOARD)-vmlinux.elf
+ cp $(KDIR)/vmlinux.elf $(BIN_DIR)/librewrt-$(BOARD)-vmlinux.elf
gzip -9 -c $(KDIR)/vmlinux > $(KDIR)/vmlinux.bin.gz
$(STAGING_DIR_HOST)/bin/lzma e $(KDIR)/vmlinux $(KDIR)/vmlinux.bin.l7
- dd if=$(KDIR)/vmlinux.bin.l7 of=$(BIN_DIR)/openwrt-$(BOARD)-vmlinux.lzma bs=65536 conv=sync
- dd if=$(KDIR)/vmlinux.bin.gz of=$(BIN_DIR)/openwrt-$(BOARD)-vmlinux.gz bs=65536 conv=sync
+ dd if=$(KDIR)/vmlinux.bin.l7 of=$(BIN_DIR)/librewrt-$(BOARD)-vmlinux.lzma bs=65536 conv=sync
+ dd if=$(KDIR)/vmlinux.bin.gz of=$(BIN_DIR)/librewrt-$(BOARD)-vmlinux.gz bs=65536 conv=sync
endef
define Image/Build/squashfs
define Image/Build
$(call Image/Build/$(1))
- dd if=$(KDIR)/root.$(1) of=$(BIN_DIR)/openwrt-$(BOARD)-root.$(1) bs=128k conv=sync
+ dd if=$(KDIR)/root.$(1) of=$(BIN_DIR)/librewrt-$(BOARD)-root.$(1) bs=128k conv=sync
-$(STAGING_DIR_HOST)/bin/mkfwimage \
- -B XS2 -v XS2.ar2316.OpenWrt \
- -k $(BIN_DIR)/openwrt-$(BOARD)-vmlinux.lzma \
- -r $(BIN_DIR)/openwrt-$(BOARD)-root.$(1) \
- -o $(BIN_DIR)/openwrt-$(BOARD)-ubnt2-$(1).bin
+ -B XS2 -v XS2.ar2316.librewrt \
+ -k $(BIN_DIR)/librewrt-$(BOARD)-vmlinux.lzma \
+ -r $(BIN_DIR)/librewrt-$(BOARD)-root.$(1) \
+ -o $(BIN_DIR)/librewrt-$(BOARD)-ubnt2-$(1).bin
endef
$(eval $(call BuildImage))