查看: 17558|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    " l& o' D$ P* r; S  E' x
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig4 l) ^7 P4 L7 I. Y
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
2 h  [( t! e- o3 q' y! ousage: himr <address> <value>. sample: himr 0x80040000 0x0
7 J7 K8 g, O6 w- @( g! }9 Q2 `" D/ L) m
* t* C4 U9 ^0 I1 b8 S( V8 _* Y
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?8 c  K* r! C4 t/ F7 w

4 }' c. F1 Y1 N( X补充内容 (2012-3-8 09:42):; M+ {0 u! S) ^6 I! R
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
% B# e" c0 V+ j" ^5 b( D- {' \这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
8 F: Z% o" m+ X( w. }6 @/ i5 ]5 M& W& S
himr <address> <value>. sample: himr 0x80040000 0x0
7 n. Y  U% G$ `$ o
8 W3 q  u% I5 M+ B4 x例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
  U" K! x* ^/ G$ h& \1 Dhimr 0x80040000 0x003 ?: U. i; s" `$ \2 y
himr 0x80040001 0x11
0 f8 ]: f: D+ @" O, fhimr 0x80040002 0x22
; H1 o" s; m5 T* |  R9 shimr 0x80040003 0x33
4 y: v. k  ~0 Y! y$ Bhimr 0x80040004 0x44  I3 ]$ }7 `  m, `! E0 P% E6 E
himr 0x80040005 0x55& H; U& L; d) X
2 i; G$ F. ^: s( E
SN也是类似。8 S8 L8 p8 v# ^9 g

: _. p( ^: p, c0 L+ N现在主要是,谁告诉我们MAC和SN的地址?
5 z9 W% g; a; \7 Z
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 6 ^) T5 I2 T! d
一直想找到运程修改MAC和SN的办法,苦于无解啊

; B( D) X3 O1 `" A4 r0 o源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
& k  T  e( z) ~; X( e  z4 t  a$ g, J' `2 v. w% W* }
修改的代码早有了。到今天不会编译。9 {% w1 B+ f( {) {+ Z4 K# x
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>) E# ?) a3 D, r1 A7 ~
  2. #include <malloc.h>
    ' B. H+ R6 t, h* d
  3. #include <sys/types.h>
    8 _" d) o% a0 G) l, U2 \* K' v; h/ b3 G
  4. #include <sys/stat.h>
    2 g* D7 d& x5 S
  5. #include <sys/ioctl.h>. e/ Y" }. |; I( i, h1 n
  6. #include <stdio.h>- _1 h1 H) z8 D6 y) H% I9 s5 I2 m# d
  7. #include <string.h>, n: _4 f3 X  }/ d6 v5 g+ S

  8. 6 H" t$ N- i) f. D
  9. typedef struct {
    ; g6 W$ Q; l7 o0 ~, T; j# N6 H
  10.         unsigned int        e2prom_cmd_sub_addr;6 @# G- d9 y" k* u0 D1 Z: h% c
  11.         unsigned int        sub_addr_count;8 ]! O& M( O$ G% y$ c
  12.         unsigned char*        e2prom_cmd_data;
    * Z  O" n  g' f
  13.         unsigned int        data_count;
      n+ v' F) E! M" ~$ F0 [% O$ N1 G8 `
  14. } e2prom_s_cmd;
    4 n; L5 z0 _: o& @) K
  15.   X- k( n. y9 x* y; t0 C/ k* G
  16. #define E2PROM_CMD_READ 1# Y6 c) ^+ S3 w
  17. #define E2PROM_CMD_WRITE 29 B; p, O2 a- n
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    2 b7 A0 a* j. Q

  19. . p5 ?7 }& [4 {6 E% H$ U9 [* O
  20. static int readparam(unsigned char *mac, unsigned char *stbid)9 j6 K/ }6 O# ~7 T
  21. {. {0 G) C6 b8 t* `4 v' p
  22.         int fd, ret;  V* B1 f1 p% S! t+ ]
  23.         e2prom_s_cmd arg;
    " [4 P9 ?) ^' D5 Q" U
  24.         unsigned char buf[0x18];+ E, S% Y0 z- f8 [
  25. : f: l0 g, r; ^  e
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    * C. \7 D: P  @4 W* m. b
  27.         if (fd  < 0) {5 K6 B( Q8 h4 ~0 e
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * U; K; U$ K4 p0 \$ n  w) @
  29.                 return -1;
    . A: j( t: ]1 k) X" ]% @4 d( S
  30.         }
    % s8 r4 p/ j1 `8 u7 H! n
  31.         arg.sub_addr_count      = 2;8 X- C4 Z& J% a& i0 x
  32.         arg.data_count          = 0x18;
    ) |, d& Y7 Q3 P( m% c. b
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ) Z, ?. s3 c& Q, x1 O0 @  Z5 v
  34.         arg.e2prom_cmd_data     = buf;0 _1 [/ N. z& Y# M* H
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    / Y7 q6 t- P1 H7 a) g, ~, H& L
  36.         if (ret != 0) {( o/ [  e. s, V+ u0 H
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    8 y: W2 ]. D* v& L
  38.                 return -1;
    % m/ p  J* x7 W/ b/ ]% v
  39.         }
    . Q% y& b: m, I) t
  40.         memcpy(mac, buf, 6);  r  c9 ~( }4 D8 ~
  41.         memcpy(stbid, &buf[6], 18);
    ) T! Y0 ?% `4 c3 C
  42.         stbid[18] = '\0';
    / b+ s, \3 G# V; d

  43. 4 |9 N8 ]6 L* ?" N5 S9 \
  44.         return 0;/ d3 ^- \3 y5 z& [1 I: T$ p
  45. }
    ' u: p- g- s1 j; a, F6 n2 ~1 B5 P0 G
  46. 5 a9 M; m6 J7 e/ e! Z
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)1 `' m6 F0 q- `6 @
  48. {( j4 @* c% g0 Y0 W( M
  49.         int fd, ret;
    4 k- d0 i% `7 q. @' X- d
  50.         e2prom_s_cmd arg;0 n+ ~# o" s8 v5 ?. X, f
  51.         unsigned char buf[0x18];; _3 @" N8 H( ?0 y

  52. 9 q2 |7 H  b+ g( D# k& q
  53.         memcpy(buf, mac, 6);
    ' n- W7 J! }$ n: X; b
  54.         memcpy(&buf[6], stbid, 18);
    : e/ }# S$ c( P* ^* y+ D. K
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    , R$ S  ~8 s! \- Y8 M
  56.         if (fd  < 0) {
    2 i: A% a% h8 n$ K+ m- }! B; K
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    8 e: ^4 I9 q7 R7 C* N- h# e
  58.                 return -1;0 q5 I% V8 J% }5 J4 a
  59.         }
    : v, @+ z- m' a' a1 ^$ I
  60.         arg.sub_addr_count      = 2;. }: r$ {- g) x
  61.         arg.data_count          = 0x18;% A5 Z# J( f( U4 C% s. e
  62.         arg.e2prom_cmd_sub_addr = 0x290;% X0 b! N& [. n9 }2 g
  63.         arg.e2prom_cmd_data     = buf;% p8 f6 t5 _) e& z
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    * a5 v* v2 r1 `; Q' A
  65.         if (ret != 0) {
    2 `9 |* F% i" X+ L. Q+ f' I. R6 p
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    4 N8 S  f% Z( U2 D" p# J1 R
  67.                 return -1;; m; ~+ {* H. J1 t2 u
  68.         }
    : l: h8 z+ s( y+ e  `
  69. ( M4 @9 U4 g1 S2 U# `0 e& n
  70.         return 0;) _- c- o& B- S6 e8 \7 C+ Y6 n
  71. }" |. `1 z1 h* c  o5 v/ e
  72. / O5 |- f8 g, H5 P, C
  73. int main(), Y. o$ J4 F7 i1 A% V7 }
  74. {
      x+ Q- l; I2 G# D+ k3 x6 L* L) G/ t
  75.         char c;' Y* W* Q/ K' o1 C% Q9 F
  76.         int i, macs[6];* l3 j( w' @1 c: O4 V9 ]
  77.         unsigned char mac[6];
    3 f( S* a2 D9 R9 T+ R0 e' d
  78.         unsigned char stbid[256];' U. H9 U* ?9 N3 g/ u, A9 h" m
  79. # \' B/ j* j4 o2 y" l& z  ?
  80.         if (readparam(mac, stbid) < 0)' Q! g/ ^& w3 c4 b  N4 d: @
  81.                 return 1;
    ( I, _) f4 j2 y& b* f! ]- G# j' l
  82. 7 K# s& F( Z0 T2 }
  83.         printf("Current parameters: \n");
    9 t9 q% A5 c+ |
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: r! `8 c' d  F+ k) }& V1 H& b
  85.         printf("  STBID: %s\n", stbid);& z7 W* O* H7 j! N% m" V4 p7 s: v
  86.        
    6 O* K' g9 |" \) o2 v" v# c0 \
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");3 r+ _8 h, J! W$ }4 w/ T
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    / o* T+ k% D) z. k5 P' @) [
  89.                 printf("Input MAC error\n");
    ( p' T) C$ w$ q& `
  90.                 return 1;& m/ `3 ]3 R$ E2 t" M) f" M
  91.         }+ |4 E; J6 m% ^: U- i
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    1 O, I# T, |. \6 ~/ ?, q
  93.         printf("\nPlease input new STBID: ");6 V4 B7 |9 \! E3 G! y& s3 s4 ~% {
  94.         scanf("%s", stbid);
    3 O; p0 t6 ~7 [$ D. I  a/ e
  95.         if (strlen(stbid) != 18) {" B* K2 r4 E2 {7 w# l4 F! S
  96.                 printf("Invalid stbid\n");' {  U9 @! V% ~; ^+ Q" E! t
  97.                 return 1;
    0 Y( H  |2 V4 S
  98.         }- `! {8 \# P( {* a8 }' b3 w
  99.         printf("\nNew parameters: \n");9 T8 B5 e4 L* T8 G0 ~1 t
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);# I! I6 y, I. \1 O
  101.         printf("  STBID: %s\n", stbid);5 e. |5 o% f- y, s0 {0 I
  102. * t4 {, c5 \2 f( @
  103.         printf("\nDo you want to change paramemters? (y/N) ");# I/ A2 E7 a2 p; V# a6 l
  104.         for (;;) {$ y% C% t& G- v8 h2 X
  105.                 c = getchar();
    5 q# |5 \" R. t4 n" L
  106.                 if (c == 'y' || c == 'Y')
      J- `& e3 ~$ C+ _" [* M
  107.                         break;+ h& W+ R% q! w5 v
  108.                 if (c == 'n' || c == 'N') {
    % [% @! _" b  X" Y
  109.                         printf("\nAborted.\n");
    8 i0 |7 [% A8 v' r8 J- Z
  110.                         return 1;& ?" G" ?' n; |- W" ~
  111.                 }* f- L+ L0 c9 o$ j; y: \! s
  112.         }
    * g) g, T1 S. `9 U) e0 U
  113.         if (writeparam(mac, stbid) == 0) ) D- Y7 I1 Y3 G8 `" E5 ^* o
  114.                 printf("Parameters changed.\n");
    0 {# m, H# T( }. `* B- U6 ?
  115. / G& h% B% O9 r& M4 }
  116.         return 0;- u2 ?' ]. I  R* v& t# g# S
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 |福建| 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 |浙江| 显示全部楼层
0522 发表于 2012-3-23 18:24 " A9 ~9 E4 n& d* g# e  T
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
# f! R9 o3 M  ?! G& Q' W0 `" v
你用的编译命令行格式是什么?
) Y& K, f; E! {. W+ B
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部