diff --git a/tools/peek/ndnpeek/main.cpp b/tools/peek/ndnpeek/main.cpp
index 989887a..89b2222 100644
--- a/tools/peek/ndnpeek/main.cpp
+++ b/tools/peek/ndnpeek/main.cpp
@@ -24,6 +24,7 @@
  *
  * @author Jerald Paul Abraham <jeraldabraham@email.arizona.edu>
  * @author Zhuo Li <zhuoli@email.arizona.edu>
+ * @author Davide Pesavento <davidepesa@gmail.com>
  */
 
 #include "ndnpeek.hpp"
@@ -83,6 +84,8 @@
     ("link-file",  po::value<std::string>(), "set ForwardingHint from a raw binary file")
     ("lifetime,l", po::value<time::milliseconds::rep>()->default_value(options.interestLifetime.count()),
                    "set InterestLifetime, in milliseconds")
+    ("app-params,A",    po::value<std::string>(), "set ApplicationParameters from a base64-encoded string")
+    ("app-params-file", po::value<std::string>(), "set ApplicationParameters from a file")
   ;
 
   po::options_description visibleOptDesc;
@@ -159,6 +162,37 @@
     return 2;
   }
 
+  if (vm.count("app-params") > 0) {
+    if (vm.count("app-params-file") > 0) {
+      std::cerr << "ERROR: cannot specify both '--app-params' and '--app-params-file'" << std::endl;
+      return 2;
+    }
+    std::istringstream is(vm["app-params"].as<std::string>());
+    try {
+      options.applicationParameters = io::loadBuffer(is, io::BASE64);
+    }
+    catch (const io::Error& e) {
+      std::cerr << "ERROR: invalid ApplicationParameters string: " << e.what() << std::endl;
+      return 2;
+    }
+  }
+
+  if (vm.count("app-params-file") > 0) {
+    auto filename = vm["app-params-file"].as<std::string>();
+    std::ifstream paramsFile = openBinaryFile(filename);
+    if (!paramsFile) {
+      return 2;
+    }
+    try {
+      options.applicationParameters = io::loadBuffer(paramsFile, io::NO_ENCODING);
+    }
+    catch (const io::Error& e) {
+      std::cerr << "ERROR: cannot read ApplicationParameters from file '" << filename
+                << "': " << e.what() << std::endl;
+      return 2;
+    }
+  }
+
   try {
     Face face;
     NdnPeek program(face, options);
diff --git a/tools/peek/ndnpeek/ndnpeek.cpp b/tools/peek/ndnpeek/ndnpeek.cpp
index ff7f7a0..7bcb137 100644
--- a/tools/peek/ndnpeek/ndnpeek.cpp
+++ b/tools/peek/ndnpeek/ndnpeek.cpp
@@ -24,6 +24,7 @@
  *
  * @author Jerald Paul Abraham <jeraldabraham@email.arizona.edu>
  * @author Zhuo Li <zhuoli@email.arizona.edu>
+ * @author Davide Pesavento <davidepesa@gmail.com>
  */
 
 #include "ndnpeek.hpp"
@@ -66,6 +67,9 @@
   if (m_options.link) {
     interest.setForwardingHint(m_options.link->getDelegationList());
   }
+  if (m_options.applicationParameters) {
+    interest.setApplicationParameters(m_options.applicationParameters);
+  }
 
   if (m_options.isVerbose) {
     std::cerr << "INTEREST: " << interest << std::endl;
diff --git a/tools/peek/ndnpeek/ndnpeek.hpp b/tools/peek/ndnpeek/ndnpeek.hpp
index d02155f..357597e 100644
--- a/tools/peek/ndnpeek/ndnpeek.hpp
+++ b/tools/peek/ndnpeek/ndnpeek.hpp
@@ -24,6 +24,7 @@
  *
  * @author Jerald Paul Abraham <jeraldabraham@email.arizona.edu>
  * @author Zhuo Li <zhuoli@email.arizona.edu>
+ * @author Davide Pesavento <davidepesa@gmail.com>
  */
 
 #ifndef NDN_TOOLS_NDNPEEK_NDNPEEK_HPP
@@ -48,6 +49,7 @@
   bool mustBeFresh = false;
   shared_ptr<Link> link;
   time::milliseconds interestLifetime = DEFAULT_INTEREST_LIFETIME;
+  shared_ptr<Buffer> applicationParameters;
 
   // program behavior options
   bool isVerbose = false;
@@ -107,7 +109,7 @@
   onTimeout();
 
 private:
-  const PeekOptions& m_options;
+  const PeekOptions m_options;
   Face& m_face;
   Scheduler m_scheduler;
   time::steady_clock::TimePoint m_sendTime;
