<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>public/images/progress.gif</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -18,7 +18,7 @@ class BruteforceController &lt; ApplicationController
       @options = default_client_options Attack.increment_position!
     else
       @options = default_client_options(position = Attack.count + 1, random_string)
-      last = Attack.create :position =&gt; @options[:position], :chunk =&gt; @options[:chunk], :offset =&gt; @options[:offset], :client =&gt; @options[:client]
+      last = Attack.create :position =&gt; @options[:position], :chunk =&gt; @options[:chunk], :xoffset =&gt; @options[:offset], :client =&gt; @options[:client]
     end
     if params[:option] == 'facebook'
       @options[:status_interval] = 5
@@ -60,6 +60,8 @@ class BruteforceController &lt; ApplicationController
     end
     session[:updown] = 'DESC' unless session[:updown].to_s == 'ASC' or session[:updown].to_s == 'DESC'
     @attacks = Attack.find(:all, :order =&gt; order + ' ' + session[:updown], :limit =&gt; 400)
+    @progress = Attack.find(:all, :conditions =&gt; [&quot;response&quot;], :order =&gt; 'xoffset ASC', :limit =&gt; 400)
+    @realm = session[:settings].characters.size.to_i ** session[:settings].max.to_i
     render :layout =&gt; 'status'
   end
   </diff>
      <filename>app/controllers/bruteforce_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,23 @@
-&lt;div id=&quot;statistics&quot;&gt;
+&lt;div id=&quot;statistics&quot; style=&quot;clear:both&quot;&gt;
+
+  &lt;div id=&quot;barlabel&quot;&gt;
+    &lt;div style=&quot;float:left&quot;&gt;1&lt;/div&gt;
+    &lt;div style=&quot;float:right&quot;&gt;&lt;%= @realm.to_delimiter_s %&gt;&lt;/div&gt;
+  &lt;/div&gt;
+  &lt;div id=&quot;bar&quot;&gt;
+    &lt;% if @progress.size &gt; 0 %&gt;
+      &lt;% total_progress = 0 %&gt;
+      &lt;% for progress in @progress do %&gt;
+        &lt;% left = ((progress.xoffset.to_i * 10) / @realm).to_i %&gt;
+        &lt;% width = ((progress.response.to_i * 10) / @realm).to_i %&gt;
+        &lt;%= image_tag 'progress.gif', :style =&gt; &quot;padding-left: #{left - total_progress}px; height: 27px; width: #{width}px; margin-left:40px;&quot; %&gt;
+        &lt;% total_progress += (left + width) %&gt;
+        
+      &lt;% end %&gt;
+    &lt;% end %&gt;
+  &lt;/div&gt;
+  
+&lt;br&gt;
 &lt;h1&gt;Statistics&lt;/h1&gt;
 
 &lt;% if @attacks.size &gt; 0 %&gt;
@@ -20,7 +39,7 @@
     &lt;div id=&quot;&lt;%= attack.id %&gt;&quot; style=&quot;clear:both;&quot;&gt;
       &lt;div class=&quot;attack id&quot;&gt;&lt;%= attack.id %&gt;&lt;/div&gt;
       &lt;div class=&quot;attack position&quot;&gt;&lt;%= attack.position %&gt;&lt;/div&gt;
-      &lt;div class=&quot;attack offset&quot;&gt;&lt;%= attack.offset %&gt;&lt;/div&gt;
+      &lt;div class=&quot;attack offset&quot;&gt;&lt;%= attack.xoffset %&gt;&lt;/div&gt;
       &lt;div class=&quot;attack chunk&quot;&gt;&lt;tt&gt;&lt;%= attack.chunk %&gt;&lt;/tt&gt;&lt;/div&gt;
       &lt;div class=&quot;attack client&quot;&gt;&lt;%= attack.client %&gt;&lt;/div&gt;
       &lt;div class=&quot;attack created_at&quot;&gt;&lt;%= attack.created_at.to_s(:db) %&gt;&lt;/div&gt;
@@ -37,4 +56,4 @@
 &lt;/div&gt;
 
 &lt;%#= javascript_tag update_page { |page| page[&quot;statistics&quot;].visual_effect(:highlight) } %&gt;
-&lt;%= javascript_tag update_page { |page| page.delay(5) { page.reload } } %&gt;
\ No newline at end of file
+&lt;%= javascript_tag update_page { |page| page.delay(10) { page.reload } } %&gt;
\ No newline at end of file</diff>
      <filename>app/views/bruteforce/statistics.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -12,7 +12,7 @@
 &lt;body style=&quot;margin:0;&quot;&gt;
 
   &lt;div id=&quot;busy&quot; style=&quot;display:none;&quot;&gt;&lt;%= image_tag 'loading.gif'%&gt;&lt;/div&gt;
-  &lt;div style=&quot;float:right; margin:30px;&quot;&gt;&lt;%= link_to 'Settings panel &amp;raquo;', :action =&gt; 'settings' %&gt;&lt;/div&gt;
+  &lt;div class=&quot;cornerlink&quot;&gt;&lt;%= link_to 'Settings panel &amp;raquo;', :action =&gt; 'settings' %&gt;&lt;/div&gt;
 
   &lt;%= yield %&gt;
   </diff>
      <filename>app/views/layouts/status.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -11,7 +11,7 @@ config.whiny_nils = true
 # Show full error reports and disable caching
 config.action_controller.consider_all_requests_local = true
 config.action_view.debug_rjs                         = false
-config.action_controller.perform_caching             = true
+config.action_controller.perform_caching             = false
 
 # Don't care if the mailer can't send
 config.action_mailer.raise_delivery_errors = false
\ No newline at end of file</diff>
      <filename>config/environments/development.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
 --- !ruby/object:Settings 
-assumed: 100000
+assumed: 30000
 character_space: alpha
 characters: 
 - a
@@ -56,5 +56,5 @@ characters:
 - Z
 max: 3
 mix: 0
-mode: demo
-secret: sha
+mode: normal
+secret: baa</diff>
      <filename>config/settings.yml</filename>
    </modified>
    <modified>
      <diff>@@ -2,7 +2,7 @@ class CreateAttacks &lt; ActiveRecord::Migration
   def self.up
     create_table :attacks do |t|
       t.string :chunk
-      t.integer :offset
+      t.integer :xoffset
       t.integer :position
       t.integer :response
       t.string :client</diff>
      <filename>db/migrate/20091107012743_create_attacks.rb</filename>
    </modified>
    <modified>
      <diff>@@ -13,7 +13,7 @@ ActiveRecord::Schema.define(:version =&gt; 20091107012743) do
 
   create_table &quot;attacks&quot;, :force =&gt; true do |t|
     t.string   &quot;chunk&quot;
-    t.integer  &quot;offset&quot;
+    t.integer  &quot;xoffset&quot;
     t.integer  &quot;position&quot;
     t.integer  &quot;response&quot;
     t.string   &quot;client&quot;</diff>
      <filename>db/schema.rb</filename>
    </modified>
    <modified>
      <diff>@@ -55,7 +55,7 @@ function shacker() {
 // Updating the &lt;div id=&quot;status&quot;&gt;&lt;/div&gt;
 function status() {
   if (!$('status')) return;
-  $('status').update(&quot;: &quot; + counter + &quot; &quot; + (counter / realm) + &quot;% &quot; + first_chunk + &quot;-&quot; + chunk);
+  $('status').update(&quot;: &quot; + counter + &quot; &quot; + ((counter / realm) * 100).toPrecision(8) + &quot;% &quot; + init_chunk + &quot;-&quot; + chunk);
 }
 
 // Send interval report</diff>
      <filename>public/javascripts/algorithm.js</filename>
    </modified>
    <modified>
      <diff>@@ -26,11 +26,15 @@ div#busy { float:right; }
 
 /* Admin */
 
+div.cornerlink { float:right; padding: 10px 20px 0 0px; }
+div#barlabel { height: 15px; width:1000px; margin:0; }
+div#bar { clear:both; width:1000px; height:27px; border: 1px solid #ccc; padding:0; margin:;}
+
 input#reset_settings { color: red; }
-div#statistics { padding: 30px; }
-div.tcol {font-weight: bold;}
-div.attacks { width: 900px; background-color: yellow;}
-div.attack { float:left }
+div#statistics { padding-top: 0; padding-left: 30px; margin:0; }
+div.tcol       { font-weight: bold; }
+div.attacks    { width: 900px; background-color: yellow;}
+div.attack     { float:left }
 div.id         { width: 34px; }
 div.position   { width: 34px; }
 div.offset     { width: 80px; }</diff>
      <filename>public/stylesheets/application.css</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>public/javascripts/shacker.js</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>ea6379d250508f122b2c2e0c38e6b94b5eb75877</id>
    </parent>
  </parents>
  <author>
    <name>Commander Keen</name>
    <email>nom@ximus.de</email>
  </author>
  <url>http://github.com/funkensturm/shacker/commit/32ce307c65ce36eeac433e178faa0b71af8f910e</url>
  <id>32ce307c65ce36eeac433e178faa0b71af8f910e</id>
  <committed-date>2009-11-10T15:26:30-08:00</committed-date>
  <authored-date>2009-11-10T15:26:30-08:00</authored-date>
  <message>quick deploy</message>
  <tree>92291820db64571d8b28994b5f7aaab474d7cd1f</tree>
  <committer>
    <name>Commander Keen</name>
    <email>nom@ximus.de</email>
  </committer>
</commit>
