Saturday, February 22, 2014
The Bane Javascript Cracker
Uses Javascript to "randomly" test passwords to find the corresponding password and username. Can be run directly from a web browser.
Tuesday, February 18, 2014
Histogram based Motion Detection
Motion tracking is a useful tool. This post demonstrates motion tracking in Processing and shows it in use.
3 Main Programs will constitute the project:
Finally a program to compare histograms and tell the user whether movement is detected:
3 Main Programs will constitute the project:
- A program to capture images and store them just as in the post on Creating a High Magnitude FPS Camera using webcams
- A program to generate histograms. These histograms use the highest brightness value in a column of pixels within the image.
- A program to compare histograms of an image and the image that precedes or follows it. This program will also have a method of telling the user that movement has been detected.
import processing.video.*; float a=0; Capture dacam; void setup() { size (320,240); dacam= new Capture(this, 320, 240, 30); dacam.start(); } void draw(){ if(dacam.available()) { dacam.read(); } a=a+1; image(dacam, 0, 0); save(a+".png"); }Then a program to load these images and generate a histogram.The histogram is useful because it does not require sampling of all pixels and then using a cross referencing algorithm. For our histogram the line # of the text file will be the x cooardinate and the value stored in that line will be the value contained in the line:
size(640, 360); PImage img = loadImage("9.0.png"); image(img, 0, 0); int[] hist = new int[256]; for (int t = 0; t < img.width; t++) { for (int r = 0; r < img.height; r++) { int bright = int(brightness(get(t, r))); hist[bright]++; } } int histMax = max(hist); stroke(255); for (int t = 0; t < img.width; t += 1) { int which = int(map(t, 0, img.width, 0, 255)); int y = int(map(hist[which], 0, histMax, img.height, 0)); line(t, img.height, t, y); }
Finally a program to compare histograms and tell the user whether movement is detected:
float r=0; void setup() { size(600,50); String one[]=loadStrings("lines.txt"); String two[]=loadStrings("lines2.txt"); println(one.length); println(two.length); for( int t=0;r<one.length;r++){ if(one[t] != two[t]) { textSize(50); text("MOVEMENT DETECTED",10,40); } } }
Histogram mapping is excellent for Astronomical event detection. This is an image of the Crab Nebula also known as M1, NGC 1952, or Taurus A.
Display Message when movement is detected
Monday, February 17, 2014
High Magnitude FPS Camera Using a WebCam and Parrallel Processing
High speed cameras are ussually very expensive; right around 7,000 dollars. This home-made method costs only $30.
Before beginning please note that image files will be dumped into the directory of where the processing sketch is, therefore place it in a folder to avoid overloading you're desktop.
import processing.video.*; float a=-2; Capture dacam; void setup() { size (320,240); dacam= new Capture(this, 320, 240, 30); dacam.start(); } void draw(){ if(dacam.available()) { dacam.read(); } a=a+2; image(dacam,0,0);
}
The above code only captures the video and does not store it. For storage the successive images will be stored 0 through X as .png(Portable Network Graphics) files since these available for screen images in processing. The camera library takes a little while for the camera application to load, 2 frames, so changing the code by setting a to -2 will make all blank files negative and easily deleted. Once implemented, the new code reads:
import processing.video.*; float a=-2; Capture dacam; void setup() { size (320,240); dacam= new Capture(this, 320, 240, 30); dacam.start(); } void draw(){ if(dacam.available()) { dacam.read(); } a=a+2; image(dacam,0,0); save(a+".png"); }Now to complete the setup multiple cameras need to be involved, and adding more computers makes this easier. The reason can be explained through a simple experiment. Say there is a camera with an fps of 60. Now there is an identical camera with 60 fps. Combining the two by slightly offsetting their start times allows you to double you're fps. The more cameras, the more fps, Aiming them at the same region and keeping the close together provides higher fps on a specific region and a simple cropping algorithm crops only that region.
The cameras used had capture rates of 30 fps. To offset them take 1000milliseconds/30fps and offset the code by that which arrives at:
import processing.video.*; float a=-2; Capture dacam; void setup() { size (320,240); dacam= new Capture(this, 320, 240, 30); dacam.start(); } void draw(){ if (millis()>(1000/30)) { if(dacam.available()) { dacam.read(); } a=a+2; image(dacam,0,0); save(a+".png"); } }
Now the two peices of code for the two different cameras:
import processing.video.*; float a=-2; Capture dacam; void setup() { size (320,240); dacam= new Capture(this, 320, 240, 30); dacam.start(); } void draw(){ if (millis()>(1/30)) { if(dacam.available()) { dacam.read(); } a=a+2; image(dacam,0,0); save(a+".png"); } }
And:
import processing.video.*;
float a=-2;
Capture dacam;
void setup() {
size (320,240);
dacam= new Capture(this, 320, 240, 30);
dacam.start();
}
void draw(){
if(dacam.available()) {
dacam.read();
}
a=a+3;
image(dacam,0,0);
save(a+".png");
}
This shows the two folders comparatively. Combining them doubles the frame rate. Sort the folder by file name and the images will be in order.
Sunday, February 16, 2014
Boot Lock Screen
A Secure lock screen application:
Code:
Public Class Form1
Private Property alp As Boolean
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.ShowInTaskbar = False
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
Me.TopMost = True
Me.MaximizeBox = True
alp = False
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Button1.BringToFront()
If TextBox1.Text = "pass" Then
My.Computer.Audio.Play("C:\w.wav")
alp = True
End If
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
If alp = False Then
Button2.SendToBack()
End If
If alp = True Then
Button2.BringToFront()
Close()
End If
End Sub
End Class
Tornado Generator
Tornado generator and created Tornado Differential equations to relate speed and other features as shown in frat image of the TDE graph
Convolution Algorithm
The leftmost images are the convoluted images with the rights being the originals.
PImage img; int a, b; void setup() { size(900, 900); img = loadImage("sun.png"); a = 8; b = 30; imageMode(CENTER); noStroke(); background(255); } void draw() { float pixel = map(25, 0, width, a, b); int x = int(random(img.width)); int y = int(random(img.height)); color pix = img.get(x, y); fill(pix, 128); rect(x, y, pixel, pixel); }These two images were creating using the above image convolution algorithm writtenin processing.
Chip Coolant System
A passive CPU cooling system that utilizes evaporative properties of a liquid. Glass allows for excellent heat conductivity to transfer energy into the fluid.
N Gravity Heat Mapper
An N Gravity Simulation that utilizes the heat mapper to show tensor levels on the space-time continuum.
3 D values calculated at each point and stored as a .txt list
A New Series: The Random Pascalian Series
1
10
104
1047
10479
104794
1047941
10479411
104794117
1047941171
10479411718
104794117187
1047941171878
10479411718789
104794117187891
1047941171878915
10479411718789154
....
The Random Pascalian Series, as I have dubbed this, adds a random integer from 0 through 9 to add to the rightmost section of the string. A generic graph:
Of Course this is problematic because during each iteration the number gains a whole new power as in 10x therfore taking the logarithm(base 10) of each succesive iteration creates a linear pattern ( due to the random function this is not truly linear). Here it is:
10
104
1047
10479
104794
1047941
10479411
104794117
1047941171
10479411718
104794117187
1047941171878
10479411718789
104794117187891
1047941171878915
10479411718789154
....
The Random Pascalian Series, as I have dubbed this, adds a random integer from 0 through 9 to add to the rightmost section of the string. A generic graph:
Of Course this is problematic because during each iteration the number gains a whole new power as in 10x therfore taking the logarithm(base 10) of each succesive iteration creates a linear pattern ( due to the random function this is not truly linear). Here it is:
For more information on binary random functions see my post Binary Randoms Aren't.
Lasers and Glass
The light-bulb above is, of course, not plugged in. Iridescence is supplied by the refraction of a laser light within the glass and internal air. A blue laser would have even more refraction, however these are usually not available commercially. Below is a light projection of D.C. using laser carved glass. The light is aimed through this glass(the center) and refraction along the internal cuts and fractures causes higher dispersion which creates the dark projections.
Saturday, February 15, 2014
Timers and Server Login Security
Many sites use timing mechanisms to deter botnets or lone systems from attempting to use brute force to find a correct user name and password combination. This security method is completely ineffective. Even a JavaScript user-pass cracker can be made to wait 1000 milliseconds, in order to be identified as users rather than heuristic attackers. This exploit works especially well on large servers which are designed to accommodate heavy traffic, and therefore often do not separate noise from an attack.
Binary Randoms Aren't
The random number generator output taken over time demonstrates the generic f(x)=sin(x) graph. This implies that the "random" function is time based, and simply uses the current time as the random number. The wave behavior arises from the repetition of counting systems which clear and restart after a given time period. For instance in base 10:
1,2,3,4,5,6,7,8,9,,1,2,3,4,5,6,7,8,9... Would repeat causing a half wave function as shown above.
The Program, written in Visual Studio 2012 shown here in designer is backed by this code:Imports System.Text
Imports System.IO
Public Class Form1
Private Property File As StreamWriter
Sub Main()
Dim t As String = "0123456789"
Dim r As New Random
Dim s As New StringBuilder
For i As Integer = 1 To (1)
Dim idx As Integer = r.Next(0, 10)
s.Append(t.Substring(idx, 1))
Val.Text = s.ToString
File = My.Computer.FileSystem.OpenTextFileWriter("C:/Users/Desktop/9.txt", True)
File.WriteLine(Val.Text)
File.Close()
Next
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Main()
End Sub
End Class
Rather than use times simply holding the enter key constantly collects randgen output.
Pass Cracking with Teensyduino
The Teensyduino can easily be coded with the Arduino IDE to create custom user interface devices. Using a simple dictionary or a random number generator the Teensy can easily be used as a password cracker, or for overloading data systems.
Shown above the script only runs through two different phrases infinitesimally. Data output runs through the micro-usb port. This requires the installation of the Teensy drivers available at the Teensy website.
const byte hello = 2 char* names[hello]= "hi","hello" }; void setup(){ Serial.begin(9600); } void loop(){ keyboard.print(names[random(0,hello)]); }
Sizer App
A simple application to resize any standard graphics type on windows. There are currently no pieces of software for quick resizing such as this.
Air Cannon
Air Cannon firing a custom projectile, 100 psi, full copper held with solder. the mount is aluminum and steel. High pressure caused recondensation when reentering the atmosphere.
Subscribe to:
Posts (Atom)