Undergraduate Computer Science student Ariel University, programmer and tech enthusiast
About Me
My name is Roy Simanovich, and I'm also known as HiyoriX – a 25 years old guy living in Israel. My hobbies include gaming, coding, watching anime and hangout with friends.
I program in the following languages: Pawn (retired), Java, Visual Basic (retired), C# (simple stuff at most), C, C++, SQL, Python and MIPS assembly (very basic stuff).
With this plugin, you can add some suprise boxes whenever a player dies, a suprise box is deployed, and you have by default a 60% chance to get something from it. The plugin is fully customizable and have an API so it can even interact with other plugins.
This plugin is a new gameplay mode for Counter-Strike. All players go to the Terrorists team, 10 seconds after the game starts and 1 or more players get randomly an 'infection' from a mysterious virus. The main goal is to pass the infection to other players before the time runs out and the virus kill the player. The winner is the player that survived the infection.
A small, but very useful plugin for Jailbreak servers. Basically it's a countdown menu for all kind of purposes, like starting a race. It has the abillity to freeze teams and a voice countdown (Selectable between 2 voices - A male and a female).
Yet another Jailbreak plugin, but it serves a core function that every Jailbreak server have: Choosing which player will be a Guard (CT), and limiting the amount of time a Guard can stay in his role before other players replace him. This plugin let any Prisoner (T) become a Guard by a 'First Write' mini-game: A random string of 6 characters (Numbers, upper case and lower case letters is choosen and the first Prisoner that types the string in the chat, wins. This can be triggered manually or automatically if there aren't enought Guards (Ratio).
This project was my final project for Java Course back in 2015. It's basically a student electronic log (like a diary) with a low encryption method and is protected with a password that's stored as MD5 hash. Made with NetBeans.
This is a fairly simple plugin, that was made for HNS, KZ and Bunnyhop servers. In a nutshell, GoldSource (Counter-Strike game engine) have a strange bug that allows players to boost there velocity above 400 units/s with a simple tweek in the FPS settings - any FPS above 100 will make this happen. The plugin forces players to limit their FPS to below 100 by counting every frame of the players and warning them if they are above the limit. If they still don't lower the FPS, an action is taken: Players can be slapped, slayed, kicked or even banned for not obeying the rules. This make sure all players have a legit setting and no one 'cheats'.
In this assignment we learned about Threads and ThreadPool (Part 1). In java, we cannot give a priority to an asynchronous task, java give the programmer the option to give a priority to thread, but not to the task in the thread. That's why we need to make an object which represent asynchronous task with a priority and also a kind of ThreadPool which support in tasks with priority (Part 2).
This is a C program that requests an input of two positive integers and returns all the prime, palindrome, strong and armstrong numbers that are between those two numbers.
This small C programs do some calculations on an undirected graph, which is represented by a square matrix. Neighborhood matrix is a method for representing a directed or undirected graph with N nodes (vertices), using a square matrix whose size is NxN and whose cell values are 0 or a positive number. Cell (i,j) in the graph describes the weight of the arc from vertex i to vertex j in the graph. If there is no such arc, the value in the cell in the matrix will be 0. If there is such an arc, the value will be a positive number and it will represent the weight of the transition from vertex i to vertex j.
This Ex contains two programs: isort and txtfind. isort program gets 50 numbers from the user and outputs a a sorted array using insertion sort.
txtfind program gets a word and an option (a or b) and output accordingly: a – The program reads lines and prints all the lines where the choosen word is a substring of the line. b – The program reads words and prints all the words where the choosen word is similar to the other word (by one extra character or is the exact same word).
In this assignment we implemented usage of a directed and weighted graph. All the nodes of the graph are stored in a linked list and all outcoming edges of each node are stored each one in a seperated linked list. The program supports unlimited number of nodes and is very light on memory. The program depends heavily on dynamic memory allocations and is very strict about it. Failing to provide a valid input will result a segmentation fault. The program supports the following operations: Creating a graph with nodes, inserting new node to the graph and replacing existing node from the graph, deleting a node from the graph, finding the shortest path between two nodes, finding a solution to the Traveling Salesman Problem (TSP) for specific nodes in the graph and printing the graph itself.
In this Ex we wrote two program files: Sender.c and Receiver.c. The Sender will send a file (which is at least 1MB) and the Receiver will receive it and measure the time it took for his program to receive the file. The file will be sent in two parts (first half and second half – Each half should be 50% of the file). Each half will be sent using reno and cubic CC algorithms respectively. The Sender can send the file multiple times, to create a data set of the efficiency of each of the CC algorithms and the efficiency of the pipeline itself. To see how the TCP protocol handles the packet loss with each CC algorithm, we use the packet lost tool that linux have via the iproute package. In this Ex we will use the packet lost tool in the following levels: 0% lost, 10% lost, 15% lost and 20% lost.
In this Ex we wrote a ping program, with two implementations: The first one (ping.c) is a simple ping program that generates a 32 bytes message and sends to a given IP address, waits for a replay and prints information about the received packet. This program can't handle timeouts and will get stuck until it'll get a replay. The second one (better_ping.c) uses a watchdog implementation (watchdog.c) to handle the timeouts. The ping program first connects via TCP port 3000 to the watchdog and for every received packet, the program sends an OK signal to the watchdog program, which resets it's timer. Once the watchdog timer reaches 10 seconds mark, it will detect it as a timeout and send a signal to the ping program to print a message to the user and terminate itself.
In this assignment we wrote 4 different programs: Sniffer – This program gets a command line argument to which network interface card attach to and sniff all incoming and outcoming TCP packets. This program designed to sniff TCP packets from Ex2. Spoofer – This program gets a command line argument to which protocol the program will spoof packets and then will continuously spoof packets. Snooper – The snooper program monitors the network, sniffs ICMP ECHO packets and spoofs fake ICMP ECHO REPLAY responses to the sending machine. Gateway – The gateway program listens to specific UDP port and for every packet sent to it, it will decide with 50% chance what to do with it: send it forward to specific IP address (defined by the user) or to drop the packet.
In the final project of this course, we built 3 types of applications, each one implements different protocol from the transport layer and each one of itself is a different protocol in the application layer. We’ve built a DHCP client and server, which work with UDP, a DNS client and DNS server resolver via UDP and TCP, and a SQL client and server via TCP and our own Reliable UDP (RUDP) protocol that we’ve built.
This assignment is made of 3 parts: Files Operations, Dynamic Libraries and Basic Shell. The assignment as a whole was built in C and is intended to run in Linux environment.
The tools we implemented: Compare (cmp) – The tool compare two files, and return "0" if they are equal, or "1" if not (or in case of an error). The tool supports -v flag for verbose output. By this we mean that the tool will print "equal" or "distinct", in addition to returning the int value. The tool also supports -i flag, that mean "ignore case" so "AAA" and "aaa" meaning equals.
Copy (copy) – The tool copy a file to another place and/or name, and return "0" on success, or "1" on failure. The tool creates a new file, if it does not exist, but it will not overwrite a file if it do exist. The tool supports -v flag, that will output "success" if the file is copied, or "target file exist" if this is the case, or "general failure" on some other problem (in addition to the returned value). The tool also supports -f flag (that means force), that allows to overwrite the target file.
Encoder (encode) and Decoder (decode) – A small program that uses a shared library (codec) to encode a given text. libcodecA.so covert all lower case chars to upper case, and all upper case to lower case. All other chars will remain unchanged. libcodecB.so convert all chars to the 3-rd next char (adding a number of 3 to the ASCII value). The codecs are reversiable functions, meaning they have encoders and decoders. The libraries are libcodecA.so and libcodecB.so.
Students Shell (stshell) – A small shell program that supports the following features: Be able to run CMD tools that exist on system (via fork + exec + wait). Be able to stop running tool by pressing Ctrl+C, but not killing the shell itself (by signal handler). Be able to redirect output with ">" and ">>", and allow piping with "|", at least for 2 following pipes. For example command like this should be supported "ls -l | grep aaa | wc". Be able to stop itself by "exit" command. We also implemented the following features: "clear" command that cleans the terminal's screen. "cd" command which allows changing directories (- = Previous directory; .. = Go back in the directory tree; . = Current directory; ~ = Home directory [/home/]). "pwd" command which shows the current working directory. "gnu" command which print the tool license (GNU GPLv3). Running the tools from part A and part B without the need to write "./" in the first place (cmp, copy, encode, decode). Supporting string surrounded by quotas as one argument. Looking like bash shell (showing off the current user name, the current machine name and the current working directory). Support input redirection with "<", support redirection with piping and support both input and output redirection (for ex.: "wc -l < encode.c > lines.txt" or "cat encode.c | sort | uniq > out.txt").
In this assignment we created a Reactor (Reactor Design Pattern) that handles multiple client file descriptors (TCP socket) and handles them accordingly, using an handler function for each file descriptor.
In this assignment we created a Reactor (Reactor Design Pattern) that handles multiple client file descriptors (TCP socket) and handles them accordingly, using an handler function for each file descriptor. Also, in this specific bonus assignment, we also added a proactor (Proactor Design Pattern) that handles multiple client file descriptors (TCP socket), and handles them accordingly, using an handler function for each file descriptor. The proactor gets the file descriptors from the reactor, and whenever a client file descriptor is read from, the proactor handles it accordingly by sending a message to all the other clients, and then sending the message to the client that sent the message.
In this assignment we created a program that simulates a pipeline of active objects that communicate with each other using a queue. The program is written in C and uses POSIX threads.
This bonus assignment is a mail server and client that uses OpenSSL crypto library to encrypt and decrypt the messages, Bzip2 Compression library to compress and decompress the messages, and UUEncode to encode and decode the messages. The mail server and client are using the vSMTP (Very Simple Mail Transfer Protocol) to exchange messages. The protocol supports adding attachments to the messages. Each message is encrypted, compressed, and encoded before it is sent to the server. The server only saves the messages in the encrypted format. The client can download the messages from the server and decrypt, decompress, and decode, and all the attachments will be saved in the client's machine in a unique folder. The mail server and client are using TCP/IP protocol to communicate with each other, and the client is using the active object design pattern to encode/decode, compress/decompress, and encrypt/decrypt the messages, via a pipeline of tasks that are executed by the active objects.
This is a demonstration of ELF executable editing, and how to hijack a function via shared library. We edited our ELF executable (secret->secret_hacked) to load our custom shared library (.so.6), such that the scanf function will do some other stuff beside just putting the user input to variables.
This is a demonstration of John the Ripper capabilities to crack passwords via a generated wordlist based on some criteria. In our example, the user's password is a Disney character.
In this assignment we simulated a diode in an enterprise network, via 2 proxy servers. The assignment was built in Python. We used 4 docker machines to simulate the enterprise network. The assignment contains 4 main programs, each of which represents a computer in the network. Our goal is to build a network in such a way that a user in an enterprise network will be able to send data to the enterprise’s super-duper secret server, without any data leaks from the server itself. The network structure we built contains also two additional proxy servers, one for each side, and a logical diode (to simulate a real-life physical diode), that connects between the two proxy servers. The user and proxy 1 communicate via TCP protocol. The server and proxy 2 also communicate via TCP protocol. The proxy 1 server communicates with proxy 2 server via a custom Reliable UDP protocol. Since the diode is a logical diode, there isn’t actually a fifth component, and the logical part of the diode is implemented in the programs of proxy 1 and proxy 2. We send the data in such way that the file that’s transmitted is saved under the original MD5 hash name, and the end-user (server) can compere between the name of the file and the MD5 hash of the file and check if he received all the data without any interference. We added a security layer by saving the received file by the name of the MD5 hash of the file.
Social Media