99 lines
3.2 KiB
Markdown
99 lines
3.2 KiB
Markdown
# BProxy
|
|
|
|
BProxy (Bottler Proxy)
|
|
|
|
## Tabla de contenidos
|
|
- [Requisitos <a name="requisitos"></a>](#requisitos-)
|
|
- [Compilación <a name="compilación"></a>](#compilación-)
|
|
- [Ejecución <a name="ejecución"></a>](#ejecución-)
|
|
- [Testeos <a name="tests"></a>](#testeos-)
|
|
- [Limpieza <a name="limpieza"></a>](#limpieza-)
|
|
|
|
## Requisitos <a name="requisitos"></a>
|
|
|
|
Debe instalar gcc y make. Estos se encuentran disponibles en el repositorio de la vasta mayoría de distribuciones de Linux/macOS.
|
|
|
|
## Compilación <a name="compilación"></a>
|
|
|
|
Para compilar todos los archivos se debe hacer:
|
|
|
|
```bash
|
|
make all
|
|
```
|
|
|
|
## Ejecución <a name="ejecución"></a>
|
|
|
|
Ahora, tendrá dos ejecutables: `client` y `socks5d`.
|
|
|
|
El servidor por defecto utilizará un _TOKEN_ que debe ser una `env` variable. Por ejemplo, puede configurar una mediante:
|
|
|
|
```bash
|
|
export BPROXY_TOKEN=0x0FF1CEDEADB00B1E
|
|
```
|
|
|
|
Si no se encuentra una token al momento de ejecutar el `server` el mismo terminará con error.
|
|
|
|
Ahora, puede correr el `server` y luego, si desea hacer alguna configuración, conectarse con el `client`.
|
|
|
|
```bash
|
|
./socks5d ${PARAMS}
|
|
```
|
|
|
|
y en otra terminal
|
|
|
|
```bash
|
|
./client ${PARAMS}
|
|
```
|
|
|
|
## Casos de uso <a name="casos-de-uso"></a>
|
|
|
|
Se mostrarán dos casos típicos de uso del servidor.
|
|
|
|
Aquí se tiene al servidor proxy corriendo en 127.0.0.1:1080 y se utiliza a este para conectarse a 192.168.10.120:110 (una PC en la misma subred corriendo un servidor POP3 local). Además, se está autenticando con el usuario `user:pass`.
|
|
|
|
```bash
|
|
./socks5d -u user:pass
|
|
ncat -C -v --proxy 127.0.0.1:1080 --proxy-type socks5 192.168.10.120 110 --proxy-auth user:pass
|
|
```
|
|
|
|
Por otro lado, aquí se usó `curl` para acceder a http://api.ipify.org mediante el proxy (también corriendo en la misma IP que el ejemplo anterior).
|
|
|
|
```bash
|
|
./socks5d -u user:pass
|
|
curl -x socks5://user:pass@127.0.0.1:1080 http://api.ipify.org
|
|
```
|
|
|
|
En este caso se quiere obtener la cantidad de páginas de usuarios que hay en el servidor proxy, mediante -L se especifica la direccion IP del servidor de configuración (por defecto 127.0.0.1), con -P se especifica el puerto (por defecto 8080).
|
|
Una vez que se obtiene la cantidad de páginas se le pide el listado de usuarios pertenecientes a la 2da página, en caso de que el servidor no cuente con usuarios suficientes para tener 2 páginas, imprimirá un error especificando que el valor pasado no es válido. En cambio, si se cuentan con usuarios suficientes se listarán separados por un '\n'
|
|
|
|
```bash
|
|
./client 1148926835748244254 -L 192.168.10.119 -P 8100 -f
|
|
./client 1148926835748244254 -L 192.168.10.119 -P 8100 -u 2
|
|
```
|
|
|
|
## Testeos <a name="tests"></a>
|
|
|
|
En orden de realizar un análisis estático del sistema usted debe tener instalado [cppcheck](http://cppcheck.net/) y [pvs-studio](https://pvs-studio.com/). Luego, puede correrlos con:
|
|
|
|
```bash
|
|
make test
|
|
```
|
|
|
|
Por último, si quiere hacer un análisis dinámico (usando [valgrind](https://valgrind.org/)) puede hacerlo mediante:
|
|
|
|
```bash
|
|
valgrind ./socks5d
|
|
```
|
|
|
|
## Limpieza <a name="limpieza"></a>
|
|
Si desea borrar los archivos creados luego de la compilación (y los testeos si se hubiesen corrido) debe correr:
|
|
|
|
```bash
|
|
make clean
|
|
```
|
|
|
|
# Autores
|
|
### Bottler:
|
|
- Barmasch, Juan Martín (61033)
|
|
- Bellver, Ezequiel (61268)
|
|
- Lo Coco, Santiago (61301) |