├── Canape └── canape_1.4.zip ├── Misc ├── fuzzingscript.py └── xor-encryption.py ├── README.md ├── SuperFunkyChat └── SuperFunkyChat.zip ├── bsides2018-canape.pdf └── canape_projects ├── 0002_capturing_traffic.canape ├── 0003_basic_parser.canape ├── 0004_improved_parser.canape ├── 0004_improved_parser.canape.backup ├── 0005_decrypting_tls_traffic.canape ├── 0006_state_modelling.canape ├── 0007_traffic_manipulation.canape ├── 0008_network_clients.canape └── 0009_fuzzing_client.canape /Canape/canape_1.4.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mogwailabs/canape-workshop2018/d11d31874e5d027560c8d51b0d7e18ffea47004f/Canape/canape_1.4.zip -------------------------------------------------------------------------------- /Misc/fuzzingscript.py: -------------------------------------------------------------------------------- 1 | # This pulls in the canape library namespaces 2 | import CANAPE.Nodes 3 | import CANAPE.DataFrames 4 | 5 | # Simple pipeline node 6 | class PipelineNode(CANAPE.Nodes.BaseDynamicPipelineNode): 7 | 8 | # Called when a new frame has arrived 9 | def OnInput(self, frame): 10 | cmd = self.Graph.IncrementGlobalCounter("CurrentCommand", 1) 11 | 12 | self.LogInfo("Current Command {0}", cmd) 13 | 14 | # XPATH Method 15 | #cmdval = frame.SelectSingleNode("/Command") 16 | #cmdval.Value = cmd 17 | 18 | # Dynamic Method 19 | frame.DynamicRoot.Command.Value = cmd 20 | 21 | self.WriteOutput(frame) -------------------------------------------------------------------------------- /Misc/xor-encryption.py: -------------------------------------------------------------------------------- 1 | # This pulls in the canape library namespaces 2 | import CANAPE.Nodes 3 | import CANAPE.DataFrames 4 | import CANAPE.Net.Layers; 5 | 6 | def XorFrame(frame, xorValue): 7 | data = frame.ToArray() 8 | for i in range(len(data)): 9 | data[i] = data[i] ^ xorValue 10 | 11 | return CANAPE.DataFrames.DataFrame(data) 12 | 13 | # Simple example script to implement a layer which xor's bytes with a known value 14 | class XorNetworkLayer(CANAPE.Net.Layers.DynamicNetworkLayer): 15 | 16 | def GetXor(self): 17 | xorkey = self.Meta.GetMeta('XORKey') 18 | self.Logger.LogInfo("XORKEY: {0}", xorkey) 19 | return xorkey 20 | 21 | # This function is a generator, yield each frame you want 22 | def ReadClientFrames(self, client): 23 | self.Logger.LogInfo("Starting to read client frames") 24 | frame = client.Read() 25 | while frame is not None: 26 | yield XorFrame(frame, self.GetXor()) 27 | frame = client.Read() 28 | 29 | # This function is a generator, yield each frame you want 30 | def ReadServerFrames(self, server): 31 | self.Logger.LogInfo("Starting to read server frames") 32 | frame = server.Read() 33 | while frame is not None: 34 | yield XorFrame(frame, self.GetXor()) 35 | frame = server.Read() 36 | 37 | def WriteClientFrame(self, client, frame): 38 | client.Write(XorFrame(frame, self.GetXor())) 39 | 40 | def WriteServerFrame(self, server, frame): 41 | server.Write(XorFrame(frame, self.GetXor())) -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # canape-workshop2018 2 | 3 | Slides/material from our CANAPE workshop at BSides Munich/Lisbon 2018. Based on the 44con workshop from 2014 (by James Forshaw) 4 | 5 | Note: We removed the CANAPE help files from the ZIP file cause they caused problems during unpacking. 6 | -------------------------------------------------------------------------------- /SuperFunkyChat/SuperFunkyChat.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mogwailabs/canape-workshop2018/d11d31874e5d027560c8d51b0d7e18ffea47004f/SuperFunkyChat/SuperFunkyChat.zip -------------------------------------------------------------------------------- /bsides2018-canape.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mogwailabs/canape-workshop2018/d11d31874e5d027560c8d51b0d7e18ffea47004f/bsides2018-canape.pdf -------------------------------------------------------------------------------- /canape_projects/0002_capturing_traffic.canape: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mogwailabs/canape-workshop2018/d11d31874e5d027560c8d51b0d7e18ffea47004f/canape_projects/0002_capturing_traffic.canape -------------------------------------------------------------------------------- /canape_projects/0003_basic_parser.canape: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mogwailabs/canape-workshop2018/d11d31874e5d027560c8d51b0d7e18ffea47004f/canape_projects/0003_basic_parser.canape -------------------------------------------------------------------------------- /canape_projects/0004_improved_parser.canape: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mogwailabs/canape-workshop2018/d11d31874e5d027560c8d51b0d7e18ffea47004f/canape_projects/0004_improved_parser.canape -------------------------------------------------------------------------------- /canape_projects/0004_improved_parser.canape.backup: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mogwailabs/canape-workshop2018/d11d31874e5d027560c8d51b0d7e18ffea47004f/canape_projects/0004_improved_parser.canape.backup -------------------------------------------------------------------------------- /canape_projects/0005_decrypting_tls_traffic.canape: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mogwailabs/canape-workshop2018/d11d31874e5d027560c8d51b0d7e18ffea47004f/canape_projects/0005_decrypting_tls_traffic.canape -------------------------------------------------------------------------------- /canape_projects/0006_state_modelling.canape: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mogwailabs/canape-workshop2018/d11d31874e5d027560c8d51b0d7e18ffea47004f/canape_projects/0006_state_modelling.canape -------------------------------------------------------------------------------- /canape_projects/0007_traffic_manipulation.canape: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mogwailabs/canape-workshop2018/d11d31874e5d027560c8d51b0d7e18ffea47004f/canape_projects/0007_traffic_manipulation.canape -------------------------------------------------------------------------------- /canape_projects/0008_network_clients.canape: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mogwailabs/canape-workshop2018/d11d31874e5d027560c8d51b0d7e18ffea47004f/canape_projects/0008_network_clients.canape -------------------------------------------------------------------------------- /canape_projects/0009_fuzzing_client.canape: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mogwailabs/canape-workshop2018/d11d31874e5d027560c8d51b0d7e18ffea47004f/canape_projects/0009_fuzzing_client.canape --------------------------------------------------------------------------------