找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15436|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    $ @; Q0 l' U8 ^: M- D+ B7 Q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    - y+ M' }1 K/ N
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
' X2 B% P+ S/ A7 _usage: himr <address> <value>. sample: himr 0x80040000 0x0
2 T3 q3 A+ J7 I; d6 e5 d! ^% ~3 _/ V4 g  l, x. x
3 J  D! y: u5 y- l
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?+ ^1 I* @1 X3 Q1 w% C
  Q* H5 K& ^& V' K
补充内容 (2012-3-8 09:42):
, w. B4 H: u2 k2 k& Z2 Lhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
3 T. d' l/ R  V# ]& n2 O+ Q+ ?这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
) m2 Y4 W' H# z0 j% T
0 Y$ Z5 w: H- H, D5 Lhimr <address> <value>. sample: himr 0x80040000 0x0
' h5 Q, B! N. f5 e! c. n
' U, h$ |; H  p, t/ X2 j例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
  M. f: I+ v; @( T  J- C# nhimr 0x80040000 0x00. r) ?, W, T- {/ d1 ^2 H
himr 0x80040001 0x11
( N2 n( s9 _2 A) V% l0 }6 _3 Bhimr 0x80040002 0x22
( J% E2 g" \2 X& whimr 0x80040003 0x33
* S! Q# B  D' C( yhimr 0x80040004 0x44( C7 d* K) r/ f& a# K1 [) c
himr 0x80040005 0x55; m% y1 @# ~& {- A9 M' v: }& C

* n. _! l' A( qSN也是类似。' x$ d; q6 W! {

2 Q* ?2 O* f! Z1 A5 v# h现在主要是,谁告诉我们MAC和SN的地址?8 J' Q" j3 [! k( T! M: t" T$ [
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 & g' t* e9 t: K2 ]7 M. h4 v( J! @
一直想找到运程修改MAC和SN的办法,苦于无解啊

  u6 a$ q6 X3 j/ }9 M% {* E源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
, L0 c. ~8 i' x& r' b# u* t# D
/ T) X7 l# Y+ a; n& i& b修改的代码早有了。到今天不会编译。
! e8 k; y- K, u6 }0 W需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>; L) d6 z, m9 k: A. i
  2. #include <malloc.h>! j# U) j7 k+ y2 e  S/ w) o, I$ o1 z
  3. #include <sys/types.h>9 B! A& ]2 [4 U! q8 p7 R6 |; W
  4. #include <sys/stat.h>
    ' K: l: y* i$ e. z. x+ [
  5. #include <sys/ioctl.h>* }3 j* p* ?6 h) Z
  6. #include <stdio.h>6 I! n  [: s' `3 ~7 J$ ?% M+ p
  7. #include <string.h>* T) m  R. i: n6 [

  8. 4 H/ o- Z6 R$ D2 C* K) Z1 r
  9. typedef struct {( I: B. i" J- M) E5 }- K
  10.         unsigned int        e2prom_cmd_sub_addr;, ?2 Q1 x- P% U( ]4 ^" r
  11.         unsigned int        sub_addr_count;
    ( G& g: ?5 g+ i0 v- R! Q
  12.         unsigned char*        e2prom_cmd_data;
    - Q$ h6 u2 f" l  Y0 U2 b* b+ I. R
  13.         unsigned int        data_count;0 W/ M& Q: W) w# r; X
  14. } e2prom_s_cmd;
    3 x* B- ^6 U' v& c1 j! F* r

  15. % ?3 o+ Y+ f; w3 B" P
  16. #define E2PROM_CMD_READ 1! ]5 c) c3 q: k" T. v) R
  17. #define E2PROM_CMD_WRITE 2$ y* z6 b* `, n, j
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"$ A* B5 F$ Q4 U3 B" ~! ]

  19. & i- f1 m0 g- ?
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    + o  C" Y& j1 A* k; K
  21. {2 e" G" _6 r8 ^0 x9 F8 h& I
  22.         int fd, ret;2 x& R3 B3 l: U) e
  23.         e2prom_s_cmd arg;
    5 z, ^5 M. Z% Q. h# ^$ z( }
  24.         unsigned char buf[0x18];( m4 e. B7 i; m/ e' q
  25. ) |7 m8 q/ U/ A# b0 o+ f
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ( N8 W: T  P7 t* @- f
  27.         if (fd  < 0) {7 z9 q# O% M% O- n3 h
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);* N  s1 `/ T* [: _: ~5 A
  29.                 return -1;
    7 J3 d' ^! A2 [5 a
  30.         }: V! A5 c$ q  w% D3 c% ~, b: h
  31.         arg.sub_addr_count      = 2;
    ' Q* a& o3 Q. [
  32.         arg.data_count          = 0x18;
    9 S: Q/ P: d' a3 C, Q
  33.         arg.e2prom_cmd_sub_addr = 0x290;4 _7 o! R. S/ s% g
  34.         arg.e2prom_cmd_data     = buf;2 A8 Y" Z  _# ?, S: G% |6 j3 S
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    9 K: `% g& k& t- ~& O
  36.         if (ret != 0) {5 k4 f& t' b/ k# i# L0 I
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    8 u8 u. D0 p+ z* F# d- I
  38.                 return -1;0 j" n. l1 Z! l# s# ?0 j
  39.         }
    4 a. h2 Q  |$ A7 L8 h! f
  40.         memcpy(mac, buf, 6);
    % Y$ T8 n) V, [4 ^4 M  E
  41.         memcpy(stbid, &buf[6], 18);; _9 i4 C! E; Y& _# h* m0 e
  42.         stbid[18] = '\0';3 B  X6 Y' T# u7 k' o

  43. 4 ]7 Y" N7 e' U3 d) p# `$ @  D
  44.         return 0;
    9 n$ D/ E  l! _9 _* F- v: x" c# l
  45. }) O$ A/ g7 s3 M$ [/ ~/ g  C& x
  46. $ a5 u: S$ d. ^& {
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)4 f* e$ R; f9 D+ T' x
  48. {) H# d3 m5 S% [( o  m) Y
  49.         int fd, ret;) T$ e7 C7 X) X4 U6 e' D" @" t3 p
  50.         e2prom_s_cmd arg;
    % V. Q. N: N; Z& B0 S/ J
  51.         unsigned char buf[0x18];* l5 ?! L. V+ \4 S( r- S% n
  52. 6 L1 ?  }* e( p+ B  G, n
  53.         memcpy(buf, mac, 6);' g* I; X- U: x8 _# K7 ]8 u8 A
  54.         memcpy(&buf[6], stbid, 18);9 o$ X" N& ?# u" p/ g% `
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    % p% [( \* |* g( S, z; w
  56.         if (fd  < 0) {
    ; E$ u+ }' N7 b$ R" M! J) P
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ; H( f: s, ]1 F6 E1 c
  58.                 return -1;# T* A2 g6 `3 e, [  X- o9 W
  59.         }
    " D5 _5 w9 h9 h
  60.         arg.sub_addr_count      = 2;
    6 m, O& ^8 z9 A8 d) x0 O/ M( W+ b
  61.         arg.data_count          = 0x18;
    + U! l; \0 F! U) C
  62.         arg.e2prom_cmd_sub_addr = 0x290;: u7 u7 J& \/ x
  63.         arg.e2prom_cmd_data     = buf;
    0 f. i9 c/ {3 `, W2 c
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    3 p: D0 E+ g% l$ X
  65.         if (ret != 0) {3 r: m% A0 v; c) A" L9 [& K4 o
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);2 v6 L, N6 Q. T9 h' V( C
  67.                 return -1;
    ! W9 f7 z! _# V9 z  u. F0 F/ m
  68.         }
    : _3 {9 M4 e" I6 I7 p( j
  69. $ J+ G- A- ~4 x
  70.         return 0;
    - J1 S9 I' M# r, q( }
  71. }
    % ~+ ~. n% R2 t/ e4 k; p
  72. 8 T9 [& E% d; M9 h# C, N: `
  73. int main()/ P4 q( [' r, ~# ~, L0 P
  74. {% j; s7 b8 _# h' p( P% L
  75.         char c;
    % ?" ]( ^4 ~. {6 n, S  I# l1 [7 t
  76.         int i, macs[6];4 B! z& I/ Y4 [7 r3 X
  77.         unsigned char mac[6];6 V  L- b! D) k/ ~  L
  78.         unsigned char stbid[256];
    4 Z( S' i+ c! z  m6 Y% F6 [
  79. " F0 c7 j2 M6 ^  J* c5 N
  80.         if (readparam(mac, stbid) < 0)
    8 q( r# _3 ]; T
  81.                 return 1;: t! e& t7 Y% C' i

  82. ) _( b# m% p9 ]# H5 s
  83.         printf("Current parameters: \n");
    ; }, ]7 x  D( B
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);1 ^# M1 Q  R0 o4 v4 G) P
  85.         printf("  STBID: %s\n", stbid);1 z' e" S* C/ M% N: o/ F/ R+ b
  86.        
    0 D1 }' c' H) r$ j8 j4 W
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");" T3 k( A1 s# D# T# g
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {( _1 [$ J# Z6 k' Q0 l4 _
  89.                 printf("Input MAC error\n");, g, ~( w! @0 o: l/ T& R! B( r0 E' ?# `
  90.                 return 1;7 W; ~( Y1 n, |: L9 ^+ d) G* \/ N
  91.         }# q, y1 I' P8 n, F, g6 l
  92.         for (i=0; i<6; i++)mac[i] = macs[i];0 T/ [, \$ b0 S. C- X. U/ s* P
  93.         printf("\nPlease input new STBID: ");
    5 a& Y  b; u$ W+ ]- V; _' h
  94.         scanf("%s", stbid);
    0 L; E! c& M* x: _2 q
  95.         if (strlen(stbid) != 18) {
    $ [: p' a+ _: U( W
  96.                 printf("Invalid stbid\n");$ _; Q9 k) w7 @5 N9 _( ?9 l( v4 h
  97.                 return 1;
    3 e  H; R/ _; I7 b5 {
  98.         }
    1 b! w7 C: k! f" |( A
  99.         printf("\nNew parameters: \n");
    / _5 Y3 ?9 Q* y3 ^: e% K
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);$ g  a% `, q" j8 z5 {
  101.         printf("  STBID: %s\n", stbid);
    " q; N# z8 }' u/ o* N) A

  102. 9 d: R2 L) H( D6 B. `: T
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    5 Z8 ?0 L& t) b5 O4 [# ^
  104.         for (;;) {# b* `+ `$ n- ~, P1 K
  105.                 c = getchar();+ a$ ~: G# a! Z
  106.                 if (c == 'y' || c == 'Y')
      l9 J6 [* Q2 D+ u  S
  107.                         break;: X7 W: S$ m* d
  108.                 if (c == 'n' || c == 'N') {, a* J/ {" N2 Q3 u0 B
  109.                         printf("\nAborted.\n");
    ! l2 |. t/ S* m+ V$ X) a
  110.                         return 1;0 {5 P! `2 x* m2 |, l& t7 y
  111.                 }$ d7 C$ v2 B0 s& g( ~- B& [
  112.         }
    4 {2 L- Y, ?% v5 G- i( o7 e
  113.         if (writeparam(mac, stbid) == 0) 2 |/ A% L. U" |
  114.                 printf("Parameters changed.\n");4 e$ z5 p- S- A* Q, v0 c% w$ m

  115. " U0 X6 n1 w+ x0 a
  116.         return 0;  }7 F  I; V) |8 W) p% y' H9 G
  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
6 H' k' k! T# p4 s  `* E0 \在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
# n& e# d; N4 ^2 f; H  \3 }
你用的编译命令行格式是什么?# i; u. K" b# a* E) g. y1 L
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-2-4 20:47 , Processed in 0.026962 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表