SHOW:
|
|
- or go back to the newest paste.
1 | - | -- By tom2018 5/10/2013 |
1 | + | -- By tom2018 5/10/2013 last updated 5/11/2013 |
2 | -- feel free to modify any part of this program | |
3 | -- just please send me a PM on the forums! | |
4 | ||
5 | --encryption found when searching around, author unknown msg me on forums if you own this code and would | |
6 | --like me to remove it or give you credits | |
7 | ||
8 | function enc(str, key) -- Function | |
9 | local tProp = {} -- Make table | |
10 | for i = 1, str:len() do -- loop for str length | |
11 | - | gfb = true -- return current file size |
11 | + | local val = tonumber((str:byte(i) * tonumber(key) + (12.6 * key)) / 2.8)--Byte str times keyadd 12.6 times key and divide 2.8 |
12 | table.insert(tProp, val) -- rest is to return the data | |
13 | end | |
14 | return tostring(table.concat(tProp,"|")) | |
15 | end | |
16 | ||
17 | function dec(str, key) | |
18 | - | print("tomsfiletranfer 0.1 |") |
18 | + | local data = {} |
19 | for word in string.gmatch(str, "[^|]+") do | |
20 | local rdata = ((tonumber(word)*2.8)-(12.6*key))/key | |
21 | table.insert(data, math.floor(rdata+0.5)) | |
22 | end | |
23 | return string.char(unpack(data)) | |
24 | end | |
25 | ||
26 | ||
27 | --config | |
28 | ||
29 | side = "top" --modem | |
30 | rand = false --more secure not yet implemented | |
31 | btlp = false --not yet implement | |
32 | stpmsg = "end" --msg that indicates end of file | |
33 | shtdown = false -- if true will shutdown at end of file transfer | |
34 | gfb = true -- return current file size and other usefull data | |
35 | pmsg = "ping" --default ping msg | |
36 | dc = false --basic encryption method (eta will be wrong) | |
37 | vsn = 1.4 -- version | |
38 | cp = true -- keep pinging if failed connection | |
39 | ||
40 | --code | |
41 | rednet.open(side) | |
42 | term.clear() | |
43 | term.setCursorPos(1,1) | |
44 | print("tomsfiletranfer "..vsn.." |") | |
45 | print("by tom2018 |") | |
46 | print("---------------------#") | |
47 | print('Type help for command list') | |
48 | ||
49 | while true do | |
50 | - | rednet.send(cid,"sup") |
50 | + | |
51 | write("action> ") | |
52 | p = read() | |
53 | ||
54 | if p == "help" then | |
55 | - | print("no connection established") |
55 | + | |
56 | exit -leave program | |
57 | id -computer id | |
58 | files -send file | |
59 | filer -receive file]] | |
60 | ct = true | |
61 | end | |
62 | ||
63 | if p == "id" then | |
64 | print(os.getComputerID()) | |
65 | ct = true | |
66 | end | |
67 | ||
68 | if p == "filer" then | |
69 | write("ID> ") | |
70 | cid = read() | |
71 | stop = false | |
72 | cid = cid + 0 | |
73 | write("save as: ") | |
74 | nami = read() | |
75 | h = fs.open(nami,"w") | |
76 | write("ping msg> ") | |
77 | rednet.send(cid,read()) | |
78 | ||
79 | while stop == false do | |
80 | icid, pack = rednet.receive(2) | |
81 | if cp == false then | |
82 | if icid == nil then | |
83 | print("no connection established!") | |
84 | sleep(1.5) | |
85 | os.reboot() | |
86 | end | |
87 | else | |
88 | if icid == nil then | |
89 | print("no connection established.") | |
90 | sleep(1.5) | |
91 | end | |
92 | end | |
93 | if icid == cid then | |
94 | print("Received "..pack.." Saving to file") | |
95 | ||
96 | if pack ~= stpmsg then | |
97 | h.write(pack) | |
98 | if gfb == true then | |
99 | print(fs.getSize(nami)) | |
100 | end | |
101 | else | |
102 | print("file complete!") | |
103 | if dc == true then | |
104 | write("key> ") | |
105 | keys = read() | |
106 | h.close() | |
107 | h = fs.open(nami,'r') | |
108 | nonen = h.readAll() | |
109 | h.close() | |
110 | h = fs.open(nami,'w') | |
111 | h.write(dec(nonen,keys)) | |
112 | end | |
113 | if dc == false then | |
114 | h.close() | |
115 | end | |
116 | stop = true | |
117 | if shtdown == true then | |
118 | os.shutdown() | |
119 | else | |
120 | os.reboot() | |
121 | end | |
122 | end | |
123 | ||
124 | elseif icid ~= nil then | |
125 | print("Blocked Conection from ID: "..icid) | |
126 | end | |
127 | sleep(0) | |
128 | end | |
129 | ||
130 | ct = true | |
131 | end | |
132 | ||
133 | if p == "files" then | |
134 | write("file> ") | |
135 | nami = read() | |
136 | if dc == true then | |
137 | write("key> ") | |
138 | keys = read() | |
139 | end | |
140 | h = fs.open(nami,"r") | |
141 | if dc == false then | |
142 | wpack = h.readAll() | |
143 | else | |
144 | wpack = enc(h.readAll(), keys) | |
145 | end | |
146 | wpackt = {} | |
147 | ||
148 | print("Dividing into Packets may take a while!") | |
149 | for char in string.gmatch(wpack, ".") do | |
150 | table.insert(wpackt, char) | |
151 | sleep(0) | |
152 | end | |
153 | ||
154 | if gfb == true then | |
155 | print("hosting on "..os.getComputerID()) | |
156 | eta = #wpackt * .01 | |
157 | print("Estimated transfer time in seconds") | |
158 | print(eta) | |
159 | end | |
160 | ||
161 | while true do | |
162 | ||
163 | cid, auth = rednet.receive() | |
164 | stop = false | |
165 | c = 1 | |
166 | wpn = #wpackt + 1 | |
167 | if auth == "sup" then | |
168 | print("Seeding ID:"..cid) | |
169 | while c < wpn do | |
170 | rednet.send(cid, wpackt[c]) | |
171 | c = c + 1 | |
172 | sleep(0.01) | |
173 | end | |
174 | rednet.send(cid, stpmsg) | |
175 | print("Seed Complete!") | |
176 | ||
177 | elseif auth == pmsg then | |
178 | rednet.send(cid,nami) | |
179 | end | |
180 | sleep(0) | |
181 | end | |
182 | ||
183 | ct = true | |
184 | end | |
185 | ||
186 | if p == "exit" then | |
187 | print("Thankyou for using Tomsfiletransfer.") | |
188 | sleep(1.5) | |
189 | os.reboot() | |
190 | ct = true | |
191 | end | |
192 | ||
193 | if ct == false then | |
194 | print("Cmd not recongnized.") | |
195 | end | |
196 | sleep(0) | |
197 | end |