<pre style='margin:0'>
Ryan Schmidt (ryandesign) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/489cbc84331ece1416dbbe7c8baea0dce8a058ce">https://github.com/macports/macports-ports/commit/489cbc84331ece1416dbbe7c8baea0dce8a058ce</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new 489cbc8 reaver: Update to 1.6.5
</span>489cbc8 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 489cbc84331ece1416dbbe7c8baea0dce8a058ce
</span>Author: Ryan Schmidt <ryandesign@macports.org>
AuthorDate: Sat Dec 28 20:49:03 2019 -0600
<span style='display:block; white-space:pre;color:#404040;'> reaver: Update to 1.6.5
</span>---
security/reaver/Portfile | 49 ++--
security/reaver/files/patch-Makefile.in.diff | 34 ---
security/reaver/files/patch-libwps-libwps.h.diff | 11 -
security/reaver/files/reaver_osx.diff | 304 -----------------------
4 files changed, 18 insertions(+), 380 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/security/reaver/Portfile b/security/reaver/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 944bfab..7fb6cce 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/security/reaver/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/security/reaver/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,12 +1,18 @@
</span> # -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
PortSystem 1.0
<span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup github 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup t6x reaver-wps-fork-t6x 1.6.5 v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums rmd160 a4284e7e8f2d4e20b59f4b6fb12023cb649063eb \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 342e9d265cf459bd2387205b73a63d1fc7582e268f0e9aec20613f3ec11b6a6b \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 332392
</span>
name reaver
<span style='display:block; white-space:pre;background:#ffe0e0;'>-version 1.4
</span> categories security net
platforms darwin
<span style='display:block; white-space:pre;background:#ffe0e0;'>-maintainers ryandesign openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers {ryandesign @ryandesign} openmaintainer
</span> license GPL-2+
description Brute-force attack against Wi-Fi Protected Setup
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -17,47 +23,28 @@ long_description Reaver implements a brute-force attack against Wi-Fi \
</span> the WPA/WPA2 passphrase. Reaver includes Wash, a utility \
for identifying potentially vulnerable access points.
<span style='display:block; white-space:pre;background:#ffe0e0;'>-homepage https://code.google.com/p/reaver-wps/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-master_sites googlecode:reaver-wps
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.tarball_from releases
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distname ${name}-${version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_xz yes
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums rmd160 190f4481987c57d3ee956e5800287d5a69fd0516 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sha256 add3050a4a05fe0ab6bfb291ee2de8e9b8a85f1e64ced93ee27a75744954b22d
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib port:libpcap
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-depends_lib port:libpcap \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:sqlite3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_run port:aircrack-ng
</span>
patch.dir ${worksrcpath}/src
configure.dir ${patch.dir}
build.dir ${configure.dir}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-patchfiles patch-Makefile.in.diff \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patch-libwps-libwps.h.diff \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- reaver_osx.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Disable silent rules.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-build.args V=1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-build.args-append CC="${configure.cc} [get_canonical_archflags cc]"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.universal_args-delete --disable-dependency-tracking
</span>
post-destroot {
xinstall -d ${destroot}${prefix}/share/doc
copy ${worksrcpath}/docs ${destroot}${prefix}/share/doc/${name}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- move ${destroot}${prefix}/share/doc/${name}/reaver.1.gz ${destroot}${prefix}/share/man/man1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- move ${destroot}${prefix}/etc/reaver/reaver.db ${destroot}${prefix}/etc/reaver/reaver.db.empty
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ move ${destroot}${prefix}/share/doc/${name}/reaver.1 ${destroot}${prefix}/share/man/man1
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-post-activate {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {![file exists ${prefix}/etc/reaver/reaver.db]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- copy ${prefix}/etc/reaver/reaver.db.empty ${prefix}/etc/reaver/reaver.db
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# TODO: ld: warning: ignoring file crypto/libcrypto.a, file was built for archive which is not the architecture being linked
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-universal_variant no
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> notes "
<span style='display:block; white-space:pre;background:#ffe0e0;'>-Reaver is only supported on Linux. This experimental OS X port uses patches\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-submitted to the developers of Reaver but not yet incorporated into their\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-code. On OS X, the reaver and wash tools must be run as root, and you will be\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-disassociated from your normal wireless network while using them.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Reaver is only supported on Linux and may not work well on most Macs. On\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+macOS, reaver and wash must be run as root, and you will be disassociated\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+from your normal wireless network while using them.
</span> "
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/security/reaver/files/patch-Makefile.in.diff b/security/reaver/files/patch-Makefile.in.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 590ef65..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/security/reaver/files/patch-Makefile.in.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,34 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Add DESTDIR support
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-http://code.google.com/p/reaver-wps/issues/detail?id=509
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- Makefile.in.orig 2012-01-18 03:02:40.000000000 -0600
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ Makefile.in 2014-07-26 14:34:22.000000000 -0500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,4 +1,5 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- CC=@CC@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+DESTDIR=
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- LIBWPS_DIR=libwps
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- INC=-I$(LIBWPS_DIR)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- prefix=@prefix@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -85,10 +86,10 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- $(CC) $(CFLAGS) globule.c -c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- install: cleanbin
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if [ ! -d $(CONFDIR) ]; then mkdir -p $(CONFDIR); fi
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if [ ! -e $(CONFDIR)/reaver.db ]; then cp reaver.db $(CONFDIR)/reaver.db && chmod -R a+rw $(CONFDIR); fi
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if [ -e wash ]; then cp wash @bindir@/wash; fi
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if [ -e reaver ]; then cp reaver @bindir@/reaver; fi
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if [ ! -d $(DESTDIR)$(CONFDIR) ]; then mkdir -p $(DESTDIR)$(CONFDIR); fi
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if [ ! -e $(DESTDIR)$(CONFDIR)/reaver.db ]; then cp reaver.db $(DESTDIR)$(CONFDIR)/reaver.db && chmod -R a+rw $(DESTDIR)$(CONFDIR); fi
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if [ -e wash ]; then cp wash $(DESTDIR)@bindir@/wash; fi
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if [ -e reaver ]; then cp reaver $(DESTDIR)@bindir@/reaver; fi
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- clean:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- rm -f *~ *.o reaver wash
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -102,7 +103,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- rm -f Makefile config.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- cleanbin:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- rm -f @bindir@/reaver @bindir@/wash @bindir@/walsh
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ rm -f $(DESTDIR)@bindir@/reaver $(DESTDIR)@bindir@/wash $(DESTDIR)@bindir@/walsh
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- distclean: cleanbin clean
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- rm -rf $(CONFDIR)
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/security/reaver/files/patch-libwps-libwps.h.diff b/security/reaver/files/patch-libwps-libwps.h.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 06ed770..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/security/reaver/files/patch-libwps-libwps.h.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,11 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-http://code.google.com/p/reaver-wps/issues/detail?id=524
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- libwps/libwps.h.orig 2012-01-18 03:02:39.000000000 -0600
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ libwps/libwps.h 2013-08-03 04:41:31.000000000 -0500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -12,6 +12,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifndef LIBWPS_H
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define LIBWPS_H
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <sys/types.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <stdint.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <stdio.h>
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/security/reaver/files/reaver_osx.diff b/security/reaver/files/reaver_osx.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index c370765..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/security/reaver/files/reaver_osx.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,304 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Add OS X support
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-http://code.google.com/p/reaver-wps/issues/detail?id=245
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- Makefile.in (revision 113)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ Makefile.in (working copy)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -5,14 +5,22 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exec_prefix=@exec_prefix@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- CONFDIR=@sysconfdir@/@target@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- CFLAGS=-DCONF_DIR='"$(CONFDIR)"' -DREAVER_DATABASE='"$(CONFDIR)/reaver.db"' @CFLAGS@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+UNAME := $(shell uname)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ifeq ($(UNAME), Linux)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- LDFLAGS=$(LIBWPS_DIR)/*.o wps/*.o tls/bignum.o tls/libtls.a utils/libutils.a crypto/libcrypto.a lwe/libiw.a @LDFLAGS@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+LIBIWNAME=libiw
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ifeq ($(UNAME), Darwin)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+LIBIWNAME=
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+LDFLAGS=$(LIBWPS_DIR)/*.o wps/*.o tls/bignum.o tls/libtls.a utils/libutils.a crypto/libcrypto.a @LDFLAGS@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- all: wash reaver
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--wash: wps libiw libwps.o argsparser.o globule.o init.o misc.o 80211.o iface.o
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+wash: wps $(LIBIWNAME) libwps.o argsparser.o globule.o init.o misc.o 80211.o iface.o
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- $(CC) $(CFLAGS) $(INC) wpsmon.c *.o $(LDFLAGS) -o wash
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--reaver: wps libiw libwps.o argsparser.o globule.o init.o sigint.o sigalrm.o misc.o cracker.o
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+reaver: wps $(LIBIWNAME) libwps.o argsparser.o globule.o init.o sigint.o sigalrm.o misc.o cracker.o
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- $(CC) $(CFLAGS) $(INC) wpscrack.c *.o $(LDFLAGS) -o reaver
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- libwps.o:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- init.c (revision 113)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ init.c (working copy)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -121,7 +121,30 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- pcap_t *handle = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- char errbuf[PCAP_ERRBUF_SIZE] = { 0 };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- handle = pcap_open_live(capture_source, BUFSIZ, 1, 0, errbuf);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // must disassociate from any current AP. This is the only way.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ pid_t pid = fork();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (!pid) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ char* argv[] = {"/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport", "-z", NULL};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ execve("/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport", argv, NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ int status;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ waitpid(pid,&status,0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ handle = pcap_create(capture_source,errbuf);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (handle) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ pcap_set_snaplen(handle, BUFSIZ);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ pcap_set_timeout(handle, 50);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ pcap_set_rfmon(handle, 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ pcap_set_promisc(handle, 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ int status = pcap_activate(handle);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (status)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ cprintf(CRITICAL, "pcap_activate status %d\n", status);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ handle = pcap_open_live(capture_source, BUFSIZ, 1, 0, errbuf);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if(!handle)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- handle = pcap_open_offline(capture_source, errbuf);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- wpsmon.c (revision 113)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ wpsmon.c (working copy)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -62,7 +62,10 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- fprintf(stderr, "Copyright (c) 2011, Tactical Network Solutions, Craig Heffner <cheffner@tacnetsol.com>\n\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- globule_init();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- sql_init();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (!sql_init()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ fprintf(stderr, "[X] ERROR: sql_init failed\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ goto end;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- create_ap_table();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set_auto_channel_select(0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set_wifi_band(BG_BAND);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -265,7 +268,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- while((packet = next_packet(&header)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- parse_wps_settings(packet, &header, bssid, passive, mode, source);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifndef __APPLE__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- memset((void *) packet, 0, header.len);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -328,7 +323,11 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if(frame_header->fc.sub_type == SUBTYPE_BEACON &&
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- mode == SCAN &&
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- !passive &&
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- should_probe(bssid))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ should_probe(bssid)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ && 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- send_probe_request(get_bssid(), get_ssid());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- probe_sent = 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- iface.c (revision 113)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ iface.c (working copy)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -34,6 +34,28 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "iface.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /* Populates globule->mac with the MAC address of the interface globule->iface */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+int read_iface_mac() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ struct ifaddrs* iflist;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ int found = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (getifaddrs(&iflist) == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ struct ifaddrs* cur;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for (cur = iflist; cur; cur = cur->ifa_next) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if ((cur->ifa_addr->sa_family == AF_LINK) &&
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ (strcmp(cur->ifa_name, get_iface()) == 0) &&
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ cur->ifa_addr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ struct sockaddr_dl* sdl = (struct sockaddr_dl*)cur->ifa_addr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ set_mac(LLADDR(sdl));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ found = 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ freeifaddrs(iflist);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return found;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int read_iface_mac()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- struct ifreq ifr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -68,6 +90,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return ret_val;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Goes to the next 802.11 channel.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -112,8 +135,26 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /* Sets the 802.11 channel for the selected interface */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int change_channel(int channel)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ cprintf(VERBOSE, "[+] Switching %s to channel %d\n", get_iface(), channel);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // Unfortunately, there is no API to change the channel
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ pid_t pid = fork();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (!pid) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ char chan_arg[32];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ sprintf(chan_arg, "-c%d", channel);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ char* argv[] = {"/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport", chan_arg, NULL};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ execve("/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport", argv, NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ int status;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ waitpid(pid,&status,0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ set_channel(channel);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+int change_channel(int channel)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int skfd = 0, ret_val = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- struct iwreq wrq;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -146,3 +187,4 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return ret_val;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- 80211.c (revision 113)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ 80211.c (working copy)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -39,8 +39,18 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const u_char *packet = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /* Loop until we get a valid packet, or until we run out of packets */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ struct pcap_pkthdr *pkt_header = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ int status = 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ while ((status = pcap_next_ex(get_handle(), &pkt_header, &packet)) == 1 || status == 0) // status == 0 indicates timeout
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- while((packet = pcap_next(get_handle(), header)) != NULL)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (status == 0) continue;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ memcpy(header, pkt_header, sizeof(*header));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if(get_validate_fcs())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if(check_fcs(packet, header->len))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -49,7 +59,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifndef __APPLE__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- cprintf(INFO, "[!] Found packet with bad FCS, skipping...\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -609,6 +621,69 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if(has_rt_header())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- rt_header = (struct radio_tap_header *) packet;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ unsigned char *body = (unsigned char*) (rt_header+1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ uint32_t present = rt_header->flags;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ uint8_t rflags = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ int i;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for (i = IEEE80211_RADIOTAP_TSFT; i <= IEEE80211_RADIOTAP_EXT; i++) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (!(present & (1 << i))) continue;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ switch (i) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case IEEE80211_RADIOTAP_TSFT:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ body += sizeof(uint64_t);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case IEEE80211_RADIOTAP_FLAGS:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ rflags = *((uint8_t*)body);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ /* fall through */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case IEEE80211_RADIOTAP_RATE:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ body += sizeof(uint8_t);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case IEEE80211_RADIOTAP_CHANNEL:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ body += sizeof(uint16_t)*2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case IEEE80211_RADIOTAP_RX_FLAGS:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case IEEE80211_RADIOTAP_FHSS:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ body += sizeof(uint16_t);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case IEEE80211_RADIOTAP_DB_ANTSIGNAL:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case IEEE80211_RADIOTAP_DBM_ANTNOISE:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case IEEE80211_RADIOTAP_DBM_ANTSIGNAL:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case IEEE80211_RADIOTAP_DB_ANTNOISE:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case IEEE80211_RADIOTAP_ANTENNA:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ body++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case 18: // IEEE80211_RADIOTAP_XCHANNEL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ body += sizeof(uint32_t);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ body += sizeof(uint16_t);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ body += sizeof(uint8_t);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ body += sizeof(uint8_t);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case 19: // IEEE80211_RADIOTAP_MCS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ body += 3*sizeof(uint8_t);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ default:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ i = IEEE80211_RADIOTAP_EXT+1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ #define IEEE80211_RADIOTAP_F_BADFCS 0x40
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (rflags & IEEE80211_RADIOTAP_F_BADFCS) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // bad FCS, ignore
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (!(rflags & IEEE80211_RADIOTAP_F_FCS)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // fcs not always present
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- offset += rt_header->len;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- iface.h (revision 113)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ iface.h (working copy)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -35,9 +35,17 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define IFACE_H
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <sys/ioctl.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <sys/socket.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <net/ethernet.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <ifaddrs.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <net/if_dl.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <net/if.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <netinet/in.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifndef __APPLE__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "lwe/iwlib.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "defs.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "globule.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- 80211.h (revision 113)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ 80211.h (working copy)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -42,6 +42,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "iface.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "crc.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "wps.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include "utils/radiotap.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define AUTH_OK 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define ASSOCIATE_OK 2
</span></pre><pre style='margin:0'>
</pre>