<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>