Skip to content

Instantly share code, notes, and snippets.

@eugeneai
Created June 13, 2017 13:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eugeneai/abb2165f5ed126f9f5bd1dfb18d621f3 to your computer and use it in GitHub Desktop.
Save eugeneai/abb2165f5ed126f9f5bd1dfb18d621f3 to your computer and use it in GitHub Desktop.
Julia made flow cyther
using Gtk
builder = Gtk.GtkBuilder(filename="./encoder.glade")
encoder = GAccessor.object(builder, "encoder")
quit = GAccessor.object(builder, "quit")
encode = GAccessor.object(builder, "encode")
decode = GAccessor.object(builder, "decode")
text = GAccessor.object(builder, "textbuffer")
cyphertext = GAccessor.object(builder, "cyphertextbuffer")
pass = GAccessor.object(builder, "password")
showall(encoder)
# http://stackoverflow.com/a/33571506/1500988
signal_connect(encoder, :destroy) do widget
Gtk.gtk_quit()
end
signal_connect(encoder, :close) do widget
Gtk.gtk_quit()
end
signal_connect(quit, :clicked) do widget
println("Quitting!!!!")
Gtk.gtk_quit()
end
function password()
getproperty(pass, :text, String)
end
encname = "Linear"
function ui_encode(widget)
value = getproperty(text, :text, String)
evalue = encoders[encname](value, password())
setproperty!(cyphertext, :text, evalue)
evalue
end
function ui_decode(widget)
value = getproperty(cyphertext, :text, String)
evalue = encoders[encname](value, password())
setproperty!(text, :text, evalue)
evalue
end
signal_connect(ui_encode, encode, :clicked)
signal_connect(ui_decode, decode, :clicked)
function bin(i::String)
fill(1,64)
end
function None(input, password)
input
end
function lshift!(a, val)
rc = shift!(a)
push!(a,val)
rc
end
function rshift!(a, val)
unshift!(a, val)
splice!(a, length(a))
end
function gen(f)
v = 0
for i in 1:8
v = v << 1
v = v | f()
end
v
end
function Linear(input, password)
r = bin(password)
function step()
l = r[11] $ r[13] $ r[14] $ r[16]
rshift!(r, l)
end
o = ""
for c in input
d = Int(c)
k = gen(step)
d = d $ k
o = o * string(Char(d))
end
o
end
A5 = None
encoders = Dict("A5" => A5, "Linear" => Linear, "None" => None)
Gtk.gtk_main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment