diff -u --recursive --new-file net-snmp/PakConfigure net-snmp.DCX/PakConfigure
--- net-snmp/PakConfigure	Wed Dec 31 18:00:00 1969
+++ net-snmp.DCX/PakConfigure	Fri Jun 28 09:49:11 2002
@@ -0,0 +1,8 @@
+# .pakuni.net:
+
+./configure  --enable-ipv6 --with-openssl=/usr/local/ssl/ --with-ldflags="-L/usr/local/lib -lmhash" --with-mib-modules="tunnel PakDefConX" --enable-shared --with-libwrap  --with-persistent-directory="/var/net-snmp" --with-sys-contact="defconx@paktronix.com" --with-sys-location="PakSecured-2.4.18" --with-logfile="/var/log/" --with-perl-modules --with-default-snmp-version="3" --with-copy-persistant-files=no
+
+# --with-transports="UDP UDPIPv6 TCP TCPIPv6 Unix Callback IPX"
+# --enable-embedded-perl 
+# 
+
diff -u --recursive --new-file net-snmp/agent/mibgroup/PakDefConX.c net-snmp.DCX/agent/mibgroup/PakDefConX.c
--- net-snmp/agent/mibgroup/PakDefConX.c	Wed Dec 31 18:00:00 1969
+++ net-snmp.DCX/agent/mibgroup/PakDefConX.c	Fri Jun 28 09:23:51 2002
@@ -0,0 +1,217 @@
+/* This file is the implmentation of the PakHASH MIB functions for
+ * the talk given by Matthew G. Marsh at DefCon X 2002.
+ * All rights reserved 
+ */
+
+/*                Paktronix Systems LLC
+ *          PakHash Implementation Core Program
+ * 
+ * This file is the core implementation code for the remote file
+ * hash PakMIB structure. It is hereby released under GPL v2.
+ * Please note that the only valid version of the GPL as far as this code
+ * is concerned is the following particular version of the license:
+ *	    GNU GENERAL PUBLIC LICENSE
+ *     	       Version 2, June 1991
+ * unless explicitly otherwise stated.
+ */
+
+/* Headers needed by NetSNMP v5.0 */
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include "util_funcs.h"
+
+/* System required headers */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+/* Pak required Headers */
+
+#include "PakDefConX.h"
+#include <mhash.h>
+
+/* Standard definitions for our allowable sizes etc */
+
+#define MAXFILELEN 1024
+#define CLEAR_HASH "00000000000000000000000000000000000"
+#define DEFAULTFILE "/etc/hosts"
+
+/* 
+ * PakDefConX_variables_oid:
+ *   this is the top level oid that we want to register under.  This
+ *   is essentially a prefix, with the suffix appearing in the
+ *   variable below.
+ */
+
+oid PakDefConX_variables_oid[] = { 1,3,6,1,4,1,9248,1 };
+
+/* static variables for later on */
+
+static char outputhash[35];
+static char pakfilename[MAXFILELEN +1];
+
+/* 
+ * variable2 PakDefConX_variables:
+ *   this variable defines function callbacks and type return information 
+ *   for the PakDefConX mib section 
+ */
+
+struct variable2 PakDefConX_variables[] = {
+/*  magic number        , variable type , ro/rw , callback fn  , L, oidsuffix */
+  { PAKFILENAME, ASN_OCTET_STR, RWRITE, var_PakDefConX, 2, { 1,1 } },
+  { PAKFILEHASH, ASN_OCTET_STR, RONLY, var_PakDefConX, 2, { 1,2 } },
+};
+
+/*
+ * init_PakDefConX():
+ *   Initialization routine.  This is called when the agent starts up.
+ */
+
+void init_PakDefConX(void) {
+
+  /* register ourselves with the agent to handle our mib tree */
+
+  REGISTER_MIB("PakDefConX", PakDefConX_variables, variable2, PakDefConX_variables_oid);
+
+  /* set up a non-null hash file name */
+
+  strcpy(pakfilename, DEFAULTFILE);
+
+}
+
+/*         Mhash routine function to generate MD5 sum   
+ * In the future this will take an additional input value to select different hash
+ * types. Currently this is forced to MD5 (easy implementation... )
+ */
+
+void pakhash(char *thisfile) 
+ {
+   int st, i;
+   MHASH td;
+   unsigned char buffer, *hash;
+   unsigned char ohash[5];
+   void *result = malloc(35);
+   FILE *in;
+
+   strcpy(result, CLEAR_HASH);
+   strcpy(outputhash, " ");
+
+  DEBUGMSGTL(("PakDefConX","Clear outputhash %s result %s\n", outputhash, result)); 
+
+	td = mhash_init(MHASH_MD5);
+	if (td == MHASH_FAILED) exit(1);
+	in = fopen(thisfile,"r");
+
+	if (!in)  return 1;
+
+	while (fread(&buffer, 1, 1, in) == 1) {
+		mhash(td, &buffer, 1);
+	}
+
+	hash = mhash_end(td);
+
+  DEBUGMSGTL(("PakDefConX","End of mhash process hash is %x\n",hash)); 
+
+  for (i = 0; i < mhash_get_block_size(MHASH_MD5); i++)  {
+
+     DEBUGMSGTL(("PakDefConX", "in loop i is %d\n", i));
+
+     st = sprintf(ohash, "%.2x", hash[i]);
+
+   DEBUGMSGTL(("PakDefConX", "in loop ohash is %s, result is %s\n", ohash, result));
+
+     if ( i == 0 ) memcpy(result, ohash, 2);
+     if ( i != 0 ) memcpy(&result[(i*2)], ohash, 2);
+       }
+
+  memcpy(outputhash, result, 32);
+  free(result);
+  result = NULL;
+
+     DEBUGMSGTL(("PakDefConX", "the outputhash is %s\n", outputhash));
+
+}
+
+/*
+ * var_PakDefConX():
+ *   This function is called every time the agent gets a request for
+ *   a scalar variable within the .1.3.6.1.4.1.9248 MIB spectrum.
+ */
+
+unsigned char * var_PakDefConX(struct variable *vp, 
+                              oid  * name, 
+                              size_t * length, 
+                              int exact, 
+                              size_t * var_len, 
+                              WriteMethod ** write_method)
+{
+
+  static long     temp_long;
+
+  /* assume no write and integer set for now just to register */
+
+  *write_method = 0;
+  *var_len = sizeof(temp_long);
+
+  if (header_generic(vp, name, length, exact, var_len, write_method) )
+    return 0;
+
+  /* 
+   * this is where we do the value assignments for the mib results.
+   */
+
+  switch(vp->magic) {
+
+    case PAKFILENAME:
+        
+        *write_method = write_PakFileName;
+        *var_len = strlen(pakfilename);
+        return (unsigned char *) pakfilename;
+
+    case PAKFILEHASH:
+        
+        pakhash(pakfilename);
+        *var_len = strlen(outputhash);
+        return (unsigned char *) &outputhash;
+
+    default:
+      ERROR_MSG("whoopsie we did not specify");
+  }
+  return NULL;
+}
+
+int write_PakFileName(int action,
+                      u_char * var_val,
+                      u_char var_val_type,
+                      size_t var_val_len,
+                      u_char * statP, 
+                      oid * name, 
+                      size_t name_len)
+{
+    if (var_val_type != ASN_OCTET_STR) {
+        DEBUGMSGTL(("PakDefConX", "write to PakSETFile not ASN_OCTET_STR\n"));
+        return SNMP_ERR_WRONGTYPE;
+    }
+    if (var_val_len > MAXFILELEN) {
+        DEBUGMSGTL(("PakDefConX", "write to PakSETFile: bad length\n"));
+        return SNMP_ERR_WRONGLENGTH;
+    }
+    if (action == COMMIT) {
+        if (var_val_len != 0) {
+            strcpy(pakfilename, var_val);
+            pakfilename[var_val_len] = '\0';
+        } else
+            pakfilename[0] = '\0';
+    }
+    return SNMP_ERR_NOERROR;
+}
+
+
+
+
+
+
diff -u --recursive --new-file net-snmp/agent/mibgroup/PakDefConX.h net-snmp.DCX/agent/mibgroup/PakDefConX.h
--- net-snmp/agent/mibgroup/PakDefConX.h	Wed Dec 31 18:00:00 1969
+++ net-snmp.DCX/agent/mibgroup/PakDefConX.h	Fri Jun 28 08:47:32 2002
@@ -0,0 +1,23 @@
+/* This file was generated by mib2c and is intended for use as a mib module
+  for the ucd-snmp snmpd agent. */
+
+#ifndef _MIBGROUP_PAKDEFCONX_H
+#define _MIBGROUP_PAKDEFCONX_H
+
+/* we may use header_generic and header_simple_table from the util_funcs module */
+
+config_require(util_funcs)
+
+
+/* Magic Numbers for MIB defs */
+
+#define   PAKFILENAME   3
+#define   PAKFILEHASH   4
+
+/* function prototypes */
+
+extern void   init_PakDefConX(void);
+extern FindVarMethod var_PakDefConX;
+WriteMethod     write_PakFileName;
+
+#endif /* _MIBGROUP_PAKDEFCONX_H */
diff -u --recursive --new-file net-snmp/mibs/Makefile.in net-snmp.DCX/mibs/Makefile.in
--- net-snmp/mibs/Makefile.in	Sat Apr 20 02:30:15 2002
+++ net-snmp.DCX/mibs/Makefile.in	Fri Jun 28 08:39:28 2002
@@ -38,13 +38,15 @@
 
 NETSNMPMIBS = NET-SNMP-MIB.txt NET-SNMP-AGENT-MIB.txt NET-SNMP-EXAMPLES-MIB.txt
 
+PAKMIBS = PakDefConX.mib
+
 UCDMIBS = UCD-SNMP-MIB.txt UCD-DEMO-MIB.txt UCD-IPFWACC-MIB.txt \
 	UCD-DLMOD-MIB.txt UCD-DISKIO-MIB.txt
 
 DEFAULTMIBS = @default_mibs_install@
 
 MIBS	= $(V1MIBS) $(V2MIBS) $(V3MIBS) $(RFCMIBS) \
-	$(AGENTMIBS) $(IANAMIBS) \
+	$(AGENTMIBS) $(IANAMIBS) $(PAKMIBS) \
 	$(NETSNMPMIBS) $(UCDMIBS) $(DEFAULTMIBS)
 
 all: standardall
diff -u --recursive --new-file net-snmp/mibs/PakDefConX.mib net-snmp.DCX/mibs/PakDefConX.mib
--- net-snmp/mibs/PakDefConX.mib	Wed Dec 31 18:00:00 1969
+++ net-snmp.DCX/mibs/PakDefConX.mib	Fri Jun 28 08:45:35 2002
@@ -0,0 +1,55 @@
+PAKDEFCONX-MIB DEFINITIONS ::= BEGIN
+
+IMPORTS
+    OBJECT-TYPE, NOTIFICATION-TYPE, MODULE-IDENTITY,
+    enterprises
+        FROM SNMPv2-SMI;
+
+
+PakDefConX MODULE-IDENTITY
+          LAST-UPDATED "200206280000Z"        --  Jun 28 2002
+          ORGANIZATION "Paktronix Systems LLC"
+          CONTACT-INFO
+         "                      Matthew G. Marsh
+                                Paktronix Systems LLC  
+                                1506 North 59th Street
+                                Omaha  NE  68104-4830  USA
+
+                           Tel: (402) 932-7250
+                        E-mail: defconx@paktronix.com
+
+          Technical Support E-mail: defconx@paktronix.com"
+
+          DESCRIPTION
+                  " The private extensions to the MIB sub-tree of 
+                    Paktronix Systems LLC for the SNMPv3 talk at
+		    DefCon X 2002"
+                                                                               
+    ::= { enterprises 9248 }
+
+PakDC          OBJECT IDENTIFIER ::= { PakDefConX 1 }
+-- The OBJECT IDENTIFIER for all PakDefConX tricks 
+
+PakSETFiles OBJECT IDENTIFIER ::= { PakDC 1 }
+
+PakTestFileString OBJECT-TYPE
+    SYNTAX	OCTET STRING (SIZE(0..1024))
+    MAX-ACCESS	read-write
+    STATUS	current
+    DESCRIPTION
+	"A publicly settable string that can be set for testing 
+	 snmpsets.  This value will eventually be used as the file
+	 name for the PakHash function."
+    ::= { PakSETFiles 1 }
+
+PakTestFileHash OBJECT-TYPE
+    SYNTAX	String
+    MAX-ACCESS	read-only
+    STATUS	current
+    DESCRIPTION
+	"This object returns the md5sum of the file name
+	 set into PakFileTestString.
+	 Only the md5sum is returned."
+    ::= { PakSETFiles 2 }
+
+END
