Jump to content

Encoding/decoding


Orange

Recommended Posts

Posted (edited)

There are few implentations of encodings into MTA:

Base64 Encoding

function base64_enc(data)
   return ((data:gsub('.', function(x) 
       local r,b='',x:byte()
       for i=8,1,-1 do r=r..(b%2^i-b%2^(i-1)>0 and '1' or '0') end
       return r;
   end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x)
       if (#x < 6) then return '' end
       local c=0
       for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end
       return b:sub(c+1,c+1)
   end)..({ '', '==', '=' })[#data%3+1])
end

USAGE: base64_enc('string') encodes 'string'

Base64 Decoding

function base64_dec(data)
   data = string.gsub(data, '[^'..b..'=]', '')
   return (data:gsub('.', function(x)
       if (x == '=') then return '' end
       local r,f='',(b:find(x)-1)
       for i=6,1,-1 do r=r..(f%2^i-f%2^(i-1)>0 and '1' or '0') end
       return r;
   end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x)
       if (#x ~=  then return '' end
       local c=0
       for i=1,8 do c=c+(x:sub(i,i)=='1' and 2^(8-i) or 0) end
       return string.char(c)
   end))
end

USAGE: base64_dec('KDFHSKJ87987KJSHAKJD9') decodes 'KDFHSKJ87987KJSHAKJD9'

Edited by Guest

http://zduniak.net - don't contact me regarding mta:sa

Posted (edited)

There are few implentations of encodings into MTA:

Base64 Encoding

function base64_enc(data)    return ((data:gsub('.', function(x)         local r,b='',x:byte()        for i=8,1,-1 do r=r..(b%2^i-b%2^(i-1)>0 and '1' or '0') end        return r;    end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x)        if (#x < 6) then return '' end        local c=0        for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end        return b:sub(c+1,c+1)    end)..({ '', '==', '=' })[#data%3+1])end

USAGE: base64_enc('string') encodes 'string'

Base64 Decoding

function base64_dec(data)    data = string.gsub(data, '[^'..b..'=]', '')    return (data:gsub('.', function(x)        if (x == '=') then return '' end        local r,f='',(b:find(x)-1)        for i=6,1,-1 do r=r..(f%2^i-f%2^(i-1)>0 and '1' or '0') end        return r;    end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x)        if (#x ~=  then return '' end        local c=0        for i=1,8 do c=c+(x:sub(i,i)=='1' and 2^(8-i) or 0) end        return string.char(c)    end))end

USAGE: base64_dec('KDFHSKJ87987KJSHAKJD9') decodes 'KDFHSKJ87987KJSHAKJD9'

Edited by Guest

http://zduniak.net - don't contact me regarding mta:sa

Posted

Base 64 clearly isn't encryption. It's encoding, don't expect this to fool any but the most amateur hacker. Base 64 encoded text also tends to be fairly distinctive, if nothing else than it's tendency to have = or == at the end.

Posted

Base 64 clearly isn't encryption. It's encoding, don't expect this to fool any but the most amateur hacker. Base 64 encoded text also tends to be fairly distinctive, if nothing else than it's tendency to have = or == at the end.

Posted

eAi is right, as encryption this isn't of much use. In cryptography, base64 is commonly used to "stringify" byte arrays that have been ran through some other form of crypto algorithm, not by itself. Also, as eAi said, it is pretty easy to identify and decode.

Do NOT PM ME for help unless invited. - New MTA Script Editor

Scripting help "etiquette": understandable language, relevant code (ALL code if unsure), [Lua] tags, error messages with line numbers. Super simple stuff.

Posted

eAi is right, as encryption this isn't of much use. In cryptography, base64 is commonly used to "stringify" byte arrays that have been ran through some other form of crypto algorithm, not by itself. Also, as eAi said, it is pretty easy to identify and decode.

Do NOT PM ME for help unless invited. - New MTA Script Editor

Scripting help "etiquette": understandable language, relevant code (ALL code if unsure), [Lua] tags, error messages with line numbers. Super simple stuff.

Posted

You called it GUIDE and there's something wrong with it?? That just doesn't make any sense... :P

Do NOT PM ME for help unless invited. - New MTA Script Editor

Scripting help "etiquette": understandable language, relevant code (ALL code if unsure), [Lua] tags, error messages with line numbers. Super simple stuff.

Posted

You called it GUIDE and there's something wrong with it?? That just doesn't make any sense... :P

Do NOT PM ME for help unless invited. - New MTA Script Editor

Scripting help "etiquette": understandable language, relevant code (ALL code if unsure), [Lua] tags, error messages with line numbers. Super simple stuff.

Posted

I'm crazy today :P Ofc, it's not guide.

Found a new one:

-- encryption table
local base64chars = {[0]='A',[1]='B',[2]='C',[3]='D',[4]='E',[5]='F',[6]='G',[7]='H',[8]='I',[9]='J',[10]='K',[11]='L',[12]='M',[13]='N',[14]='O',[15]='P',[16]='Q',[17]='R',[18]='S',[19]='T',[20]='U',[21]='V',[22]='W',[23]='X',[24]='Y',[25]='Z',[26]='a',[27]='b',[28]='c',[29]='d',[30]='e',[31]='f',[32]='g',[33]='h',[34]='i',[35]='j',[36]='k',[37]='l',[38]='m',[39]='n',[40]='o',[41]='p',[42]='q',[43]='r',[44]='s',[45]='t',[46]='u',[47]='v',[48]='w',[49]='x',[50]='y',[51]='z',[52]='0',[53]='1',[54]='2',[55]='3',[56]='4',[57]='5',[58]='6',[59]='7',[60]='8',[61]='9',[62]='-',[63]='_'}
 
-- function encode
-- encodes input string to base64.
function enc(data)
local bytes = {}
local result = ""
for spos=0,string.len(data)-1,3 do
	for byte=1,3 do bytes[byte] = string.byte(string.sub(data,(spos+byte))) or 0 end
	result = string.format('%s%s%s%s%s',result,base64chars[rsh(bytes[1],2)],base64chars[lor(lsh((bytes[1] % 4),4), rsh(bytes[2],4))] or "=",((#data-spos) > 1) and base64chars[lor(lsh(bytes[2] % 16,2), rsh(bytes[3],6))] or "=",((#data-spos) > 2) and base64chars[(bytes[3] % 64)] or "=")
end
return result
end
 
-- decryption table
local base64bytes = {['A']=0,['B']=1,['C']=2,['D']=3,['E']=4,['F']=5,['G']=6,['H']=7,['I']=8,['J']=9,['K']=10,['L']=11,['M']=12,['N']=13,['O']=14,['P']=15,['Q']=16,['R']=17,['S']=18,['T']=19,['U']=20,['V']=21,['W']=22,['X']=23,['Y']=24,['Z']=25,['a']=26,['b']=27,['c']=28,['d']=29,['e']=30,['f']=31,['g']=32,['h']=33,['i']=34,['j']=35,['k']=36,['l']=37,['m']=38,['n']=39,['o']=40,['p']=41,['q']=42,['r']=43,['s']=44,['t']=45,['u']=46,['v']=47,['w']=48,['x']=49,['y']=50,['z']=51,['0']=52,['1']=53,['2']=54,['3']=55,['4']=56,['5']=57,['6']=58,['7']=59,['8']=60,['9']=61,['-']=62,['_']=63,['=']=nil}
 
-- function decode
-- decode base64 input to string
function dec(data)
local chars = {}
local result=""
for dpos=0,string.len(data)-1,4 do
	for char=1,4 do chars[char] = base64bytes[(string.sub(data,(dpos+char),(dpos+char)) or "=")] end
	result = string.format('%s%s%s%s',result,string.char(lor(lsh(chars[1],2), rsh(chars[2],4))),(chars[3] ~= nil) and string.char(lor(lsh(chars[2],4), rsh(chars[3],2))) or "",(chars[4] ~= nil) and string.char(lor(lsh(chars[3],6) % 192, (chars[4]))) or "")
end
return result
end

http://zduniak.net - don't contact me regarding mta:sa

Posted

I'm crazy today :P Ofc, it's not guide.

Found a new one:

-- encryption tablelocal base64chars = {[0]='A',[1]='B',[2]='C',[3]='D',[4]='E',[5]='F',[6]='G',[7]='H',[8]='I',[9]='J',[10]='K',[11]='L',[12]='M',[13]='N',[14]='O',[15]='P',[16]='Q',[17]='R',[18]='S',[19]='T',[20]='U',[21]='V',[22]='W',[23]='X',[24]='Y',[25]='Z',[26]='a',[27]='b',[28]='c',[29]='d',[30]='e',[31]='f',[32]='g',[33]='h',[34]='i',[35]='j',[36]='k',[37]='l',[38]='m',[39]='n',[40]='o',[41]='p',[42]='q',[43]='r',[44]='s',[45]='t',[46]='u',[47]='v',[48]='w',[49]='x',[50]='y',[51]='z',[52]='0',[53]='1',[54]='2',[55]='3',[56]='4',[57]='5',[58]='6',[59]='7',[60]='8',[61]='9',[62]='-',[63]='_'} -- function encode-- encodes input string to base64.function enc(data)	local bytes = {}	local result = ""	for spos=0,string.len(data)-1,3 do		for byte=1,3 do bytes[byte] = string.byte(string.sub(data,(spos+byte))) or 0 end		result = string.format('%s%s%s%s%s',result,base64chars[rsh(bytes[1],2)],base64chars[lor(lsh((bytes[1] % 4),4), rsh(bytes[2],4))] or "=",((#data-spos) > 1) and base64chars[lor(lsh(bytes[2] % 16,2), rsh(bytes[3],6))] or "=",((#data-spos) > 2) and base64chars[(bytes[3] % 64)] or "=")	end	return resultend -- decryption tablelocal base64bytes = {['A']=0,['B']=1,['C']=2,['D']=3,['E']=4,['F']=5,['G']=6,['H']=7,['I']=8,['J']=9,['K']=10,['L']=11,['M']=12,['N']=13,['O']=14,['P']=15,['Q']=16,['R']=17,['S']=18,['T']=19,['U']=20,['V']=21,['W']=22,['X']=23,['Y']=24,['Z']=25,['a']=26,['b']=27,['c']=28,['d']=29,['e']=30,['f']=31,['g']=32,['h']=33,['i']=34,['j']=35,['k']=36,['l']=37,['m']=38,['n']=39,['o']=40,['p']=41,['q']=42,['r']=43,['s']=44,['t']=45,['u']=46,['v']=47,['w']=48,['x']=49,['y']=50,['z']=51,['0']=52,['1']=53,['2']=54,['3']=55,['4']=56,['5']=57,['6']=58,['7']=59,['8']=60,['9']=61,['-']=62,['_']=63,['=']=nil} -- function decode-- decode base64 input to stringfunction dec(data)	local chars = {}	local result=""	for dpos=0,string.len(data)-1,4 do		for char=1,4 do chars[char] = base64bytes[(string.sub(data,(dpos+char),(dpos+char)) or "=")] end		result = string.format('%s%s%s%s',result,string.char(lor(lsh(chars[1],2), rsh(chars[2],4))),(chars[3] ~= nil) and string.char(lor(lsh(chars[2],4), rsh(chars[3],2))) or "",(chars[4] ~= nil) and string.char(lor(lsh(chars[3],6) % 192, (chars[4]))) or "")	end	return resultend

http://zduniak.net - don't contact me regarding mta:sa

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...